应用层DDoS攻击分析
1.Net-DDoS攻击与App-DDoS攻击
按攻击所针对的网络层次可以把DDoS攻击分为:网络层DDoS(Net-DDoS)攻击和App-DDoS攻击。Net-DDoS攻击主要是利用了现有低层(包括IP层和TCP层)协议的漏洞来发动攻击。典型的攻击方式是:使用伪造IP地址的攻击节点向目标主机发送大量攻击分组(TCP、ICMP、UDP等分组),利用TCP的三次握手机制使目标服务器为维护一个非常大的半开放连接列表而消耗非常多的CPU和内存资源,最终因为堆栈溢出而导致系统崩溃无法为正常用户提供服务。
App-DDoS攻击虽然还是利用洪水式的攻击方法,但与Net-DDoS攻击不同的是它利用了高层协议,例如HTTP。由于高层协议的多样性与复杂性,App-DDoS攻击很难被检测到,而且高层协议通常具有较强的功能,可以实现多种复杂的功能,因此App-DDoS攻击所产生的破坏力远大于传统的Net-DDoS攻击。App-DDoS攻击有以下两种攻击方式:带宽耗尽型和主机资源耗尽型。带宽耗尽型(例如HTTPFlooding)的目标是通过大量合法的HTTP请求占用目标网络的带宽,使正常用户无法进行Web访问。攻击的具体实现可以有多种不同的方式。攻击者可以通过单线程或多线程向目标Web服务器发送大量的HTTP请求,这些请求可以随机生成也可以通过拦截用户的正常请求序列然后重放产生。请求内容可以是Web服务器上的正常页面(例如主页),也可以是重定向页面、头信息或某些错误文档,更复杂的可以是对动态内容、数据库查询的请求。攻击者甚至可以模拟搜索引擎采用递归方式,即从一个给定的HTTP链接开始,然后以递归的方式顺着指定网站上所有的链接访问,这也叫爬虫下载(spidering)。主机资源耗尽型与HTTPFlooding不同,其目的是为了耗尽目标主机的资源(例如:CPU、存储器、Socket等)。攻击者用少量的HTTP请求促使服务器返回大文件(例如图像、视频文件等),或促使服务器运行一些复杂的脚本程序(例如复杂的数据处理、密码计算与验证等)。这种方式不需要很高的攻击速率就可以迅速耗尽主机的资源,而且更具有隐蔽性。
与传统基于低层协议的DDoS攻击相比,App-DDoS攻击具有以下特点:
首先,它利用了高层协议(HTTP)实现。许多基于Web的应用(例如HTTP或HTTPS)通过开放的TCP端口(如TCP端口80与443)为客户提供服务,因此低层的检测系统很难判断经过这些开放端口的用户请求是来自于正常用户还是来自于攻击者。这导致针对Web应用的App-DDoS攻击请求可以顺利穿越基于低层协议的检测系统,通过开放的TCP80端口直接到达Web服务器或网络数据库(见图1)。
图1App-DDoS攻击流
其次,由于App-DDoS攻击是以高层信息流(HTTP流)作为攻击手段,其实现是以正常TCP连接和IP分组为前提,因此形成攻击的HTTP流不具备传统DDoS攻击的标志性特征(例如:TCP半开放连接和畸形IP数据报等),而且它无法采用虚假IP地址(虚假IP地址无法建立有效的TCP连接)的方法。越来越多的主机(包括个人主机和企业大型主机)全天候地连接互联网,为这种攻击提供了有利的条件和环境。
此外,由于高层的服务和协议差异很大,App-DDoS攻击可以有多种不同的形式,而且一个简单的HTTP请求往往可以触发服务器执行一系列复杂的操作,例如:数据库查询、密码验证等,所以通过大量傀儡机向目标发送海量分组的攻击方式并不是App-DDoS攻击的惟一选择,它可以用低速率的请求、少量的攻击节点实现传统DDoS的攻击效果,这给现有的检测带来了很大困难。2004年的蠕虫病毒“Mydoom”及其后来的变体“Mytob”就是典型的HTTPFlooding攻击案例,而且也显示出目前DDoS攻击的发展趋势。该病毒采用了常用的Web服务器请求技术,通过模仿浏览器IE的请求文本,使Web服务器难以区分正常的和异常的HTTP请求,从而提高了攻击的破坏能力。由于所有的攻击请求都是由合法分组构成,不具备传统DDoS攻击流的特征,因此攻击请求顺利穿越所有基于IP层和TCP层的检测系统,最终导致SCO和微软等知名网站的服务器崩溃。
2.DDoS的攻击环境
DDoS攻击所处的背景环境可以分为:平稳背景流环境和突发流环境。平稳背景流是指那些流量随时间变化不大的网站,许多普通网站的流量都具有平稳的特性。突发流是现代网络流的一种新现象,近几年开始受到网络研究者的关注。对于Web应用来说,突发流是指海量的正常Web用户同时访问某一特殊的网站,从而导致Web服务器的访问量和相关网络的流量产生巨大的波动。典型的突发流事例包括:1998年世界杯Web网站,2000年悉尼奥运会网站,2000、2001、2002年澳大利亚网球公开赛等体育网站的访问流量随比赛日程表出现的显著波动;“911”恐怖袭击后CNN网站访问量的突增;Linux“红帽子”发布的首天,发布网站的访问量出现戏剧性的波动等。
可以预测,随着Web应用的不断推广,平稳背景流不再是互联网流量的惟一特征,具有突发流特征的Web网站将不断地增加,例如:网上拍卖活动、视频点播、大型活动的现场直播等。而且网络技术的发展也为突发流提供了有利的条件,例如近年风靡全球的P2P就是一种具有典型突发流特性的网络。与传统的平稳数据流不同,突发流严重影响着通信网络和设备的性能,因此,如何有效处理突发流及区分隐藏于突发流中的DDoS攻击将成为网络研究中的新问题。
3.不同DDoS攻击的检测
根据上述分析,可以把现有的DDoS攻击划分为以下4种类别:平稳背景流下的Net-DDoS攻击;平稳背景流下的App-DDoS攻击;突发流下的Net-DDoS攻击;突发流下的App-DDoS攻击。
平稳背景流下的Net-DDoS攻击检测是目前研究得最多、最成熟的一种,而且已经有许多有效的检测方案,这些方案主要通过TCP段或IP包的头信息实现攻击检测。例如:Cabrera等基于MIB(管理信息数据库)把ICMP、UDP和TCP的分组统计异常映射到特定的DDoS攻击,通过匹配分析实测分组属性与特定DDoS攻击的异常特征来实现检测;Jin等假定DDoS的攻击源是虚假IP地址,通过到达分组的IP地址与TTL(生存时间)来判断是否存在基于虚假IP地址的DDoS攻击。Kim等计算到达分组在给定的正常流模式下合法性的或然概率,通过或然概率检测DDoS攻击;Chen等通过检测到达分组流在频率域中特定频率点的异常实现脉冲式攻击的检测。
平稳背景流下的App-DDoS攻击检测/防御可以有以下的方法:
(1)请求速率/QoS控制
Ranjan等使用统计方法判断每个HTTP会话的异常性,然后通过控制HTTP速率抵御攻击。
(2)基于“Puzzle”的方法
Kandula等应用基于“Puzzle”的方法实现App-DDoS攻击的检测与防御,它的主要思路是:攻击常常是由程序执行,而程序只能按预先设计的方案进行,不具有人的智能性,因此,当怀疑服务器处于攻击威胁时,可以生成一些简单的问题要求用户回答,如果返回的结果正确说明是正常用户,否则就是攻击源。
(3)基于“进攻”的防御方法
Walfish等认为,通过触发所有的客户(包括正常用户与攻击者)提高其请求速率可以有效排挤攻击者。其依据是攻击发生时,攻击者通常已经耗尽自身的链路带宽,而正常用户的带宽有较大的冗余,因此提高正常用户的请求速率可以有效降低攻击者对服务器入口处的带宽占有率。
对于突发流下的Net-DDoS攻击检测可以利用正常流与异常流的特征差异实现。这是因为尽管突发流的流量很大,但是组成正常突发流的IP分组及相应的TCP连接都是正常,而用于Net-DDoS攻击的分组或连接通常都具有以下的特征:畸形结构的IP分组、不完整的TCP连接等。因此,这一特征也可以有效用于攻击的检测与过滤。
从现有的研究看,针对突发流环境下的App-DDoS攻击检测进行研究的文献并不多见。由于突发性与大流量是突发流与App-DDoS攻击的共同特征,因此,传统用于处理DDoS攻击的请求速率/QoS控制方法并不能有效区分正常突发流用户的请求与App-DDoS攻击请求。这是由于:首先,对汇聚流进行速率监控只能起到预警的作用,无法区分出攻击请求分组,如果采用随机丢弃客户请求分组的办法缓解服务器端的Web流量有可能把正常用户的请求丢弃从而影响合法用户的访问。其次,由于App-DDoS可以采用低速的攻击方式(例如:复杂的脚本程序与数据库查询),因此速率控制不一定能保证有效,而且速率控制一般只能适用于具有平稳特性的流的检测,无法应用于突发流和App-DDoS攻击流同时发生的场景。对每个Web用户分别进行HTTP请求速率监控也不足以有效检测App-DDoS攻击,因为攻击者可以利用现有的工具对攻击流进行成形,例如:采用间歇性脉冲方式的低速率攻击,在脉冲期间采用较高的速率攻击,脉冲结束后,攻击暂停等待下一个攻击脉冲的到来,这使每个攻击节点的平均请求速率非常低,不容易被检测。再次,对现代Web服务器及网络,随着用户端带宽和Web页面复杂性的不断增长,正常用户的每次点击浏览行为有可能产生每秒几十个HTTP请求,这种速率已经与“Mydoom”的攻击速率相当。
现有基于流特征的检测方法一般隐含假设条件:攻击流与正常流存在统计上的差异,但是这个假设并不适用于突发流环境下的App-DDoS攻击检测。由于App-DDoS攻击者可以利用HTTP仿真工具组织攻击流,使攻击流模仿正常用户的请求流特性(包括HTTP请求速率、TCP连接特性、IP分组流特性等),因此,上述基于流特性的检测方法也不适用于这一类攻击。
Jung等使用两个属性区分DoS攻击和正常突发流:DoS攻击是由少量攻击主机急剧增长的请求率产生,而正常突发流是由客户数量的增长造成的;DoS攻击者通常是新用户,而正常突发流下的用户通常在突发流产生前都访问过该网站。因此通过约束每个访问客户机可使用的资源(如:TCP连接数、占用CPU时间、占用缓存大小及用户响应时间)及比较新客户的比率来区分DoS攻击和正常突发流。但是,对于现代网络而言,这种方法的效果并不明显。首先,Web应用的客户数量很大,因此不可能逐一确定每个客户可使用的合法资源数量,而且假设攻击由少量节点产生只能适用于传统的DoS攻击,随着网络的普及化,这种假设不适用于现代高速网络下的DDoS攻击。近期的互联网调查发现,现代的DDoS攻击通常与“僵尸网络”结合在一起,因此攻击者本身就能形成一个庞大的网络。另外,仅通过IP地址区分攻击也是不可行,因为App-DDoS攻击请求通常由病毒程序产生,而病毒程序有可能驻留在合法的客户机上。
基于“Puzzle”的方法虽然具有检测与防御的功能,但是同样具有一些不足:需要得到客户端的支持;会干扰Web用户的正常浏览;没有办法解决攻击程序与正常用户同处于一个终端的情况;有可能导致互联网中的搜索引擎和缓存/代理等无法正常工作;由于基于“Puzzle”的方法需要耗费大量服务器的资源(CPU计算、内存等),在突发流环境下,难以实时处理海量的用户信息,而且其本身很容易成为DDoS攻击的目标。
基于“进攻”的方法同样需要客户端的支持,而且它的另外一个假设是服务器入口处具有足够的带宽,这在实际网络中是不可能实现的。
由此可见,单靠传统的分组特征、流特征、速率分析来检测与控制突发流环境下的App-DDoS攻击是不够的。
4.基于访问行为的防御
按照网络分层模型的理论,不同层次的信息流应该在对应的层次进行处理。App-DDoS是一种高层攻击行为,简单地通过判断每一个进入服务器的IP分组、TCP连接来实现高层攻击检测显然是不够的,而孤立地判断每一个HTTP请求的正常性也不足以有效地检测App-DDoS攻击。针对App-DDoS攻击的检测系统应该建立在对应的层次才能获取足够的检测信息,并且寻找有效的观测信号来实现检测,如图2所示。
图2不同层次的检测机制
Web挖掘的研究指出通过对Web用户的访问页面进行内容监控和分析,可以挖掘出用户的兴趣,而且其他一些研究也指出一个Web网站仅有10%的内容被客户高频访问(约90%),而且文件被访问的概率呈Zipf分布。这说明尽管访问者各不相同,但是在一定的时期内他们对给定的Web服务器的访问兴趣和访问行为是非常近似的。已有的研究也表明,对于突发流的场景,剧增的流量主要是由于用户数量的增长而产生的,不同用户的访问行为(包括用户的访问焦点、点击Web页面的次序、浏览时间间隔等)却是非常近似的,所以高层的Web用户访问行为特征可以作为App-DDoS攻击检测的有效信号。下面进一步讨论这种方法的有效性。
用户的访问行为可以由3个因素描述:HTTP请求速率、页面阅读时间和请求对象序列(包括请求对象与各请求的先后次序)。因此,App-DDoS攻击者(或者具有一定智能的攻击程序)可以从这3个方面模仿正常用户行为:小的HTTP请求速率、大的页面浏览时间和仿真的HTTP请求序列。前两者会降低攻击效果,而且只能通过增加被感染的计算机来弥补,提高了攻击难度。仿真HTTP请求序列包括两方面内容:
(1)仿真正常HTTP的流特征
这可以通过HTTP模拟工具实现,通过这种方法形成的攻击流具有一般正常流的特征属性(例如:到达率、阅读时间),因此不容易被检测出来。
(2)仿真正常用户的HTTP请求对象
简单的方法可能有4种:随机生成、预设、在线拦截并重放请求序列或者直接操控。第一种方法是由攻击程序随机生成请求对象或者随机点击链接。由于是随机生成,所以其访问的内容与正常用户相比将不具有明确的目的性。第二种方法是由攻击程序预先设定一个攻击的HTTP请求序列,所表现出来的特征是周期性地重复浏览某些相同的页面对象。第三种方法是拦截所在客户机的请求片断然后重放,但是由于被感染的客户机不一定会访问被攻击目标的Web服务器,因此这种方法并不能达到预期的攻击效果。第四种办法是攻击者设置一个中心控制点,周期性与病毒程序通信,并发布新的HTTP攻击请求序列。但由于这种方法需要不断和控制点通信,容易暴露控制者所在位置,并且这种外部连接容易被客户机上的病毒检测系统或者防火墙所察觉和阻断。从搜集到的资料看,目前已经出现的,也是最简单有效的攻击方法是利用HTTP中的“GET/”方法直接请求网站主页。它仅需要目标网站的域名而不需要指定具体的对象文件名,因此简化了攻击程序。另外,主页一般是网站上被高频访问的页面,因此通过请求主页发动的DDoS攻击不容易被检测到。
可见,尽管攻击者可以模仿浏览器发送HTTP请求,并通过仿真工具重新整合攻击流的流特性,使其接近客户的流特性,但是它始终无法实时、动态地跟踪和模仿正常用户的访问行为,因为只有Web服务器记录了所有访问者的访问记录,而这些分析结果是攻击者无法获取的。
基于用户行为的App-DDoS攻击检测方法如图3所示。首先,利用大量正常用户的历史访问记录建立用户的Web访问轮廓(profile),现有的Web挖掘技术可以实现这一功能。其次,利用建立的Web访问轮廓比较待测量用户访问行为的偏离程度,按照偏离程度的大小对不同Web用户的请求进行排队,偏离程度小的优先得到服务器的响应,偏离程度大的在资源紧张时将被丢弃。考虑到App-DDoS攻击是建立在正常TCP连接的基础上,单纯通过高层丢弃或过滤攻击请求并不能有效地根治App-DDoS攻击,因为被攻击者操控的傀儡节点会继续不断地向目标服务器发出攻击请求,这些攻击请求会促使服务器与傀儡节点继续建立新的TCP连接,从而耗费服务器资源。所以,对于这种持续不断的TCP连接请求,可以粗略判断为由攻击程序自动产生,因而较为彻底地抵御这种攻击的方法就是在高层进行检测过滤的基础上,进一步在传输层阻塞傀儡节点的TCP连接请求或隔离来自该IP地址的分组。由于App-DDoS攻击只能使用真实的IP地址,这种阻塞方法可以起到明显的抵御作用。
图3基于用户行为的App-DDoS检测机制
5.结束语
本文剖析了应用层DDoS攻击的原理,分析了现有的DDoS攻击检测方法在处理突发流环境下的App-DDoS攻击上的不足,从用户访问行为的角度提出了一种有效检测突发流下App-DDoS攻击的方法。该方法与传统针对Net-DDoS攻击的方案分属不同的网络层次,因此,可以作为现有DDoS防御体系的必要补充,在高层为Web服务器提供安全保障。利用不同的协议,基于应用层的DDoS攻击并不局限于暴力的洪水式攻击,可以有多种不同的表现形式,例如:Web蠕虫的传播、针对FTP服务器的攻击、针对无线传感器的攻击及在具有显著突发流特性的P2P网络中的入侵与攻击行为等。因此,对于App-DDoS攻击检测来说,本文的研究仅是一个开始,许多问题还需要进一步的探讨。
【编辑推荐】