大数跨境
0
0

应用层慢速DDoS小窥

应用层慢速DDoS小窥 腾讯安全应急响应中心
2014-08-06
2
导读:你是否访问某个网站时遇到菊花一直转呀转不停的现象?这倒底是为啥?可能是你访问的服务正在遭受慢速DDoS攻击噢。神马是慢速DDoS攻击?作为防守方又该如何应对?腾讯安全中心宙斯盾抗DDoS项目组做了一些

应用层DDoS的攻击手法可以分为快速攻击和慢速攻击两类。其中快速攻击通过短时间内对处理逻辑较重的CGI进行大量请求,致使服务器处理资源耗尽,无法响应新请求;慢速攻击则通过利用HTTP协议的缺陷,将服务器连接耗尽,使其无法响应新请求。本文重点讨论慢速攻击的特征,并对防范思路进行简单讨论。

场景分析

目前业界常见慢速攻击手法有如下几类:

1、发送不完整的HTTP请求

常见的slowloris即为此类攻击。该类攻击利用apache对不完整HTTP请求默认保持一段时间连接的特性,在此时间窗内向服务器发送若干不完整请求,致使服务器连接耗尽,无法对新建HTTP请求响应。

如下图所示,Apche2.2对于不完整的HTTP请求包,连接保持时间默认为5分钟。也就是说,如果攻击者在5分钟的时间窗内,发送了大量的HTTP不完整请求,即会导致服务器对新的HTTP请求无法应答,具体表现就是请求页面一直处于加载状态。

该类攻击不仅限于GET,对于POST等其他不完整的HTTP请求同样适用。只要构造不完整请求,不用对”\r\n\r\n”(其为正常HTTP请求的结束符)进行拆分也能达到效果。如下图所示,请求类型为POST的不完整HTTP请求,同样能起到长时间占用服务器连接的作用。

2、慢速POST大量数据

常见的slow http post类攻击即属此类型。攻击者向服务器发送content length极大的完整POST请求,之后以极低的速率向服务器发送负载,达到长时间占用服务器连接的目的。

该类攻击的特点是只要发包间隔小于HTTP超时时间(默认5分钟),该连接就会一直被占用。也就是说,只要客户端向服务器端发包,不管发包速率有多低,理论上只要5分钟内向服务器发送一个包,该连接会被一直维持,从而导致服务器无法对新的HTTP请求进行响应。这样的包发的足够多,服务器的连接也会被耗尽,具体表现,又是加载状态的菊花一直转呀转不停…

具体例子如下图:这里contentlength为10,每隔一段时间向服务器发送1个包,在发送若干次后,Ctrl+C终止发送,服务器返回404错误,在此过程中,共占用服务器连接7分钟左右。

HTTP协议中的超时在这里同样有效,如下图,若发包间隔超过5分钟,服务器返回400错误。

3、慢速拉取大量数据

此类攻击利用TCP的协议特性,在客户端将接收窗口调低,拉取服务器端的大文件,导致连接被长期持续占用,服务器无法处理新建连接请求。

如下图所示,攻击者在发送端调低接收窗口大小,告诉服务器自己每次只能接收很少的数据,依据TCP协议,为了保证客户端能够收到回包,服务器每次的回包也只能发送少量数据。这样当攻击者拉取服务器上的大文件时,把接收窗口调低,就能达到延长服务器的回包总时长的目的(长期占用该连接)。大量的构造此类请求,服务器的连接又又又又被占满了,具体表现,菊花一直转呀转不停…

服务器连接长时间被占用的情况如下图所示。

应对策略

针对上述类型的攻击,本文提供如下检测、防御的策略,供大家参考:

检测策略

1、基于session的统计

慢速攻击在攻击行为上可以归为连接型攻击,其主要目的是长时间占用服务器连接。因此,可以基于慢速攻击的四层特性对其进行检测。比如对五元组(源目的IP、PORT、协议)的空连接或低负载连接数目进行统计,进而判断服务器是否受到慢速应用层攻击。

2、基于访问行为的特征

对CGI的历史访问情况进行分析,得出某一时刻正常的请求数量、参数特征等基线数据,根据此数据对现网数据进行分析,识别出与访问基线偏差过大的请求,进而判断服务器是否受到慢速应用层攻击。

防护策略

1、验证码

应用层慢速攻击一般较难对浏览器行为或真人访问行为进行完全模拟,对疑似慢速攻击的请求源,进行验证码验证,可以缓解慢速应用层攻击带来的影响。

2、HTTP跳转验证

和验证码策略类似,对疑似慢速攻击源进行HTTP请求转跳验证,仅允许验证通过的源进行访问,同样可以达到缓解慢速应用层攻击影响的目的。

3、基于源的CGI限速

对请求进行源+CGI的限速,也可以缓解慢速攻击的影响。该策略对业务影响较大,建议留作大招使用。


【声明】内容源于网络
0
0
腾讯安全应急响应中心
腾讯安全应急响应中心(TSRC)官方微信
内容 383
粉丝 0
腾讯安全应急响应中心 腾讯安全应急响应中心(TSRC)官方微信
总阅读554
粉丝0
内容383