Ping of Death俗称“死拼”,其攻击原理是攻击者A向受害者B发送一些尺寸超大的ICMP(Ping命令使用的是ICMP报文)报文对其进行攻击(对于有些路由器或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启)。
为了让大家更好的理解Ping of Death攻击原理,下面补充介绍下IP报文和ICMP报文的封装格式。如下图所示:
1).4位版本:标识IP协议的版本。如果是IPV4,则为ox4,二进制为0100。如果是IPV6,则为ox6,二进制为0110;
2).4位首部长度:标识IP首部的长度,单位是DWord(4字节)。4位二进制数组成的最大数为1111,十进制为15,所以IP首部的最大长度为:15*4=60字节。
普通IP报文的首部长度为20字节,所以该四位首部长度标识位一般为:0101;
3).8位服务类型(TOS):TOS是Type Of Services的缩写。具体含义如下图所示:
第2、3、4、5位分别代表最小费用、最高可靠性、最大吞吐量和最小延时,4种服务中只能同时选择一种,置“0”代表选中,如全部为“0”,则代表一般服务。高三位用来标识报文的优先级,“111”代表最高优先级。
4).16位报文总长度:用来标识IP报文的长度,216-1=65535,所以单片IP报文的最大长度不能超过65535个字节;
5).8位生存时间(TTL):TTL即Time To Live,报文的最大生存时间为28-1=255,单位是跳,报文每经过一次路由器,TTL自动减1,当TTL减到0时,报文自动被丢弃;
6).16位标识:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1;
7).3位标识:用来标识报文分片的相关信息,具体如下所示;
8).13位分片偏移:用来标识分片报文的分片偏移量,偏移的数量必须是8的整数倍;
9).8位协议号:用来标识IP种封装的报文种类。
10).16位首部校验和:对IP首部的校验字段,只对首部校验,不管数据部分。
Ping of Death攻击,上面已经介绍了,IP报文的最大长度是216-1=65535个字节,那么去除IP首部的20个字节和ICMP首部的8个字节,实际数据部分长度最大为:65535-20-8=65507个字节。所谓的尺寸超大的ICMP报文就是指数据部分长度超过65507个字节的ICMP报文
针对Ping of Death攻击,网络安全设备仅仅通过超大包过滤方法不能达到很好的防御效果,因为在线网种传输的大部分报文都经过了分片,所以单片报文不会超过65507个字节,只是在接收端完成组合后才会超过65507个字节。所以针对Ping of Death攻击,最有效防御方式是禁止ICMP报文通过网络安全设备。