应用层攻击 - 实现 DDoS 弹性的 AWS 最佳实践

应用层攻击

攻击者可以通过使用第 7 层或应用层攻击来攻击应用程序本身。在这些攻击中,类似于 SYN 泛洪基础设施攻击,攻击者试图使应用程序的特定功能超载,从而使应用程序不可用或无法响应合法用户。有时,这可以通过非常低的请求量(仅产生少量网络流量)来实现。这可能使攻击难以检测和缓解。应用层攻击的示例包括 HTTP 泛洪、缓存破坏攻击和 WordPress XML-RPC 泛洪。

HTTP 泛洪攻击中,攻击者发送看似来自 Web 应用程序有效用户的 HTTP 请求。有些 HTTP 泛洪以特定资源为目标,而更复杂的 HTTP 泛洪则试图模拟人类与应用程序的交互。这可能会增加诸如请求速率限制等常见缓解技术的使用难度。

缓存破坏攻击是一种 HTTP 泛洪攻击,它在查询字符串中使用变体来规避内容分发网络(CDN)缓存。CDN 无法返回缓存的结果,而是必须为每个页面请求联系源服务器,而这些源获取会给应用程序 Web 服务器带来额外压力。

通过 WordPress XML-RPC 泛洪攻击(也称为 WordPress pingback 泛洪),攻击者将目标锁定在 WordPress 内容管理软件上托管的网站。攻击者滥用 XML-RPC API 函数生成大量 HTTP 请求。pingback 功能允许在 WordPress 上托管的网站(站点 A)通过站点 A 已经创建的指向站点 B 的链接通知另一个 WordPress 站点(站点 B)。然后,站点 B 尝试获取站点 A 以验证该链接是否存在。在 pingback 泛洪中,攻击者滥用此功能,导致站点 B 攻击站点 A。此类攻击具有明确的特征:HTTP 请求标头的 User-Agent 中通常存在 WordPress

还有其他形式的恶意流量可能会影响应用程序的可用性。Scraper 机器人会自动尝试访问 Web 应用程序,以窃取内容或记录竞争信息(例如定价)。暴力攻击凭证填充攻击经过编程,旨在获得对应用程序安全区域的未经授权的访问。严格来说,这些不是 DDoS 攻击;但其自动化性质看起来类似于 DDoS 攻击,可通过实施本文中介绍的一些相同最佳实践来缓解这些攻击。

应用层攻击还可以针对域名系统(DNS)服务。这些攻击中最常见的是 DNS 查询泛洪,其中攻击者使用许多格式正确的 DNS 查询来耗尽 DNS 服务器的资源。这些攻击还可以包括缓存破坏部分,其中攻击者将子域字符串随机化,以绕过任何给定解析器的本地 DNS 缓存。因此,解析器无法利用缓存的域查询,而必须反复联系权威 DNS 服务器,这会加剧攻击。

如果通过传输层安全性(TLS)传送 Web 应用程序,则攻击者也可以选择攻击 TLS 协商流程。TLS 的计算成本很高,因此,攻击者通过在服务器上生成额外工作负载,将无法读取的数据(或无法理解的(密文))作为合法握手来处理,从而降低服务器的可用性。在这种攻击的一种变体中,攻击者完成了 TLS 握手,但不断地重新协商加密方法。攻击者也可以尝试通过打开和关闭多个 TLS 会话来耗尽服务器资源。