1. 程式人生 > >使用Kali Linux進行SYN Flood攻擊

使用Kali Linux進行SYN Flood攻擊

1.SYN

SYN:同步序列編號(Synchronize Sequence Numbers),是TCP/IP建立連線時使用的握手訊號。在客戶機和伺服器之間建立正常的TCP網路連線時,客戶機首先發出一個SYN訊息,伺服器使用SYN+ACK應答表示接收到了這個訊息,最後客戶機再以ACK訊息響應。這樣在客戶機和伺服器之間才能建立起可靠的TCP連線,資料才可以在客戶機和伺服器之間傳遞。

2.SYN Flooding攻擊基本原理

要明白這種攻擊的基本原理,還是要從TCP連線建立的過程開始說起:

大家都知道,TCP與UDP不同,它是基於連線的,也就是說:為了在服務端和客戶端之間傳送TCP資料,必須先建立一個虛擬

鏈路,也就是TCP連線,建立TCP連線的標準過程是這樣的:

  • 首先,請求端(客戶端)傳送一個包含SYN標誌的TCP報文,SYN即同步(Synchronize),同步報文會指明客戶端使用的埠以及TCP連線的初始序號;
  • 第二步,伺服器在收到客戶端的SYN報文後,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時TCP序號被加1,ACK即確認(Acknowledgment)。
  • 第三步,客戶端也返回一個確認報文ACK給伺服器端,同樣TCP序列號被加1,到此一個TCP連線完成。

以上的連線過程在TCP協議中被稱為三次握手(Three-way Handshake)。

        SYN攻擊屬於DDoS攻擊的一種,它利用TCP協議缺陷,通過傳送大量的半連線請求,使得被攻擊方資源耗盡,無法及時迴應或處理正常的服務請求。事實上SYN攻擊並不管目標是什麼系統,只要這些系統開啟TCP服務就可以實施。

  • 伺服器接收到連線請求(syn= 1),將此資訊加入未連線佇列,併發送請求包給客戶(syn=1,ack=x+1),此時進入SYN_RECV(服務端被動開啟後,接收到了客戶端的SYN並且傳送了ACK時的狀態)狀態。
  • 當伺服器未收到客戶端的確認包時,重發請求包,一直到超時,才將此條目從未連線佇列刪除(協議缺陷
  • 配合IP欺騙,SYN攻擊能達到很好的效果,通常,客戶端在短時間內偽造大量不存在的IP地址,向伺服器不斷地傳送syn包,伺服器回覆確認包,並等待客戶的確認,由於源地址是不存在的,伺服器需要不斷的重發直至超時,這些偽造的SYN包將長時間佔用未連線佇列,正常的SYN請求被丟棄,目標系統執行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。

3.SYN Flood攻擊示例

攻擊機:Kali Linux

靶機:Windows XP

1)檢視兩臺虛擬主機的IP地址,並判斷2臺主機IP地址是否在同一個IP網段

Kali Linux的IP地址:192.168.73.136

Windows XP的IP地址:192.168.73.138

2)連通性測試

關閉Windows XP 的防火牆;在Kali終端輸入命令 ping  192.168.73.138(Windows XP的IP地址),測試其連通性。

3)SYN Flood攻擊

在Windows XP上開啟工作管理員--效能(Ctrl+Alt+Insert),監控CPU資源的佔用率

在Kali終端輸入hping3 -q -n -a 2.2.2.2 -S -s 53 --keep -p 445 --flood 192.168.73.138

(格式:hping3 -q -n -a 偽造源地址 -S -s 偽造源埠 --keep -p 攻擊的目標埠 --flood 目標IP)

4)檢視攻擊效果

檢視Windows XP的CPU資源佔用率是否為100%,或是居高不下。或者在物理機上啟動WireShark,選擇Vmnet8網絡卡---抓包,是否看到大量的源地址為2.2.2.2的TCP包。

5)在Kali終端輸入"Ctrl+C"停止攻擊,可以看到Windows XP的CPU資源佔用率迴歸正常了。

實驗結束後不要忘記開啟Windows XP 的防火牆哦!!!