分片报文攻击防范
分片报文攻击是通过向目标设备发送分片出错的报文,使得目标设备在处理分片错误的报文时崩溃、重启或消耗大量的CPU资源,给目标设备带来损失。分片报文攻击防范是指设备实时检测出分片报文并予以丢弃或者限速处理,实现对本设备的保护。
分片报文攻击主要分为以下几类:
分片数量巨大攻击
IP报文中的偏移量是以8字节为单位的。正常情况下,IP报文的头部有20个字节,IP报文的最大载荷为65515。对这些数据进行分片,分片个数最大可以达到8189片,对于超过8189的分片报文,设备在重组这些分片报文时会消耗大量的CPU资源。
启用分片报文攻击防范后,针对分片数量巨大攻击,如果同一报文的分片数目超过8189个,则设备认为是恶意报文,丢弃该报文的所有分片。
巨大Offset攻击
攻击者向目标设备发送一个Offset值超大的分片报文,从而导致目标设备分配巨大的内存空间来存放所有分片报文,消耗大量资源。
Offset字段的最大取值为65528,但是在正常情况下,Offset值不会超过8190(如果offset=8189*8,IP头部长度为20,最后一片报文最多只有3个字节IP载荷,所以正常Offset的最大值是8189),所以如果Offset值超过8190,则这种报文即为恶意攻击报文,设备直接丢弃。
启用分片报文攻击防范后,设备在收到分片报文时判断Offset*8是否大于65528,如果大于就当作恶意分片报文直接丢弃。
重复分片攻击
重复分片攻击就是把同样的分片报文多次向目标主机发送,存在两种情况:
多次发送的分片完全相同,这样会造成目标主机的CPU和内存使用不正常;
多次发送的分片报文不相同,但Offset相同,目标主机就会处于无法处理的状态:哪一个分片应该保留,哪一个分片应该丢弃,还是都丢弃。这样就会造成目标主机的CPU和内存使用不正常。
启用分片报文攻击防范后,对于重复分片类报文的攻击,设备实现对分片报文进行CAR(Committed Access Rate)限速,保留首片,丢弃其余所有相同的重复分片,保证不对CPU造成攻击。
Tear Drop攻击
Tear Drop攻击是最著名的IP分片攻击,原理是IP分片错误,第二片包含在第一片之中。即数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部。
如图8-1所示:
第一个分片IP载荷为36字节,总长度为56字节,protocol为UDP,UDP检验和为0(没有检验);
第二片IP载荷为4字节,总长度为24字节,protocol为UDP,Offset=24(错误,正确应该为36)。
Tear Drop攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Tear Drop攻击,设备会直接丢弃所有分片报文。
Syndrop攻击
Syndrop攻击原理和Tear Drop原理一致,区别在于Syndrop攻击使用了TCP协议,Flag为SYN,而且带有载荷。
如图8-2所示:
第一片IP载荷为28字节,IP头部20字节;
第二片IP载荷为4字节,IP头部20字节,Offset=24(错误,正确应该是28)。
Syndrop攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Syndrop攻击,设备会直接丢弃所有分片报文。
NewTear攻击
第一片IP载荷28字节(包含UDP头部,UDP检验和为0);
第二片IP载荷4字节,offset=24(错误,正确应该是28)。
NewTear攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于NewTear攻击,设备会直接丢弃所有分片报文。
Bonk攻击
第一片IP载荷为36字节(包含UDP头部,UDP检验和为0);
第二片IP载荷为4字节,offset=32(错误,正确应该是36)。
Bonk攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Bonk攻击,设备会直接丢弃所有分片报文。
Nesta攻击
第一片IP载荷为18,protocol为UDP,检验和为0;
第二片offset为48,IP载荷为116字节;
第三片offset为0,more frag为1,也就是还有分片,40字节的IP option,都是EOL,IP载荷为224字节。
Nesta攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Nesta攻击,设备会直接丢弃所有分片报文。
Rose攻击
IP protocol可以是UDP或TCP,可以选择。
如图8-6所示:
如果IP protocol是TCP:
第一片IP载荷为48字节(包含TCP头部),IP头部20字节;
第二片IP报文的载荷为32字节,但是offset=65408,more frag=0,即最后一片。
如果IP protocol是UDP:
第一片载荷长度40字节(包含UDP头部,UDP校验和为0),IP头部20字节;
第二片IP报文的载荷为32字节,但是offset=65408,more frag=0,即最后一片。
Rose攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Rose攻击,设备会直接丢弃所有分片报文。
Fawx攻击
Fawx攻击是一种分片错误的IGMP报文。如图8-7,Fawx攻击的特征是:发送IGMP报文分片,一共两片,第一片9个字节,第二个分片offset=8,载荷长度为16字节,没有结束分片。
Fawx攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Fawx攻击,设备会直接丢弃所有分片报文。
Ping of Death攻击
Ping of Death攻击原理是攻击者发送一些尺寸较大(数据部分长度超过65507字节)的ICMP报文对设备进行攻击。设备在收到这样一个尺寸较大的ICMP报文后,如果处理不当,会造成协议栈崩溃。
启用分片报文攻击防范后,设备在收到这种攻击报文后,直接丢弃该报文。
Jolt攻击
Jolt攻击是攻击者发送总长度大于65535字节的报文对设备进行攻击。Jolt攻击报文一共173个分片,每个分片报文的IP载荷为380字节,因此总长度为:173*380+20=65760,远远超过65535。设备在收到这样的报文时,如果处理不当,会造成设备崩溃、死机或重启。
启用分片报文攻击防范后,设备在收到Jolt攻击报文后,直接丢弃该报文。