打印本文 打印本文  关闭窗口 关闭窗口  
详解拒绝服务攻击的成因和实现
作者:陈鹏  文章来源:eNet  点击数  更新时间:2009/9/11 23:34:52  文章录入:陈鹏  责任编辑:陈鹏

DoS即Denial Of Service,拒绝服务的缩写。DoS是指故意攻击网络协议实现的缺陷,或直接通过野蛮手段耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。

这些服务资源包括网络带宽、文件系统空间容量、开放的进程或者允许的连接。这种攻击会导致资源匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。

事实上,任何事物都有一个极限,所以总能找到一个方法使请求的值大于该极限值,因此就会故意导致所提供的服务资源匮乏,导致服务资源无法满足需求的情况。所以,千万不要认为拥有了足够宽的带宽和足够快的服务器就有了一个不怕拒绝服务攻击的高性能网站,拒绝服务攻击会使所有的资源都变得非常渺小。

其实,有个形象的比喻可以深入理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要对餐馆进行拒绝服务攻击的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣……;相应地,计算机和网络系统是为互联网用户提供互联网资源的,如果有黑客要进行拒绝服务攻击的话,则同样有好多手段!

今天最常见的拒绝服务攻击包括对计算机网络的带宽攻击和连通性攻击。

带宽攻击是指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击是指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

拒绝服务攻击是一种对网络危害巨大的恶意攻击。今天,DoS具有代表性的攻击手段包括Ping of Death、TearDrop、UDPflood、SYNflood、LandAttack、IP Spoofing DoS等。下面看看它们又是怎么实现的:

(1)PING死亡攻击:ICMP(Internet Control Message Protocol,互联网控制信息协议)在互联网上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个“回音请求”(echo request)信息包看看主机是否“活着”。最普通的ping程序就是这个功能。而在TCP/IP的RFC文档中对包的最大尺寸都有严格限制规定,许多操作系统的TCP/IP协议栈都规定ICMP包大小为64KB,且在对包的标题头进行读取之后,要根据该标题头所包含的信息来为有效载荷生成缓冲区。

而在TCP/IP的RFC文档中对包的最大尺寸都有严格限制规定,许多操作系统的TCP/IP协议栈都规定ICMP包大小为64KB,且在对包的标题头进行读取之后,要根据该标题头所包含的信息来为有效载荷生成缓冲区。

“Ping of Death”就是故意产生畸形的测试Ping(Packet Internet Groper)包,声称自己的尺寸超过ICMP上限,也就是加载的尺寸超过64KB上限,使未采取保护措施的网络系统出现内存分配错误,导致TCP/IP协议栈崩溃,最终使接收方宕机。

(2)泪滴(Teardrop)攻击:泪滴攻击利用那些在TCP/IP协议栈实现时信任IP碎片中包的标题所包含的信息来实现攻击。IP分段含有指示该分段所包含的原信息,某些TCP /IP协议栈在收到含有重叠偏移的伪造分段时将崩溃。

(3)UDP洪水(UDPflood):如今在Internet上UDP(用户数据包协议)的应用比较广泛,很多提供WWW和Mail等服务的设备通常使用UNIX服务器,它们默认打开一些被黑客恶意利用的UDP服务。如echo服务会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符。UDPflood假冒攻击就利用这两个简单的TCP/IP服务的漏洞进行恶意攻击,通过伪造与某一主机的Chargen服务之间的一次UDP连接,回复地指向开着Echo服务的一台主机,通过将Chargen和Echo服务互连,来回传送毫无用处和占满带宽的垃圾数据,在两台主机之间生成足够多的无用数据流,这一拒绝服务攻击飞快地导致网络可用带宽耗尽。

(4)SYN洪水(SYNflood):当用户进行一次标准的TCP(Transmission Control Protocol)连接时,会有一个3次握手过程。首先是请求服务方发送一个SYN(Synchronize Sequence Number)消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后,再次向服务方发送一个ACK消息,这样便建成了一次TCP连接。

“SYNFlood”则专门针对TCP协议栈在两台主机间初始化连接握手的过程进行DoS攻击,其在实现过程中只进行前两个步骤:当服务方收到请求方的SYN-ACK确认消息后,请求方由于采用源地址欺骗等手段使得服务方收不到ACK回应,于是服务方会在一定时间处于等待接收请求方ACK消息的状态。而对于某台服务器来说,可用的TCP连接是有限的,因为只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直至缓冲区里的连接企图超时。

如果恶意攻击方快速连续地发送此类连接请求,该服务器可用的TCP连接队列将很快被阻塞,系统可用资源急剧减少,网络可用带宽迅速缩小,长此下去,除了少数幸运用户的请求可以插在大量虚假请求中间得到应答外,服务器将无法向用户提供正常的合法服务。

(5)Land(LandAttack)攻击:在Land攻击中,黑客利用一个特别打造的SYN包 ——它的源地址和目标地址都被设置成某一个服务器地址进行攻击。此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时,在Land攻击下,许多UNIX将崩溃,NT变得极其缓慢。

(6)IP欺骗DoS攻击:这种攻击利用TCP协议栈的RST位来实现,使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。假设现在有一个合法用户(100.100.100.100)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为100.100.100.100,并向服务器发送一个带有RST位的TCP数据段;而服务器接收到这样的数据后,认为从100.100.100.100发送的连接有错误,就会清空缓冲区中已建立好的连接。这时,合法用户100.100.100.100再发送合法数据,服务器就已经没有这样的连接,该用户就被拒绝服务而只能重新开始建立新的连接了。

自从互联网络诞生以来,DoS攻击就伴随着互联网络的发展而一直存在,也不断发展和升级。值得一提的是,要找DoS的工具一点不难,黑客群居的网络社区都有共享黑客软件的传统,并会在一起交流攻击的心得经验,可以很轻松地从互联网上获得这些工具,像以上提到的这些DoS攻击软件都是可从网上随意找到的公开软件。

所以任何一个上网者都可能构成网络安全的潜在威胁。DoS攻击给飞速发展的互联网络安全带来重大的威胁。然而从某种程度上可以说,DoS攻击永远不会消失而且从技术上目前还没有根本的解决办法。

面对凶多吉少的DoS险滩,该如何应对随时出现的黑客攻击呢?首先分析一下DoS攻击的如下一些原因:

(1)软件弱点是包含在操作系统或应用程序中与安全相关的系统缺陷,这些缺陷大多是由于错误的程序编制、粗心的源代码审核、无心的副效应或一些不适当的绑定所造成的。由于使用的软件几乎完全依赖于开发商,所以对于由软件引起的漏洞只能依靠打补丁,安装Hotfixes和Servicepacks来弥补。当某个应用程序被发现有漏洞存在时,开发商会立即给出一个更新的版本来修正这个漏洞。而由开发协议固有的缺陷导致的DoS攻击,则可以通过简单的补丁来加以弥补。

(2)错误配置也会成为系统的安全隐患。这些错误配置通常发生在硬件装置、系统或者应用程序中,大多是由于一些没经验的、无责任员工或者错误的理论所导致的。如果对网络中的路由器、防火墙、交换机以及其他网络连接设备都进行正确的配置,则会减小这些错误发生的可能性,因此这种漏洞应当请教专业的技术人员来修正这些问题。

(3)重复请求导致过载的拒绝服务攻击。当对资源的重复请求大大超过资源的支付能力时就会造成拒绝服务攻击(例如,对已经满载的Web服务器进行过多的请求使其过载)。

要避免系统免受DoS攻击,从前两点来看,网络管理员要积极谨慎地维护系统,确保无安全隐患和漏洞;而针对第三点的恶意攻击方式则需要安装UTM等安全设备过滤DoS攻击,同时强烈建议网络管理员应当定期查看安全设备的日志,以便及时发现对系统的安全威胁行为。

UTM设备一般配置在网关的位置,比较容易遭受DoS攻击。UTM设备通过调用内部的防DOS模块,大大提高了抵御DoS攻击的能力,有力地保障了网络的正常运行。

UTM的访问控制作为设备最基本的技术,除了将其对用户的访问控制功能发挥到极致外,还会不停地融合各种新技术,起到一个稳定的平台作用。

UTM安全网关正在不断提高其算法的计算能力,大大缩短用户通过UTM检测所耗费的时间,提高访问控制功能的可用性;同时,它还可积极调用IPS、防病毒等各种功能和访问控制原有的安全策略功能,全方位地对通过UTM的信息进行扫描,将访问控制的安全性能全面提升。因此,UTM作为一种优秀的边界安全设备,在安全领域的主导地位正在逐步显现。

打印本文 打印本文  关闭窗口 关闭窗口