数据包嗅探和欺骗是网络安全中两种不断发展的威胁。有许多数据包嗅探和欺骗工具,例如 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 操作。此操作会生成 ICMP 回显请求数据包。如果 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" )
感谢您的兴趣,这个项目既有趣又富有洞察力!