什么是 ICMP 重定向攻击?原理与防御
一、ICMP 重定向的定义ICMP(Internet Control Message Protocol)重定向 是一种正常的网络控制机制,用于路由器通知主机存在更优的路由路径,减少不必要的转发。
例如:
[*]主机 A 将数据发给路由器 R1
[*]R1 发现到目标 IP,另一网关 R2 更优
[*]R1 会发送 ICMP Redirect 消息给主机 A
[*]之后,主机 A 会直接将数据发送给 R2
[*]这种机制可以优化网络路径,但也带来了安全隐患。
二、ICMP 重定向报文结构
类型(Type):5
代码(Code):
0:网络重定向
1:主机重定向
2:服务类型和网络重定向
3:服务类型和主机重定向
[*]网关地址:告诉主机应将数据包发送到的新网关
三、ICMP 重定向攻击原理
🎯 攻击思路
攻击者伪造 ICMP Redirect 报文,向目标主机发送虚假的网关地址,让目标主机的路由表被“欺骗”,从而实现以下攻击目的:
[*]中间人攻击(MITM)
[*]攻击者将自己伪装为网关
[*]目标主机将流量转发到攻击者,攻击者再转发给真正的网关
[*]攻击者可读取、篡改、注入数据
[*]流量重定向 / 拒绝服务
[*]攻击者将网关指向不存在的 IP
[*]目标主机流量丢弃,造成 DOS 攻击
🔬 攻击条件
[*]攻击者在同一网段,能发送 ICMP 报文给目标主机
[*]目标主机或网络设备未禁止接受 ICMP Redirect
四、攻击流程示例
[*]攻击者监听目标主机与网关的通信
[*]发送伪造的 ICMP Redirect 报文
类型: 5 (Redirect)
代码: 1 (Host Redirect)
网关地址: 攻击者 IP3.目标主机修改路由表,将目标 IP 的流量改为发送给攻击者
4.攻击者实现中间人攻击或拒绝服务
五、实战演示工具
[*]hping3
[*]ettercap
[*]scapy
示例:
# 使用 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 = 0net.ipv4.conf.default.accept_redirects = 0修改后 sysctl -p 生效。
✅ 2. 路由器安全配置
[*]禁止发送 ICMP Redirect 报文,除非业务需要
✅ 3. 网络分段与访问控制
[*]防止攻击者与目标主机处于同一网段
✅ 4. 使用静态路由
[*]对于服务器,配置固定路由,避免依赖 ICMP Redirect 动态更新
✅ 5. 启用加密协议
[*]即使遭受中间人攻击,TLS 加密可保护通信内容不被解析
八、检测与排查
🔍 1. 检查路由表异常
route -n是否存在网关指向未知 IP。
🔍 2. 使用 IDS/IPS
[*]Snort / Suricata 可检测 ICMP Redirect 攻击行为。
示例 Snort 规则:
<p>alert icmp any any -> any any (msg:"ICMP Redirect Attack"; icmp_type 5; sid:1000001;)</p>九、总结
维度内容
攻击名ICMP Redirect Attack
原理伪造 ICMP 重定向报文,修改主机路由表
影响中间人攻击、拒绝服务
防御禁用 accept_redirects、路由器配置安全、使用加密
ICMP Redirect 在现代网络中极少需要启用,关闭是最安全的防御措施。
页:
[1]