剖析DDOS攻擊的原理 提供解決方法(圖文)
您當(dāng)前位置:首頁(yè) > 紅訊頻道 > 網(wǎng)絡(luò)技術(shù)
紅軟基地 推薦
2012-01-23
3.2 ACK Flood攻擊
3.2.1 原理
ACK Flood攻擊是在TCP連接建立之后,所有的數(shù)據(jù)傳輸TCP報(bào)文都是帶有ACK標(biāo)志位的,主機(jī)在接收到一個(gè)帶有ACK標(biāo)志位的數(shù)據(jù)包的時(shí)候,需要檢查該數(shù)據(jù)包所表示的連接四元組是否存在,如果存在則檢查該數(shù)據(jù)包所表示的狀態(tài)是否合法,然后再向應(yīng)用層傳遞該數(shù)據(jù)包。如果在檢查中發(fā)現(xiàn)該數(shù)據(jù)包不合法,例如該數(shù)據(jù)包所指向的目的端口在本機(jī)并未開放,則主機(jī)操作系統(tǒng)協(xié)議棧會(huì)回應(yīng)RST包告訴對(duì)方此端口不存在。
這里,服務(wù)器要做兩個(gè)動(dòng)作:查表、回應(yīng)ACK/RST。這種攻擊方式顯然沒有SYN Flood給服務(wù)器帶來的沖擊大,因此攻擊者一定要用大流量ACK小包沖擊才會(huì)對(duì)服務(wù)器造成影響。按照我們對(duì)TCP協(xié)議的理解,隨機(jī)源IP的ACK小包應(yīng)該會(huì)被Server很快丟棄,因?yàn)樵诜⻊?wù)器的TCP堆棧中沒有這些ACK包的狀態(tài)信息。但是實(shí)際上通過測(cè)試,發(fā)現(xiàn)有一些TCP服務(wù)會(huì)對(duì)ACK Flood比較敏感,比如說JSP Server,在數(shù)量并不多的ACK小包的打擊下,JSP Server就很難處理正常的連接請(qǐng)求。對(duì)于Apache或者IIS來說,10kpps的ACK Flood不構(gòu)成危脅,但是更高數(shù)量的ACK Flood會(huì)造成服務(wù)器網(wǎng)卡中斷頻率過高,負(fù)載過重而停止響應(yīng)?梢钥隙ǖ氖,ACK Flood不但可以危害路由器等網(wǎng)絡(luò)設(shè)備,而且對(duì)服務(wù)器上的應(yīng)用有不小的影響。抓包:

圖
如果沒有開放端口,服務(wù)器將直接丟棄,這將會(huì)耗費(fèi)服務(wù)器的CPU資源。如果端口開放,服務(wù)器回應(yīng)RST。
3.2.2 ACK Flood防護(hù)
利用對(duì)稱性判斷來分析出是否有攻擊存在。所謂對(duì)稱型判斷,就是收包異常大于發(fā)包,因?yàn)楣粽咄ǔ?huì)采用大量ACK包,并且為了提高攻擊速度,一般采用內(nèi)容基本一致的小包發(fā)送。這可以作為判斷是否發(fā)生ACK Flood的依據(jù),但是目前已知情況來看,很少有單純使用ACK Flood攻擊,都會(huì)和其他攻擊方法混合使用,因此,很容易產(chǎn)生誤判。
一些防火墻應(yīng)對(duì)的方法是:建立一個(gè)hash表,用來存放TCP連接“狀態(tài)”,相對(duì)于主機(jī)的TCP stack實(shí)現(xiàn)來說,狀態(tài)檢查的過程相對(duì)簡(jiǎn)化。例如,不作sequence number的檢查,不作包亂序的處理,只是統(tǒng)計(jì)一定時(shí)間內(nèi)是否有ACK包在該“連接”(即四元組)上通過,從而“大致”確定該“連接”是否是“活動(dòng)的”。
來源:紅訊頻道