發現最新式的DDOS攻擊方式
DdoS攻擊是利用一批受控制的機器向一臺機器發起攻擊,這樣來勢迅猛的攻擊令人難以防備,因此具有較大的破壞性。通過本文的介紹,希望大家更多的了解DDos攻擊。
下面簡單介紹攻擊者如何以64字節ACK包換取服務器1518大數據包重傳,如果源IP偽造成功,攻擊者從理論上將獲得20余倍的帶寬放大攻擊效果 .如果有兩個目標網站,本方法將一箭雙雕。
攻擊原理:利用TCP協議收到ACK后的快速重傳機制,攻擊正常TCP/IP協議棧示意圖當我們獲得http response回應后,立即回復一個ack數據包,此ack數據包的seq值是http response數據包中的ack seq值,而ack seq值為http response數據包的seq序號值。
這樣當server收到此ack數據包后,會認為是自己剛才發送的http response包在網絡中已丟失,會利用快速重傳機制加以重傳。如果我們拼命發送大量的ack包,則服務器就會不斷進行重傳。Ack數據包的大小只需64字節,但http response通常都在512字節左右,最長可達1518字節。因為正常tcp協議序號的不可預測性,所以我們在這次攻擊中暴露了自己的真實IP.
攻擊采用靜態syn cookie的ddos設備防護下的服務器,所謂靜態syn cookie就是以客戶端請求之syn包為參數計算回復syn ack中的seq值,并在ack包回傳時判斷連接合法性的方法,這種方法被ddos廠商大量采用,并且獲得數量可觀的國家發明專利,你經常會聽到ddos廠商的人說他們的設備比防火墻“牛”多了,可輕松達到百兆線速syn防御,但百兆防火墻30M攻擊流量就可以干掉,說這種話的ddos廠商,我可以打賭他們的設備80%采用了這種syn cookie算法。
Syn cookie算法的好處是只在synflood攻擊時消耗CPU資源,這對于X86下強悍的通用CPU來說,正適用。
讀者可能會感到很奇怪,為什么如此成熟的技術防火墻不采用,而讓ddos廠商成天擠對?這有如下幾個方面的原因:1:防火墻也用syn cookie進行synflood防御的,但大多不是靜態syn cookie,而是嚴格記錄連接狀態采用動態syn cookie,所以當syn flood攻擊時不光消耗CPU,還要消耗大量內存。這也就是我本文開頭提及的本方法可以攻擊大部分ddos廠商和小部分防火墻廠商的原因。
2:syn cookie/syn proxy是bsd系統內核源碼的一部分,在Linux最新版的2.6內核中syn proxy還沒有被包含。所以ddos設備也大多由bsd系統組成。當然bsd是開源的,移植也不是什么大問題嘍。
3:防火墻大多以Linux下的開源軟件netfilter為基礎,但netfilter中hash算法和連接表設計不是很優秀,防火墻轉發性能的瓶頸就在于此,如果再加入syn proxy表項,會進一步降低對數據包的處理能力或加大連接表體積。高端防火墻大都支持數百萬的連接數,這百萬的表項就夠防火墻喝一壺的了,再加一個syn proxy表項,性能還不得掉的稀里嘩拉的?
4:防火墻很重要的一個網絡功能就是DNAT,在沒有DNAT操作前,防火墻不知道這些syn包的最終目的地是自身還是DMZ區的服務器,所以syn包必須DNAT后才知道是否要進行syn cookie保護。但這時就已經進入到netfilter處理框架了,性能當然就跟不上了。你見過幾個ddos設備支持NAT的?如果支持了,他的性能也會下降不少。如果防火墻工作在橋模式下,不經過netfilter處理框架,防火墻就可以搖身一變成為性能卓越的抗ddos設備了,嗎功能都沒有,當然一身輕松了。呵呵…但您買的是防火墻,會這么大材小用嗎?
言歸正傳,采用靜態syn cookie的ddos設備,我們只需要重放一個ack包就可以達到與服務器的三次握手效果,因此可以做到源IP地址偽裝。(這個偽裝的源IP地址是你以前用過的,并且與ddos設備通訊過,并保存下來的,現在將它重放而己。如果你看不懂我在說什么,參照我寫的《對國內ddos廠商技術點評》一文,抓包分析一下就知道了)。第二步就是發送一個正常的http request請求,隨后就是大量的虛假ack請求重傳。
天知道,誰在用我們偽裝的源IP地址,做為一個連帶的犧牲品。你可能會認為受害服務器B會回復rst包給受害服務器A.這是有可能,但如果服務器B前面加裝了一個“狀態檢測”防火墻,就會直接丟棄這個反射的http response數據包。
本思路有價值的地方:1. 利用一條合法連接,對服務器進行下行帶寬攻擊,現在的“狀態檢測”設備不一定可以發現2. 目標服務器應用層程序感知不到這種攻擊,可以逃避基于應用層流量統計的防御方式,因為重傳是TCP協議特性,TCP協議自動完成。重傳的數據包,對應用層來說是透明的。
3. 現在只是一種思路,不局限于TCP協議。UDP加入重傳機制后,也可以保證通訊可靠性。并且這是私人或公司獨立開發的協議,漏洞會比TCP協議更大。
4. drdos的帶寬放大效果也只不過是6倍而己,并且消耗的是上行帶寬。
5. 真正的威脅不在現在,而是在對“長肥管道”的攻擊效果。對方下行帶寬越寬,攻擊效果越明顯。TCP會禁用分片,所以重傳數據包大小依靠你與服務器之間最小的那個設備的MTU值,所以你見到的TCP協議的IP首部中的長度字段不會超時1518.但在“長肥管道”中,IP首部的長度字段會達到65535的極大值,對這些數據包的重傳攻擊,會達到令人吃驚的1:1024的放大效果。
1M對1G 1G對1T明白?就是因為這點,我才會提供本思路,否則1:25的消耗也是蠻力。
攻擊完善的TCP協議其實是很困難的:1.具體可以參見RFC2581中關于Fast Retransmit/Fast Recovery的說明部分。
2.你的ack包構造不好,服務器協議棧還是會利用超時重傳,而不是快速重傳。
DdoS攻擊是黑客最常用的攻擊手段,我們一定要對其多多防范才是。
【編輯推薦】