背景介绍:
拒绝服务(denial-of-service, DoS)的攻击方式有很多种, 从广义上来说,任何可以通过合法的方式使服务器不能提供正常服务的攻击手段都属于DoS攻击的范畴.最基本的DoS攻击手段就是利用合理的服务请求来占用过多的服务器资源,从而使合法用户无法得到服务器的响应.被攻击的受害者可以包括联网主机、路由器或者是整个网络
最初的Dos攻击大多数利用系统设计的漏洞来进行攻击。早期的路由器对传输分组的最大长度都有限制,早在windows 9x时代,操作系统实现的TCP/IP协议栈对ICMP分组长度都规定不能超过64KB,并且在对分组头部进行读取之后,要根据头部信息里包含的信息来为有效载荷生成缓冲区。在这种情况下,一旦收到伪造的声称自己的尺寸超过64KB的分则,就会出现内存分配错误导致服务瘫痪。同样类似的手段还有著名的teardrop,根据TCP/IP协议,一个IP分组在internet传输过程中可能会出现分片,并且每一个分片都会拥有IP分组的报头,同时还有一个字节表示自己拥有原始IP分组中的哪些信息,通过这些信息IP分组就可以被组装回来。Teardrop攻击手段则是利用IP分组分片的这种特性,向服务器发送海量的拥有相同的偏移字段的IP分组,如果服务器或者路由器没有丢弃这些包而是试图重组,那么服务器很快就会被冲爆掉。还有Synflood攻击,根据TCP的三次握手协议,当客户端向主机发送SYN包后,主机会向客户端发送ACK响应并且等待客户端的再次响应已达到建立连接的目的,而进行Dos攻击的客户端在收到服务器的ACK包后并不立即回应,而是继续向服务器发送SYN包,这样服务器会维护一个超大的等待建立连接的队列,造成了资源的大量消耗并且同时无法提供正常的服务了。其他的Dos攻击还有Smurf, Land-Based, PingSweep和PingFlood等。
随着Internet的发展和完善,目前常见的Internet的安全协议都包括了预防这些攻击的措施,比IPSec协议中引入了防止重现算法等。同时其他防止Dos攻击的策略也逐渐完善,比如硬件防火墙就能很好的起到防范Dos攻击的效果。而且,随着硬件水平的逐步提高,服务器的负载能力和网络带宽也逐步增大,一台机器发起的Dos攻击已经无法对一个大带宽高负载能力的服务器构成真正的威胁了,并且类似于IP地址反向追踪技术的慢慢成熟,攻击者被检测到的可能性也变大了。
在人们对Dos逐渐熟悉并且可以应对的时候,一种新的攻击方式渐渐浮出水面。分布式Dos攻击DDos和Dos攻击不同,它不用依赖于任何特定的网络协议,也不用利用现有的系统漏洞。DDos的攻击方式是攻击者通过一些攻击手段逐渐掌握一批傀儡主机的控制权,进而打造一个僵尸网络。当攻击者认为时机成熟的时候,就会利用手中的所有傀儡主机,同时向被攻击主机发送大量无用的分组,这些分组要么会吃尽被攻击主机的CPU内存等资源,要么就把被攻击者的网络带宽占满,总之结果就是被攻击者无法接受正常的服务请求,从而出现拒绝服务现象。2000年美国著名的网站如Yahoo,eBay,CNN等都曾经受到过DDos的攻击,说明了即使是处理能力和网络带宽都很大的Internet高端服务器仍然不能抵挡大量傀儡主机发起的DDoS攻击。
DDos攻击的基本方法
按照DDos的攻击方法,DDos攻击可以被分成直接攻击和反射攻击两大类。
直接攻击是攻击者直接向被攻击主机发送大量攻击分组.攻击分组可以是各种类型,比如TCP,ICMP和UDP,也可以是这些分组的混合.使用TCP作为攻击分组时,最常见的攻击方式是前面所提到的SYN Flooding,这种攻击利用了TCP的三次握手机制。另一种基于TCP的攻击是用大量分组消耗被攻击主机输入链路的带宽,这时被攻击主机只会对RST分组做出响应,也发出RST分组并导致某个正常连接被切断,正常连接的客户方将再次发起连接,导致情况进一步恶化.ICMP分组(echo requests和timestamp requests)和UDP分组也可以用来进行这种带宽攻击,这时被攻击主机通常会发回ICMP应答和错误消息和相应的UDP分组作为响应.
直接攻击的攻击模式如图所示:
在进行直接攻击之前,攻击者首先建立一个DDoS攻击网络,攻击网络由一台或者多台攻击主机,一些控制傀儡机和大量的攻击傀儡机组成,如图所示.攻击主机是攻击者实际控制的主机,攻击者通过攻击主机运行扫描程序来寻找有安全漏洞的主机并植入DDoS的傀儡程序.每台攻击主机控制一台或者多台控制傀儡机,每台控制傀儡机又和一组攻击傀儡机相连. 当攻击网络准备就绪后, 攻击主机就可以向控制傀儡机下达攻击命令了, 攻击命令包括被攻击主机的IP地址, 攻击的周期和攻击的方法等内容.在Trinoo中,攻击主机和控制傀儡机之间的通信是基于TCP的,而在Stacheldrhat中甚至采用了加密信道.在接受攻击命令后,控制傀儡机将通知攻击傀儡机展开攻击.目前的DDoS攻击工具可以同时发起对多个被攻击主机的攻击,并且针对不同的被攻击主机可以采用不同的攻击分组类型
反射攻击 (DRDos)
反射攻击是一种间接攻击,在反射攻击中,攻击者利用中间结点,主要包括路由器和主机进行攻击.攻击者向反射结点发送大量需要响应的分组,并将这些分组的源地址设置为被攻击主机的地址.由于路由器并不知道这些分组的源地址是经过伪装的,就把这些分组的响应分组发往被攻击主机.真正发往被攻击主机的攻击分组都是经过路由器路由的分组,如果反射结点数
量足够多,那么这些分组将淹没被攻击主机的链路. 反射攻击并不是一种全新的攻击方法.Smurf就是一种传统的反射攻击.Smurf攻击通过向被攻击主机所在的子网的广播地址发送ICMP的Ping包来触发.该ICMP分组的源地址被设置为被攻击主机的源地址.这样,子网中的每台主机都会向被攻击主机发回响应分组导致被攻击主机被拥塞.
由于反射攻击是基于反射结点为了响应收到的分组而生成新的分组的能力来进行的.因此,任何可以自动生成分组的协议都可以用来进行反射攻击.这样的协议包括TCP协议,UDP协议,ICMP协议和某些应用层协议。因此DRDoS作为DDoS的变体,其破坏力更大,更具隐蔽性。直接攻击中,攻击分组的数量由攻击傀儡机的数量决定。在反射攻击中,反射结点的物理位置可能更加分散,因为攻击者并不需要在反射结点上运行傀儡程序。另外,在反射攻击中,攻击分组实际上是正常的IP分组,具有合法的IP源地址和分组类型,因此基于地址欺骗的分组过滤技术和基于路由的DoS检测机制就很难发挥作用
总的来看,DDos攻击从技术上实现有以下的特点和趋势:
1. 通过成群的受控主机进行分布式的高强度攻击
2. 产生非常随机的源IP地址,能够更好地保护攻击源不被追踪到
3. 攻击数据包结构形式随机变化,很难用统一的方法进行检测
4. 采用混和形式的攻击,加强攻击强度,增加防御难度
DDos的检测
DDos的检测按照检测模式可以分为基于特征的检测和基于异常的检测。
基于特征的DDos检测类似于杀毒软件的黑名单做法,其实现方法是先收集已有DDos攻击的各种特征,然后根据收集到的特征建立特征库。在检测的时候将网络中的数据包和特征库中的特征进行比较,如果匹配则说明受到了DDos的攻击。很显然,这种方法依赖于DDos攻击特种的选取方法,例如Trinoo攻击的特征有:
1. 傀儡机在安装攻击工具时可能输出以下一行代码“rcp IP地址: leaf /usr/sbin/rpc. Listen
2. 傀儡机的contab文件被修改,因此只要时常检查contab文件就可以检测到主机是否被Trinoo攻击入侵;
3. 特定端口开放,常见的如UDP 27655端口等。
只要根据这些特征进行匹配就能知道当前DDos攻击是否存在,目前这方面已经有了成熟的产品,例如http://www.snort.org/
模型推理也是一种利用DDoS攻击的特征进行检测的方法。具体做法是将已知DDoS的各种特征作为基础建立一个攻击特征库, 对包含这些特征的行为进行监视, 并判断出网络中是否出现已知攻击。文献[1]利用模型推理的原理和人工神经网络能够在有限、不完全和非线性的数据资源的条件下检测出攻击的特点, 提出了一种利用神经网络的分析特长来进行检测的方法。
基于异常的DDos检测是指通过监视系统日志来检测出系统中异常的行为。目前绝大多数的DDos检测都属于异常检测的范畴。基于异常的DDoS检测取决于检测模型的建立,不同的模型对应着不同的检测方式,主要包括统计检测、模式预测、人工智能检测、机器学习检测四种方法。
统计检测是应用最早也是应用最多的一种方法。当DDoS攻击发生时,网络中会出现流量突增并超过正常工作时极限流量的现象。很多DDoS攻击检测手段是用统计的方法计算出网络正常工作时流量的阈值,然后与当前网络流量进行比较,如果当前网络流量超过了阈值则说明可能发生了DDoS攻击。文献[4]利用变化点检测的方法在线、快速地检测出DDoS攻击的发生;文献[5]通过统计的方法用马尔可夫链模型表示网络正常行为的文件,将其与当前网络行为比较来检测攻击。
模式预测就是通过分析攻击发生前必然发生的一些现象来判断是否发生了DDoS攻击。DDoS攻击的发生不是毫无预兆的,例如每次攻击发生前夕,攻击者要解析受害者的主机名,因此网络中就会出现大量的地址解析请求,如果解析后发现同一个主机名称出现过多的话,则可能发生攻击。还可以通过特定攻击发生时会产生一些特定格式的数据包来判断攻击的类型。
基于人工智能的检测方法主要包括数据挖掘、人工神经网络和模糊理论等。
最后,还可以把基于特征的DDos检测方法和基于异常的检测方法结合起来使用,通常的做法是使用数据挖掘的方法, 由异常检测发现攻击, 从发现的攻击中摘录特征放入误用模式特征库中,再利用特征检测的方法来检测DDoS攻击。
目前还没有一种检测方法可以对所有DDos攻击都有效。基于特征的DDoS检测是建立负面行为模型, 误报率低, 但存在检测率不高的问题。特征检测模型往往依赖于具体的环境,可移植性和可扩展性较差。而且由于必须将所有已知的攻击规则输入知识库,模型的维护开销较大,需要不断更新知识库且只能检测已知攻击。另外,对攻击特征的提取也存在一定的困难。基于异常的DDoS检测是建立正面行为模型,检测率很高,但误报率也很高。异常检测模型最大的优点是可以检测出未知攻击。
DDos按照算法部署位置分类可以分为源端检测,中间网络检测和目的端检测三种类别。
源端DDoS攻击检测指的是将检测算法布置在发出攻击数据包的主机所处网络的边界路由器上。将DDoS攻击检测系统部署在源端,可以使得攻击数据流在进入网络之前被阻止。
中间网络DDoS攻击检测是指将攻击检测算法部署在整个网络上,包括路由器、交换机或其他网络设备。通常的做法是在核心路由器上部署分布式的DDos防御检测系统。
目的端DDoS攻击检测是指将攻击检测算法部署在被攻击的主机和相关网络设备上。目前应用得最多的攻击检测都是在目的端(即被攻击者)进行的。
源端检测是最为理想的一种方法,能够在受害端受到攻击之前阻止攻击的发生,将攻击对网络的威胁降到最低,但对检测系统的要求较高,源地址被伪造的数据包很容易在源端检测出来。但是要求所有的网络服务提供商ISP都安装源端检测算法显然不切实际,而且源端攻击包流量小,不易检测。中间网络检测比源端检测具有更好的可实施性和更低的覆盖要求。但也存在边界网关的修改、路由器的负载、缺乏网间合作等问题。目的端DDoS攻击检测是最容易的,因为目的端的攻击数据流量最大,并且最注重于对DDoS的防范。缺点是如果上游网络链接被阻塞的话,目的端不管做什么也于事无补。
现有的DDoS攻击的防范方案
DDoS攻击防范是一个非常困难的问题,目前还没有很好的解决方案.如果从DDoS攻击的过程来分析,那么我们可以设置三条防线来防范DDoS攻击.首先是做好DDoS攻击的预防工作,其次是在攻击发生时能够迅速进行攻击检测并实施过滤,第三是在攻击过程中或者攻击结束后进行攻击源追踪和标识.这三条防线必须协同工作以取得最佳的防范效果.
一般对于DDos攻击采取的防御措施有以下几种:
网络管理优化:在网络管理方面,首先要在有网络带宽保证的前提下,尽量提升主机服务器硬件配置。要优化路由和网络结构,配置好安全规则。另外,利用负载均衡技术可以让多台服务器或多条链路共同承担一些繁重的计算或I/O任务,从而以较低成本消除网络瓶颈,提高了网络的灵活性和可靠性。
系统配置策略优化:定期检查系统配置和安全策略,及早发现系统存在的攻击漏洞,并及时安装系统补丁程序。另外,还要时刻留意安全站点公布的与自发管理的操作系统及软件有关的最新安全漏洞和问题。对一些重要的信息(例如系统配置信息)建立和完善备份机制,对一些特权账号(如管理员账号)的密码设置尤其要谨慎。
主机优化:优化所有可能成为目标的主机,禁止所有不必要的服务;另外,多IP主机也会增加攻击者的难度,建议在多台主机中使用多IP地址技术
利用网络安全设备(如防火墙)来加固网络的安全性,配置好这些设备的安全规则,过滤掉所有可能的伪造数据包。与网络服务提供商协调工作,让网络服务提供商帮助实现路由的访问控制和对带宽总量的限制。
使用蜜罐对DDOS进行防御:一是抑制攻击源,二是攻击重定向。
抑制攻击源通过调整蜜罐对攻击源的回应达到减慢攻击速度,阻隔攻击扩散,甚至反攻击的目的。仍以Honeyd为例,探测到DDOS攻击时,蜜罐有以下几种响应方式:
1.对于基于UDP的攻击,发送ICMP源抑制消息,通知源主机减慢发送速度。对于基于TCP的攻击,通过减小TCP窗口、增加会话延时等方式来限制攻击者发送数据。
2.严格过滤由蜜罐发出的数据包,阻止攻击由蜜罐向其它目标扩散。由于Honeyd的工作机制,我们能够灵活的控制对入侵的响应,可实现让入侵者相信成功侵入,又可使由蜜罐发出的攻击数据被丢弃。
3.通过特定脚本,主动对攻击源进行清除。对于上面提到的震荡波蠕虫,发起攻击的主机都是感染了病毒,也就是具有漏洞的主机,我们可以利用同样的传播机制写一个反病毒脚本,对于接触蜜罐的感染主机进行清理病毒、打补丁等工作。Honeyd可以同时模拟多个蜜罐,显然,部署的蜜罐越多,清除攻击源的效率也越高。这种方式基于对攻击传播机制的了解,防御效果明显,但是需要政策支持。
攻击重定向是指将可疑数据包由实际攻击目标重定向到蜜罐系统,一来避免了目标主机遭受攻击,二来便于蜜罐收集攻击信息。这也涉及到蜜罐系统的自身防御问题,对于DDOS这样使用大流量数据消耗目标资源的攻击方式,蜜罐系统如何保证自身不被击溃?这里低交互性的蜜罐系统显示出它的优点,该类蜜罐并不能直接访问内核而是通过一个内核套与操作系统内核进行交互,所有到达的数据包经由内核套复制给蜜罐程序,内核对数据包并没有实际的处理,蜜罐程序仅仅模拟响应并不会进行资源分配,从而保证了操作系统本身的安全。在实现上,这种方式需要与其它安全设备例如IDS、防火墙等进行联动操作。
引用:
[1] CANNADY J. Artificial neural networks formisuse detection[C] //Proc ofNational Information System Security Conference. Arlington:[s. n. ], 1998: 443-456
[2] RENWe,i JINHa,i LIUTeng-hong. Congestion targeted reduction ofquality of service DDoS attacking and defense scheme in mobile Adhoc networks[C] //Proc of the 7th IEEE International Symposium onMultimedia. Washington DC: [s. n. ], 2005
[3] Stefan Savage, David Wetherall, Anna Karlin and Tom Anderson.Network support for IP traceback〔J〕. IEEE/ACM Transactionson Networking,June 2001, 9(3):226~237
[4]何慧,张宏莉,张伟哲,等.一种基于相似度的DDoS攻击检测方法[J].通信学报, 2004,25(7): 176-184
[5] YE Nong. Amarkov chainmodelof temporalbehavior foranomaly de-tection[C] //Proc of IEEE Workshop on Information Assurance andSecurity United States Military Academy. New York: West Point,2000
[6]高能,冯登国,向继.一种基于数据挖掘的拒绝服务攻击检测技术[J].计算机学报, 2006,29(6): 944-951.
[7] Gibson S. Distributed reflection denial of service: description andanalysis of a potent, increasing prevalent, and worrisome internetattack〔EB/OL〕. http://grc.com/dos/drdos.htm Feb. 2002.
