首页/网络/协议速查/ICMP 相关攻击面

ICMP 相关攻击面

历史上有 Smurf(广播放大)、Ping of Death(超大包)、ICMP 隧道等攻击;现代内核已免疫大部分,但放大与隧道仍现实存在。

协议速查网络更新于 2026-10-13

ICMP 的攻击面

ICMP 是 IP 层的差错与控制协议,报错、探测、路径发现都靠它。历史上围绕它出现的攻击包括 Smurf 广播放大、Ping of Death 超大包重组崩溃、ICMP 洪水耗尽带宽,以及把数据封装进 Echo 载荷的 ICMP 隧道外逃。现代内核已经修掉了大部分可导致崩溃的缺陷,但放大与隧道这两类风险依然现实存在,出口流量监控中持续异常的 ICMP 值得关注。

基本信息

协议位置IP 层,协议号 1
IPv6 对应ICMPv6,协议号 58,承担邻居发现等必需功能
常用类型8/0 Echo 请求与应答,11 超时,3 不可达,5 重定向
典型风险放大攻击、洪水、隐蔽隧道、信息探测
防护位置边界设备限速、主机防火墙、流量监控

常见攻击与防护

攻击原理防护
Smurf伪造源地址向广播地址发 Echo禁用定向广播,限制 ICMP 速率
ICMP 洪水海量 Echo 挤占带宽与设备资源限速与流量清洗
Ping of Death超大分片重组导致崩溃(历史)现代内核已修复
ICMP 隧道把数据藏进载荷外传监测异常的大小与频率
ICMP 重定向伪造重定向改写主机路由表主机侧关闭接受重定向

典型使用场景

  • 边界策略设计:先明确哪些不可达与超时报文必须放行,否则会引发 PMTU 黑洞
  • 主机加固:关闭接受 ICMP 重定向,避免路由表被伪报文改写
  • 出口监控:对持续性、高频 ICMP 建立告警,识别被控主机的隐蔽通道
  • IPv6 环境:ICMPv6 不能整体封禁,邻居发现依赖它,封禁会导致网络直接不可用
  • 应急响应:从 ICMP 载荷大小分布入手,判断是否存在数据外传

检测与加固线索

检测与加固线索
tcpdump -nn -v 'icmp' -c 200 | head -30      # 关注非标准大包与高频单源
cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts   # 应为 1
sysctl net.ipv4.conf.all.accept_redirects net.ipv4.conf.all.send_redirects   # 建议为 0
nstat -az | grep -i icmp
把 ICMP 整体封禁是常见的错误加固:路径 MTU 发现依赖 ICMP 不可达报文,封掉后会出现能 ping 通、小文件正常、大文件卡死的疑难故障;IPv6 环境更严重,邻居发现直接依赖 ICMPv6。正确做法是按类型与速率做限制,而不是全禁。

易错点

  • 只看 ICMP 类型做判断:隧道流量用的正是完全正常的 8 与 0,必须结合包大小、频率与目的分布识别
  • 在 IPv6 环境套用 IPv4 的「全禁 ICMP」经验,导致邻居发现失效、网络直接不通
  • 只在外网口做限制,内网横向被控主机仍可用 ICMP 隧道外传数据
  • 认为现代内核已经免疫一切 ICMP 攻击,忽略洪水这一类靠流量本身就能生效的风险

数据来源与参考

  • RFC 2827(源地址防伪)
  • CAIDA 网络测量资料

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌