网络世界里为人们所熟知的DDoS攻击,多数是通过对带宽或网络计算资源的持续、大量消耗,最终导致目标网络与业务的瘫痪;这类DDOS攻击,工作在OSI模型的网络层与传输层,利用协议特点构造恶意的请求载荷来达成目标资源耗尽的。
除了这类在网络传输层大做文章的DDoS攻击,还有一类DDoS攻击把目光聚焦到了应用层。随着互联网的飞速发展,接入流量逐年攀高,承载这些流量的网络应用也被黑产、黑客们盯上,在DDoS攻击场景中也不例外。
由于应用层流量更贴近业务逻辑,在应用层发起DDoS攻击可以同时对目标网络与目标服务器的稳定性造成威胁。除此之外,攻击者往往只需较小的带宽成本,实现更大的破坏效果,这样的不对称性自然更受攻击者们的关注与青睐。
Cloudflare在 《DDoS Attack Trends for 2022 Q1》报告指出,全球范围内应用层DDoS攻击(主要是HTTP DDoS)呈现着持续增长的态势。在俄乌的网络战争中,HTTP DDoS攻击也扮演着重要的角色。
与此同时,应用层DDoS攻击的攻击方式与手法在也在不断演进升级。从集中式高频请求逐步演进为分布式低频请求,从请求报文中携带显著恶意特征变化为重放合法请求流量,伪造搜索引擎爬虫流量等;而在攻击的频率与规模上,应用层DDoS攻击也呈现出不断增长的趋势。
针对攻击手法的升级变化,业务防护可以从两方面着手应对:一是在运营对抗上,在攻击发生的事前、事中和事后各阶段,通过梳理资产信息、分析攻击报文并进行特征提取、配置防护策略、复盘防护数据等手段不断提升防护对抗效果;二是在防护能力建设上,可以引入支持多维度特征组合的限速功能、JS Challenge、验证码等功能模块来提升对高级复杂的应用层 DDoS攻击的识别处置能力。与此同时,在流量接入链路中与CDN、LB、AGW等各接入层产品进行联动合作,通过在不同接入层级落地相关防护策略,实现攻击流量的分级收敛,在应对大规模应用层DDoS攻击时更能凸显防护效果。
上面提到的应用层DDoS攻击,是通过向应用程序发送大量恶意请求实现攻击效果,以每秒请求数 (QPS) 来衡量攻击量级与规模;这类攻击也称为 7 层 DDoS 攻击,可针对和破坏特定的网络应用程序,而非整个网络。虽然这类 DDoS 攻击难以预防和抵御,但发动起来却相对比较容易,具体有多容易呢?
由于7层DDoS通常不需要过高的带宽成本,也无需构造复杂的协议利用报文,在黑灰产交易渠道,可以非常便捷地获取到发起7层DDoS的工具与服务。
即便是知名、成熟的互联网应用,在这类攻击面前也存在被攻陷的可能与风险。
7层DDoS攻击中,瘫痪目标应用与服务是首要目标,根据HTTP DDoS(CC)攻击发起的原理与方式,可以总结以下攻击类型:
这种攻击主要分为两种形式。第一种是HTTP GET request floods,攻击者通过构造HTTP GET请求报文,向目标服务器发送针对特定资源的大量请求。在客户端执行一条HTTP请求的成本很低,但是目标服务器做出对应的响应成本却可能很高。比如加载一个网页,服务端通常需要加载多个文件、查询数据库等才能做出响应;例如在Web业务的防护中,对于有SSR(Server-side rendering)功能页面的HTTP floods攻击,其量级与频率更加突出明显,也更容易对业务造成影响与危害。
第二种是HTTP POST request floods,与GET request floods的显著区别是,POST请求往往需要携带表单参数或请求体信息,而这通常意味着服务端需要对请求内容进行相关解析处理,并将数据进行持久化(通常需要进行DB操作)。发送POST请求一般仅需较小的计算与带宽成本,而服务端进行处理操作的过程往往消耗更高。可以说这种攻击形式下,形成这种请求响应间资源消耗差异的空间或可能性更大,更容易实现让服务器过载从而拒绝服务的目标。
这类攻击一般通过POST方法发送容量大、结构复杂的请求体到目标服务器,使得目标服务器在解析这些请求内容的过程发生过载(CPU或内存);一般而言,攻击者通过构造特定的序列化请求体,如xml、json等,在服务端执行反序列化操作时引起服务过载。
这种类型的攻击顾名思义,利用的就是请求与响应的非对称性,请求的目标路径会执行高消耗操作而发起攻击请求轻而易举。通常来说,这类攻击需要对目标服务有一定的熟悉与了解,明确攻击目标哪些地方存在这种非对称性利用的可能及利用方式。比如通过从数据库服务器下载大型文件或大量执行数据库的查询等接口,就容易被这种类型攻击所利用。
这种类型的攻击更多是面向连接层面,以基于线程的Web服务器为目标,通过慢速请求来捆绑每个服务器线程,从而消耗服务器的线程&连接资源,这类攻击中主要可分为Slowloris、Slow Post/Read 几种攻击方式。
根据上述总结的HTTP DDoS攻击类型、原理与实现方式,可以总结出HTTP DDoS攻击具备以下特点:
相较于4层DDoS攻击,发起HTTP DDoS攻击往往无需构造复杂的攻击报文,仅需较少的带宽就能实现强大的攻击效果。
攻击的目标可以精细到服务接口粒度,例如直播页面等,而不需要瘫痪目标的网络也能让业务出现拒绝服务。
虽然HTTP DDoS攻击的首要目标是瘫痪目标服务,但并不意味着对目标网络的可用性没有威胁。当HTTP floods量级到一定程度时,也存在瘫痪请求接入层网络的可能性。
实际的HTTP DDoS攻击中,攻击者常常利用规模庞大的肉鸡/代理IP,而HTTP DDoS攻击报文中往往不具备或具备难以察觉的恶意特征。对这些攻击源进行封禁处置效果有限甚至有误报风险,攻击者却可以随时更换新一批攻击源。
不同于Web注入攻击场景,HTTP DDoS的攻击请求的报文特征常常处在一个难以判定好坏的区间,有时部分的异常特征不足以支撑执行拦截决策。攻击者可通过模拟、重放正常请求来发起攻击,即便在请求报文中某些特征被防护方捕获并针对性处置,攻击者也能感知到并作出调整。
总体而言,一起复杂的HTTP DDoS攻击,通常不会使用畸形报文,也无需使用伪装技巧。对比其他类型的DDoS攻击需要更少的带宽成本就能瘫痪目标站点或服务,甚至特定的目标集群与接口。在影响目标业务可用性的同时,也可能对接入链路网络的稳定性构成威胁。这类攻击往往通过使用大量的肉鸡+IP代理池发起,所以简单的封禁策略往往难以起到预期效果。也正因为如此,在进行HTTP DDoS攻击防护过程,要求对业务有更深入的理解,对于攻击定制针对性策略来实现误报与漏报的平衡,这也是HTTP DDoS难以检测防护的原因。
根据上述HTTP DDoS的类型与特点,对于来势汹汹的攻击流量,WAF如何实现有效防护呢?
根据攻击的原理与类型,可以大致分为三个主要的防护场景:
这类型的HTTP DDoS攻击,对应上面提到的Low&Slow attack。由于攻击是通过建立TCP连接后在传输HTTP报文的过程实现攻击效果,因此对于业务前面有7层接入层设备的业务(CDN、LB等),这类攻击会被前面的7层接入层设备所承载。所以对于许多业务而言,这类型的攻击感知可能并不明显,但并不表明这类攻击的危害程度低。相反如果针对特定7层接入设备进行此类型攻击,可能造成的业务影响面会更加广泛。
由于这类攻击的特点是“慢速”,那么WAF可以对HTTP的请求header读取、请求、响应body的传输设置好超时时间。当触发超时策略时可断开相应的TCP连接,释放连接资源。同时,可对于异常的header、body做检查与限制(如限制HTTP请求header的数量)。还可以通过HTTP层面的精细化访问控制来避免误伤场景(如正常业务的大文件传输场景)。
当然,要实现这些能力需要WAF与7层接入设备做好联动配合才能实现有效防护。
这类型的HTTP DDoS攻击,对应上面的Large Payload POST requests 和 Asymmetric requests,他们的共同点是需要实现这类HTTP DDoS攻击,在HTTP请求报文中往往能够提取出关键异常特征。
例如,对于Large Payload POST requests,WAF可通过限制body长度,检查body内容合法性等手段来实现防护;
{ "title": "Liverpool FC (1 million more whitespace)", "contentFormat": "html", "content": "
You’ll never walk alone.
", "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", "tags": ["football", "sport", "Liverpool"], "publishStatus": "public" }例如针对上述的超大异常body,可通过WAF配置自定义策略限制body长度。
对于Asymmetric requests攻击,例如HTTP Range头利用的例子中,WAF可通过限制HTTP Range头的分片策略实现异常检测与防护;对于一些漏洞利用,特别是业务使用的服务框架、中间件产生的漏洞造成的DDoS,利用WAF的Web漏洞检测防护能力便能实现有效防护。
floods类型的HTTP DDoS在现实网络流量中更为主流与常见,影响业务稳定性的风险更大,是需要重点关注的防护场景;WAF在面对这类型攻击时,可根据floods类型HTTP DDoS攻击的特征、特点,分析拆解防护策略,通过以下手段、步骤来实现有效防护:
当业务面临HTTP floods攻击防护需求时,首先需要梳理清楚业务的流量接入链路。因为HTTP floods通常具有持续、量级规模大的特点,因此最佳的防护部署是首先通过在最外接入层实现(例如CDN),这样的优点很明显,能将恶意的攻击流量在最外层收敛,减少后续接入层的压力与成本。但这并不意味着后续接入层无需部署防护,由于防护的精准程度与防护成本往往是正相关关系,经过收敛的流量在贴近业务的接入层做更精细的检测、处置,往往收益更明显;
同时,明确业务服务的使用场景在应对HTTP floods攻击时也非常关键且必要,业务不同的host、path往往有不同的业务特征。比如后端负载能力、是否有登录态、WebApp还是Native App、是否有API调用场景等,只有在明确业务场景后才能更好地制定精准、贴合业务需求的防护策略。
业务链路梳理&防护部署
在HTTP floods发生时,最基本的防护需求是要保证业务的可用性,不能出现因攻击而造成业务瘫痪的情况;在这个需求背景下,最快速有效的策略便是为业务制定负载兜底策略。与业务共同梳理清楚需要防护的目标资产(host、server cluster、path等),根据业务场景先配置全局/粗粒度的限速策略,实现对攻击流量的初步防护收敛;
同时,在明确目标防护资产的负载能力后,进行更细粒度的限流/过载保护策略配置,在流量过载的极端情况下优先保证服务的可用性,构建一层基线防护能力。
采取上述策略手段实现初步防护后,需要对HTTP floods流量进一步分析过滤,才能在保障正常业务流量的同时将恶意流量拒之门外。这里就需要WAF提供基于HTTP请求、响应报文的多维组合、匹配能力,识别出报文中的异常特征并提供针对性的处置手段。例如,在对抗业务遭受的HTTP floods恶意流量攻击过程中,除了提取常见的异常IP,Params,UA,Referer,Cookie等特征进行封禁或限速处置外,还会将相关特征进行组合关联,为策略统计与响应处置提供参考。
通过对攻击流量特征的分析统计,在WAF上进行组合策略配置
除了通过WAF丰富的特征分析能力识别恶意流量,在面临HTTP floods攻击时,提供丰富、梯度的处置动作对于在防护过程平衡误伤风险也非常关键。WAF可提供封禁、限速、重定向、验证码、JS Challenge、自定义响应等多种处置动作与特征识别能力配合,为防护的精准性提供保障。
对于专业的HTTP floods攻击,攻击者会尽可能地模拟、重放正常的用户请求流量。因此从“HTTP报文特征”去识别防护恶意流量,可能还远不足以应对高级复杂的HTTP floods攻击。对于HTTP floods攻击手法的持续升级演进,除了从HTTP报文层面抽丝剥茧识别异常,还需要联动其他维度的信息与能力来提升防护效果,具体而言体现在以下方面:
WAF的JS Challenge功能,就是通过能力联动来提升防护效果的一个例子:
不同于对请求报文检测来识别异常这种“被动”的防护方式,JS Challenge功能通过在防护检测过程“主动”向客户端植入一段JS逻辑。通过利用前端浏览器的JS渲染执行能力,实现对异常流量的识别;在具体的实现过程中,为了对抗重放攻击、减少绕过风险,可能会引入动态令牌机制;为了更全面地覆盖业务场景,减少误伤情况发生,可以利用JS API调用判断浏览器环境与兼容性;为了对防护情况的实时掌控,还可能引入埋点、监控逻辑等。
在这些技术细节的实现过程中,WAF既需要联动端侧浏览器的能力,也需要联动CDN、LB等接入组件的能力,最终实现防护效果的进一步提升。
WAF在对抗HTTP DDoS攻击的过程中,不断建设、强化自身能力的同时,也需要不断复盘、反思防护情况,力求更完善、高效的应对思路与方案。具体可以总结成以下三点:
根据HTTP DDoS攻击的特点可以得知,防护难点之一在于攻击流量特征难以捕捉。其中一个原因是依据现有的特征维度,攻击流量能实现高度的模拟伪装。从这个角度出发,从防护视角补充更多维度的特征,就更能识别检测恶意流量。
就WAF产品而言,可以从两方面着手推进:一方面是丰富报文特征,除了7层HTTP报文的特征提取,可以尝试结合4层报文的字段因子来实现对恶意流量的识别标记;另一方面是丰富行为特征,由于HTTP是无状态协议,单次请求响应的交互所携带的信息往往是有限的。通过关联、统计具有一定联系的请求,提取行为特征,也能为制定防护策略提供参考。
对于BOT流量的识别对抗能力,在HTTP DDoS攻击防护中,往往发挥着重要、关键的作用。但现实业务流量中往往也会混杂正常的BOT流量,这就要求不仅能识别出BOT流量,还能区分正常与恶意的BOT流量,具备与恶意BOT流量的对抗处置能力。
在落地相关方案时,也需要与业务场景紧密贴合。对于WebApp而言,正常流量多数通过浏览器发起,可以通过JS Challenge的方式实现对端侧的校验与信息采集。通过该方案实现WebApp场景防护的同时,在技术实现上也需要不断迭代优化来满足更多元的业务场景需求。例如对于JS相关逻辑用更高效的混淆方式来避免绕过风险,对引入的JS资源做好缓存/优化策略提升业务性能与用户体验等。
对于NativeApp而言,则可以通过SDK集成方式来验证、采集端侧信息。但无论是哪种方式、场景,都需要有更完善的误伤评估、监控体系来保障防护的精准性。对于无法准确识别恶意BOT流量的情况,也需要更丰富的柔性处置策略,来实现对流量的进一步过滤校验。
预防为主,防治结合,这是人类应对疾病威胁的重要方针,在网络安全世界中也同样适用。HTTP DDoS攻击发生时往往来势汹汹,事先并没有任何征兆。这就意味着事中、事后的处置策略对当前攻击通常只能起到应急补救的效果。因此,对于存在攻击风险的业务,提前梳理业务资产,预先进行策略布局就显得更为重要。
为了实现这个目标可从两方面着手:一个是与业务团队紧密配合,做好宣传引导,在WAF产品中对关键目标资产实现HTTP DDoS防护策略的事前配置;另一个是强化WAF的自动化分析能力,对承载业务的目标资产、负载能力、报文特征等数据进行自动化统计分析,输出对应的防护策略,对生产的策略效果进行实时评估、校准,在提升防护效果的同时也能大幅降低策略运营成本。