DDOS攻击的方法(三)---攻击应用资源

  • A+
所属分类:安全闲碎

3.攻击应用资源

     近年来,消耗应用资源的分布式拒绝服务攻击正逐渐成为拒绝服务攻击的主要手段之一,而由于DNS和Web服务的广泛性和重要性,这两种服务也就成为了消耗应用资源的分布式拒绝服务攻击的最主要的攻击目标。


3.1 攻击DNS服务

     DNS服务是互联网的一项核心服务,通过使用DNS,人们在访问网络时不需要记住其IP地址,而只需输入其域名即可,在IPv6网络环境下,由于IP地址由原来的32位扩展到了128位,变得更加难以记忆,DNS服务也就变得更加重要,当DNS服务的可用性收到威胁时,互联网上的大量设备都会受到影响甚至无法正常运行,历史上曾有多次针对DNS的攻击事件,都造成了较大影响。

     针对DNS服务的攻击方法主要有DNS QUERY洪水攻击和DNS NXDOMAIN洪水攻击两种


3.1.1 DNS QUERY洪水攻击

     DNS查询和解析过程:

     当客户端向DNS服务器查询某域名时,DNS服务器会首先检查其本地缓存中是否有该域名的记录,如果缓存中有该域名的记录(即命中),则直接讲缓存中记录的IP地址作为非权威应答返回给客户端,如果在缓存中没有找到该域名的记录,则会进行迭代查询,从根域名开始,逐级进行域名解析,直到解析出完整的域名,之后服务器会将域名解析结果作为应答发送给客户端,并生成一条解析记录保存到缓存中。

     DNS查询和解析过程如图所示:

DDOS攻击的方法(三)---攻击应用资源

在DNS解析的过程中,客户端发起一次查询请求,DNS服务器可能需要进行额外的多次查询才能完成解析的过程并给出应答,在这个过程中会消耗一定的计算和网络资源,如果攻击者利用大量受控主机不断发送不同域名的解析请求,那么DNS服务器的缓存会被不断刷新,而大量解析请求不能命中缓存又导致DNS服务器必须消耗额外的资源进行迭代查询,这会极大的增加DNS服务器的资源消耗,导致DNS响应缓慢甚至完全拒绝服务。

     DNS QUERY洪水攻击的原理如图所示

DDOS攻击的方法(三)---攻击应用资源

    进行DNS QUERY洪水攻击的要点在于每一个DNS解析要求所查询的域名应是不同的,这样可以比较有效的避开NDS服务器缓存中的解析记录,达到更好的资源消耗效果。


3.1.2 DNS NXDOMAIN洪水攻击

     DNS NXDOMAIN洪水攻击是DNS QUERY洪水攻击的一个变种攻击方式,区别在于后者是向DNS服务器查询一个真实存在的域名,而前者是向DNS服务器查询一个不存在的域名。

     在进行DNS NXDOMAIN洪水攻击时,DNS服务器会进行多次域名查询,同时,其缓存会被大量NXDOMAIN记录所填满,导致响应正常用户的DNS解析请求的速度变慢,这与DNS QUERY洪水攻击所达到的效果类似,除此之外,一部分DNS服务器在获取不到域名的解析结果时,还会再次进行递归查询,向其上一级的DNS服务器发送解析请求并等待应答,这进一步增加了DNS服务器的资源消耗,因此,DNS NXDOMAIN洪水攻击通常比DNS QUERY洪水攻击的效果更好。

     DNS NXDOMAIN洪水攻击 的原理如果所示

DDOS攻击的方法(三)---攻击应用资源

3.2 攻击web服务 

     近年来,web技术发展非常迅速,人们可以通过浏览器使用web服务,简单方便的获取需要的信息,而许多机构和企业的重要信息和关键业务也是通过web服务的方式对外提供,一旦web服务受到解决服务攻击,就会对其承载的业务造成致命的影响。

 

3.2.1 HTTP洪水攻击

     Web服务通常使用超文本传输协议进行请求和响应数据的传输。

DDOS攻击的方法(三)---攻击应用资源

     常见的HTTP请求有GET请求和POST请求两种,通常GET请求用于从wen服务器获取数据和资源,例如请求页面、获取图片和文档等;POST请求用于向web服务器提交数据和资源,例如发送用户名/密码、上传文件等。在处理这些HTTP请求的过程中,web服务器通常需要解析请求、处理和执行服务端脚本、验证用户权限并多次访问数据库,这会消耗大量的计算资源和IO访问资源。

     如果攻击者利用大量的受控主机不断的向web服务器发送恶意大量HTTP请求,要求web服务器处理,就会完全占用服务器的资源,造成其他正常用户的web访问请求处理缓慢设置得不到处理,导致拒绝服务,这就是HTTP洪水攻击。

     由于HTTP协议是基于TCP协议的,需要完成三次握手建立TCP连接才能开始HTTP通信,因此进行HTTP洪水攻击时无法使用伪造源IP地址的方式发动攻击,这时,攻击者通常会使用HTTP代理服务器,HTTP代理服务器在互联网上广泛存在,通过使用HTTP代理服务器,不仅可以隐藏来源以避免被追查,还能够提高攻击的效率--攻击者连接代理服务器并发送完成请求后,可以直接切断与该代理服务器的连接并开始连接下一个代理服务器,这时代理服务器与目标web服务器的HTTP连接依然保持,web服务器需要继续接收数据并处理HTTP请求。

     HTTP洪水攻击的原理如图所示

DDOS攻击的方法(三)---攻击应用资源

   与DNS服务类似,web服务也存在缓存机制,如果攻击者的大量请求都命中了服务器缓存,那么这种攻击的主要作用仅体现咋消耗网络宽带资源上,对于计算和IO资源的消耗是非常有限的,因此,高效的HTTP洪水攻击应不断发出针对不同资源和页面的HTTP请求,并尽可能请求无法被缓存的资源,从而加重服务器的负担,增强攻击效果。

     此外,如果web服务器支持HTTPS,那么进行HTTPS洪水攻击是更为有效的一种攻击方式,一方面,在进行HTTPS通信时,web服务器需要消耗更多的资源用来进行认证和加解密,另一方面,一部分的防护设备无法对HTTPS通信数据流进行处理,也会导致攻击流量绕过防护设备,直接对web服务器造成攻击。

     HTTP洪水攻击是目标对web服务威胁最大的攻击之一,有大量的攻击工具支持HTTP洪水攻击,发动简单其效果明显,已经成为攻击者使用的主要攻击方式之一。


3.2.2 Slowloris攻击

     Slowloris攻击是一种针对web服务器的慢速HTTP攻击,由安全研究人员在2009年提出。

     在HTTP协议中规定,HTTP头部以连续的“rnrn”作为结束标志,许多web服务器在处理http请求的头部信息时,会等待头部传输结束后再进行处理,因此,如果web服务器没有接受到连续的“rnrn”,就会一直接受数据并保持与客户端的连接,利用这个特性,攻击者能够长时间与web服务器保持联系,并逐渐耗尽web服务器的连接资源。

     攻击者在发送HTTP GET请求时,缓慢的发送无用的header字段,并且一直不发送“rnrn”结束标志,这样就能够长时间占用与web服务器的连接并保证该连接不被超时中断,然而,web服务器能够处理的并发连接数是有限的,如果攻击者利用大量的受控主机发送这种不完整的HTTP GET请求并持续占用这些连接,就会耗尽web服务器的连接资源,导致其他用户的http 请求无法被处理,造成拒绝服务。

      Slowloris攻击原理如图所示

DDOS攻击的方法(三)---攻击应用资源

   攻击者使用Slowloris、slowhttptest等工具就可以简单的发动Slowloris攻击。在Slowloris攻击方法出现以后,IIS、nignx等一部分web服务器软件针对该攻击方法进行了修改,但是Apache.dhttpd等web服务器软件依然会受到Slowloris攻击的影响。


3.2.3 慢速POST请求攻击

     慢速POST请求攻击也是一种针对web服务器的慢速http攻击,由安全研究人员在2010年提出,与Slowloris攻击不同的是,慢速POST请求攻击利用缓慢发送HTTP BODY的方式达到占用并耗尽web服务器连接资源的目的。

     在HTTP头部信息中,可以使用Content-Length字段来指定HTTP消息实体的传输长度,当web服务器接收到的请求头部中含有Content-Length字段时,服务器会将该字段的值作为 HTTP BODY的长度,持续接收数据并在达到Content-Length值时对HTTP BODY的数据内容进行处理,利用这个特性,攻击者能够长时间与web服务器保持连接,并逐渐耗尽web服务器的连接资源。

     攻击者在发送HTTP POST请求时,在请求头部中将Content-Length设置为一个很大的值,并将HTTP BODY以非常缓慢的速度一个字节一个字节的向web服务器发送,这样,web服务器就需要一直维持与客户端的连接并等待数据传输结束,由于Content-Length被设置成了很大的值,而HTTP BODY的传输速度又非常缓慢,攻击者就可以长时间占用这个连接,通过间断性的发送单字节的HTTP BODY内容,攻击者就能够确保连接不因超时而导致中断,如果攻击者利用大量的受控主机发送这种缓慢的HTTP POST请求并持续占用这些连接,就会耗尽web服务器的连接资源,导致其他用户的HTTP请求无法被处理,造成拒绝服务。

     慢速POST请求攻击原理如图:

DDOS攻击的方法(三)---攻击应用资源

   攻击者可以使用Slowhttptest等攻击发动慢速POST请求攻击,与Slowloris攻击有所不同,由于HTTP协议设计上的原因,所有的web服务器软件都会受到慢速POST请求攻击的影响。


3.2.4 数据处理过程攻击

     web服务器在收到HTTP请求之后,需要检查并处理其中的数据,通过恶意构造请求数据的内容,攻击者可以显著的增加数据处理过程中的资源消耗,造成拒绝服务攻击。

     这里已正则表达式拒绝服务攻击和哈希冲突拒绝服务攻击为例进行说明。

     正则表达式拒绝服务攻击又被称为ReDoS,是安全研究人员在2009年发现的一种拒绝服务攻击方法,在处理请求数据时,web应用通常会使用正则表达式进行字符的匹配操作,一部分正则表达式引擎会使用一种被称为非确定性有限状态自动机的实现方式,以便能够处理复杂的正则表达式,例如包含了向后引用或者捕获括号的正则表达式。然而,这种正则引擎的实现方式也导致了其处理时间增加,尤其是在确定“否定匹配”时,正则引擎需要对所有可能的匹配路径全部进行测试,如果位于web应用中的正则表达式写的不好,需要测试的匹配路径数量会随着输入字符串的长度呈指数级增长,利用恶意构造的输入字符串,攻击者只需要提交相对较短的输入字符串,就可以强制正则引擎处理数亿个匹配路径,所需时间可以达到几个小时甚至几天,只需要几个这种类似的恶意正则表达式匹配请求,就能够完全占用web服务器的计算资源,造成web服务器拒绝服务。

     哈希冲突拒绝服务攻击是安全研究人员在2011年提出的一种拒绝服务攻击方法,web应用在处理请求中的POST数据时,通常使用键-值对的方式来进行存储,在PHP、Python、Java等语言中,键-值对的实质是一个哈希表,web应用程序通过计算“键”的哈希来获取其所对应的的“值”。正常情况下,这个哈希表的哈希冲突较少,因此进行查找和插入的速度很快,正常状态下的哈希表如图所示。

DDOS攻击的方法(三)---攻击应用资源

     如果攻击者构造一组恶意的POST数据,使得请求中的“键”的哈希值全部相同,那么保存POST数据的哈希表就会因此退化成为链表,对哈希表的查找和插入等操作规则变成了对链表的遍历操作,造成大量的计算资源被占用,导致拒绝服务攻击。如图所示为大量冲突状态下的哈希表。

DDOS攻击的方法(三)---攻击应用资源


本文始发于微信公众号(LemonSec):DDOS攻击的方法(三)---攻击应用资源

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: