新型DDoS攻击泛滥:利用中间盒的TCP反射放大攻击攻击手法:攻击者利用部分网络中间盒在TCP会话识别中的漏洞,实施新型DDoS反射放大攻击。与2018年协议栈发起的TCP反射无法放大攻击流量的情况不同,这种新型攻击基于TCP协议实现了流量放大效果,也使得该攻击方式在黑市迅速传播开来它诞生后。整个网络都被淹没了。2.反射放大攻击的前世今生在讲解这种新的攻击方式之前,有必要科普一下反射放大攻击的科普知识。所谓反射放大攻击是一种非常普遍和流行的DDoS攻击方式。它的基本原理很简单:攻击者通过控制僵尸网络伪造目标机器的IP,向特定的公网服务器发送请求,公网服务器接收请求。之后会向目标机器发送更大的响应报文,从而实现攻击流量的放大。这里的公网服务器指的是开放某些协议端口的服务器,可以用来做反射放大。常见的协议有DNS、NTP、SNMP、Memcached等,这些协议一般都是基于UDP的,协议本身存在缺陷。源IP真实性未验证,具有响应报文远大于请求报文等特点。这种反射放大方式简单有效,一直为黑客所喜爱,所以UDP反射在很长一段时间内都是反射放大攻击的别称。有没有利用TCP协议的反射攻击?答案是肯定的。早在2018年,就出现了利用公网服务器开放TCP端口的反射攻击。与UDP反射放大攻击相比,这种利用TCP协议栈的反射攻击实际上并没有明显的流量放大效果,因为请求的源IP是伪造的,无法完成TCP三次握手TCP服务器建立连接,所以无法获取到应用层的响应报文。但是这种攻击利用了TCP的协议栈特性,让目标机器看到攻击流量有协议栈行为,而且成分复杂(synack、ack、rst等混合流量),导致在反向挑战和协议栈行为验证等传统攻击中。传统的TCP防护算法无法防护,大大增加了防护难度,所以这种TCP反射在诞生后很快就成为了DDoS攻击的主流攻击方式。3.新的TCP反射放大攻击3.1新的TCP反射放大攻击诞生2021年8月,马里兰大学的KevinBock等人发表在《USENIX Security 2021》上并获得优秀论文奖《Weaponizing Middleboxes for TCP Reflected Amplification》介绍了一种新型的TCP利用中间体盒子。反射放大攻击方法。与2018年出现的TCP反射攻击受限于TCP三次握手机制,难以实现流量放大不同,这种新的攻击方式利用了部分中间件没有或不能严格遵循的漏洞TCP协议栈,精细构造特定请求,触发中间件返回拦截页面,由于拦截页面往往比请求本身大,最终放大了攻击流量。中间盒之所以没有或者不能严格遵循TCP协议栈,是因为现网很多中间盒,比如防火墙、合规系统等,会考虑网络架构、性能、和稳定性。也就是说,这些系统本身只能看到机房传入的流量数据。最终这些中间盒只能根据单向流量判断是否有TCP连接,甚至有的中间盒不判断是否有TCP连接,而是直接解析请求内容并下发阻塞策略.因此,攻击者发起这种新型TCP反射攻击的过程只需以下几步:攻击者伪造目标机器的公网IP,并通过中间盒精心伪造到公网IP的单向TCP(通常是合规系统)。连接并发送包含未备案域名的请求;中间件不对TCP会话进行双向流量跟踪,误判TCP三次握手已经完成,检测到未记录域名请求,触发未记录域名拦截动作;许多middleboxes的拦截方法是返回一个包含被拦截页面的大响应消息。目标机器收到大量垃圾流量,最终黑客实现了对攻击流量的反射放大。备注:当然,这种攻击方式对于基于双向流量识别,严格遵循TCP协议栈的middlebox无效。3.2攻击原理及效果详解根据攻击思路,攻击者要想将此方法应用到实战中,需要满足三个关键条件:找到有效的手段欺骗中间盒,使误认为TCP连接已经建立。寻找更容易触发的中间盒截获的非法域名寻找放大系数可能最大的中间盒(1)寻找有效的手段欺骗中间盒,使其误判TCP连接已经建立。由于这种新型的TCP反射攻击本质上是利用了一些中间盒的弱点,而全球互联网中的中间盒种类繁多,不同类型的中间盒具体机制各不相同,因此需要寻找一种有效的、高效的、通用的方法来欺骗中间盒以为TCP连接已经建立。通过测试分析,最终发现以下TCP报文类型或组合可以欺骗中间盒:值得注意的是,单个报文触发拦截的场景一般是对应的中间盒在全部。而是直接根据带有特定标志的报文提取域名并进行拦截,这样的中间框比较少。但是SYN;PUSH+ACK请求包的组合完全伪造了单向TCP握手和HTTPGET请求场景,可以欺骗大部分只能看到单向流量的中间盒,所以触发反射放大的成功率更高.(2)找一个容易被中间件拦截的非法域名。在找到欺骗中间盒的方法,使其误判TCP连接已经建立后,需要找到一个更容易让中间盒发出拦截的域名。实际上,中间盒对特定域名的拦截,本质上就是网络审查。所谓网络审查是出于政治、宗教、道德、经济等原因。世界上很多国家都会对互联网流量进行不同程度的审查,不遵守当地的法律法规。域名被拦截,请求被拦截。一般来说,东亚、东南亚、中东等国家的互联网审计更为严格,因此从某种程度上来说,这些国家和地区的审计制度更易于使用。尽管审查范围因国家和地区而异,但很难找到一个域名被所有审计中间盒屏蔽的域名。凯文博克等人。对Quack工具发布的公开数据进行了测试分析,发现了5个引发大多数中间件响应的域名。域,巧合地跨越五个不同的域:色情相关域赌博相关域社交媒体相关域文件共享相关域性健康/教育相关域如果机器接收到更多的攻击流量,则需要找到放大效果更好的中间框作为反射放大器,放大倍数是主要衡量标准。放大倍数可以理解为流量的放大倍数,计算方法很简单,就是响应的总长度/查询的总长度。传统的UDP反射攻击的放大倍数与具体的协议实现有关,所以放大倍数是一个比较固定的值:除了Memcached反射攻击,其他UDP反射攻击的放大倍数都不超过600,并且是主要在200以内。但是这种新型的TCP反射攻击的放大倍数并不是一个固定值,因为不同地区、不同厂商、不同类型中间盒的拦截方式并不一致,甚至可以说有很大的差异。因此,为了量化评估该方法的放大倍数,我们对整个网段进行扫描,对放大倍数超过5的反射放大器进行统计分析:大部分反射放大器的放大倍数在5~100之间,同时一时间发现了10000多个放大倍数从100到10000不等的强大放大器,但更令人惊讶的是,竟然发现了数个放大倍数超过10000甚至50000的超级放大器。那就是问题所在。按理说,虽然中间盒响应的阻塞包可能比请求包大,但是阻塞页面的大小毕竟是有限的,放大几百上千也无可厚非。为什么会有几万倍,甚至五万多倍的放大效果?而这就是我们接下来要讨论的超级放大器。3.3超级放大器为了理解超级放大器,我们需要系统了解主要的反射场景:场景一:服务端反射该场景下,服务端收到请求后直接响应,一般返回synack或rst。这种反射场景其实在2018年就出现了,使用服务器协议栈的TCP反射,没有明显的放大作用。场景二:middlebox反射攻击请求触发middlebox拦截,middlebox代替server响应一个大的拦截页面给目标机,从而实现攻击流量放大,拦截页面越大放大倍数越大。当然也有一些middleboxes不会响应阻塞页面,而是直接返回rst而不是server。在这种情况下,不会有放大效果。场景三:Server+middlebox反射攻击请求同时触发middlebox的拦截和后端server的响应,所以目标机同时收到middlebox的拦截页面和server的synack或rst,放大倍数会比场景二略大。场景四:Middlebox反射+路由循环这种场景最为特殊。攻击请求到达服务器所在IDC机房后,由于路由环路,请求在两台路由器之间循环,最终导致中间盒接收到大量请求,最终将攻击请求发送给目标。机器多次应答阻塞页面。我们知道数据包中有一个TTL域,每经过一个路由设备就会减1,直到为0才会丢弃数据包。设置攻击请求报文的初始TTL到255,也就是说路由环路后,放大倍数会增加200+倍。(如下图:攻击请求循环导致中间框收到大量重复请求)而且这种情况还不是最坏的。在某些特定的网络环境下,会出现TTL重置(比如在网络中运行MPLS协议,设置一些厂商设备的MPLSQOS默认会重置TTL),请求包会在循环后无限循环,并且最后,中间盒被迫以最大容量响应阻塞页面,直到出口带宽完全加载。上述因素是超高放大系数中箱的原因,这些反射器也被称为超级放大器。当然,这种循环或无限循环会引起IDC运维和安全人员的警惕,所以超级反射器的生存并不稳定。比如笔者在印度发现了一个超级反光镜后,第二天就“停用”了,变成了普通的反光镜。此外,凯文博克等人。《USENIX Security 2021》(https://www.usenix.org/conference/usenixsecurity21/presentation/bock)中提到还有第五种反射场景:目标机和中间框的连续反射也可以实现缩放的能力ininfinitely,不过由于笔者在扫描中并未发现这一场景,本文不再赘述。4、保护方案作为反射放大器的中间盒,如防火墙、合规系统等,一般由IP网段所属的企业/运营商部署运营,因此同一个IP网络的放大效果网段接近,这意味着如果要对外发起这种攻击,攻击者往往会向反射放大器所在的IP网段发送扫描请求。这是针对反射放大器所在IP网段的扫段DDoS攻击。所以这次攻击实际上有两个受害者:被攻击的目标机器;用作放大器的IP网段。我们需要的是:既能有效防御这种攻击,又能避免成为攻击者的反射放大器。4.1如何防御新的TCP反射攻击如果我们被攻击者盯上,成为目标机器,那么防御这种攻击有两个关键:有效的防御策略和足够的保护带宽。在防护策略上:由于中间盒的响应报文在四层流量上其实和普通的HTTP响应报文没有太大的区别,所以要防范这种攻击其实是相当困难的。一般来说,可以通过以下方法进行防护:如果没有源端口为80的TCP流量,可以直接阻断源端口为80的TCP流量。借助云厂商阻断非客户区域或IP网段专业的DDoS防护能力,比如基于字节跳动多年的VolcanoEngine。业务DDoS攻防积累,结合流量指纹、机器学习等技术手段,对流量进行细粒度清洗,清洗成功率达99.9%以上,可有效抵御这种新型DDoS攻击,因此让用户高枕无忧。在保护带宽方面:由于攻击方式具有流量放大的作用,攻击流量往往非常大,因此充足的保护带宽必不可少。因此,如果业务被攻击者盯上,面临如此大流量的DDoS攻击,接入云端,利用云厂商的海量保护带宽进行防御就显得尤为重要。4.2如何避免成为反射放大器如果企业(尤其是合规系统)的中间盒存在TCP会话识别漏洞,合规拦截页面过大,极有可能被视为“高-quality"长期受到外部攻击者的攻击。因此,不可避免地遭受频繁的段清扫DDoS攻击,极大地浪费了系统性能和出口带宽等宝贵资源,并面临被目标无人机投诉甚至报复的风险。为此,优化合规系统等中间盒机制,避免被利用将成为重要的安全课题。为此,我们建议中间盒可以增加TCP包的有效性检查和丢弃,比如syn设置但携带payload。如果报文明显不合法,可以丢弃;中间盒需要提高识别TCP会话的能力,避免直接从TCP单包中提取域名直接发送进行拦截。在条件允许的情况下,尽量根据出入流量来检查双向会话,这样可以完全规避风险。
