Packet Sniffing and Spoofing
1.0.0
資料包嗅探和欺騙是網路安全中兩種不斷發展的威脅。有許多資料包嗅探和欺騙工具,例如 Wireshark、tcpdump、netwox 等。能夠使用這些工具固然重要,但在網路安全中更重要的是了解這些工具的工作原理,即封包嗅探和欺騙是如何在軟體中實現的。
以下是一個利用 Scapy 的簡單嗅探器程式:
from scapy . all import *
print ( "SNIFFING PACKETS" )
def print_pkt ( pkt ):
print ( "Source IP:" , pkt [ IP ]. src )
print ( "Destination IP:" , pkt [ IP ]. dst )
print ( "Protocol:" , pkt [ IP ]. proto )
print ( " n " )
pkt = sniff ( filter = 'icmp' , prn = print_pkt )
在上面的程式碼中,對於每個捕獲的資料包,都會呼叫回調函數print_pkt()
;該函數將列印一些資料包的資訊。
嗅探資料包時,某些類型的資料包可能會引起高度關注。在設計嗅探器時,可以透過設定過濾器來僅選擇某些資料包。 Scapy的過濾使用BPF(柏克萊資料包過濾器)語法。
使用 Scapy 進行過濾的範例包括:
128.200.0.0/16
的資料包作為資料包欺騙工具,Scapy 可以在不同資料包頭的欄位中設定任意值。例如,惡意方可以使用 IP 欺騙來對目標發動 DDoS 攻擊。 IP 欺騙是指建立具有修改後的來源位址的 IP 封包,以隱藏傳送者的身分、冒充另一個網路實體(電腦系統、資料中心等),或兩者兼具。
欺騙ICMP資料包
from scapy . all import *
print ( "SENDING SPOOFED ICMP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "93.184.216.34" ) # IP Layer
icmp = ICMP () # ICMP Layer
pkt = ip / icmp # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
欺騙 UDP 封包
from scapy . all import *
print ( "SENDING SPOOFED UDP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "10.0.2.69" ) # IP Layer
udp = UDP ( sport = 8888 , dport = 9090 ) # UDP Layer
data = "Hello UDP! n " # Payload
pkt = ip / udp / data # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
結合嗅探和欺騙技術來實現嗅探然後欺騙程序。需要同一台 LAN 上的兩台虛擬機器。從 VM A 對 IP X 執行 ping 操作。如果 X 處於活動狀態,則 ping 程式將收到回顯回复,並列印出回應。 sniff-and-then-spoof 程式在 VM B 上運行,VM B 透過封包嗅探來監視 LAN。每當它看到 ICMP 回顯請求時,無論目標 IP 位址是什麼,程式都會立即使用封包欺騙技術發出回顯答案。因此,無論機器 X 是否存活,ping 程式總是會收到回复,表示 X 存活。
IP ()
IP (). show ()
IP () / ICMP ()
p = IP () / ICMP ()
p . show ()
p = IP () / UDP ()
p . show ()
p = IP () / UDP () / "This is my UDP packet"
p . show ()
send ( IP () / UDP () / "This is my UDP packet" )
send ( IP ( dst = '10.0.2.7' ) / UDP () / "This is my UDP packet" )
感謝您的興趣,這個項目既有趣又富有洞察力!