TCP/IP漏洞是指利用主机协议栈处理及协议本身机制的缺陷造成的安全漏洞,这类安全漏洞很容易造成系统缓冲区溢出,不识别IP欺骗,而要是在处理大量异常连接,畸形消息时更容易导致拒绝服务。这类漏洞从PoD到DRDoS,每一种攻击都是黑客技术的杰作,而且越来越可怕,越来越难对付。我就在这里给大家详细介绍一下各种各样的TCP/IP网络拒绝服务攻击及其大体防范方法。
死亡之Ping(ping of death)
1.原理
不用我多说了,大名鼎鼎的Ping早已经家喻户晓了。早期的Ping之所以能称为死亡之Ping,那是因为在早期阶段路由器对包的最大尺寸都有限制,很多操作系统对TCP/IP栈的实现在ICMP包上都是规定为64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息为有效载荷生成缓冲区。当产生畸形的包——加载尺寸超过64KB上限的包时,就会出现内存分配错误,从而导致TCP/IP堆栈崩溃,使系统死机。理论上Ping发出的ICMP数据包最大为65507字节,如果超过这个限度,就会导致目标系统缓冲区溢出,TCP/IP堆栈崩溃而死机。2.攻击
Ping命令的-l参数可以定制包的大小,-t参数可以循环发送无数包,但是仅有这些是不够的,黑客们通常使用自己的Ping工具,甚至可以调动众多肉鸡进行分布式攻击。Tosser是一款很实用的网络测试工具,提供了Ping和Trace功能,如图1所示。图1
3.防御
现在所有标准的TCP/IP都已经具备对付超大尺寸包的能力了,各种操作系统(Windows 98之后的Windows NT,Linux,Unix和Mac OS)都能抵抗一般的死亡之Ping,并且大多数防火墙都能够自动过滤这些攻击,所以现在的普通Ping是很难形成Death之势了。针对Ping攻击只需利用路由器,防火墙对ICMP进行有效的筛选即可。
古老的Smurf1.原理
Smurf是一种很古老的DoS攻击。这种方法使用了广播地址,广播地址的尾数通常为0,比如:192.168.1.0。在一个有N台计算机的网络中,当其中一台主机向广播地址发送了1KB大小的ICMP Echo Requst时,那么它将收到N KB大小的ICMP Reply,如果N足够大它将淹没该主机,最终导致该网络的所有主机都对此ICMP Echo Requst作出答复,使网络阻塞!利用此攻击时,假冒受害主机的IP,那么它就会收到应答,形成一次拒绝服务攻击。Smurf攻击的流量比Ping of death洪水的流量高出一两个数量级,而且更加隐蔽。
2.攻击
Smurf2K是一个强大的攻击工具,它通过一个储存广播列表地址的文件,记录下Internet上可用的主机,然后利用这些主机发起进攻。如图2所示:图2
3.防御
为了防止黑客利用你的网络进行Smurf攻击,关闭外部路由器或防火墙的广播地址特性;为了防止被攻击,在防火墙上设置规则丢弃掉ICMP包。
Fraggle攻击
1.原理
Fraggle攻击与Smurf攻击类似,只是利用UDP协议;虽然标准的端口是7,但是大多数使用Fraggle攻击的程序允许你指定其它的端口。Fraggle攻击是这样实现的:攻击者掌握着大量的广播地址,并向这些地址发送假冒的UDP包,通常这些包是直接到目标主机的7号端口——也就是Echo端口,而另一些情况下它却到了Chargen端口,攻击者可以制造一个在这两个端口之间的循环来产生网络阻塞。
2.攻击
编写Fraggle攻击程序时只要把Smurf攻击程序的代码作一下修改就可以了。
3.防御
最好的防止系统受到Smurf和Fraggle攻击的方法是在防火墙上过滤掉ICMP报文,或者在服务器上禁止Ping,并且只在必要时才打开Ping服务。
原子弹——OOB Nuke
1.原理
OOB Nuke又名Windows nuke,是在1997年5月被发现的,这种攻击将导致Windows 95/98蓝屏,在当时的IRC聊天用户中很流行。OOB Nuke攻击的实现是由于Windows 95/98不能正确的处理带外数据。在TCP协议中提供了“紧急方式”,是传输的一端告诉另一端有些具有某种方式的“紧急数据”已经放到普通的数据流中,如何处理由接受方决定。通过设置TCP首部中的两个字段发出这种通知,URG比特被设置为1,并且一个16比特的紧急指针被设置为一个正的偏移量,某些实现将TCP的紧急方式称之为带外数据。问题在于Windows
95/98不知道如何处理带外数据。OOB Nuke一般使用139端口。
2.攻击
仅提供一款工具:WindowsNuke2,如下图3所示:图3
3.防御
打相关的补丁或者将你的Windows 95/98升级到2000或更高,不过连微软都已经放弃了Windows 95/98,估计现在还在使用它的人少之又少了。