類型:ACK-Flood 攻擊
基本介紹
在TCP連接建立之后,所有的數據傳輸TCP報文都是帶有ACK標志位的,主機在接收到一個帶有ACK標志位的數據包的時候,需要檢查該數據包所表示的連接四元組是否存在,如果存在則檢查該數據包所表示的狀態是否合法,然后再向應用層傳遞該數據包。如果在檢查中發現該數據包不合法,例如該數據包所指向的目的端口在本機并未開放,則主機操作系統協議棧會回應RST包告訴對方此端口不存在。通常狀態檢測防火墻所做的事情與此類似,只不過防火墻只攔截非法的數據包,而不主動回應。
現狀
目前ACK Flood并沒有成為攻擊的主流,而通常是與其他攻擊方式組合在一起使用。回顧前面描述的SYN Cookie算法,其核心思想是主動回應SYN/ACK包,然后校驗第3次握手的ACK報文否合法,目前大多數實現中校驗ACK報文的合法性都涉及到較為復雜的算法。當SYN Flood與ACK Flood一起發生的時候, 主機和防火墻將耗費大量的精力來計算ACK報文是否合法以致不堪重負。
判定
從以上的描述可以看到ACK Flood具有”單包攻擊”的特點。但我們仍然可以從TCP/IP協議的特性以及數據傳輸特性中得到一定的統計規律。在現實世界中,正常數據傳輸的兩個方向(客戶端à服務器,服務器à客戶端)上的報文數量基本上是均衡的,同時數據報文的內容是較為隨機的。因此,當數據傳輸兩個方向上的報文數量發生傾斜的時候,基本上可以判定發生了攻擊。并且在大多數情況下,由于為了追求發包的速率,攻擊報文的內容是較為固定的。因此,防護設備可以通過學習攻擊報文的特征,當某個特征在一段時間的采樣內大量重復出現,那么基本上可以判定符合此特征的數據報文為攻擊報文。當然,統計的方法不可避免會帶來誤判,因此將統計方法與連接狀態檢測結合起來是比較合理的做法。
網絡安全學院 社區 Wiki
推薦文章: