分布式拒绝服务(DDOS)攻击及防范研究

 1、引言

  随着网络应用的日益广泛,网络结构框架已经暴露在众多网络安全的威胁之下,其中拒绝服务(DoS)攻击和基于DoS的分布式拒绝服务(DDoS)攻击最为常见。例如,2000年黑客们使用DDoS连续攻击了Yahoo、ebay、Amazon等许多知名网站,致使一些站点中断服务长达数小时甚至几天,国内的新浪、163等站点也遭到类似的攻击。2001年5月对CERT Co-ordination Center的攻击,2002年5月对edNET的攻击都造成了很大的损失[1]。在2001年4月的中美黑客大战中,DDoS也被广泛使用。随着高速网络的不断普及,尤其是随着近年来网络蠕虫的不断发展,更大规模DDoS攻击的威胁也越来越大。
  2、分布式拒绝服务(DDoS)攻击
  DoS是指攻击者在一定时间内向网络发送大量的服务请求,消耗系统资源或网络带宽,占用及超越被攻击主机的处理能力,导致网络或系统不胜负荷,停止对合法用户提供正常的网络服务;DDoS是在DoS的基础上引入了Client/Server机制,使得攻击强度更大,隐藏性更高。

  2.1 DDoS攻击原理
  DDoS采用多层的客户/服务器模式,一个完整的DDoS攻击体系一般包含四个部分:攻击控制台、攻击服务器、攻击傀儡机和攻击目标,其攻击体系结构如图1所示。
 
程序的一些主机。它接收从攻击控制台发过来的各种命令。同时,它也控制了大量的攻击傀儡机,并向它们转发攻击控制台的攻击指令。
  ◆ 攻击控制台。攻击者利用它来操纵整个攻击过程,它向攻击服务器下达攻击命令。
  ◆ 攻击服务器也叫主控端,它是攻击者非法入侵并且安装特定

  ◆ 攻击傀儡机也叫代理端,它也是攻击者非法入侵并且安装特定
程序的一些主机。它们上面运行攻击程序,用于对目标发起攻击。它受控于主控端,从主控端接收攻击命令,是攻击的执行者。
  2.2 DDoS攻击的特点
  DDoS攻击作为一种特殊的DoS攻击方式,相对于传统的拒绝服务攻击有自己很多的特点:首先,分布式拒绝服务的攻击效果更加明显。使用分布式拒绝服务,可以从多个傀儡主机同时向攻击目标发送攻击数据,可以在很短的时间内发送大量的数据包,使攻击目标的系统无法提供正常的服务。另外,由于采用了多层客户机/服务器模式,减少了由攻击者下达攻击命令时可能存在的拥塞,也增加了攻击的紧凑性。即使攻击目标探测到攻击,也可能来不及采取有效措施来应对攻击。其次,分布式拒绝服务攻击更加难以防范。因为分布式拒绝服务的攻击数据流来自很多个源且攻击工具多使用随机IP技术,增加了与合法访问数据流的相似性,这使得对攻击更加难以判断和防范。
  最后,分布式拒绝服务对于攻击者来说更加安全。由于采用了多层客户机/服务器模式,增大了回溯查找攻击者的难度,从而可以更加有效地保护攻击者。另外,采用多层客户机/服务器模式,使得下达攻击指令的数据流更加分散,不容易被监控系统察觉,从而暴露攻击者的位置与意图。
  3、攻击策略及防范 

  目前,随着多种DDoS攻击工具如TFN、TFN2K、Stacheldraht、Trinoo等的广泛传播,所面临DDoS攻击的风险更是急剧增长[2]。所以,如何有效的防御DDoS攻击成为当前一个亟待解决的问题。下面,本文针对这几种常用的攻击工具给出具体的防范措施。
  3.1 TFN(Tribe Flood Network)攻击及防范
  TFN是德国著名黑客Mixter编写的,与Trinoo相似,都是在互联网的大量UNIX系统中开发和测试的。它由客户端程序和守护程序组成,通过绑定到TCP端口的Root Shell控制,实施ICMP Flood,SYN Flood,UDP Flood等多种拒绝服务的分布式网络攻击。
  TFN客户端、主控端和代理端主机相互间通信时使用IC-MP Echo和Icmp EchoReply数据包。针对TFN攻击的基本特性可采用如下抵御策略:
  ◆ 发动TFN时,攻击者要访问Master程序并向它发送一个或多个目标IP地址,然后Master程序与所有代理程序通信,指示它们发动攻击。Master程序与代理程序之间的通信使用ICMP回音/应答信息包,实际要执行的指示以二进制形式包含在16位ID域中。ICMP使信息包协议过滤成为可能,通过配置路由器或入侵检测系统,不允许所有的ICMP回音或回音/应答信息包进入网络就可以达到挫败TFN代理的目的,但是这样会影响所有使用这些功能的Internet程序,如Ping。Master程序读取一个IP地址列表,其中包含代理程序的位置。这个列表可能使用如“Blowfish”的加密程序进行加密,如果没有加密,就可以从这个列表方便地识别出代理信息。
  ◆ 用于发现系统上TFN代理程序的是程序td,发现系统上Master程序的是程序TFN。代理并不查看ICMP回音/应答信息包来自哪里,因此使用伪装ICMP信息包冲刷掉这些过程是可能的[9]。
  3.2 TFN2k攻击及防范
  TFN2k代表TFN 2000版,是Mixter编写的TFN后续版本。这个新的DDoS工具已在原有的基础上大大前进了一步,它也是由两部分组成,即客户端程序和在代理端主机上的守护进程。客户端向守护进程发送攻击指定的目标主机列表,代理端守护进程据此对目标进行拒绝服务攻击。由一个客户端程序控制的多个代理端主机,能够在攻击过程中相互协同,保证攻击的连续性。客户端程序和代理端的网络通信是经过加密的,还可能混杂许多虚假数据包。整个TFN2k网络可能使用不同的TCP,UDP或ICMP包进行通信,而且客户端还能伪造其IP地址。所有这些特性都使发展防御TFN2k攻击的策略和技术非常困难或效率低下。
  TFN2k非常隐蔽,这些手段使得它很难被检测到。因为没有端口号,所以很难探测,即使在正常的基础上使用端口扫描程序也无法探测到用户的系统正被用作TFN2k服务器[10]。目前仍没有能有效防御TFN2k拒绝服务攻击的方法,最有效的策略是防止网络资源被用作客户端或代理端。 
  根据TFN2k的基本特性,可采用的预防手段有以下几种:
  ◆ 只使用应用代理型防火墙,这能够有效地阻止所有的TFN2k通信。但只使用应用代理服务器通常是不切实际的,因此只能尽可能地使用最少的非代理服务。
  ◆ 禁止不必要的ICMP,TCP和UDP通信,特别是对于ICMP数据,可只允许ICMP类型3(Destination Unreachable,目标不可到达)数据包通过。如果不能禁止ICMP协议,那就禁止主动提供或所有的ICMP EchoReply包。
  ◆ 禁止不在允许端口列表中的所有UDP和TCP包。

  ◆ 配置防火墙过滤所有可能的伪造数据包。
  ◆ 对系统进行补丁和安全配置,以防止攻击者入侵并安装TFN2k。
 3.3 Trinoo攻击及防范
   Trinoo是发布最早的主流工具,因而功能没有TFN2k那么强大。因为TFN2k使用ICMP所以非常隐蔽,在被攻击的计算机上没有端口可以检测。Trinoo使用TCP和UDP,因而如果在正常的基础上用扫描程序检测端口,攻击程序很容易被检测到。
  Trinoo的工作方式是通过一个远程控制程序和主控(Master)通信,指挥守护进程(服务器程序)发动攻击[8]。对于Trinoo,守护进程驻存在实际进行攻击的系统上,而Master控制守护进程系统攻击者控制了足够数量的傀儡机并在傀儡机上安装配置好DDoS软件,便建立好了Trinoo网络,随时可以进行攻击。
  针对Trinoo攻击的基本特性可采用如下抵御策略:
  ◆ 使用入侵检测软件寻找使用UDP的数据流(类型17)。

  ◆ Master程序的监听端口是27655,攻击者一般借助Telnet通过TCP连接到Master程序所在的计算机。入侵检测软件能够搜索到使用TCP(类型6)并连接到端口27655的数据流。
  ◆ 所有从Master程序到代理程序的通信都包含字符串“144”,并且被引导到代理的UDP端口27444。入侵检测软件检查到UDP端口27444的连接,如果有包含字符串144的信息包被发送过去,那么接受这个信息包的计算机可能就是DDoS代理。 
  ◆ Master和代理之间通信受到口令的保护,但是口令没有加密发送,因此它可以被“嗅探”到并被检测出来。
  一旦将Trinoo代理识别出来,便可按如下方法拆除Trinoo网络:在代理Daemon上使用“Strings”命令,将Master的IP地址暴露出来,与所有作为Master的机器管理者联系,通知它们这一事件。在Master计算机上,识别含有代理IP地址列表的文件,得到这些计算机的IP地址列表,向代理发送一个伪造“Trinoo”命令来禁止代理。通过Crontab文件(在UNIX系统中)的一个条目,代理可以有规律地重新启动。因此,代理计算机需要一遍一遍地被关闭,直到代理系统的管理者修复了Crontab文件为止。检查Master程序的活动TCP连接,这能显示攻击者与Master程序之间存在的实时连接,如果网络正在遭受Trinoo攻击,那么系统就会被UDP信息包所淹没。Trinoo从同一源地址向目标主机上的任意端口发送信息包。探测Trinoo就是要找到多个UDP信息包,它们使用同一来源IP地址、同一目的IP地址、同一源端口,但是不同的目的端口[9]。 
  3.4 Stacheldraht攻击及防范
  Stacheldraht是另一个DDoS攻击工具,它结合了Trinoo与TFN的特点,并添加了一些补充特征,如加密组件之间的通信和自动更新守护进程。Stacheldraht使用TCP和ICMP通信。对于Stacheldraht,攻击者与主控端交互,同时主控端控制代理端。Stacheldraht在功能上与Trinoo,TFN等细节相近。
  针对Stacheldraht攻击的基本特征可采取以下防御措施:  
 ◆ 同防御TFN攻击类似,不允许一切ICMP回音或回音/应答信息包进入网络,可以挫败Stacheldraht代理。同样地,这样会影响所有要使用这些功能的Internet程序。
  ◆ 代理程序要读取一个包含有效Master程序的IP地址列表,这个地址列表使用了Blowfish加密程序进行加密。代理会试图与列表上所有的Master程序进行联系,如果联系成功,代理程序就会进行一个测试,以确定它被安装到的系统是否会允许它改变“伪造”信息包的源地址。通过配置入侵检测系统或使用嗅探器来搜寻它们的签名信息,可以探测出这两个行为。
  代理会向每个Master发送一个ICMP回音/应答信息包,其中有一个ID域包含值666,一个数据域包含字符串“skillz”。如果Master收到了这个信息包,它会以一个包含值667的ID域和一个包含字符串“ficken”的数据域应答,代理和Master通过交换这些信息包来实现周期性的基本接触。通过对这些信息包的监控,可以探测出Stacheldraht。
  一旦代理找到了一个有效的Master程序,它会向Master发送一个ICMP信息包,其中有一个伪造的源地址,这是在执行一个伪造测试。这个假地址是“3·3·3·3”,如果Master收到了这个伪造地址,在它的应答中,用ICMP信息包数据域中的“spoofworks”字符串来确认伪造的源地址是有效的。通过监控这些值,也可以将Stacheldraht检测出来[9]。
  4、结束语
  分布式拒绝服务攻击严重危害着网络安全,如果能时刻保持警惕心理,采取必要的防范措施,一定能将受到攻击带来的损失减到最小。除了进行带宽限制、及时给系统安装补丁、运行尽可能少的服务、封锁敌意IP、使用防火墙等常见措施外一般实施最少权限原则是保持网络安全的关键。此外,安装入侵检测系统、使用扫描工具等手段来探测系统是否被侵入或服务器被用来进行攻击是必要的。
点赞 (0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.