ICMP 重定向攻击
原理
ICMP (Internet Control Message Protocol) :Internet 控制报文协议,用于在 IP 主机和 路由器之间传递控制消息(控制消息指网络是否通、主机是否可达、路由器是否可用等)
ICMP 重定向
在某些特定情况下,路由器在检测到主机使用非优化路由时,会向主机发送一个ICMP重定向报文,使主机的路由改变
攻击模型
网络信息
win10 ip:192.168.137.133
kali ip:192.168.137.130
网关ip:192.168.137.1
测试kali和 windows10 连通性:
win10 ping kali:
kali ping win10:
攻击
正常指定 -i 和 -g
- kali 使用
netwox 86 -g 192.168.137.130 -i 192.168.137.1
将win10网关重定向到kali 的ip 地址
-g
: 重定向到的新网关的IP地址(Kali攻击机的IP地址)-i
:受攻击主机的网关的IP地址
- Win10 抓取流量如下:可以看到win10 收到来自网关 192.168.137.1 的重定向报文
分析上面的 ICMP 重定向报文:
- ICMP 报文的
Type =5, code = 1
,表示为主机重定向报文 Gateway Address = 192.168.137.130
字段值为 kali ip ,即将 win10 网关重定向到 kali 的ip地址
此时win 10 ping 不通 baidu,无法上网
可以看到此时网关的下一跳被设置为 kali ip:(即网关被重定向到 kali ip)
不指定 -i 选项
如果把netwox里面的命令中-i 及后面的内容删除,观察此时是否能上网?
从抓取的报文可知,攻击机 kali (192.168.137.130) 直接将重定向报文发送给受攻击主机 win10(192.168.137.133)
此时win10可以上网,,这说明没有指定被攻击主机的网关 IP 地址时,攻击无法生效,Windows 10 仍然按照正常的路由将数据包发送给其默认网关,从而能够正常访问 Internet。
将 -g 指定为虚假 ip
如果把netwox命令中的-g指定的ip地址改为一个不在该网段中的虚假ip地址,观察此时能否上网,说明了什么?
可以看到网关的下一跳被设置为虚假ip地址
win10 上网情况:部分数据包正常传输(ping通的部分),部分数据包不可达(无法访问目标主机),表明攻击并没有完全阻止数据包的正常传输,部分数据包遵循正常的路由。
识别出ICMP重定向攻击报文
在Kali Linux能够攻击成功时,观察Wireshark抓取的ICMP重定向报文,思考理论上有没有办法识别出ICMP重定向攻击报文
-
检查源 IP 地址:正常的 ICMP 重定向报文应该来自当前主机的网关。如果源 IP 地址不是网关地址或者来自一个不可信的地址,可能是攻击报文。
-
比较多个重定向报文:如果短时间内收到大量来自不同源地址或针对不同目标的重定向报文,可能是攻击行为。
防御 ICMP 重定向攻击
防御 ICMP 重定向攻击的方法包括:
- 禁用 ICMP 重定向:在 Windows 10 中,可以通过修改注册表或使用组策略编辑器来禁用 ICMP 重定向。这样,即使收到伪造的重定向报文,系统也不会更改路由表。
- 使用防火墙:配置防火墙来过滤掉可疑的 ICMP 重定向报文。可以设置规则只允许来自可信网关的重定向报文通过。
打开防火墙后,win10虚拟机可以正常上网