1、 应用层DDoS攻击检测技术简析 宋强 文 随着互联网技术的不断创新,安全成为互联网的关键问题。层出不穷的攻击手段对网络安全造成了极大的威胁,其中,DDoS 攻击因其工具免费、在线服务价格低廉,备受黑客的欢迎。据 ArborNetworks(NASDAQ:NTCT)公司公布的全球分布式拒绝服务攻击的数据报告显示,2016 年规模最大的 DDoS 攻击流量达到了 579Gb/s,较 2015 年提高了 73%。201[来自WwW.lw5u.cOm]6 年上半年,规模超过 100Gb/
2、s 的 DDoS攻击就有 274 起,与 2015 年相比,平均 DDoS 攻击规模增长了 30%。这些攻击大多数针对一些非法网站、在线服务(门户、新闻、生活服务)和企业网站。例如,2016 年 8 月暴雪以及英雄联盟游戏服务器遭遇大规模的 DDoS 攻击,自称是 PoodleCorp 的黑客组织袭击了暴雪在欧洲和美国的服务器以及英雄联盟的北美服务器,导致暴雪公司的技术支持服务一度中断,英雄联盟的北美服务器被突然关停,造成的损失不可估量。 目前, 出现了很多专门检测DDoS攻击的产品,这些产品可有效检测出低层的 DDoS 攻击。因此,DDoS 攻击逐渐往上层转移,应用层协议较为复杂,应用层D
3、DoS攻击就具有了更大的破坏性和攻击性。Imperva 公司 Incapsula 部门的报告显示,2016 年应用层攻击占据总攻击的 60%。目前,针对应用层的DDoS 攻击的检测方法已经有了一些,但尚未有比较成熟、有效的检测方法。 DDoS 攻击原理 DDoS 是 DoS 的特殊形式,采用分布式、协作式的攻击手段,攻击诸如电商网站、搜索引擎大的站点,目的是消耗网络带宽、服务器系统资源等。DDoS 攻击的网络结构如图 1 所示,主要由攻击者、主控端和代理端三部分构成。攻击者控制整个攻击过程,通过 PC 端向主控端发送攻击命令。主控端执行攻击者发送的指令,并将指令发送给代理机。代理端接受并运
4、行主控端发送的指令,实施攻击。 应用层 DDoS 攻击通过请求开销较大的页面动作,如数据库查询、关键词搜索等,达到用低速率的攻击方式让服务器的 CPU 满负载,从而拒绝服务的目的。根据著名的短板效应,薄弱环节是体现系统抵抗拒绝服务攻击能力的关键,因此典型的应用层 DDoS 攻击一般选择服务器中的薄弱环节发起攻击。图 2 所示为常见的网站架构,在Web 网站中,数据库就是典型的薄弱环节。 据相关数据显示,应用层的 DDoS 攻击主要针对动态页面。用户在请求动态页面时,一个点击事件,可以发送无数的请求,其中涉及数据库查询、服务器端程序执行等CPU 开销较大的操作,当进行大量请求操作时,CP
5、U 就会由于过载而导致服务器停止服务。 应用层 DDoS 攻击分类 应用层 DDoS 攻击分为 CC 攻击、DNS-flood 攻击、慢速连接攻击等。目前出现了一些其他的攻击,包括 http慢速 post 请求、慢速的 read 请求,与慢速连接攻击有着相同的原理。 CC 攻击使用僵尸网络或代理服务器群,向目标主机发起大量的真实 http 请求,消耗大量的并发资源,最终占满服务器并发连接数,使服务器拒绝服务。在发起 http请求时,若避开缓存直接读取数据库,并在读取数据库过程中,使用最消耗资源的查询方式如全表扫描,这样,少量的攻击便会起到很大的攻击效果。 DNS-flood 攻击会
6、伪造源地址,并向目标 DNS 服务器发送大批量 DNS 请求。请求发送后,DNS 服务器会先寻找是否有相对应的缓存,如果寻找不到且该域名无法由服务器直接解析时,DNS 服务器会将域名信息提交到上层DNS 服务器。 慢速连接攻击, 针对的是http协议。 建立http连接时,设置一个较大的 content-length。在每次发送 http 请求时,发送极少字节,让服务器误认为 http 的头部传输还未完成,因此大量的 http 请求必然会耗尽连接。 其他类型的攻击包括 Javascript-based DDoS、WordPress pingback DDoS 和 Joomla 反射攻击。J
7、avascript-based DDoS 是在大量被访问的网页中嵌入恶意 Javascript 代码,Javascript 代码指向被攻击网站,当普通用户访问被嵌入代码的网页时,流量就会指向被攻击网站。WordPress pingback DDoS 是基于wordpress 搭建的 WEB 网站,网站默认开放 XML-RPC pingback 服务,当 blog 系统有文章被引用时,该服务会通知第三方网站,攻击者冒充被攻击网站的 IP 地址,给大量 wordpress 站点发送 pingback 请求,这样拥有 pingback 服务的网站就会向被攻击网站进行大量的HTTP get 请求,从而
8、造成拒绝服务攻击。 应用层 DDoS 攻击的主要模式 应用层 DDoS 攻击的模式可划分为两方面:访问模式和速率模式,这两方面可相互组合,也可互相独立。 攻击页面的访问模式 (1)对单一页面反复请求。 (2)对不同页面进行遍历请求。 (3)从指定的一个页面集合里,随机选择页面发送请求。 攻击速率的模式 (1)固定速率,如每秒钟一个页面请求。 (2)随机速率,如在前后请求中间加上随机的时间长度。 结合攻击页面的不同访问模式和速率模式,就制造出了不同的攻击模式。 应用层 DDoS 攻击检测技术 应用层 DDoS 攻击主要针对三种协议,分别是Web、DNS 及 SMTP 协议
9、虽然攻击者开始越来越多地针对 DNS 协议,但是针对 Web 服务器的 DDoS 攻击在应用层 DDoS 攻击中仍占据着不可忽视的比例,因此本文将针对 Web 服务器的 DDoS 攻击检测技术进行总结。 应用层 DDoS 攻击检测算法可以概括性地分为两类:一类是根据数据流的特征进行检测,与传统低层 DDoS 攻击的检测技术相似,依据网络流量的某些特征的统计量来检测攻击;另一类是基于用户行为的检测算法,通过分析正普通用户和 DDoS 攻击者之间的行为差异来检测攻击,检测应用层DDoS攻击的系统模块一般结构都如图3所示。 基于总流量特征的检测算法 应用层 DDoS 攻击会导致网络流量的
10、某些特征在短时间内发生较大变化,但正常用户访问时,这些特征不会发生大的变化,因此,通过记录 IP 请求的平均数次或根据页面的熵值就可以有效检测。基于流量特征的检测算法有如下几种。 基于一阶线性回归预测的检测算法 智坚(2011)提出统计 Web 流量,依据每个 IP 请求的平均数次 ANRC 来检测攻击的检测算法。该算法采用的是 AR 线性预测模型,观察 DDoS 攻击时 ANRC 值相对于正常情况下的变化来检测攻击。在正常的情况下,ANRC 值比较平稳,且在预定的范围内波动,当遭遇DDoS 攻击时,ANRC 值会急速攀升,和预测值会有大的偏离。 该算法简单、实时性好,但易将普通的网络突
11、发流误认为是攻击。另外,该算法检测的是流量型 DDoS 攻击,而应用层中大多是低速率攻击,因此,对于低速率攻击它不能检测出来。 基于请求页面熵的分布的检测方法 张烜(2009)提出根据页面的熵值来检测应用层DDoS 攻击,该检测方法将请求页面当做随机信源,并将网页分类,静态页面为一类,动态页面根据不同的后缀名分为 asp、jsp、cgi、php 几类,在单位时间内统计窗口中不同页面的数目。该算法的依据是:在一般情况下,普通用户请求的页面较分散,即随机性较大,则熵值较大;发生 DDoS 攻击时,服务器会收到大量来自单一页面的请求,页面的随机性较小,页面的熵值较小。因此,可根据熵值变化来检测攻
12、击,恰当的设定阈值,便可有效判断出攻击者。 该算法的优点在于简单、 计算量少、 易进行实时检测,然而,低速率的攻击并不会明显影响流量的特征,仅会导致页面幅度发生较小变化,因此阈值的设置比较困难,且该算法中的 DDoS 攻击,请求模式使用的是单一页面,但DDoS 攻击实际上可以使用其他的攻击模式,对于这些模式下的攻击,该检测算法是无效的。 基于请求页面大偏差统计模型的检测方法 王进等提出的 DDoS 攻击检测方法是基于大偏差统计模型的应用层的 HTTP Flood 类型。正常用户会浏览感兴趣的页面,结合大量的用户访问日志显示,服务器不同网页的访问量有着极大的偏差。热门页面访问量大,冷门页面
13、访问量少,网页文件的访问情况呈现Zipf 分布。攻击者在不清楚页面内容的情况下,会表现出较大的随机性,这就是页面大偏差统计检测方法的基石。 但网站用户众多,某些正常用户也可能会访问一些冷门页面,被误认为是攻击者,进而导致较高的误报率,且现如今动态网站已经很普遍,页面变化会更新热门页面,从而改变网站的先验概率分布,而该算法的检测标准为离线的网站日志,该日志因不能实时更替,也会造成较高的误检率。 基于网络流相关系数的检测技术 Shui Yu 等人(2012)提出利用可疑流之间的相关系数来检测应用层上 DDoS 攻击的算法。应用层DDoS 攻击大多是借由僵尸网络发起的,在某一刻,僵尸网络存活的
14、主机大概在数百到数千之间,而网站的普通用户规模大概上万,根据网络层的流量可看出 DDoS攻击流之间的相关性大,即攻击流有一个相似的偏差,且正常的网络突发流的标准偏差大于攻击流的标准偏差。在网络节点上布置检测模块,通过流之间的相似性来检测攻击。 该检测模块要部署在服务器所在网络的路由器中,实现起来比较困难。我们一般将应用层的 DDoS 检测系统集中布置在 Web 前端。 基于用户行为的检测算法 基于用户的检测方法是根据正常用户和攻击用户在访问行为上的差异,如攻击程序不能识别验证码,不能解答智力题,而正常用户可以轻易做到这些,图灵测试就是根据这个差异来检测攻击;浏览网页的时,它们的浏览序列以
15、及浏览时间也有不同;攻击用户间的相似度较高,正常用户间的相似度较低等。基于用户行为的检测算法有如下几种。 图灵测试的方法 正常用户能识别图片中的字符串,能在嘈杂的背景声音中提取出有效信息,但对计算机而言,上述操作都比较困难。因此,可采用这种方式来测试攻击用户。 最常见的图灵测试方法,就是服务器将图片发送给用户,用户返回图片中的字符串,若正确返回,就通过测试,允许请求;若错误返回,就再次输入,直至字符串输入正确,否则就拒绝请求。 图灵测试既简单,识别率也高,可以防止大多数攻击,但图灵测试在要求用户多次输入验证码的过程中,就会导致不好的用户体验;图灵测试在生成图片、声音、存储相关信息、检验
16、每个用户返回的信息是否正确的过程中,会损耗过多资源,它本身就可能会被拒绝服务攻击。 利用马尔科夫链对浏览网页过程建模的方法 谢逸等人提出基于隐式半马尔科夫链 HSMM 的检测算法,谢逸将 DDoS 攻击看作异常的用户访问行为,使用隐式半马尔科夫过程来记录用户的浏览过程。在单位时间内,记录每个用户浏览的网页序列,并对正常用户的访问序列建立 HSMM 模型,描绘用户的行为轮廓。通过HSMM 模型获得用户的或然概率初值 OLD,攻击者与HSMM 模型的或然概率相差较大,因此通过判断实际用户访问序列与 OLD 的距离来检测异常,即可判断出攻击者。 该方法过程复杂,计算量大,不能实时检测,而实时性
17、又是应用层 DDoS 攻击检测的重要指标;动态网站内容不断变化,使得模型更新越发困难。 基于模糊综合评判的检测算法 基于模糊综合评判的检测算法是由谢亚(2009)提出的。正常用户请求频率普遍较低,且直接与服务器通信,攻击者则使用较高的请求速率来访问动态页面,且请求大多通过肉鸡发送。该算法结合四个特征,分别是请求的网页类型、时间间隔、是否使用代理、服务器负载大小来测试当前状态是否异常。 该算法的缺陷如下:第一,它不能找出攻击源和过滤攻击流量,且仅判定当前安全状况;第二,大部分 DDoS攻击是由肉鸡发送的,因而是否使用代理并不能成为有效特征;第三,现如今动态网站已经普及,普通用户也会较多地访
18、问动态页面,将动态页面当作检测特征之一会导致较高的误检率;第四,检测设备和服务器应独立开来,但该检测算法需要检测服务器的负载情况,是不妥之处。 基于 cookie 的检测算法 宗兆伟(2009)提出基于验证和重定向技术的检测算法,依据是对于服务器发送的 cookie 攻击者和正常用户的浏览器会有不同的反应。对于服务器发出的信息以及重定向信息,正常用户的浏览器可识别,而攻击者会忽略。基于两者的不同行为,将检测模块部署在网关中,在新用户发送请求时,网关便对请求进行拦截,并随机生成cookie 信息发送给用户,若用户正确返回信息,就给用户发送重定向信息并将数据传送给服务器;若用户不返回正确信息或
19、不返回信息,便过滤用户的请求。 该算法假设攻击程序对 cookie 不能正确响应,若给攻击程序加上处理和重定向的能力,该算法便会无效。 基于蚁群聚类的检测算法 张纹华等人 (2011) 提出基于蚁群聚类的检测算法,核心思想是普通用户和攻击者的浏览行为不同,具体体现在四点:用户的点击速度、请求内容、访问时间长短、访问页面序列。攻击者访问频率较高,且对单一页面或随机页面反复请求, 请求页面的序列也与普通用户不同。基于蚁群聚类的检测算法对不含攻击的网站日志使用聚类算法,获得普通用户的聚类,做成检测模型来检测攻击者。 该方法有如下缺陷:第一,算法检测率在88%左右,漏检率较高;第二,算法较复杂
20、存储开销大;第三,该算法不能准确定位攻击者,而抗 DDoS 设备不仅需要能检测攻击,还需要抵抗攻击。该检测算法虽然有缺陷,但至少证明了从用户的访问行为来区分攻击者和正常用户是可行的。 利用对正常用户建模的检测方法 Georgios Oikonomou 等人(2009)提出基于人类行为的检测防御算法, 通过建模来区分攻击者和普通用户,模型建模依从如下三方面:请求的动态性、请求的语义以及处理视觉线索的能力。 该算法复杂,请求语义在获取全部用户的访问序列之后,才能获取普通用户的转移概率。另普通用户的访问概率序列也可能较低, 且攻击者进行攻击时一般仅发送请求,并不理会服务器返回的信息,因此,处
21、理视觉线索的能力也不是关键特征。 利用增强的支持向量机的检测算法 A.Ramamoorthi 等人(2011)提出利用增强的支持向量机的检测算法,该算法也是基于用户行为差异来区分攻击者和正常用户。正常用户阅读页面的时间较长,在请求率、会话率和页面停留时间长短三个行为上,其呈现出线性、规则的特点,而攻击用户呈现出波动且不规则的特点。将不含攻击的纯净流量进行分析,得到普通用户的行为轮廓,并将其作为检测标准,通过检测各会话与基准轮廓的偏离程度指定不同的权重,并利用支持向量机的检测模型,对会话进行分类。 该算法有一定的困难,第一,普通用户的行为轮廓很难得到,且用户访问行为不一定都相似,会出现较高
22、的误检率。第二,检测模型不能实时更新也是一个问题。 基于增强型密度聚类的 DDBB 检测算法 余双成(2012)提出了基于密度聚类的检测算法,该算法以经典的密度聚类算法为基础,以异常检测算法为指导,设计出了检测应用层 DDoS 攻击的算法 DDBB。该算法同样是基于用户行为差异来区分普通用户和攻击者,结合用户的访问频次、访问页面分布、访问间隔分布、用户相似性等多项数据,对 Web 服务器的用户行为进行了大量的分析统计,并总结了用户的行为特征,并对应用层上 DDoS 的行为模式进行了分析总结,从而完成了应用层的 DDoS 攻击检测防御。 基于密度的 DDBB 检测算法能够有效检测出更多的攻击类型,且该算法处理比较简单,能准确地定位出攻击者,并采取相应的措施,从而保护服务器免遭攻击。该算法也存在一些不足之处。首先,在过滤 URL 的过程中,存在漏检的情况。其次,当攻击者采用超大规模的僵尸网络发起极低速率的攻击时,该算法并不能有效检测出来。 在短短几年时间内,DDoS 的攻击流量从 300G 到400G再到“T”级别,DDoS攻击正在以飞快的速度增长,随着技术的发展,利用物联网设备组建僵尸网络,新型利用 LDAP 服务器实现攻击放大技术发起攻击的现象日益严峻,网络安全之路可谓任重而道远,如何解决日益增多的难题成为未来网络安全发展的考验。 -全文完-






