一、ICMP 重定向的定义
ICMP(Internet Control Message Protocol)重定向 是一种正常的网络控制机制,用于路由器通知主机存在更优的路由路径,减少不必要的转发。
例如:
二、ICMP 重定向报文结构
类型(Type):5
代码(Code):
0:网络重定向
1:主机重定向
2:服务类型和网络重定向
3:服务类型和主机重定向
三、ICMP 重定向攻击原理
攻击思路
攻击者伪造 ICMP Redirect 报文,向目标主机发送虚假的网关地址,让目标主机的路由表被“欺骗”,从而实现以下攻击目的:
攻击条件
四、攻击流程示例
类型: 5 (Redirect)
代码: 1 (Host Redirect)
网关地址: 攻击者 IP
3.目标主机修改路由表,将目标 IP 的流量改为发送给攻击者
4.攻击者实现中间人攻击或拒绝服务
五、实战演示工具
示例:
# 使用 scapy 构造 ICMP Redirect
from scapy.all import *
ip = IP(src="网关IP", dst="目标主机IP")
icmp = ICMP(type=5, code=1, gw="攻击者IP")
pkt = ip/icmp
send(pkt)
六、危害分析
风险 | 描述 |
中间人攻击 | 窃听敏感信息,如账号密码、Cookie、API Token |
数据篡改 | 注入恶意指令,修改请求 |
拒绝服务 | 将路由指向无效地址,导致业务中断 |
七、防御措施
✅ 1. 禁用 ICMP Redirect 接收
Linux
查看当前状态:
cat /proc/sys/net/ipv4/conf/all/accept_redirects
关闭(临时):
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
永久修改 /etc/sysctl.conf:
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
修改后 sysctl -p 生效。
✅ 2. 路由器安全配置
✅ 3. 网络分段与访问控制
✅ 4. 使用静态路由
✅ 5. 启用加密协议
八、检测与排查
1. 检查路由表异常
route -n
是否存在网关指向未知 IP。
2. 使用 IDS/IPS
示例 Snort 规则:
alert icmp any any -> any any (msg:"ICMP Redirect Attack"; icmp_type 5; sid:1000001;)
九、总结
维度 | 内容 |
攻击名 | ICMP Redirect Attack |
原理 | 伪造 ICMP 重定向报文,修改主机路由表 |
影响 | 中间人攻击、拒绝服务 |
防御 | 禁用 accept_redirects、路由器配置安全、使用加密 |
ICMP Redirect 在现代网络中极少需要启用,关闭是最安全的防御措施。
如果您还没有服务器,推荐使用雪花云(xuehuacloud.com)