泛洪

交換機和網橋使用的一種數據流傳遞技術

泛洪(Flooding)是交換機和網橋使用的一種數據流傳遞技術,將某個介面收到的數據流從除該介面之外的所有介面發送出去。

過程


交換機根據收到數據幀中的源MAC地址建立該地址同交換機埠的映射,並將其寫入MAC地址表中。交換機將數據幀中的目的MAC地址同已建立的MAC地址表進行比較,以決定由哪個埠進行轉發。如數據幀中的目的MAC地址不在MAC地址表中,則向所有埠轉發。

分類


SYN泛洪攻擊。SYN攻擊利用的是TCP的三次握手機制,攻擊端利用偽造的IP地址向被攻擊端發出請求,而被攻擊端發出的響應報文將永遠發送不到目的地,那麼被攻擊端在等待關閉這個連接的過程中消耗了資源,如果有成千上萬的這種連接,主機資源將被耗盡,從而達到攻擊的目的。我們可以利用路由器的TCP攔截功能,使網路上的主機受到保護(以Cisco路由器為例)。
DHCP報文泛洪攻擊
DHCP報文泛洪攻擊是指:惡意用戶利用工具偽造大量DHCP報文發送到伺服器,一方面惡意耗盡了IP資源,使得合法用戶無法獲得IP資源;另一方面,如果交換機上開啟了DHCP Snooping功能,會將接收到的DHCP報文上送到CPU。因此大量的DHCP報文攻擊設備會使DHCP伺服器高負荷運行,甚至會導致設備癱瘓。
ARP報文泛洪攻擊
ARP報文泛洪類似DHCP泛洪,同樣是惡意用戶發出大量的ARP報文,造成L3設備的ARP表項溢出,影響正常用戶的轉發。

攻擊方法


ICMP泛洪
ICMP泛洪(ICMP flood)是利用ICMP報文進行攻擊的一種方法。如果攻擊者向目標主機發送大量的ICMP ECHO報文,將產生ICMP泛洪,目標主機會將大量的時間和資源用於處理ICMPECHO報文,而無法處理正常的請求或響應,從而實現對目標主機的攻擊。
ICMP反射泛洪
Smurf IP利用廣播地址發送ICMP包,一旦廣播出去,就會被廣播域內的所有主機回應,當然這些包都回應給了偽裝的IP地址(指向被攻擊主機),偽裝IP地址可以是網際網路上的任何地址,不一定在本地;假如駭客不停地發送此種類型的包,就會造成DoS攻擊。
TCP SYN泛洪
對於TCP協議,當客戶端向伺服器發起連接請求並初始化時,伺服器一端的協議棧會留一塊緩衝區來處理“握手”過程中的信息交換。請求建立連接時發送的數據包的包頭SYN位就表明了數據包的順序,攻擊者可以利用在短時間內快速發起大量連接請求,以致伺服器來不及響應。同時攻擊者還可以偽造源IP地址。也就是說攻擊者發起大量連接請求,然後掛起在半連接狀態,以此來佔用大量伺服器資源直到拒絕服務。雖然緩衝區中的數據在一段時間內(通常是三分鐘)都沒有回應的話,就會被丟棄,但在這段時間內,大量半連接足以耗盡伺服器資源。
TCP LAND
LAND攻擊利用了TCP連接建立的三次握手過程,通過向一個目標主機發送一個用於建立請求連接的TCP SYN報文而實現對目標主機的攻擊。與正常的TCP SYN報文不同的是:LAND攻擊報文的源IP地址和目的IP地址是相同的,都是目標主機的IP地址。這樣目標主機接在收到這個SYN報文後,就會向該報文的源地址發送一個ACK報文,並建立一個TCP連接控制結構,而該報文的源地址就是自己。由於目的IP地址和源IP地址是相同的,都是目標主機的IP地址,因此這個ACK報文就發給了目標主機本身。
UDP泛洪(UDP flood)的實現原理與ICMP泛洪類似,攻擊者通過向目標主機發送大量的UDP報文,導致目標主機忙於處理這些UDP報文,而無法處理正常的報文請求或響應。
由於在早期的階段,路由器對包的最大尺寸都有限制,許多操作系統對TCP/IP棧的實現為ICMP包上都是規定64KB,並且在對包的標題頭進行讀取之後,要根據該標題頭裡包含的信息來為有效載荷生成緩衝區,當產生畸形的,聲稱自己的尺寸超過ICMP上限的包也就是載入的尺寸超過64K上限時,就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使接受方宕機。

區別


廣播幀的產生:網路中存在有廣播幀是不可避免的,比如開啟了DHCP伺服器,每次請求,都會有以”FF.FF.FF.FF.FF.FF”的幀格式出現,它向所有埠轉發,假設主機A與B在同一個網路內,當主機A要向主機B發送信息,那麼需要知道主機B的IP地址和MAC地址,這裡面我們假定A只知道B的IP地址,而不知道B的MAC地址,那麼這時A就需要向網路中發送一個ARP請求,來獲取B的MAC地址,這個ARP請求實際上就是一個廣播包。
而泛洪和MAC列表相關,在緩存中是存在的,有確定的MAC地址。只是在MAC表中找不到具體轉發的埠和MAC的配對,才開始泛洪處理,但是泛洪並不是廣播幀(FF.FF.FF.FF.FF.FF)。廣播是有一個具體的行為,它的對象是整個網路,在ARP時往往需要有特定的主機來響應,當然太多的廣播對於網路是有害的,容易造成廣播風暴。總的來說,主要有以下兩點區別:
泛洪操作廣播的是普通數據幀而不是廣播幀。
廣播是向同一子網內所有的埠(包括自己的那個埠)發送消息;泛洪只是在所有的埠中不包括發送消息的(自己的)那個埠發送消息。