一种针对应用层服务器的LDoS 攻击
2020-04-22苟峰
苟峰
(四川大学计算机学院,成都610065)
0 引言
拒绝服务(Denial of Service,DoS)攻击主要以网络带宽、系统资源、协议漏洞为目标,致使目标机器无法为合法用户提供服务。其中最为常见的是在传输层利用TCP/IP 协议的漏洞发起DoS 攻击,如TCP Flood、ACK Flood、ICMP Echo 以及Smurf 等多种攻击手段,其核心是利用TCP 的关键字段导致服务器大量资源被恶意占用。随着计算机硬件、网络基础设施以及网络防御技术的发展,单一的DoS 攻击已经难以达到预期效果,进而演化出了分布式拒绝服务(Distributed Denial of Service,DDoS)攻击,攻击者通过木马病毒等手段控制大量肉鸡,利用反射、重放、IP 欺骗等技术向攻击目标发送Gb 级甚至Tb 级的攻击流量,从而致使目标瘫痪或者宕机。2018 年3 月1 日,知名代码托管网站GitHub 遭遇了有史以来最严重的Memcached DDoS 网络攻击,峰值流量达到了1.7Tbps[1]。尽管如此,传统拒绝服务攻击始终是以高速率的持续泛洪流量为特点,因此也易于检测与防范。2001 年,美国Asta Networks 公司在Internet2 Abilene 骨干网络上检测到一种新的DoS 攻击手段,与传统的高速率、泛洪式DoS 攻击不同,该DoS 攻击方式具有流量发送速率低、隐蔽性强、具有突发性以及造成危害大的特点,融入正常流量中难以被传统的DoS 攻击检测机制发现。这种低速率DoS(Low-rate DoS,LDoS)攻击被Kuzmanovic 等人称为“地鼠攻击”(Shrew Attacks)[2]。近来研究者已将低速率拒绝服务攻击以系统自适应机制为目标的思路应用到了应用层,提出了针对应用层的低速率拒绝服务攻击(Low-Rate DoS Attack against Application Servers,LoRDAS)。
1 相关工作
Kuzmanovic 等人率先开展了对LDoS 攻击的研究,该攻击主要针对TCP 协议的拥塞控制机制的不足,通过发送恶意的低速率周期性高突发攻击流量,导致网络传输性能极大降低,一个简单的LDoS 攻击模型如图1 所示。该模型可用三元组(T,τ,δ)来表示,其中,T 为攻击周期,表示连续两次攻击之间的间隔;τ 为攻击持续时间,表示周期内攻击持续的时间长度;δ 为攻击强度,表示LDoS 攻击流的速率。
图1 LDoS攻击模型
自该攻击方式出现以来,学术界主要重点还是在应用层上进行攻击检测与防御的研究。Guirguis 等人[3]提出了针对网络资源自适应瞬态的降质(Reduction of Quality,RoQ)攻击,通过系统瞬态发生变化时发起攻击,致使系统始终处于不稳定的状态,并且证明了应用队列主动管理(Active Management Queue)技术也难以缓解该攻击带来的影响。随后,Guirguis 等人又针对终端系统[4]研究了在Web 服务器上利用接收控制器观察RoQ 攻击对HTTP 请求的效能影响,实验证明攻击者针对目标服务器只需要很小的代价便能产生极大的攻击效果。Gabriel 等人[5]首先针对迭代服务器发起LDoS攻击,通过预测服务器对客户请求响应的瞬时发送攻击请求,从而使得攻击请求占满服务器的待处理请求缓存。王传安等人[6]利用马尔可夫链构造了针对SIP服务器的LDoS 生死链攻击模型,通过构造特定的LDoS 攻击数据包,实现在低速率条件下使得SIP 服务器缓存服务队列的位置尽可能被攻击请求占据,从而拒绝合法用户的请求。赵阳[7]对基于HTTP 协议的LDoS 攻击进行了分析,将传统的三元组改进为五元组攻击模型。Park 等人[8]针对HTTP/1.1 服务器提出一种攻击策略,三次握手之后客户端发出一个GET 请求,然后立即告知服务端自己的接收窗口大小为0,造成服务端对这条连接一直等待。在涉及HTTP 协议的攻击方面,主要还是针对的HTTP/1.1 版本。Tripathi 等人[9]提出了针对HTTP/2 的低速率拒绝服务攻击,并提出相比与HTTP/1.1,HTTP/2 有更多的攻击面。
2 针对应用层的LDoS攻击模型
2.1 应用服务器模型
根据理论,实现针对应用层的拒绝服务攻击的核心在于让攻击者的恶意请求始终占据服务器缓存服务队列的位置,在服务器处理完一个请求后的空闲位置立即被恶意请求占据。应用服务器模型如图2 所示。
图2 应用层服务器模型
在LoRDAS 攻击场景中,主要考虑应用层服务器的以下两个模块:①服务器端缓存客户端到达请求的服务队列;②负责处理客户端请求的服务模块。在实际应用条件中,缓存客户请求的服务队列长度是有限的,一旦队列进入满状态,那么将拒绝任何新到达的请求,也就产生图2 中的溢出丢弃事件。服务模块可按照某种队列管理方式(如FIFO、LIFO)来获取服务队列中的请求,每处理完一个请求,便向对应的客户端发送一个处理响应。服务模块继续处理新的请求,同时服务队列也会产生一个空闲响应,接收新到达的请求入队。
令ts表示服务模块处理一个请求所耗费的服务时间,根据文献[10],将相似请求的服务时间看作一个均值为-、方差为TS_var随机变量TS,即:
令tI表示一个请求从到达服务队列至服务模块处理完成产生处理响应这整个过程在系统内的时间。为了简化处理,考虑服务器仅有一个队列长度为N 的服务队列和一个服务模块,假设服务队列包含N-1 个请求,且服务模块对每一个请求的处理时间均为ts,那么可以得到tI范围为:
LoRDAS 攻击的目标在于使服务队列仅包含来自攻击者的请求流量,让服务队列始终处于满状态,从而拒绝合法请求。传统DoS 攻击实现这一目标是通过发送泛洪请求,而LoRDAS 攻击则通过估计服务模块处理完一个请求的时间ts[10],在这个时间附近周期性发送恶意请求,达到一种低速率实现攻击的目的。
2.2 攻击场景
考虑如图3 所示的攻击场景。它是一个C/S 架构的网络模型,其中迭代服务器将会接收来自攻击者和合法用户的流量。根据应用服务器模型,到达的请求将会进屋服务器的特定服务队列。在该场景中,合法用户的请求服从泊松分布,即合法用户请求到达的间隔时间ta的概率分布为:
其中λ 表示用户请求的平均到达速率,由于这里考虑单一的迭代服务器,用户请求均在服务器端聚合,假设用户数为n,第i 位用户的到达速率为λi,则:
对与攻击者,如果数量过多,那么将退化为传统的DDoS 攻击,因此应用一至两个攻击者来模拟LoRDAS与分布式的LoRDAS。
图3 攻击场景
2.3 攻击实现
处理响应的产生时间依赖与服务模块的服务处理时间TS,攻击者要实现在服务器每产生一个处理响应就立刻入队一个恶意请求,需要能够预测出处理响应的发生时间,这样才能使攻击请求的到达与处理响应的产生实现同步。除了对服务处理时间TS的预估,还要考虑链路的RTT,这同样影响到攻击的同步效果。攻击请求占据空闲队列的攻击细节如图4 所示。
图4 LoRDAS攻击细节模型
在图4 中,虚线部分为LoRDAS 攻击的补充机制,这是为了应对攻击者的突发请求没有成功抢占服务队列空闲位置的情况。当攻击者收到一个来自服务器的处理响应,即断开一个连接的情况下,攻击者立刻回复一个攻击请求作为响应。当攻击者预估到服务器队列的空闲时刻,立即发起三次攻击请求来占据服务器队列缓存。由公式(1)知,每个请求的服务时间ts是服从正态分布的,故在图4 中发起攻击的时刻与队列空闲预估的时刻是有差异的。
3 一种缓解策略
上述LoRDAS 攻击成功的关键在于其利用了服务器工作中的两个因素:①存在某种确定的模式,如固定的时长,这也是攻击者能够估计队列空闲时刻的基础;②服务器处理完请求后的处理响应与服务队列的队列空闲事件几乎在同时时间发生,这使得攻击者成功预估到服务器的响应时刻后就能立刻发起恶意流量占据服务队列。因此,服务端应对该攻击可以从改变上述行为来对抗攻击者的时间预估。并且,防御策略至少需要满足一下两个条件:
(1)尽可能的降低攻击造成的影响;
(2)对合法用户的影响要尽量的小。
基于此,可以采用随机化服务时间(Random Service Rime,RST)的策略,旨在降低服务器请求处理行为的可预测性,同时可以消除存在的确定性操作模式。通过随机化原有固定时间模式的机制来减少LoRDAS攻击对服务器的攻击面,使得攻击者更加难以预测服务器产生请求处理响应的时刻。服务器应用RST 防御LoRDAS 的过程如图5 所示。
图5 应用RST之后的LoRDAS攻击细节模型
应用服务器中RST 的程序代码实现如下所示:
Web Server with RST program
1. while service module idle:
2. take a request from the service queue;
3. tsseconds later,finish process a request;
4. Extra delay:
6. produce deal response&idle response
在服务器应用RST 后针对LoRDAS 的攻击有两个明显的效果:①处理响应发生的时间发生了偏移,不再易受攻击者控制;②与攻击者初始预测到的时间相比,处理响应的产生时间分布有了额外的方差。从总体上说RST 降低了攻击方的攻击效果。
4 结语
本文分析了DoS 攻击的新类型——针对应用层的低速率拒绝服务攻击LoRDAS。LoRDAS 攻击以应用层服务器为目标,通过发送较低速率的攻击请求实现拒绝合法用户请求服务的目的。本文以最基本的迭代服务器为基础建立应用服务器处理模型,针对LoRDAS攻击进行了分析,攻击者通过预测服务器产生请求处理响应的时刻发起恶意请求,从而是的服务器的缓存队列被恶意请求占满,达到拒绝合法用户请求入队的目的。同时对这种通过预测处理响应时刻的攻击提出了随机化服务时间RST 的防御机制。