by:谷歌翻译 这项工作在USENIX Security 2021上发表并获得了杰出论文奖。我们的会议演讲也可以在这里找到。 概括:
总的来说,我们的研究结果表明,审查基础设施对更广泛的互联网构成的威胁比以前理解的要大。即使是在非审查民族国家中良性部署防火墙和入侵防御系统,也可以使用我们发现的技术进行武器化。 查看我们的全文、我们的会议演讲、我们的开源代码,或者您可以跳转到下面的常见问题解答部分。 这不是我们发现审查员可能被武器化的唯一方式:请参阅关于我们在 WOOT 2021 中的工作的帖子“你的审查员就是我的审查员:武器化审查基础设施以应对可用性攻击”。 什么是反射放大?反射放大攻击是 DoS 攻击者武器库中的强大工具。攻击者将受害者的请求欺骗到开放服务器(例如,开放的 DNS 解析器),然后服务器响应受害者。如果响应大于欺骗请求,则服务器在 DoS 攻击中有效地放大了攻击者的带宽: 武器化中间盒目前大多数 DoS 放大都是基于 UDP 的。原因是 TCP 需要 3 次握手,这会使欺骗攻击复杂化。每个 TCP 连接都以客户端发送 3 次握手可有效防止 TCP 兼容主机的放大。但是在这项工作中,我们发现大量的网络中间盒不符合 TCP 标准,并且可以被滥用来进行攻击。特别是,我们发现许多审查中间盒会响应带有大块页面的欺骗性审查请求,即使没有有效的 TCP 连接或握手。这些中间盒可以被武器化以进行 DoS 放大攻击。 中间盒通常在设计上不兼容 TCP:许多中间盒尝试处理非对称路由,其中中间盒只能看到连接中数据包的一个方向(例如,客户端到服务器)。但是这个特性使它们容易受到攻击:如果中间盒仅基于连接的一侧注入内容,攻击者可以欺骗 TCP 3 次握手的一侧,并说服中间盒存在有效连接。 这给我们留下了一些问题:触发这些中间盒的最佳方式是什么,我们可以从中获得什么样的放大因子? 发现放大中间盒我们的目标是发现攻击者可以发送的一系列数据包,以欺骗中间盒注入响应,而无需完成真正的 3 次握手。 请注意,此目标不符合 TCP。我们正在利用实现中的弱点,而不是在 TCP 协议本身的设计中。这意味着仅研究 TCP 协议是不够的——我们必须研究真正的中间盒 TCP 实现。这带来了一个挑战:世界上有太多种类的中间盒供我们购买,即使我们可以购买,为民族国家审查基础设施提供动力的中间盒通常也不会出售。 相反,我们使用我们的工具Geneva来研究在野外审查中间盒。 为了找到要研究的中间盒,我们使用了 CensoredPlanet 的 Quack 工具发布的公共数据。Quack 是一种扫描器,可以在其路径上查找带有审查中间盒的 IP 地址。我们使用这些数据识别了位于世界各地的 184 个示例中间盒,这些中间盒通过注入块页面来执行 HTTP 审查。 Geneva ( Gen etic Eva sion) 是我们设计的一种遗传算法,旨在自动发现逃避审查的新方法,但其核心是,Geneva 是一个数据包级网络模糊器。我们修改了Geneva 的适应度函数,以奖励它使引发的响应尽可能大,然后针对所有184 个中间盒训练Geneva。 我们发现了 5 个数据包序列,这些数据包序列引起了中间盒的放大响应。其中每一个都包含一个格式良好的 HTTP GET 请求,该请求是针对中间框禁止的某个域的:
我们还发现了另外 5 个修改,它们进一步增加了一小部分中间盒的放大率;攻击者可以将这些用于特定的中间盒。有关这些修改的更多详细信息,请参阅我们的论文。 为了从这些中间盒中获得响应,我们需要一个被每个中间盒审查或禁止的域,但大多数审查中间盒使用不同的阻止列表,因此很难找到一个能够从每个人那里引出阻止页面的域。我们分析了 Quack 数据集,以找到从大多数中间盒中引发响应的 5 个域,这些域巧合地跨越了五个不同的区域:
我们还使用example.com和根本没有域作为对照实验。 寻找放大器我们扫描了整个 IPv4 Internet 以测量有多少 IP 地址允许反射放大。为此,我们修改了 zmap 扫描器以构建由日内瓦识别的所有五个数据包序列。 我们总共扫描了整个 IPv4 互联网 35 次(5 个数据包序列 × 7 个测试域)。我们测量了我们得到的响应,以计算我们从每个 IP 地址获得的放大系数。 我们的 zmap 版本是开源的,可在此处获得。 结果回想一下,我们正在寻找中间盒中 TCP 实现的弱点,而不是 TCP 协议本身。此外,每个中间盒都有自己的注入策略和阻止页面:这意味着这种攻击没有单一的放大因子,因为我们触发的每个中间盒都会不同! 相反,我们可以查看响应大小的分布,以了解攻击者可用的放大量。 下面是我们在所有 35 次扫描中收到的每个 IP 地址的最大放大系数的图表,按 x 轴上的放大系数排序。在 y 轴上,您可以看到 IP 地址提供的放大系数。 在这张图上,您可以看到放大因子的巨大范围——从超过 100,000,000 到小于 1。 无限放大接下来,我们将检查上图顶部的 IP 地址,我们可以看到放大系数在 1,000,000 到 100,000,000 之间。这些 IP 地址是我们的超级放大器,提供了巨大的放大系数。事实上,这些放大因素可能被低估了。这些数字来自我们的扫描停止收集数据的地方,而不是 IP 地址停止向我们发送数据的地方。这里发生了什么? 这就是我们发现技术上无限放大因子的地方。放大系数的计算方法是放大器接收的字节数除以发送的字节数。我们发现放大器一旦被来自攻击者的单个数据包序列触发,就会向受害者发送无穷无尽的数据包流。在我们的测试中,其中一些数据包流持续了数天,通常是放大器链路可以提供的全部带宽。 我们发现了导致这种无限放大的两个原因:路由环路和受害持续放大器。 路由循环当数据包在从一个 IP 地址路由到另一个 IP 地址时遇到循环时卡住,两个 IP 地址之间就会出现路由循环。包含审查中间盒的路由环路为攻击者提供了新的好处:每次触发数据包绕过路由环路时,它们都会重新触发审查中间盒。 数据包在网络中存活的跳数通常由 比普通路由循环更危险的是无限路由循环。如果是一个不递减 受害者持续放大器我们发现无限放大的第二个原因是受害者持续循环。当受害者收到意外的 TCP 数据包时,正确的客户端响应是使用 受害者持续案件特别危险,原因有两个。首先,受害者的默认行为维持了对自身的攻击。其次,这种攻击会导致受害者在淹没下行链路的同时淹没自己的上行链路。 这些真的是中间盒吗?是的,我们的结果表明如此。为了测试这一点,我们进行了一个 民族国家的作用是什么?我们发现,世界各国的民族国家审查基础设施也可以武器化。这些民族国家中的大多数都是弱放大器(例如,中国的防火墙仅提供大约 1.5 倍的放大),但其中一些提供更具破坏性的放大,例如沙特阿拉伯(约 20 倍的放大)。 民族国家的真正挑战在于,它们的审查基础设施通常会处理所有进出该国的流量。这意味着与其他放大攻击不同,受害者接收到的流量的源 IP 地址是放大器本身,中间盒后面的每个 IP 地址都可以作为流量源出现。换句话说:一个放大的民族国家内的每个 IP 地址都可以是一个放大器。 攻击伤害攻击者可以通过无限放大造成多少伤害?在这种情况下,作为衡量标准的“放大系数”开始失效。大多数时候,当人们询问放大系数时,他们是在询问攻击者对给定的攻击向量可以造成多大的破坏。如果攻击者可以引出技术上无限的放大因子,但在链路完全饱和之前只有 64 kbps,那么攻击者可以造成的破坏量是有限的。 一个更好的问题:攻击者可以通过这次攻击获得的最大带宽是多少?不幸的是,这是最难从道德上研究的。为了测量给定放大器的最大容量,我们必须使每个网络的链路完全饱和,这可能对该网络的用户产生真正的负面影响。目前,攻击者可以从这次攻击中获得的真正容量尚不清楚。 防御防御这种攻击是困难的。传入的流量洪流来自 TCP 端口 80(正常 HTTP 流量),响应通常是格式正确的 HTTP 响应。 由于中间盒正在欺骗它们生成的流量的 IP 地址,这意味着攻击者可以将反射流量的源 IP 地址设置为中间盒后面的任何 IP 地址。对于某些网络来说,这只是一小部分 IP 地址,但如果攻击者使用民族国家审查基础设施,攻击者可以使攻击流量来自该国家/地区的任何 IP 地址。这使得受害者很难在攻击期间丢弃来自违规 IP 地址的流量。 负责任的披露2020 年 9 月,我们与多个国家级 CERT(计算机应急准备小组)、DDoS 缓解服务和防火墙制造商联系并分享了我们论文的高级副本。我们还与多个 DDoS 缓解服务和美国 CERT 举行了进一步会议,以进一步讨论缓解问题,并一直与 DDoS 缓解服务保持沟通。 不幸的是,我们能做的只有这么多。完全解决这个问题将需要各国投资于可能削弱其审查基础设施的变革,我们认为这不太可能发生。 常问问题
纸 |