提到DDoS攻击,可能大家想到的是大流量高新建,如Cloudflare在2023 年第一季度 DDoS 威胁报告中指出,最大的一次攻击峰值高达每秒7100万个请求(RPS),另外观察到高达1.3Tbps的单次DDoS攻击。实际上针对HTTP服务器,有另一种DDoS攻击方法,反其道而行之,这种攻击方法称之为慢速攻击。

HTTP慢速攻击是利用HTTP正常交互流程,以极低的速度往服务器发送HTTP请求,长时间占用HTTP服务器的资源而不释放,当HTTP服务器的并发连接数达到上限时,服务器将无法接受新的请求,从而导致拒绝服务。

目前常见的HTTP慢速攻击主要分为以下三种:

  • Slowloris(slow headers)

攻击原理

我们抓取一个正常的HTTP Get请求报文:


慢速攻击类型原理及测试配置_服务器


可以看到每一行都是以Slowloris攻击就是利用了这个机制,如下图,客户端每隔一段时间如5s发送一个HTTP头部,由于没有 \r\n\r\n(0d0a0d0a)结尾,服务端认为头部没有传送完成,会一直等待客户端发送数据,连接一直被占用。当这种请求占用完服务端的所有资源后,该服务端将无法提供正常的服务。


慢速攻击类型原理及测试配置_服务器_02


  • Slow HTTP POST(Slow Body)

攻击原理

下面是一个正常的HTTP POST报文:

慢速攻击类型原理及测试配置_服务器_03

可以看到Content-Length字段是个比较小的值。服务器确认后,客户端将发送相关数据。Slow HTTP POST攻击过程则如下图所示,将Content-Length设置为一个较大的值(如抓包中的2000字节),然后以每隔一段时间去发送很小的内容(如抓包中每次发送一个test1234),从而和服务器保持长时间连接,当这种攻击数量大的时候,服务器就会拒绝服务,从而导致正常业务无法进行。

慢速攻击类型原理及测试配置_HTTP_04

  • Slow Read attack

攻击原理

下面是正常的HTTP Get大文件的交互过程:

慢速攻击类型原理及测试配置_服务器_05

客户端发送Get请求,同时设置windows size为65535,可以看到当Get命令被服务器接收后,服务器开始发送数据,windows size同样也为65535。以下列Slow Read Attack的抓包为例,将windows size被刻意设置为很小的值,如512,然后依次递减,这样就会造成服务器需要很长时间发送客户端所需数据,从而达到长时间占用服务器资源的目的。

慢速攻击类型原理及测试配置_服务器_06


防御方法

设定阈值,当某个地址的每秒并发连接数超过阈值时,即触发HTTP报文检查,如果检测到该IP连续发送的多个请求报文均没有\r\n\r\n(0d0a0d0a)结束标识,则认定为攻击,将该IP加入黑名单,同时断开该IP的所有连接。同时针对HTTP头部传输时间进行限制,比如头部传输时间超过10s,则主动断开连接,要求客户端重连。


如何使用ALPS实现慢速攻击

信而泰基于PCT架构的新一代基于B/S架构的测试软件ALPS( Application Layer Protocol Simulator ),支持包括数据、语音、视频各种类型的真实的应用层流量仿真,除了应用层流量,也支持漏洞攻击、恶意代码、DDoS等攻击的仿真,对于上述的慢速攻击,目前也已支持,同时支持设置各项配置参数:

慢速攻击类型原理及测试配置_服务器_07


  • SlowLorisSlow HTTP Get

可自行设定每隔多久发送一个HTTP头部,头部分多少次发送

慢速攻击类型原理及测试配置_客户端_08


  • Slow BodySlow HTTP POST

可自行设定HTTP发送间隔,以及自行定义Content Length长度、每次发送的payload内容。

慢速攻击类型原理及测试配置_HTTP_09

  • Slow ReadSlow Read Attack

可自行设置HTTP发送间隔,step为两个windows update报文中windows size减小的值,见Slow Read attack攻击原理部分的截图二

慢速攻击类型原理及测试配置_HTTP_10


统计分析

信而泰ALPS L4-7测试平台支持慢速攻击的相关统计,其中包含session的统计项主要统计连接的帧数和帧速,包含throughput的统计项为攻击吞吐量相关。

Attack Client - Session和Attack Server -Session 主要统计TCP报文的收发情况;

Attack Client - HTTP xxx Attack Session 主要统计HTTP攻击报文的收发情况。

由于安全设备有阈值的设置,当攻击的速率超过设定阈值,攻击IP会被加入黑名单,此时攻击的TCP连接将无法完成。可以通过以上不同session的统计数据来确认是在HTTP攻击报文阶段被安全设备拦截还是TCP连接完全没建立成功

慢速攻击类型原理及测试配置_客户端_11