当前位置: 主页 > 网络知识 > 网络安全 > 详解IP碎片攻击

详解IP碎片攻击

时间:2009-12-31来源:互联网 点击:


从上面的结果能看出:
* 分片标志位MF=0,说明是最后一个分片。
* 偏移量为0x1FFE,计算重组后的长度为 (0x1FFE * 8) + 29 = 65549 > 65535,溢出。
* IP包的ID为1109,能作为IDS检测的一个特征。
* ICMP包:
  类型为8、代码为0,是Echo Request;
  校验和为0x0000,程式没有计算校验,所以确切的说这个ICMP包是非法的。
* UDP包:
  目的端口由用户在命令参数中指定;
  源端口是目的端口和1235进行OR的结果;
  校验和为0x0000,和ICMP的相同,没有计算,非法的UDP。
  净荷部分只有一个字符’a’。

jolt2.c应该能伪造源IP地址,不过源程式中并没有把用户试图伪装的IP地址赋值给src_addr,不知道作者是不是故意的。jolt2的影响相当大,通过不停的发送这个偏移量非常大的数据包,不仅死锁未打补丁的Windows 系统,同时也大大增加了网络流量。原来有人利用jolt2模拟网络流量,测试IDS在高负载流量下的攻击检测效率,就是利用这个特性。
5. teardrop
teardrop也比较简单,默认发送两个UDP数据包,就能使某些Linux内核崩溃。Snort抓取的结果如下:

第一个:
01/08-11:42:21.985853 192.168.0.9 -> 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:56 MF
Frag Offset: 0x0   Frag Size: 0x24
A0 A8 86 C7 00 24 00 00 00 00 00 00 00 00 00 00  .....$..........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00                                      ....

* MF=1,偏移量=0,分片IP包的第一个。
* 结构图:

  |<-------20-------->|<------8------>|<---------------28---------------->|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |        IP         |      UDP      |               Data                |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


第二个:
01/08-11:42:21.985853 192.168.0.9 -> 192.168.0.1
UDP TTL:64 TOS:0x0 ID:242 IpLen:20 DgmLen:24
Frag Offset: 0x3   Frag Size: 0x4
A0 A8 86 C7                                      ....

* MF=0,偏移量=0x3,偏移字节数为 0x3 * 8 = 24,最后一个分片。
* 结构图:

  |<-------20-------->|<--4-->|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |        IP         | Data  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+

如果修改原始码,第二片IP包的偏移量也能为0x4,偏移字节数就是 0x4 * 8 = 32。

下面的结构图表示了接收端重组分片的过程,分别对应于偏移字节数为24和32两种情况:

  |<-------20-------->|<------8------>|<---------------28---------------->|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |        IP         |      UDP      |               Data                |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |
                      |                                +-+-+-+-+
                      |<------------- 24 ------------->| Data  |
                      |                                +-+-+-+-+
                                                       |<--4-->|

                      |
                      |                                           +-+-+-+-+
                      |<------------------- 32 ------------------>| Data  |
                      |                                           +-+-+-+-+
                                                                  |<--4-->|

能看出,第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象(overlap)。老的Linux内核(1.x - 2.0.x)在处理这种重叠分片的时候存在问题,WinNT/95在接收到10至50个teardrop分片时也会崩溃。你能阅读teardrop.c的原始码来了解怎么构造并发送这种数据包。
6. 怎么阻止IP碎片攻击
* 视窗系统系统请打上最新的Service Pack,目前的Linux内核已不受影响。
* 如果可能,在网络边界上禁止碎片包通过,或用iptables限制每秒通过碎片包的数目。
* 如果防火墙有重组碎片的功能,请确保自身的算法没有问题,否则被DoS就会影响整个网络。
* Win2K系统中,自定义IP安全策略,设置“碎片检查”。

站长资讯网
.
分页: [1] [2]
TAG: IP碎片,攻击
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言