關于DNS Query Flood的代碼,我在2011年7月為了測試服務器性能曾經寫過一份代碼,鏈接是http://www.icylife.net/yunshu/show.php?id=832。同樣的,這份代碼人為降低了攻擊性,只做測試用途。
1.3. HTTP Flood
上文描述的SYN Flood、DNS Query Flood在現階段已經能做到有效防御了,真正令各大廠商以及互聯網企業頭疼的是HTTP Flood攻擊。HTTP Flood是針對Web服務在第七層協議發起的攻擊。它的巨大危害性主要表現在三個方面:發起方便、過濾困難、影響深遠。
SYN Flood和DNS Query Flood都需要攻擊者以root權限控制大批量的傀儡機。收集大量root權限的傀儡機很花費時間和精力,而且在攻擊過程中傀儡機會由于流量異常被管理員發現,攻擊者的資源快速損耗而補充緩慢,導致攻擊強度明顯降低而且不可長期持續。HTTP Flood攻擊則不同,攻擊者并不需要控制大批的傀儡機,取而代之的是通過端口掃描程序在互聯網上尋找匿名的HTTP代理或者SOCKS代理,攻擊者通過匿名代理對攻擊目標發起HTTP請求。匿名代理是一種比較豐富的資源,花幾天時間獲取代理并不是難事,因此攻擊容易發起而且可以長期高強度的持續。
另一方面,HTTP Flood攻擊在HTTP層發起,極力模仿正常用戶的網頁請求行為,與網站業務緊密相關,安全廠商很難提供一套通用的且不影響用戶體驗的方案。在一個地方工作得很好的規則,換一個場景可能帶來大量的誤殺。
最后,HTTP Flood攻擊會引起嚴重的連鎖反應,不僅僅是直接導致被攻擊的Web前端響應緩慢,還間接攻擊到后端的Java等業務層邏輯以及更后端的數據庫服務,增大它們的壓力,甚至對日志存儲服務器都帶來影響。
有意思的是,HTTP Flood還有個頗有歷史淵源的昵稱叫做CC攻擊。CC是Challenge Collapsar的縮寫,而Collapsar是國內一家著名安全公司的DDoS防御設備。從目前的情況來看,不僅僅是Collapsar,所有的硬件防御設備都還在被挑戰著,風險并未解除。
1.4. 慢速連接攻擊
提起攻擊,第一反應就是海量的流量、海量的報文。但有一種攻擊卻反其道而行之,以慢著稱,以至于有些攻擊目標被打死了都不知道是怎么死的,這就是慢速連接攻擊,最具代表性的是rsnake發明的Slowloris。
HTTP協議規定,HTTP Request以\r\n\r\n結尾表示客戶端發送結束,服務端開始處理。那么,如果永遠不發送\r\n\r\n會如何?Slowloris就是利用這一點來做DDoS攻擊的。攻擊者在HTTP請求頭中將Connection設置為Keep-Alive,要求Web Server保持TCP連接不要斷開,隨后緩慢地每隔幾分鐘發送一個key-value格式的數據到服務端,如a:b\r\n,導致服務端認為HTTP頭部沒有接收完成而一直等待。如果攻擊者使用多線程或者傀儡機來做同樣的操作,服務器的Web容器很快就被攻擊者占滿了TCP連接而不再接受新的請求。
很快的,Slowloris開始出現各種變種。比如POST方法向Web Server提交數據、填充一大大Content-Length但緩慢的一個字節一個字節的POST真正數據內容等等。關于Slowloris攻擊,rsnake也給出了一個測試代碼,參見http://ha.ckers.org/slowloris/slowloris.pl。
2. DDoS攻擊進階
2.1. 混合攻擊
以上介紹了幾種基礎的攻擊手段,其中任意一種都可以用來攻擊網絡,甚至擊垮阿里、百度、騰訊這種巨型網站。但這些并不是全部,不同層次的攻擊者能夠發起完全不同的DDoS攻擊,運用之妙,存乎一心。
高級攻擊者從來不會使用單一的手段進行攻擊,而是根據目標環境靈活組合。普通的SYN Flood容易被流量清洗設備通過反向探測、SYN Cookie等技術手段過濾掉,但如果在SYN Flood中混入SYN+ACK數據包,使每一個偽造的SYN數據包都有一個與之對應的偽造的客戶端確認報文,這里的對應是指源IP地址、源端口、目的 IP、目的端口、TCP窗口大小、TTL等都符合同一個主機同一個TCP Flow的特征,流量清洗設備的反向探測和SYN Cookie性能壓力將會顯著增大。其實SYN數據報文配合其他各種標志位,都有特殊的攻擊效果,這里不一一介紹。對DNS Query Flood而言,也有獨特的技巧。
首先,DNS可以分為普通DNS和授權域DNS,攻擊普通DNS,IP地址需要隨機偽造,并且指明服務器要求做遞歸解析;但攻擊授權域DNS,偽造的源IP地址則不應該是純隨機的,而應該是事先收集的全球各地ISP的DNS地址,這樣才能達到最大攻擊效果,使流量清洗設備處于添加IP黑名單還是不添加IP黑名單的尷尬處境。添加會導致大量誤殺,不添加黑名單則每個報文都需要反向探測從而加大性能壓力。
原文轉自:http://blog.aliyun.com/243?spm=0.0.0.0.OS0war