|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、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)
网关地址: 攻击者 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. 路由器安全配置
- 禁止发送 ICMP Redirect 报文,除非业务需要
✅ 3. 网络分段与访问控制
✅ 4. 使用静态路由
- 对于服务器,配置固定路由,避免依赖 ICMP Redirect 动态更新
✅ 5. 启用加密协议
- 即使遭受中间人攻击,TLS 加密可保护通信内容不被解析
八、检测与排查
🔍 1. 检查路由表异常
是否存在网关指向未知 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 在现代网络中极少需要启用,关闭是最安全的防御措施。
|
|