泪滴——Teardrop攻击
1.原理
Teardrop攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的那一段的信息,某些TCP/IP在收到含有重叠偏移的伪造分段时将崩溃。具体的讲是这样的,物理层通常给所能传输的帧加上一个尺寸上限,IP 层将数据报的大小与物理层帧的上限相比较,如果需要就进行分段。在IP报头中设置了一些域用于分段:标志域为发送者传输的每一个报文保留一个独立的值,这个特定的值被拷贝到每个特定报文的每个分段,标志域中有一位作为“更多分段”位,除了最后一段之外,该位在组成一个数据报的所有分段中被置位;分段偏移域含有该分段自初始数据报开始位置的位移。对于存在Teardrop漏洞的操作系统,如果接受到畸形数据分段,则在某些情况下会破坏整个IP协议栈,因此,必须重启计算机才能恢复。
2.攻击在早期的由BSD实现的网络协议中,在处理数据包分段时存在漏洞,后来的一些操作系统都沿用了BSD的代码,所以这个漏洞在Linux, Windows 98和Windows NT中都是存在的。网上有一个Linux上运行的Teardrop程序——Teardrop.c,它就是实现这样的攻击的。下载地址是:http: //www.computec.ch/software/denial_of_service/teardrop/teardrop.c
3.防御:
安装最新的服务包,设置防火墙时对分段进行重组,而不是转发它们。
UDP Flood
1.原理
做个简单的实验,用Telnet连接到对方TCP chargen 19号端口,看看返回了什么?很吃惊的是,返回了大量的回应数据,如果能加以利用的话就能够发动DoS攻击了。先介绍一下Chargen服务, RFC0864中定义了这种服务,其UDP/TCP均使用了19号端口。UDP chargen server若收到一个封包,就会随一个封包回去;而TCP chargen server若发现与Client的连线存在,就会不断的发送封包给Client,所以TCP chargen可以直接诱发DoS攻击。不过常用的还是UDP chargen,它常被用来作为DDoS中放大网络流量之用,一般要结合Echo服务。Echo服务用的是UDP的7号端口,如果它收到一个包,就会把包中的负载按原样返回,而如果你向UDP的19号端口Chargen发送一个任意字符,它将返回一个假的随机字符串。UDP Flood攻击就是通过伪造与某一台主机的Chargen服务之间的UDP连接,回复地址指向开着Echo服务的一台主机,这就能在两台主机之间产生无用的数据流,如果数据流足够多就会导致DoS。
UDP Flood图解(如图4所示):

图4
2.攻击
一个典型的UDP Flood攻击工具——UDP Flooder,如图5所示:

图5
3.防御
关掉一些不必要的TCP/IP服务,或者对防火墙进行配置,阻断来自Internet的请求这些服务的UDP请求。
