DDoS攻击与防御(3)

时间:2022-04-15 00:24:00

3.攻击应用资源
网络应用和服务在处理数据时,通常需要消耗一定的网络连接、计算和存储资源,这些资源是由应用程序向系统进行申请并自行管理和维护的。
消耗应用资源的DDoS攻击就是通过向应用提交大量消耗资源的请求,从而达到拒绝服务的目的。

3.1 攻击DNS服务

3.1.1 DNS QUERY洪水攻击
DNS QUERY洪水攻击是指向DNS服务器发送大量查询请求以达到拒绝服务效果的一种攻击方法。
在DNS解析的过程中,客户端发起一次查询请求,DNS服务器可能需要进行额外的多次查询才能完成解析的过程并给出应答,在这个过程中会消耗一定的计算和网络资源。
如果攻击者利用大量受控主机不断发送不同域名的解析请求,那么DNS服务器的缓存会被不断刷新,而大量解析请求不能命中缓存又导致DNS服务器必须消耗额外的资源进行迭代查询,这会极大地增加DNS服务器的资源消耗,导致DNS响应缓慢甚至完全拒绝服务。
进行DNS QUERY洪水攻击的要点在于每一个DNS解析请求所查询的域名应是不同的,这样可以比较有效地避开DNS服务器缓存中的解析记录,达到更好的资源消耗效果。

3.1.2 DNS NXDOMAIN洪水攻击
DNS NXDOMAIN洪水攻击是DNS QUERY洪水攻击的一个变种,它向DNS服务器查询不存在的域名。
在进行DNS NXDOMAIN洪水攻击时,DNS服务器会进行多次域名查询,其缓存会被大量NXDOMAIN记录所填满,导致响应正常用户的DNS解析请求的速度变慢。
与DNS QUERY洪水攻击所达到的效果类似。

3.2 攻击Web服务

3.2.1 HTTP洪水攻击
在处理HTTP请求的过程中,Web服务器通常需要解析请求、处理和执行服务端脚本、验证用户权限并多次访问数据库,这会消耗大量的计算资源和I/O访问资源。
如果攻击者利用大量受控主机不断地向Web服务器恶意发送大量HTTP请求,要求Web服务器处理,就会完全占用服务器的资源,造成其他正常用户的Web访问请求处理缓慢甚至得不到处理,造成拒绝服务。
由于HTTP协议是基于TCP协议的,需要完成三次握手建立TCP连接才能开始HTTP通信,因此进行HTTP洪水攻击时无法使用伪造源IP地址的方式发动攻击。
这时,攻击者通常会使用HTTP代理服务器,这样不仅可以隐藏来源以避免被追查,还能够提高攻击的效率,攻击者连接代理服务器并发送完请求后,可以直接切断与该代理服务器的连接并开始连接下一个代理服务器。
这时代理服务器与目标Web服务器的HTTP连接依然保持,Web服务器需要继续接收数据并处理HTTP请求。
Web服务也存在缓存机制,如果攻击者的大量请求都命中了服务器缓存,那么这种攻击的主要作用仅体现在消耗网络带宽资源上,对于计算和I/O资源的消耗是非常有限的。
因此,高效的HTTP洪水攻击应不断发出针对不同资源和页面的HTTP请求,并尽可能请求无法被缓存的资源,从而加重服务器的负担,增强攻击效果。

3.2.2 Slowloris慢速攻击
HTTP首部以连续的"\r\n\r\n"作为结束标志。许多Web服务器在处理HTTP请求的首部信息时,会等待首部传输结束后再进行处理。
如果Web服务器没有接收到连续的"\r\n\r\n"标志,就会一直接收数据并保持与客户端的连接。
利用这个特性,攻击者能够长时间与Web服务器保持连接,并逐渐耗尽Web服务器的连接资源,导致其他用户的HTTP请求无法被处理,造成拒绝服务。

3.2.3 POST慢速攻击
在HTTP首部信息中,可以使用Content-Length字段来指定HTTP消息实体的传输长度。
当Web服务器接收到的请求首部中含有Content-Length字段时,服务器会将该字段的值作为POST实体的长度,持续接收数据并在到达Content-Length值时对POST实体的数据内容进行处理。
攻击者在发送HTTP POST请求时,在请求首部中将Content-Length设置为一个很大的值,并将POST实体以非常缓慢的速度一个字节一个字节的向Web服务器发送。
通过间隔性地发送单字节的POST实体内容,攻击者能够确保连接不因超时而中断。
利用这个特性,攻击者能够长时间与Web服务器保持连接,并逐渐耗尽Web服务器的连接资源,导致其他用户的HTTP请求无法被处理,造成拒绝服务。