ICMP Flood攻击
通常情况下,网络管理员会用PING程序对网络进行监控和故障排除,大概过程如下:
1.源计算机向接收计算机发出ICMP响应请求报文(ICMP ECHO)。
2.接收计算机接收到ICMP响应请求报文后,会向源计算机回应一个ICMP 应答报文(ECHO Reply)。
这个过程是需要CPU处理的,在有些情况下还可能消耗掉大量的资源。
如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的数据报文。如图5所示。
图5 ICMP Flood攻击示意图
解决办法:
设备针对ICMP泛洪攻击进行CAR(Committed Access Rate)限速,保证CPU不被攻击,保证网络的正常运行。
Ping of Death攻击
所谓Ping of Death,就是利用一些尺寸超大的ICMP报文对系统进行的一种攻击。
IP报文的长度字段为16位,这表明一个IP报文的最大长度为65535。对于ICMP回应请求报文,如果数据长度大于65507,就会使ICMP数据+IP头长度(20)+ICMP头长度(8)> 65535。对于有些防火墙或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启。大部分处理程序假定报文不会超过最大尺寸,超大报文重组所占内存块大于IP包最大尺寸,重组过程引发缓冲区溢出,系统进入非稳定状态,导致TCP/IP堆栈崩溃。
如图6所示。
图6 ICMP超大报文示意图
解决办法:
启用分片报文攻击防范后,设备在收到这种攻击报文后,直接丢弃该报文。
分片报文攻击是通过向目标设备发送分片出错的报文,使得目标设备在处理分片错误的报文时崩溃、重启或消耗大量的CPU资源,给目标设备带来损失。分片报文攻击防范是指设备实时检测出分片报文并予以丢弃或者限速处理,实现对本设备的保护。
Large-ICMP攻击
同ping of death类似,Large-ICMP也是利用一些大尺寸的ICMP报文对系统进行的一种攻击,与ping of death不同的是,Large-ICMP报文的长度不会超过IP报文的最大长度65535,但是对一些操作系统也会造成破环。
需要在防火墙上配置允许通过的ICMP报文的最大长度。
解决方法:
同上
ICMP-Unreachable攻击
某些系统在收到网络(报文类型字段为3,代码字段为0)或主机(报文类型字段为3,代码字段为1)不可达的ICMP报文后,对于后续发往此目的地的报文直接认为不可达。如图7所示。
图7 ICMP-Unreachable 攻击示意图
攻击者利用这种机制,向目标主机发送虚假的ICMP-Unreachable报文,干扰了目标主机的路由信息,影响了报文发送。
ICMP-Redirect攻击
ICMP-Redirect攻击和ICMP-Unreachable攻击类似。
网络设备可以向同一个子网的主机发送ICMP重定向报文,请求主机修改路由。
攻击者利用这个原理,跨越网段向另外一个网络的目标主机发送虚假的重定向报文,以改变目标主机的路由表。这种攻击干扰了目标主机的路由信息,影响了报文发送。如图8所示。
图8 ICMP-Redirect攻击示意图