加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

新型 DDoS 攻击泛滥:借助中间盒的 TCP 反射放大攻击

发布时间:2022-06-07 15:58:54 所属栏目:安全 来源:互联网
导读:一、引言 2021 年 8 月马里兰大学 Kevin Bock 等在 USENIX 大会上提出一种利用中间盒发起的新型 TCP 反射放大攻击手法:攻击者可以利用部分网络中间盒在 TCP 会话识别上的漏洞,实现一种全新的 DDoS 反射放大攻击。与 2018 年出现的利用协议栈发起的 TCP 反射
一、引言
2021 年 8 月马里兰大学 Kevin Bock 等在 USENIX 大会上提出一种利用中间盒发起的新型 TCP 反射放大攻击手法:攻击者可以利用部分网络中间盒在 TCP 会话识别上的漏洞,实现一种全新的 DDoS 反射放大攻击。与 2018 年出现的利用协议栈发起的 TCP 反射无法放大攻击流量的情况不同,这种新型攻击实现了基于 TCP 协议的流量放大效果,这也使得该攻击手法诞生之后,在黑产中快速传播,全网泛滥。
 
二、反射放大攻击的前世今生
在说明这种新型攻击手法之前,需要先科普一下反射放大攻击。所谓的反射放大攻击是非常常见并且深受攻击者欢迎的 DDoS 攻击手法,其基本原理非常简单:攻击者通过控制僵尸网络伪造靶机 IP 向特定的公网服务器发送请求,公网服务器收到请求后会向靶机发送更大的应答报文,从而实现攻击流量放大。
 
 
 
这里的公网服务器是指对外开放某些可被利用作反射放大的协议端口的服务器,比较常见的协议有 DNS、NTP、SNMP、Memcached 等,这些协议一般基于基于 UDP,并且协议本身存在缺陷,没有校验来源 IP 的真实性,且存在应答报文远大于请求报文等特点。这种反射放大手法简单、有效,一直深受黑客喜爱,所以很长一段时间内 UDP 反射就是反射放大攻击的别称。
 
 
之所以说中间盒没有或者说无法严格遵循 TCP 协议栈是因为:现网很多中间盒例如防火墙、合规系统等考虑到网络架构、性能、稳定性等因素都会采用旁路部署、单边流量检测的架构,即这些系统本身只能看到机房入向的流量数据,最终这些中间盒只能根据单向流量判断是否存在 TCP 连接,甚至有中间盒不判断是否存在 TCP 连接,直接解析请求内容并下发拦截策略。所以攻击者发起这种新型 TCP 反射攻击的流程简单总结起来只需要以下几步:
 
攻击者伪造靶机公网 IP,向存在中间盒(一般是合规系统)的公网 IP 精心伪造单向 TCP 连接并发送一个包含未备案域名的请求;
中间盒没有对 TCP 会话做双向的流量跟踪,误判 TCP 三次握手已经完成,并且检测到未备案的域名请求,触发未备案域名拦截动作;
很多中间盒的拦截方式是返回一个较大的包含阻断页面的应答报文,靶机收到大量垃圾流量,最终黑客实现攻击流量的反射放大。
备注:当然这个攻击手法对基于双向流量识别,并严格遵循 TCP 协议栈的中间盒是无效的。
 
 
 
3.2 攻击原理和效果详解
根据攻击的思路可知,攻击者如果想把这种手法运用到实战,需要满足 3 个关键条件:
 
找到欺骗中间盒让其误判 TCP 连接已经建立的有效手段
找到更容易触发中间盒拦截的非法域名
找到放大系数尽可能大的中间盒
(1)找到欺骗中间盒让其误判 TCP 连接已经建立的有效手段
由于这种新型 TCP 反射攻击本质上是利用了部分中间盒的弱点,而全球互联中存在种类极其繁多的中间盒,不同类型的中间盒具体机制存在差异,所以需要找到有效、高效、通用的方法,欺骗中间盒,使其误以为 TCP 连接已经建立。通过测试和分析,最终发现主要有以下 TCP 报文类型或组合可以欺骗中间盒:
 
 
 
值得注意的是单报文就能触发拦截的场景一般都是对应的中间盒完全没有做任何的 TCP 握手检查,而是基于特定标志位的报文就直接提取域名并进行拦截,此类中间盒相对较少。而 SYN;PUSH+ACK 这种请求报文组合完全伪造单向 TCP 握手和 HTTP GET 请求场景,可以欺骗绝大部分只能看到单向流量的中间盒,所以触发反射放大的成功率更高。
 
 
尽管审查的范围因国家地区而异,所以很难找到一个被所有审计中间盒拦截的域名,Kevin Bock 等人在 Quack 工具发布的公共数据进行测试分析,找到从大多数中间盒中引发响应的 5 个域,这些域巧合地跨越了五个不同的区域:
 
色情相关域名
赌博相关域名
社交媒体相关域名
文件共享相关域名
性健康/教育相关域名
(3)找到放大系数尽可能大的中间盒
为了让靶机受到更大的攻击流量,就需要找到放大效果更好的中间盒作为反射放大器,而放大系数就是主要的衡量标准。
 
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读