论文部分内容阅读
摘要:分布式拒绝服务(DDoS)攻击是目前黑客经常采用而难以防范的攻击手段。文章从DDoS的概念、攻击原理、攻击过程、攻击方法四个方面对DDoS加以说明。最后,介绍了一个局域网内的攻击实例。
关键词:DDoS;TCP/IP;TCP连接洪水;TCP SYN洪水;Smurf攻击
0引言
DDoS(分布式拒绝服务),其全称为Distributed Denial ofService,它是一种基于DoS(Denial 0f Service拒绝服务)的分布和协作的大规模攻击方式,即集中Internet网上众多“傀儡”机同时向一个目标发送数据包,以阻止人们正常访问受害点。这种攻击方式主要用来攻击域名服务器、路由器以及其他网络服务。以前,DoS是仅凭一个攻击者的力量,所以根本无法消耗尽一个大型主机的资源,而DDoS攻击因为集合了众多已经被攻陷的系统去攻击同一个目标,所以受害站点的资源就会很快被消耗殆尽。
1 DDoS的攻击原理
DDoS的攻击原理如图1所示:
从图1中可以看出,DDoS攻击分为3层:攻击者、主控端、代理端,三者在攻击中扮演着不同的角色。
攻击者 攻击者所用的攻击主控台可以是网络上的任何一台主机,也可以是一个活动的便携机。攻击者通过向主控端发送攻击命令,操纵整个攻击过程。有经验的攻击者会一边攻击,一边用各种手段来监视攻击的效果,以便在需要的时候进行一些调整。简单的监视方法就是不断地ping目标主机。
主控端 主控端是攻击者非法侵入并控制的一些主机,这些主机还分别控制着大量的代理主机。主控机被安装了特定的程序,因此可以接受攻击者发来的特殊指令,并且可以把这些命令发送到代理机上。主控机只发布命令而不参与实际的攻击。
代理端 代理端同样也是攻击者侵入并控制的一批主机,它们接受和运行主控机发来的命令,从而运行攻击者程序来发动攻击。代理机直接向受害者发送攻击命令。
由于攻击者在幕后操纵,所以在攻击时不会受到监控系统的跟踪,身份不容易被发现。
2 DDOS攻击过程
DDoS攻击的实质是:入侵者利用了Intemet本身的弱点及Intemet总体上的不安全性,控制Intemet网上的主机作为主控端和代理端来发动攻击。具体过程如下:
(1)入侵者先攻破一些安全性较差的机器作为控制点主机。安全性较差指:所用操作系统有Bug,但还未及时运行补丁程序或进行系统升级。根据攻击类型的不同,入侵者可能需要通过盗用超级用户口令,或使用raw socket等不同的途径。但大多数的攻击程序只需要有一般用户的权限就足够了。
(2)在被入侵主机上完成下面三项任务:
①在入侵主机上安装后门程序,以便下次入侵;安装攻击程序,用于等待入侵者的命令。
②隐藏自己的身份和隐藏运行在这些机器中的程序,除去作案的痕迹。例如,替换进程查看工具(如ps),使自己的程序不显示出来;替换其他用户管理工具,使其他的超级用户不发现自己;删除自己在系统日志中的部分记录等等。
③记录下被攻破主机的地址。
以上三步都是自动、高速完成的,被攻击的系统的用户是不会察觉的。
重复执行以上步骤,入侵者便会控制越来越多的机器,并且使自己远离被攻击的主机,进而达到隐藏自己的目的。
(3)发动攻击。入侵者运行—个简单命令,一层一层发送命令到所有主控机和代理机E,让这些机器一齐向目标机传送大量无用的数据包,就在这样的“炮火”下,攻击目标的网络带宽被占满,路由器的处理能力被耗尽,从而无法响应正常用户的访问请求。当入侵者想停止攻击时,只需发送另外一条简单的命令即可。
3 DDOS攻击的方法
通常,DDoS攻击的目标是网络的TCP/IP协议的内层结构,其攻击方式可分为以下三种:第一种是利用TCP/IP协议的漏洞的攻击;第二种是利用给定的TCP/IP协议栈软件的弱点的攻击;第三种是不断尝试的野蛮攻击。
3.1破坏TCP/IP协议来进行攻击
这种方式最典型的例子就是Ping of Death攻击,攻击者设计一个超过IP标准的最大长度-65535个字节的IP数据包发向被攻击主机,当这个“浮肿的”数据包到达时,被攻击主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
另外一个例子是Teardrop攻击。一个数据包从互联网的发送端到达目的端的过程中,也许会被拆分成更小的数据报。每一个数据报都拥有最初的IP数据报的报头,同时还用一个偏移字节来标示它拥有原始数据包中的哪些字节,通过这些信息,一个个被正常分割的数据包能够在目的地被重新组装起来,并且网络也能够正常运转而不被中断。当一次Teardrop攻击开始时,被攻击的主机将受到拥有重叠的偏移字段的IP数据报的“轰炸”。如果被攻击的主机或路由器不能丢弃这些数据报,并且企图重组它们,那么很快就会陷入瘫痪。
3.2利用TCP/IP协议本身的漏洞闭来进行攻击
最流行的是SYN攻击。SYN工作的原理就是利用TCP协议的“三次握手”过程进行攻击。如果主机A要和主机B建立TCPflP连接,正常的连接过程如图2所示:
(1)主机A发送一个TCP—SYN同步数据包给主机B;
(2)主机B发送一个TCP--ACK应答数据包给主机A;
(3)主机A用一个ACK应答数据包确认收到应答,握手成功,开始同步运行。
SYN攻击时,攻击者用许多TCP—SYN数据包发向被攻击主机,每个SYN数据包迫使目标主机产生一个SYN--ACK应答数据包,然后等待对应的ACK应答。这很快就会导致过量的SYN--ACK一个接一个地堆积在缓存队列里。一旦缓存队列没有空闲,系统就会停止应答其它的SYN请求。
如果SYN攻击中包括了拥有错误IP源地址的SYN数据包,情况就会变得更糟。
我们不妨假设主机A在向主机B发送了TCP—SYN报文后突然死机或掉线,那么B在发出SYN—ACK应答报文后就无法收到A的ACK报文,则第三次握手无法完成。在这种情况下,主机B一般会再次发送SYN—ACK给A,并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间大约为30秒~2分钟。如果有一个恶意的攻击者发送大量拥有错误IP源地址的TCP—SYN数据包,接收端将为了维护一个非常大的半连接列表将要消耗非常多的资源。这数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN—ACK的重试。实际上,如果接收端的TCP/IP栈不够强大,最后的结果往往是因为堆栈溢出而使系统崩溃;即使接收端的系统足够强大,也将因忙于处理攻击者伪 造的TCP连接请求而无暇处理客户的正常请求(毕竟客户端的正常请求比率非常小)。
更具有攻击力的是与SYN攻击相似的Land攻击,其TCP—SYN数据包带有—个伪装的IP地址,使数据包被识别为来自被攻击主机自己所在的网络内部,这使得问题更加严重。
3.3 Smurf攻击和用户数据报文协议攻击
Smurf是一种简单有效的DDoS攻击技术,它利用了ICMP(Intemet Control Message Protocol Intemet控制信息协议)。ICMP在Intemet上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个“回音请求”(echo request)信息包检测主机是否“活着”。最普通的ping程序就使用了这个功能。Smuff攻击的原理是,攻击者通过使用窃取来的被攻击者的一个账号,进而远程登录被攻击主机,然后连续ping一个或多个计算机网络,从而导致许多计算机响应被攻击者,这样,被攻击者将很快被极大数量的响应信息淹没。对这个伪造信息包做出响应的计算机网络就成为攻击者不知情的同谋。
3.4采用UDP的攻击
攻击者伪造出一个请求,将一个系统的UDP开启测试服务程序与另一个系统的UDP应答程序连在一起。结果是,由UDP开启测试服务程序伪随机产生的字符在两个系统间不停地被反射,使得合法应用程序的带宽要求得不到满足。
3.5反弹型DDoS
其原理是利用反弹(Reflector)服务器,例如:日常见到的www服务器、DNS服务器和路由服务器等都是反弹服务器。攻击者就是利用反弹服务器产生的数据报来攻击目标主机。
3.6新型DDoS
这种攻击是把带有指向攻击目标返回地址的请求发给DNS(域名服务器)。这样,DNS服务器就会成为傀儡机对目标机器进行直接攻击。其攻击比以前更加强大并且更难制止。据VeriSign公司透露,从2005年12月底开始的不到两个月的时间里,就有1500个独立的II'地址受到这种方法的攻击。
4一次DDOS攻击的实际过程
这是一个局域网环境,只有一台攻击机(AMDBarton2500+/512/English Windows xp Professional),被攻击的是一台(P41.6/256/Windows Server 2003,Enterprise)主机,两台机器用百兆网卡直接连接。所使用的攻击软件为:攻击方Portfuck 1.Ob2 Private Build、阿拉丁UDP攻击器2.1;被攻击方采用Sniffer Portable 4.70网络监听工具监听。
Portfuck是“TCP连接洪水”工具。“TCP连接洪水”比我们上面介绍的“TCP SYN洪水”DDoS攻击高一个档次,而且它没有什么签名特征能让人们在网络边境上滤掉它们。
当单独使用Portfuck进行攻击时,CPU占用率立即升至100%,但当在攻击方使用Ping命令时,并没有发现丢包现象。接着开启阿拉丁UDP攻击器,并在攻击方使用Ping命令持续观察。
4.1攻击方使用Ping命令截获部分数据
Pinging 1 92.1 68.0.2 with 32 bytes 0f data:
Reply from 1 92.1 68.0.2:bytes=32 time Reply from 1 92.1 68.0.2:bytes=32 time=5ms TTL=1 28
Reply from 192.168.0.2:bytes=32 time=15ms TTL=128
Request timed out.
Request timed out.
Reply from 192.168.0.2:bytes=32 time:=7ms TTL."=128
Reply from 192.168.0.2:bytes=32 time:=8ms 1_rL=128
……
Reply from 192.168.0.2:bytes=32 time=1ms TTL."=128
Request timed out.
Reply from 192.16&0.2:bytes=32 time=4ms TTL-"=128
Reply from 192.168.0.2:bytes=32 time=4ms TTL,"=128
Reply from 192.16&0.2:bytes=32 time:=1ms TTL-"=128
……
Ping statistics for 1 92.1 6&0.2:
Packets:Sent=1 20,Received=1 1 7,Lost=3(2%loss),
Approximate round trip times in milti-seconds:
Minimum=0ms,Maximum=1 5ms,Average=3ms
ControI-C
4.2被攻击方采用Sniffer Portable 4.70监听到的部分数据
图3所示为被攻击方采用网络监听工具Sniffer portable
4.7所得到的部分结果。
此时被攻击方的工作已出现明显的延迟,作者试着打开一个Word文档,延时就有1分半钟。
分析上述现象:
首先,通过Ping命令,发现了较为严重(2%)的丢包现象。
其次,Ping命令出现了较长时间的延迟(Maximum=15ms,Avcrage=3ms),而且目标主机的资源受到了很大的消耗。
这次攻击仅仅是由一台主机发起的,从中可以看出DDoS攻击的威力之大。
5结束语
目前,对DDoS攻击,还没有非常有效的解决办法,最佳的手段就是防患于未然。
第一,以预防为主,通过及时了解有关操作系统的安全漏洞以及相应的安全措施,及时安装补丁程序并注意定期升级系统软件,定期使用漏洞扫描软件检查内部网络,过滤不必要的服务和端口,过滤所有RFCl918 IP地址等方法保证一般的外围主机和服务器的安全。
第二,提高硬件设备的性能,包括升级主机服务器、采用高性能网络设备和保证充足的网络带宽。
第三,设置好内部的网络设备Ⅲ,主要是路由器和防火墙,要保证这些设备本身的安全,并对这些设备进行正确配置,使得进出防火墙的数据都经过严格过滤。
即便如此,DDoS攻击也只能被减弱,无法被彻底消除。
(注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)
关键词:DDoS;TCP/IP;TCP连接洪水;TCP SYN洪水;Smurf攻击
0引言
DDoS(分布式拒绝服务),其全称为Distributed Denial ofService,它是一种基于DoS(Denial 0f Service拒绝服务)的分布和协作的大规模攻击方式,即集中Internet网上众多“傀儡”机同时向一个目标发送数据包,以阻止人们正常访问受害点。这种攻击方式主要用来攻击域名服务器、路由器以及其他网络服务。以前,DoS是仅凭一个攻击者的力量,所以根本无法消耗尽一个大型主机的资源,而DDoS攻击因为集合了众多已经被攻陷的系统去攻击同一个目标,所以受害站点的资源就会很快被消耗殆尽。
1 DDoS的攻击原理
DDoS的攻击原理如图1所示:
从图1中可以看出,DDoS攻击分为3层:攻击者、主控端、代理端,三者在攻击中扮演着不同的角色。
攻击者 攻击者所用的攻击主控台可以是网络上的任何一台主机,也可以是一个活动的便携机。攻击者通过向主控端发送攻击命令,操纵整个攻击过程。有经验的攻击者会一边攻击,一边用各种手段来监视攻击的效果,以便在需要的时候进行一些调整。简单的监视方法就是不断地ping目标主机。
主控端 主控端是攻击者非法侵入并控制的一些主机,这些主机还分别控制着大量的代理主机。主控机被安装了特定的程序,因此可以接受攻击者发来的特殊指令,并且可以把这些命令发送到代理机上。主控机只发布命令而不参与实际的攻击。
代理端 代理端同样也是攻击者侵入并控制的一批主机,它们接受和运行主控机发来的命令,从而运行攻击者程序来发动攻击。代理机直接向受害者发送攻击命令。
由于攻击者在幕后操纵,所以在攻击时不会受到监控系统的跟踪,身份不容易被发现。
2 DDOS攻击过程
DDoS攻击的实质是:入侵者利用了Intemet本身的弱点及Intemet总体上的不安全性,控制Intemet网上的主机作为主控端和代理端来发动攻击。具体过程如下:
(1)入侵者先攻破一些安全性较差的机器作为控制点主机。安全性较差指:所用操作系统有Bug,但还未及时运行补丁程序或进行系统升级。根据攻击类型的不同,入侵者可能需要通过盗用超级用户口令,或使用raw socket等不同的途径。但大多数的攻击程序只需要有一般用户的权限就足够了。
(2)在被入侵主机上完成下面三项任务:
①在入侵主机上安装后门程序,以便下次入侵;安装攻击程序,用于等待入侵者的命令。
②隐藏自己的身份和隐藏运行在这些机器中的程序,除去作案的痕迹。例如,替换进程查看工具(如ps),使自己的程序不显示出来;替换其他用户管理工具,使其他的超级用户不发现自己;删除自己在系统日志中的部分记录等等。
③记录下被攻破主机的地址。
以上三步都是自动、高速完成的,被攻击的系统的用户是不会察觉的。
重复执行以上步骤,入侵者便会控制越来越多的机器,并且使自己远离被攻击的主机,进而达到隐藏自己的目的。
(3)发动攻击。入侵者运行—个简单命令,一层一层发送命令到所有主控机和代理机E,让这些机器一齐向目标机传送大量无用的数据包,就在这样的“炮火”下,攻击目标的网络带宽被占满,路由器的处理能力被耗尽,从而无法响应正常用户的访问请求。当入侵者想停止攻击时,只需发送另外一条简单的命令即可。
3 DDOS攻击的方法
通常,DDoS攻击的目标是网络的TCP/IP协议的内层结构,其攻击方式可分为以下三种:第一种是利用TCP/IP协议的漏洞的攻击;第二种是利用给定的TCP/IP协议栈软件的弱点的攻击;第三种是不断尝试的野蛮攻击。
3.1破坏TCP/IP协议来进行攻击
这种方式最典型的例子就是Ping of Death攻击,攻击者设计一个超过IP标准的最大长度-65535个字节的IP数据包发向被攻击主机,当这个“浮肿的”数据包到达时,被攻击主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
另外一个例子是Teardrop攻击。一个数据包从互联网的发送端到达目的端的过程中,也许会被拆分成更小的数据报。每一个数据报都拥有最初的IP数据报的报头,同时还用一个偏移字节来标示它拥有原始数据包中的哪些字节,通过这些信息,一个个被正常分割的数据包能够在目的地被重新组装起来,并且网络也能够正常运转而不被中断。当一次Teardrop攻击开始时,被攻击的主机将受到拥有重叠的偏移字段的IP数据报的“轰炸”。如果被攻击的主机或路由器不能丢弃这些数据报,并且企图重组它们,那么很快就会陷入瘫痪。
3.2利用TCP/IP协议本身的漏洞闭来进行攻击
最流行的是SYN攻击。SYN工作的原理就是利用TCP协议的“三次握手”过程进行攻击。如果主机A要和主机B建立TCPflP连接,正常的连接过程如图2所示:
(1)主机A发送一个TCP—SYN同步数据包给主机B;
(2)主机B发送一个TCP--ACK应答数据包给主机A;
(3)主机A用一个ACK应答数据包确认收到应答,握手成功,开始同步运行。
SYN攻击时,攻击者用许多TCP—SYN数据包发向被攻击主机,每个SYN数据包迫使目标主机产生一个SYN--ACK应答数据包,然后等待对应的ACK应答。这很快就会导致过量的SYN--ACK一个接一个地堆积在缓存队列里。一旦缓存队列没有空闲,系统就会停止应答其它的SYN请求。
如果SYN攻击中包括了拥有错误IP源地址的SYN数据包,情况就会变得更糟。
我们不妨假设主机A在向主机B发送了TCP—SYN报文后突然死机或掉线,那么B在发出SYN—ACK应答报文后就无法收到A的ACK报文,则第三次握手无法完成。在这种情况下,主机B一般会再次发送SYN—ACK给A,并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间大约为30秒~2分钟。如果有一个恶意的攻击者发送大量拥有错误IP源地址的TCP—SYN数据包,接收端将为了维护一个非常大的半连接列表将要消耗非常多的资源。这数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN—ACK的重试。实际上,如果接收端的TCP/IP栈不够强大,最后的结果往往是因为堆栈溢出而使系统崩溃;即使接收端的系统足够强大,也将因忙于处理攻击者伪 造的TCP连接请求而无暇处理客户的正常请求(毕竟客户端的正常请求比率非常小)。
更具有攻击力的是与SYN攻击相似的Land攻击,其TCP—SYN数据包带有—个伪装的IP地址,使数据包被识别为来自被攻击主机自己所在的网络内部,这使得问题更加严重。
3.3 Smurf攻击和用户数据报文协议攻击
Smurf是一种简单有效的DDoS攻击技术,它利用了ICMP(Intemet Control Message Protocol Intemet控制信息协议)。ICMP在Intemet上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个“回音请求”(echo request)信息包检测主机是否“活着”。最普通的ping程序就使用了这个功能。Smuff攻击的原理是,攻击者通过使用窃取来的被攻击者的一个账号,进而远程登录被攻击主机,然后连续ping一个或多个计算机网络,从而导致许多计算机响应被攻击者,这样,被攻击者将很快被极大数量的响应信息淹没。对这个伪造信息包做出响应的计算机网络就成为攻击者不知情的同谋。
3.4采用UDP的攻击
攻击者伪造出一个请求,将一个系统的UDP开启测试服务程序与另一个系统的UDP应答程序连在一起。结果是,由UDP开启测试服务程序伪随机产生的字符在两个系统间不停地被反射,使得合法应用程序的带宽要求得不到满足。
3.5反弹型DDoS
其原理是利用反弹(Reflector)服务器,例如:日常见到的www服务器、DNS服务器和路由服务器等都是反弹服务器。攻击者就是利用反弹服务器产生的数据报来攻击目标主机。
3.6新型DDoS
这种攻击是把带有指向攻击目标返回地址的请求发给DNS(域名服务器)。这样,DNS服务器就会成为傀儡机对目标机器进行直接攻击。其攻击比以前更加强大并且更难制止。据VeriSign公司透露,从2005年12月底开始的不到两个月的时间里,就有1500个独立的II'地址受到这种方法的攻击。
4一次DDOS攻击的实际过程
这是一个局域网环境,只有一台攻击机(AMDBarton2500+/512/English Windows xp Professional),被攻击的是一台(P41.6/256/Windows Server 2003,Enterprise)主机,两台机器用百兆网卡直接连接。所使用的攻击软件为:攻击方Portfuck 1.Ob2 Private Build、阿拉丁UDP攻击器2.1;被攻击方采用Sniffer Portable 4.70网络监听工具监听。
Portfuck是“TCP连接洪水”工具。“TCP连接洪水”比我们上面介绍的“TCP SYN洪水”DDoS攻击高一个档次,而且它没有什么签名特征能让人们在网络边境上滤掉它们。
当单独使用Portfuck进行攻击时,CPU占用率立即升至100%,但当在攻击方使用Ping命令时,并没有发现丢包现象。接着开启阿拉丁UDP攻击器,并在攻击方使用Ping命令持续观察。
4.1攻击方使用Ping命令截获部分数据
Pinging 1 92.1 68.0.2 with 32 bytes 0f data:
Reply from 1 92.1 68.0.2:bytes=32 time
Reply from 192.168.0.2:bytes=32 time=15ms TTL=128
Request timed out.
Request timed out.
Reply from 192.168.0.2:bytes=32 time:=7ms TTL."=128
Reply from 192.168.0.2:bytes=32 time:=8ms 1_rL=128
……
Reply from 192.168.0.2:bytes=32 time=1ms TTL."=128
Request timed out.
Reply from 192.16&0.2:bytes=32 time=4ms TTL-"=128
Reply from 192.168.0.2:bytes=32 time=4ms TTL,"=128
Reply from 192.16&0.2:bytes=32 time:=1ms TTL-"=128
……
Ping statistics for 1 92.1 6&0.2:
Packets:Sent=1 20,Received=1 1 7,Lost=3(2%loss),
Approximate round trip times in milti-seconds:
Minimum=0ms,Maximum=1 5ms,Average=3ms
ControI-C
4.2被攻击方采用Sniffer Portable 4.70监听到的部分数据
图3所示为被攻击方采用网络监听工具Sniffer portable
4.7所得到的部分结果。
此时被攻击方的工作已出现明显的延迟,作者试着打开一个Word文档,延时就有1分半钟。
分析上述现象:
首先,通过Ping命令,发现了较为严重(2%)的丢包现象。
其次,Ping命令出现了较长时间的延迟(Maximum=15ms,Avcrage=3ms),而且目标主机的资源受到了很大的消耗。
这次攻击仅仅是由一台主机发起的,从中可以看出DDoS攻击的威力之大。
5结束语
目前,对DDoS攻击,还没有非常有效的解决办法,最佳的手段就是防患于未然。
第一,以预防为主,通过及时了解有关操作系统的安全漏洞以及相应的安全措施,及时安装补丁程序并注意定期升级系统软件,定期使用漏洞扫描软件检查内部网络,过滤不必要的服务和端口,过滤所有RFCl918 IP地址等方法保证一般的外围主机和服务器的安全。
第二,提高硬件设备的性能,包括升级主机服务器、采用高性能网络设备和保证充足的网络带宽。
第三,设置好内部的网络设备Ⅲ,主要是路由器和防火墙,要保证这些设备本身的安全,并对这些设备进行正确配置,使得进出防火墙的数据都经过严格过滤。
即便如此,DDoS攻击也只能被减弱,无法被彻底消除。
(注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)