一篇发表于USENIX Security 2023上的,对GFW做黑盒测试的文章,这篇文章详细的测试了GFW如何识别一些知名的代理协议,如Obfs4、Vmess等。

GFW Report | 中国防火墙如何检测和阻止完全加密的流量

image.png

原文标题:How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic
原文作者:Mingshi Wu, Jackson Sippe, Danesh Sivakumar, Jack Burg, Peter Anderson, Xiaokang Wang, Kevin Bock, Amir Houmansadr, Dave Levin, Eric Wustrow
原文链接:https://www.usenix.org/conference/usenixsecurity23/presentation/wu-mingshi
视频链接:https://www.youtube.com/watch?v=WCRxbmacQg0
发表会议:USENIX Security '23

1、研究背景

中国防火墙(Great Firewall,简称 GFW)是目前全球最为先进和严密的网络审查与封锁系统之一。它通过一系列技术手段,有效限制了中国用户访问部分境外资源,实施严格的内容审查政策。随着 VPN、Tor、Shadowsocks 等抗审查工具的出现,GFW 的封锁技术也在不断进化,采用了包括深度包检测(DPI)、协议指纹识别、流量混淆等复杂技术。

近年来,完全加密的流量成为抗审查的重要手段,尤其是 HTTPS 和各类加密代理协议。加密流量能够通过随机比特分布掩盖流量内容,令防火墙难以分析,但也因此可能被当成异常流量而遭到封锁。因此,为了有效识别和封锁完全加密流量,2021年11月初,GFW 开始实施新的检测机制,即利用“启发式检测规则”对流量特征进行综合分析。研究揭示了 GFW 使用的检测规则,包括比特位密度检测、前六个字节 ASCII 检查等。这些策略在控制误判的基础上,通过残留封锁和概率性检测实现了对加密流量的有效封锁。本文发现通过自定义数据包前缀、比特位密度调整、设置连续可打印ASCII码等应对措施,可以有效绕过 GFW 的封锁,提高抗审查工具的隐蔽性。

2、实验设计

研究者在中国内外的主机之间发送各种测试探针,以观察 GFW 对流量的反应,记录和比较两个端点的流量,以识别丢失或被操纵的数据包及主动探测行为。

image.png

研究团队使用了10个位于北京的腾讯云 VPS 和1个阿里云 VPS 作为client;4个位于旧金山的DigitalOcean VPS 被用作“sink server”,即监听所有端口的TCP连接,但不返回数据。其中3个被墙,1个未被墙;2台CU Boulder机器用于互联网扫描和实时流量分析。并通过 IP2Location 数据库验证 VPS 的地理位置,以确保其信息准确。

由于完全加密的流量无法与随机数据区分,研究者开发了测量工具,向 GFW 发送随机数据以触发审查。该工具发起 TCP 握手,发送随机负载,然后关闭连接。

GFW 在连接触发审查后,会对相同的三元组(客户端 IP、服务器 IP、服务器端口)进行 180 秒的阻断。研究者通过发送后续连接来确认阻断,如果连续的五个连接均失败,则认为该三元组被阻断。

GFW 采用概率性阻断策略,审查大约在四分之一的连接中被触发。为了应对这一策略,研究者在得出阻断结论之前,会发送最多 25 个相同负载的连接。如果连续 25 次连接成功,则认为该负载未受影响;如果在发送负载后,五个后续连接因残余审查超时,则将该负载视为受审查。

3、研究发现

GFW 并非直接针对所有加密流量实施阻断,而是依据特定的启发式规则来识别可疑的加密流量。通过详细的实验,研究人员发现 GFW 的检测机制只针对TCP协议的第一个数据包(即三次握手后的第一个包)进行检测,主要包括以下几个方面:

image.png

比特位密度检测(Ex1):GFW 会检测数据包中比特位的设置比例(popcount)。如果数据包表现出高度随机性,即比特位密度接近 50%(即大约一半比特位为 1,另一半为 0),则被视为加密流量,更容易触发封锁。
ASCII 字符规则(Ex2-5):对于传输的数据包,GFW 会检查前六个字节是否为可打印的 ASCII 字符、是否有超过20个的连续可打印的 ASCII 字符、是否有超过一半的字节为可打印字符以及是否满足TLS或HTTP的协议指纹。如果满足上述任一条件,则通常会认为是正常的 HTTP 请求或其他明文流量,则会放行该连接。相反,不符合这一特征的流量则有较大概率被阻断。

image.png

范围内概率性阻断:在检测到疑似加密流量时,GFW 会在一定IP范围内(境外VPS供应商居多)以一定的概率(大约26%)进行封锁,并且在封锁触发后会在120或180秒内继续丢弃所有具有相同3元组(客户端IP,服务器IP,服务器端口)的后续TCP数据包,即用“残留封锁”(Residual Censorship)的策略来进一步增加封锁强度。

image.png

被动兼主动探测:主动探测系统应用额外的规则来检查连接的长度。在本篇论文的示例中,只有具有200字节的随机有效负载的连接才会触发主动探测,而具有2字节或50字节的随机有效负载连接则不会触发。其次,在算法1中发现的五条规则中,未被阻断的流量也不会触发主动探测系统。未被墙的IP访问均不受影响。

image.png

具有一定误报率:研究团队分析了 2022 年 7 月到 9 月的 17 亿个连接,通过确定哪些连接不会被墙,发现平均有 0.6% 的 TCP 连接可能会被 GFW 的检测规则阻断。为了调查 0.6% 连接是否为全加密代理,研究团队统计了每个被阻断连接中出现的唯一 6 字节前缀的数量。如果这些连接确实是全加密代理,预期会在 256^6 种可能的 6 字节值中看到均匀分布。若发现某些值频繁出现,则可能是流行协议的头部,指示 GFW 的阻断存在误报。事实证明,结果并不符合均匀分布。

image.png

实验结果表明,GFW 的检测规则会导致一些误判情况,但总体误报率较低,大约为 0.6%。研究团队对网络中的常规 HTTPS 流量进行了监测,发现 GFW 通过前六个字节的 ASCII 可打印字符规则成功排除了绝大部分正常 HTTPS 流量,从而降低了对合法流量的误封锁。此外,在发送多次连接测试中,研究人员观察到 GFW 的概率性封锁策略,即流量在初次被阻断后,后续的部分连接也会遭到持续封锁。对于 GFW 的检测效果,研究还发现发送 170KB 的异常流量会有约 33KB 被接收。这说明虽然 GFW 封锁了绝大部分可疑流量,但仍有部分流量可能侥幸通过。这种策略可以在较低的资源消耗下提高封锁效果,并有效减少对正常用户的误判。

4、应对措施

本文提出了几种应对中国防火墙(GFW)封锁的措施,旨在帮助抗审查工具更有效地绕过 GFW 的检测。以下是这些应对措施的详细阐述:

自定义数据包前缀:研究建议在数据包的前六个字节中插入特定的可打印 ASCII 字符前缀,以使加密流量看起来更像正常的 HTTP 请求或明文流量。通过这种方式,流量可以绕过 GFW 对前六个字节的 ASCII 检查,降低被封锁的风险。
比特位密度调整:为降低比特位密度检测的封锁概率,研究提出在加密数据中嵌入特定的比特位,以改变数据包的比特位分布。通过调整数据包中的比特位设置比例,使其看起来不像是完全随机的加密流量,从而避免触发 GFW 的封锁规则。
使用非 TCP 传输协议:GFW主要针对完整的TCP连接后的第一个数据包进行检测,而UDP流量则不会触发封锁。目前,人们可以通过简单地切换到(或隧道)UDP或QUIC来规避审查。
对第一个数据包进行 Base64 编码:将发送的第一个TCP数据包内容进行 Base64 编码,以使数据包中的可打印ASCII字符超过50%,从而规避封锁。
包含超过 20 个连续的可打印 ASCII 字符:在数据包中插入超过 20 个连续的可打印 ASCII 字符,以增加其被认为是正常流量的可能性。根据 GFW 的检测规则,如果数据包中包含较多的可打印字符,可能将其视为正常流量,而非加密流量。

5、总结

在这项工作中,研究团队揭露并深入探讨了中国最新的加密流量审查系统,该系统实时动态地阻止完全加密的流量。这种强大的新审查形式部分或全部影响了许多主流的翻墙工具,包括Shadowsocks, Outline, VMess, Obfs4, Lantern, Phiphon和Conjure。研究团队进行了广泛的测量,以推断GFW流量分析算法的各种属性,并评估其针对真实流量的全面性和误报。该团队利用对新审查制度的了解,得出有效的规避策略。到2024年10月为止,包含vmess和trojan协议在内的加密流量仍然能够越过中国防火墙,这对于我国精准识别并隔离加密流量提供了新思路。

标签: GFW

添加新评论