一、小白剧场
小白:大东,你快来看这个新闻。
大东:来了来了,我瞧一眼。
小白:这个泪滴攻击怎么从来没听说过?
眼泪(图片来自网络)
大东:这个算是子类攻击了,你大概没有了解过。
小白:那你给我讲讲呗。
二、基于UDP
大东:泪滴攻击又叫Teardrop攻击,是一种畸形报文攻击。
小白:那就是拒绝式服务攻击的一类了。
Teardrop攻击(图片来自网络)
大东:Teardrop攻击是基于UDP的病态分片数据包的攻击方法。
小白:工作原理是什么呢?
大东:向被攻击者发送多个分片的IP包。
Teardrop攻击工作原理(图片来自网络)
小白:包括该分片数据包属于哪个数据包,以及在数据包中的位置等信息吗?
大东:是的,甚至某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。利用UDP包重组时重叠偏移,假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象。
小白:也就是说攻击者A给受害者B发送一些分片IP报文,并且故意将“13位分片偏移”字段设置成错误的值(既可与上一分片数据重叠,也可错开),B在组合这种含有重叠偏移的伪造分片报文时,某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。
大东:你理解的没错。漏洞对系统主机发动拒绝服务攻击,最终导致主机菪掉;对于Windows系统会导致蓝屏死机,并显示STOP 0x0000000A错误。
小白:如何应用这项技术?
三、TCP/IP协议
大东:TCP/IP协议在数据传输过程中,对过大的数据会进行分包处理,传输到目的主机后再到堆栈中进行重组。为实现重组,IP包的包头中包含有信息说明该分段是源数据的哪一段。
小白:如果发送伪造的含有重叠偏移信息的分段包到目标主机呢?
大东:当被攻击主机试图将分段包重组时,由于分段数据的错误,重组过程会引起内存错误,导致协议栈的崩溃。
小白:也就是说这类攻击技术,会有很大的资源占用?
大东:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段或者更多数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
小白:TearDrop攻击利用在TCP/IP协议栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。
四、Offset
大东:IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP协议栈(例如NT在service pack4以前)在收到含有重叠偏移的伪造分段时将崩溃。
小白:综合来说还是利用了TCP/IP协议的缺陷造成。
大东:最有效的方法就是在服务器前端加防火墙,过滤不安全的包。比如我利用HillStone防火墙保护后端安全,在防火墙中开启TearDrop攻击防护。
小白:就没有什么检测方法吗?
大东:对接收到的分片数据包进行分析,计算数据包的片偏移量(Offset)是否有误。
小白:还有吗?
大东:还有一种反攻击方法。添加系统补丁程序,丢弃收到的病态分片数据包并对这种攻击进行审计。尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。
小白:是因为防火墙上可以设置当出现重叠字段时所采用的规则吗?
大东:你说的没错。
小白:就没有什么可以防御的有效方法吗?
五、有效防御
大东:有的,网络安全设备将接收到的分片报文先放入缓存中,并根据源IP地址和目的IP地址对报文进行分组,源IP地址和目的IP地址均相同的报文归入同一组,然后对每组IP报文的相关分片信息进行检查,丢弃分片信息存在错误的报文。为了防止缓存溢出,当缓存快要存满是,直接丢弃后续分片报文。