原文标题:Transport Layer Obscurity: Circumventing SNI Censorship on the TLS-Layer

原文作者:Niklas Niere, Felix Lange, Robert Merget, Juraj Somorovsky

原文链接:https://doi.org/10.1109/SP61157.2025.00151

发表会议:IEEE S&P

笔记作者:宋坤书@安全学术圈

主编:黄诚@安全学术圈

编辑:张贝宁@安全学术圈

1、研究背景

各国政府广泛使用网络审查来限制公民的网络访问,其中最著名的是中国的防火墙(GFW)。审查机制通常依赖深度包检测(DPI)技术来分析HTTP、DNS和TLS等协议中的敏感信息,并通过TCP RST、页面拦截和丢包等手段阻断连接。虽然HTTP 可以通过TLS加密其传输内容,但TLS握手阶段的SNI扩展是以明文传输,可能会泄露目标主机名。

为了绕过这种基于SNI的检测,研究人员提出了多种规避技术,如HTTP头部混淆、TLS报文分片等。目前基于TCP和HTTP的审查已被广泛分析,但基于TLS层的规避仍有较大的研究空间。目前基于TLS层的规避技术多为单一规避,例如TLS记录分片、记录注入和主机名修改等,但对其缺乏系统性研究,尚未充分发掘其绕审查潜力。

为此,本文聚焦于TLS协议本身,系统性探索了基于TLS握手阶段的规避技术。研究回答了“哪些审查规避技术可以根据TLS协议的复杂性进行设计”、“通过规避技术操纵的TLS消息在多大程度上被真实服务器接受”以及“哪些服务器接受的技术在对抗真实审查机构中最为有效”这三个问题,填补了TLS层绕过审查时系统性不足的空白,推动抗审查技术向更高层协议延伸。

2、研究方法

为了评估是否存在更有效的TLS级别规避技术,本文开发了一个五阶段方法,以寻找能够规避审查并被真实TLS服务器接受的绕过技术。其流程图和实施过程如下:

2.1 设计阶段

手动创建了一个潜在的TLS级审查规避策略列表。为了研究如何在TLS层规避基于SNI的网络审查,本文系统地对TLS 1.2的ClientHello消息进行了多种字段级和结构化的操作。

1)变更TLS版本:更换ClientHello中的协议版本,如TLS 1.0、1.1和1.3;

2)TLS记录分片:将ClientHello拆分为多个TLS记录,在四个位置进行切割;

3)记录注入:向握手中注入非握手消息;

4)记录与消息类型变异:修改记录头和消息头中的类型字段,使用非法或未定义类型值;

5)更改版本字段:单独更改记录头或消息头中的TLS版本字段;

6)添加密码套件:重复插入多个TLS_NULL_WITH_NULL_NULL密码套件,扩大ClientHello长度,触发审查器缓冲区上限;

7)修改长度字段:将记录长度、消息长度、所有扩展的长度、SNI扩展的长度、SNI列表结构的长度以及主机名的长度设置为更高、更低或原始值;

8)修改TLS扩展结构:删除SNI扩展、更改SNI扩展的位置、增加无关扩展如等;

9)SNI类型字段变异:将Extension Type和Name Type字段设为非法值,诱导审查器忽略该扩展;

10)修改SNI列表项:增加或删除多个列表项并在其中混入未审查的域名,打乱审查器识别逻辑;

11)修改SNI主机名:通过将主机名修改为交替大小写、ASCII字符位翻转、特殊字符插入、填充主机名、替换为未审查域名等方式,改变主机名内容或其结构,阻断精准匹配。

2.2 实现阶段

开发了名为Censor Scanner的工具,自动组合并测试各种策略对不同服务器和审查机制的有效性。该工具基于TLS-Attacker框架构建,可以实现了所有已提出的ClientHello操作方法,并与目标服务器建立TLS连接。Censor Scanner通过穷举组合各种操作构造复杂的绕过策略,其组合强度由参数t控制:当t=1时,工具逐一测试每种操作;当t=2时,则测试任意两种操作的组合。同时该工具会在在操作组合过程中会保持其顺序,每一组应用在ClientHello上的操作被称为一个测试向量。该方法虽然会导致组合数量随t指数增长,但其过程是确定性的,所有组合的测试结果都可以被复现。

2.3 服务器评估阶段

测试这些策略在真实服务器(Apache、Nginx和多个CDN网站)上的接受度。为了确保目标服务器能够正确解析并响应这些经过操作的消息,本文使用Censor Scanner工具将每组操作组合应用于TLS握手过程中,并测试其是否能成功获取服务器响应的网页。测试对象包括本地部署的Apache和Nginx服务器(包括六个版本的Ubuntu)以及五大主流CDN所托管的真实网站。每个CDN选取两个不同特性的站点,一个与其他网站共享IP,另一个为独享IP,以评估SNI解析严格程度对规避策略的影响。测试强度方面,本地服务器设置为t=3,CDN网站设置为t=2。

2.4 审查评估阶段

评估这些策略在中国和伊朗审查系统中的有效性。为评估各项操作组合在对抗真实审查系统时的有效性,本文选取了在服务器评估阶段有效的所有组合,对中国和伊朗的审查系统进行测试。研究人员租用中国和伊朗的网络节点向设在德国的受控服务器发送操作后的ClientHello消息,观测其是否能成功穿越审查系统。若消息未被拦截,且服务器返回了预期响应,则认为该操作组合成功绕过审查。若连接失败,系统会自动分析数据包(如TCP RST、超时、TLS报警等)以判断失败原因。

2.5 Tranco评估阶段

在Tranco排名前10000的热门域名测试服务器评估阶段和审查评估阶段中成功的审查规避策略组合,以评估其在真实互联网环境中的适用性。在排除无法解析、不支持TLS或在扫描中请求排除的域名后,最终评估了6739台服务器。

3、服务器评估结果

研究人员在2024年2月和3月对七种服务器进行了总计2926259个测试向量的接收性测试,其中10578个测试向量被至少一个服务器接受。对于测试强度t=1和t=2分别有53.35%和48.56%的向量至少被一个服务器接受。其测试结果如下表:

在本地测试中,研究者评估了六个Ubuntu版本中默认的Apache和Nginx实现,两者在所有版本中均表现一致,在t=1时仅接受了24个测试向量,显示出最严格的解析行为,这归因于它们均使用了OpenSSL且应用了安全补丁。而在CDN测试中,不同平台表现差异显著,从整体来看,CDN的SNI解析宽松度明显高于本地服务器,其中 Amazon表现最宽松,在t=1时接受了85个测试向量,占所有成功向量的86%以上。

此外,一些测试向量触发了服务器返回占位证书(Placeholder Certificates),即未能识别出准确的SNI主机名时返回占位符证书。这类现象多由删除或混淆SNI主机名引起,其主要表现为,在多域名共享IP的环境下会返回占位符证书,但若是独享IP,服务器仍能返回正确证书,但这两种情况都可以完成TLS握手并返回正确网页。因此,尽管占位证书影响真实性验证,但不影响网页访问,相关测试向量依然被认为是有效的规避手段。此阶段测试为后续审查器测试筛选出了一批实际可用的规避策略,也表明服务器部署特性对规避策略的接受度有重要影响。不同条件下触发占位符证书情况如下表:

4、审查系统设施分析

研究人员进一步评估了服务器测试通过的测试向量在中国和伊朗是否能够成功绕过网络审查,他们在2024年3月、4月和5月执行了审查扫描实验,实验过程中发现中国部署了多个中间盒(Middleboxes),伊朗目前只发现了一个中间盒。

4.1 对中国设查设施的分析

研究人员通过将wikipedia.org置于SNI扩展中以触发审查,发现GFW会对特定三元组(源IP、目标IP、目标端口)施加最长达6分钟的残留审查。为此,他们在多个端口上评估了测试向量,并且在七分钟内未重复使用被审查的目标端口。

研究发现,不同的测试向量触发的封锁行为不同,GFW可能采用单个RST、单个RST+ACK和三个RST+ACK的方式来进行审查,同时执行多个拦截机制,且行为具有非确定性。研究者据此推测存在三个独立工作的中间盒,并分别命名为MB-1、MB-2和MB-New。他们通过改变ClientHello的字段值(如TLS版本、Extension Length、Name Type等)实现对不同中间盒的定向触发和单独隔离,进一步研究其行为差异。三个中间盒如何在Client Hello消息后数据包以断开连接的过程如下图:

  • MB-1:MB-1是GFW最主要的中间盒,其典型行为是注入三个RST/ACK数据包,并残留审查约90秒。它可重组TCP片段至10240字节,但其重组偶尔会失败。它依赖于版本字段、SNI主机名长度和SNI名称类型进行判断,但忽略拓展长度和列表长度字段。

  • MB-2:注入一个RST包(ACK标志未设置),不执行残留审查。它在TLS报文分段发生在前10字节或512字节之后的时起作用,它会重组TCP分段。研究人员认为MB-2可能通过重组头部字节进行分类。MB-2同样依赖于版本字段和SNI主机名长度,它会忽略单个扩展的长度字段和SNI拓展名的列表长度字段,可以阻断无SNI主机名的非法SNI扩展。

  • MB-New:是此前未被文献记录的新中间盒。其注入单个RST/ACK包,并通过空路由的方式进行长达360秒的残留审查。不同于前两个中间盒,MB-New不重组TCP片段,仅通过拓展长度字段推测主机名位置,只依赖记录层前两个字节(0x1603)识别TLS连接,对字段格式容忍度高。这使其对绕过更具鲁棒性,但也可能误判非TLS流量。

MB-New主要拦截特定敏感域名,绕过MB-1和MB-2即可绕过大多数场景中的GFW封锁。

4.2 对伊朗审查设施的分析

伊朗的中间盒在收到包含敏感SNI的ClientHello消息后,会注入一个RST/ACK数据包以终止连接,但不会进行TCP分片重组,也没有出现残留审查行为(这与以往研究不同)。该中间盒要求ClientHello中的两个 TLS 版本字段都合法,并依赖解析拓展长度和SNI主机名长度字段来定位SNI主机名位置,这种解析方式与GFW中的MB-2中间盒较为相似。在审查中至少有一个服务器成功的测试向量数量如下表:

5、审查规避策略分析

本文分析了多种绕过中国与伊朗中间盒审查的TLS层规避策略,从10193个同时被至少一个服务器和一个审查系统接受的测试向量中提取有效策略,归类为六类:版本字段修改(如将TLS版本设为1.3或无效值)、TLS记录分片(将ClientHello拆成多个记录)、记录注入(在握手前注入警告或CCS记录)、TCP层分片(通过增加ClientHello长度触发底层TCP分段)、主机名注入(在域名前插入非ASCII字符或使用域名前置)以及SNI隐藏(删除或伪装SNI扩展)。

其中,TLS记录分片和版本字段修改表现出高成功率,能绕过包括GFW在内的多个中间盒,并被大多数服务器接受。GFW的中间盒中只有MB-New不能被版本字段修改绕过,而部分策略虽然可绕过所有中间盒,但可能仅被少量服务器接受,因此推荐优先使用如TLS记录分片这类通用性强、合规性高的策略。研究还在Tranco前10000网站的上验证了这些策略的普适性,并实际测试了TLS记录分片和版本提升方法在访问被审查的维基百科页面时的有效性,确认其绕过能力以及其与服务器的兼容性。不同审查规避策略的测试结果如下表:

6、本文贡献

  • 提出了一种新颖的五阶段方法,用于系统地分析审查规避技术。同时对TLS握手进行了首次系统性分析,以探究规避审查的可能性。文中提出了TLS级别的审查规避新策略,并将其转化为审查规避技术;

  • 开发了Censor Scanner开源工具,可以实现并整合已发现的TLS级别策略,并全自动评估这些策略被特定审查机构和服务器接受的程度;

  • 使用Censor Scanner工具对中国和伊朗的本地服务器、CDN和审查机构执行自动扫描,展示了24种独特的成功规避策略;

  • 对伊朗和中国的审查基础设施提供了新颖的见解,并提供了存在三种不同的中间件同时执行中国TLS审查的证据。

安全学术圈招募队友-ing

有兴趣加入学术圈的请联系 secdr#qq.com

声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。