跳转至

墙的封锁手段

DNS 污染

GFW 早期的封锁手段非常简单,即通过劫持域名解析服务来污染 DNS 查询结果。这个原理诞生于 2002 年,在 2012 年以前达到高峰。

具体来说,GFW 会监听所有指向境外的基于 UDP 协议的 DNS 请求。一旦发现某个请求是针对被屏蔽的域名(例如 google.com),GFW 就会在用户的正常 DNS 服务器返回正确结果之前,GFW 会伪造一个 DNS 响应包,这个包中包含一个错误的 IP 地址(通常是无效的、或者是一个「黑洞」IP)。

用户的本地 DNS 服务器或 ISP 的 DNS 服务器收到这个伪造的响应后,会将错误的 DNS 解析结果缓存起来,并在之后的一段时间内,给所有请求该域名的用户都返回这个错误的 IP 地址。这样,用户在尝试连接这个错误的 IP 地址时,请求就会失败,从而达到屏蔽的目的。

UDP

UDP(User Datagram Protocol,用户数据报协议)是一种简单的、无连接的传输层协议,和 TCP 协议一样,用于在网络中传输数据。

与 TCP 协议不同,UDP 协议建立连接之前不需要三次握手,不提供可靠性、顺序性和流量控制,但它具有低延迟和高效的特点,适合对实时性要求较高的应用。

简而言之,DNS 域名污染就好比想在电话号码簿上查询朋友的电话号码,但是不曾想,电话号码簿被人掉包了,拿到的是假的电话号码簿,原本正确的手机号码被替换成了错误的号码,导致你无法打通电话。例如把 google.com 的域名解析到某个不存在的 IP 地址。

此项技术不仅是 2012 年前后国内无法再访问 Google 的直接原因,其在运转过程中更是殃及了全球 DNS 域名解析服务的正常运作。DNS 污染殃及全球用户的基本原理很简单,就是海外用户的 DNS 请求被他们的 ISP 随机分发到了中国的 DNS 服务器,获取到了错误的、虚假的 DNS 解析记录。

2010 年 3 月,当美国和智利的用户试图访问热门社交网站如 facebook.com 和 youtube.com 还有 twitter.com 等域名,他们的域名查询请求转交给中国控制的 DNS 根镜像服务器处理,由于这些网站在中国被封锁,结果用户收到了错误的 DNS 解析信息。

然而,由于这一封锁手段非常低级,可以很轻松地反制。首先便是使用境外 DNS 服务器。这是最直接、也是最常见的反制方法。用户将自己电脑或路由器的 DNS 设置,从默认的 ISP 提供的 DNS 服务器修改为境外的、未被 GFW 污染的公共 DNS 服务器,例如 Google DNS (8.8.8.8 和 8.8.4.4),通过这种方式,用户的 DNS 查询请求会直接发送到境外的服务器,从而绕开了 GFW 在境内 DNS 查询链路上的污染。

修改本地 Hosts 文件也是早期常见的反制手段。Hosts 文件是一个用于将域名映射到 IP 地址的纯文本文件,当用户在浏览器中访问一个网址时,浏览器会首先查询本地的 Hosts 文件,如果在这个文件中找到了对应的 IP 地址,它就会直接使用这个 IP 地址进行连接,而不会再向外部的 DNS 服务器发送查询请求。因此,用户可以将被屏蔽域名和其真实的 IP 地址手动添加到本地的 Hosts 文件中,例如,在 Hosts 文件中添加一行:xxx.xxx.xxx.xxx google.com

IP 封禁

由于 DNS 污染的封锁手段可以被轻松绕过,GFW 开始推行另一个简单、直接的审查手段——IP 封禁。GFW 直接将某个 IP 地址或整个 IP 地址段列入黑名单,所有前往该 IP 地址的数据包都会被丢弃。其被广泛用于封锁特定的网站服务器,例如 Google,成效显著,既有的任何绕过 DNS 污染的方法都对 IP 封禁不起效。

但是,IP 封禁也存在一个致命的缺陷:它非常容易误伤无辜。一个 IP 地址可能同时承载着多个网站与服务,属于一个大型的 ICP(Internet Content Provider,互联网服务提供商)的 IP 地址段更是有可能托管着成千上万个无辜的网站。对 IP 地址的封锁,很可能会导致其他不相关的网站也无法访问。这使得长期封禁 IP 的方法在今天很少被单独使用,除了 Google 等服务的常用 IP 长期处于封禁状态之外,GFW 会根据实际情况,临时封禁可疑 IP(通常是疑似运行代理服务的非家宽 IP),进而实现精细化封锁的目的。此外,GFW 还会对特定的端口实施封锁,以干扰特定服务的运作,例如邮件服务等。

BGP 路由劫持

IP 封禁中最为常见的手段就是 BGP 路由劫持。要理解 BGP 路由劫持的原理,首先要复习一下之前提到过的 BGP(Border Gateway Protocol,边界网关协议)。BGP 负责共享各个 AS(Autonomous system,自治系统)之间的信息,好让数据包更好地找到前往不同 IP 地址的最佳路径。当数据包从你的电脑出发时,它会沿着一系列网络节点,根据 BGP 指示的最短路径,一步步到达目的地。

BGP 劫持就是伪造位于主干道的路由节点的路由表,宣称一些不属于其所有的 IP 前缀归其所有;或是声称拥有某个 IP 前缀范围比实际声明拥有某个 IP 前缀的 AS 要更小;或是声称它可以通过一条比已知的更短的路径将数据传递到被劫持的 AS。GFW 会维护一个针对特定 IP 地址封锁的列表,将其根本没有或者不可能连通的 IP 地址导入路由表,诱骗邻近节点相信该节点拥有这一 IP 地址的访问通道,而进入该通道的数据包就会被部署在路径上的节点直接丢弃,我们也将之称为「路由黑洞」。

在 BGP 协议中,各个节点之间是无条件信任的,所以这个「谎言」一传十、十传百,只要一个主干道路由节点被诱骗,其连接的所有节点都会被骗。利用 BGP 病毒式传播的「谎言」曾经导致全球互联网访问故障。

2010 年 4 月 8 日,中国大陆一个小型 ISP 的错误路由数据,经过中国电信的二次传播,扩散到了整个国际互联网,波及到了 AT&T、Level3、德国电信、Qwest 和西班牙电信等多个国家的大型 ISP。

TCP RST 攻击

RST(Reset,重置)是 TCP 协议中的一种消息,设计用于应对例如服务器意外重启等情况,只要服务端接收到 RST 包,连接立马就会被中断。GFW 通过在骨干网部署设备进行内网监听,当发现用户向黑名单 IP 地址或域名(例如 Google)发送第一次握手的时候,GFW 就立马抢在 Google 回应之前假冒 Google 发送 RST 包,同时,GFW 也会向 Google 发送伪造的 RST 包。因为 GFW 在部署在骨干网,发出的报文到达双方的速度都非常快,可以实现数据包的抢答,双方会同时认为是对方终止了连接。

大部分的 TCP RST 是条件触发的,比如 HTTP 连接中的 URL 中包含某些关键字,例如早期针对 Facebook 的封禁。还有一些网站会被无条件 RST,也就是只要命中特定的 IP 端口,就会触发RST,比较著名的封禁例子是 Wikipedia。

深度包检测

如果说早期 GFW 的 DNS 污染与 IP 封禁只是粗暴地在网络道路上设置障碍,那么深度包检测(Deep Packet Inspection, DPI)就像是 GFW 派遣了一队专业的「网络交通警察」,他们不再只看车牌号(IP),而是能够拦下每一辆车(数据包),检查里面装载的货物(数据内容)。

在互联网上传输的任何数据都是以「数据包」的形式传输的。每个数据包都有一个头部(header),包含着数据包发出的源地址和要去到的目的地址(比如 IP 地址或域名),以及一个载荷(payload),也就是实际的数据内容。当一个数据包经过 GFW 的设备时,GFW 的 DPI 系统会像一个高速扫描仪一样,在极短的时间内通过拦截并复制流经的数据包,读取该数据包内的头部信息与载荷部分,检查其中是否有与 GFW 的黑名单中相匹配的词语、短语或 URL。之前在 TCP RST 攻击中提到的针对「URL 中包含某些关键字」的条件触发就是用到了 DPI 技术。

深度包检测的「关键词」的范围非常广泛,它不仅仅指包括了特定的词语和短语,例如「六四」等,也包含 URL 中的路径,例如「/zh/wiki/六四事件」,甚至包含图片或视频的元数据。GFW 维护着一个动态更新的,用于关键词过滤的数据库,它会根据网络上的新动向和敏感事件持续扩充。

然而,DPI 也有着明显的短板,DPI 系统只能有效处理非加密的流量,随着 HTTPS 的普及,大多数网站的流量都被加密了,面对加密流量的 DPI 无法探知载荷内的具体内容,这使得 HTTPS 普及初期,相当一部分网站能通过使用 HTTPS 协议访问来规避封锁。但是随着 DPI 嗅探水平的提升,GFW 可以通过低版本的 TLS 协议、SNI 协议等,尝试建立加密连接时,所用到的未加密的传输协议,得知用户对于黑名单网站的访问行为,因此如今 DPI 具有一定程度的审查加密流量的能力。

被认为在 GFW 部署了的深度包检测包括:

  • DNS 协议:GFW 检测所有经过骨干网国际出口路由的位于 TCP 与 UDP 的 53 端口(DNS 服务的默认端口)上的域名查询请求。

  • HTTP 协议:GFW 检测包含用户访问的网站的域名的 HTTP 头中的 Host(主机)字段,以及之后的 request(请求)和 response(相应)全文。

  • Tor 协议:GFW 无法得知加密前的原始内容,但可以分辨出疑似流量。一般需要再以主动探测的形式确认(详见下文主动探测)。

Tor

Tor(The Onion Router,洋葱路由)是由美国非盈利组织 The Tor Project, Inc 开发的匿名通信软件,开发与维护。用户可透过 Tor 接达由全球志愿者免费提供,包含 7500 多个中继的覆盖网络,从而达至隐藏用户真实地址、避免网络监控及流量分析的目的。

Tor 通过一种叫做路径选择算法的方式自动在网络中选择 3 个 Tor 节点,这三个节点分别叫做入口节点(Guard relay)、中间节点(Middle relay)和出口节点(Exit relay)。数据首先在用户端连续加密三层,而三个中继各自解密一层,这样它们就能知道接下来把数据传送给谁。在这种情况下,数据就像剥洋葱一样被一层一层地解密,所以被称为「洋葱路由」。最后的出口节点会解密最内层的加密数据并得到真实的数据内容,并把它传送给目标地址。出口节点虽然知道真正的数据内容,但是它只知道上一个中继节点的地址,不知道数据最初的发送者是谁,从而保证了数据发送者的安全。相对应地,入口节点仅知晓用户的 IP 地址而无法得知其访问的网站,而中间节点既无法得知 IP 地址也无法得知用户所访问的内容。

  • SMTP 协议:GFW 不仅可以检测邮件的 MAIL FROM(发件人)和 RCPT TO(收件人),还可以检测邮件全文内容中的关键字。

SMTP

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一种用于电子邮件传输的互联网标准通信协议。邮件服务器使用 SMTP 来发送和接收邮件。电子邮件客户端通常仅使用 SMTP 将邮件发送至邮件服务器进行中继,并通常在端口 587 或 465 上提交外发邮件。用于接收邮件的标准协议是 IMAP(取代了旧的 POP),但专有服务器也常常实现专有协议,例如 Exchange ActiveSync。

  • TLS 协议(传输层安全管理协议,详见具有反审查性的网络技术 - TLS):早期 TLS 版本中,服务器握手响应,包括证书,是未被加密的,DPI 可以嗅探它而得知访问站点的 IP 与域名,自 TLS 版本 1.3 开始,Server Hello 之后的握手信息,包括站点证书,也会被加密后传输,一般可以认为能防止对证书信息的检测。

  • SNI 协议(Server Name Indication,服务器名称指示):SNI 协议是 TLS 的一个扩展协议,该协议下,客户端在握手过程开始时告诉服务器其连接的域名,以便利用单个 IP 地址运作多个 HTTPS 网站的服务器选择并提供对应网站的证书。而该扩展也未被加密,DPI 能通过 SNI 握手实现对于用户访问域名的嗅探。

主动探测

随着 HTTPS 的普及和新型加密代理协议(如 Shadowsocks、V2Ray 等)的出现,传统的深度包检测(DPI)和关键词过滤变得越来越困难。这些加密流量让 GFW 失去了「透视」能力。为了应对这一挑战,自 2011 年 10 月以来,GFW 开始通过主动探测来识别翻墙服务器。

GFW 会尝试嗅探任何指向境外的加密连接,每当用户尝试加密连接,GFW 便会尝试通过大量不同的源 IP 地址对目标服务器发动主动探测,在建立加密连接前先访问目标服务器,其目的在于在用户建立加密连接前,嗅探出他们所使用的翻墙流量。当 GFW 发现一个流量连接具有某些可疑的特征时(例如,数据包的长度、时间戳等模式与已知的翻墙协议相符),主动探测系统可以发送多种不同类型的探测,其中一些探测是基于对之前合法客户端建立的连接的重放;而另一些探测则似乎与之前的合法连接并不相关。如果服务器成功响应了某个协议的握手请求,那么 GFW 就会确认这个服务器正在提供翻墙服务。一旦 GFW 主动识别出代理服务器,其可能会丢弃所有发送自服务器 IP 地址,或服务器端口的数据包。但 GFW 也可能不立即采取封锁措施。

GFW 对于翻墙 VPN 协议的阻断就是一个最好的例子,早期的 VPN 协议,如 PPTP 和 L2TP/IPsec,因为其握手包的特征非常明显,且流量模式和端口号都相对固定,就像是穿着制服在街上行走,很容易被 GFW 识别和阻断。目前 GFW 对传统 VPN 协议封锁成功率近乎为 100%。

2011 年 10 月起,GFW 的深度包检测设备已能识别 Tor 指纹。当中国的 Tor 客户端试图与境外 Tor 网桥建立连接,GFW 会每隔 15 分钟发送探针,尝试与 Tor 进行 SSL 协商和重协商,每次探测持续 3 分钟。这种探测还会在春节等假期期间停止。而 2015 年的研究指出,GFW 已经可以实时主动探测 Tor 网桥。被探测的网桥类型包括 obfs2 和 obfs3 等。

从 2019 年 5 月起,GFW 已经启用主动探测的手段来识别 Shadowsocks 服务器。GFW 首先监测网络连接找出疑似 Shadowsocks 的连接,然后再把自己伪装成一个客户端,尝试对疑似 Shadowsocks 的服务器进行连接,从而验证自己的猜测。很少量的(大于 13 个)合法连接即足以触发对于 Shadowsocks 服务器的主动探测。只要合法客户端还在使用服务器,主动探测就会持续下去。GFW 通常在合法连接到达服务器后的数秒内发送第一个主动探测。

主动探测是 GFW 与翻墙工具之间「猫鼠游戏」的代表环节。为了应对这种主动攻击,新的翻墙协议和工具不断发展出更高级的流量混淆技术。例如,以 Trojan 为代表的翻墙协议会将自己的流量伪装成正常的网页浏览流量、视频流,甚至 TLS 加密流量,以躲避 GFW 的探测。不过也有研究指出如今的 GFW 也具有精准探测 Trojan 流量的能力。

大炮(DDoS 攻击)

大炮(Great Cannon)是一种用来对网站发起分布式拒绝服务攻击(DDoS)的一种网络攻击工具,其借由劫持大量网络流量,向目标网站发送大量流量,导致目标网站网络服务不稳。除了发起 DDoS 攻击以外,大炮还能监控网络流量,以及采用类似美国国安局的量子注入系统,对目标注入 JavaScript 代码散布恶意程序。

2015 年 3 月 14 日,大炮对 GreatFire 运营的「依附的自由」在 CDN 上的镜像站点发动了攻击,攻击出现在 3 月 17 日达到顶峰。3 月 26 日,被 GreatFire 用于托管反审查项目的 GitHub 也受到攻击,这次攻击导致 GitHub 在全球范围内的访问速度下降。多次技术报告显示,大炮对 GitHub 的攻击的方式是采用了 HTTP 劫持。大炮通过向百度注入恶意的 JavaScript 代码,其功能是每隔 2 秒加载一次 GreatFire 或其运营的纽约时报中文网镜像站点的账号主页,以使从中国大陆以外访问百度网站及广告的流量转换为 DDoS 攻击流量。Google 的研究人员观测到 HTTP 劫持在 4 月 7 日终止。

2015 年 4 月 26 日,大炮对开放源代码网站 wpkg.org 与旅游网站 ptraveler.com 发动了攻击,凡是用中国 IP 浏览嵌入了 Facebook Connect 按钮脚本的网站,皆会被重定向至这两个网站。

2017 年 8 月 16 日,大炮被发现攻击曾经邀请中国海外流亡富豪郭文贵做访谈的异议新闻站点明镜网,大炮通过对百度站长统计的脚本代码注入攻击明镜网的代码。

2019 年 11 月 25 日,新品葱遭到来自中国大陆的DDoS攻击,导致约十小时左右无法访问,随后恢复正常。

2019 年 12 月初,美国网络服务提供商 AT&T 公司下属的网络安全实验室发表研究报告指出,自 11 月 25 日起,大炮被重新部署以攻击被认为与香港反对逃犯条例修订草案运动有关的网络论坛 LIHKG 论坛及多个其它意义不明的网络目标。

反向墙

如果将「墙」的定义理解为 GFW「针对境外 IP 的封堵规则」,那么,GFW「针对境内 IP 的封堵规则」便可被称作反向墙。

反向墙主要用于打击机场服务。作为机场入口的国内中转服务器 IP 具有很高的概率触发反向墙,而其他用途的国内 IP 则很少触发。反向墙触发后,对应 IP 所有的出境流量将会被丢弃,而入境流量通常正常。

已知当前 IPv6 地址暂时不会触发反向墙,可能是暂时没有纳入审查计划或处于仅记录状态。

墙中墙

「墙中墙」的概念描述的是一种分层级的网络审查体系。它指的是,在国家层面已经存在一道防火长城的基础上,某些地区在其内部又构建了一道更加严格的审查系统。目前已被证实的系统化的墙中墙存在于河南。

2023 年 8 月,河南省的用户开始报告,一些在中国其他地区可以访问的网站,在当地却无法访问。有研究指出,河南的防火墙会针对某些 SNI 和 HTTP Host 值封锁 TLS 和 HTTP 连接,但其运作方式与 GFW 不同。最显著的区别是,河南的防火墙通过向客户端注入独特的 TCP RST 数据包,这种数据包与 GFW 注入的 TCP RST 数据包有明显不同。

2024 年 4 月,新疆也出现了类似墙中墙的报告,但基本被证明是由人工操作,并非由自动化的审查系统运作。值得注意的是,新疆的防火墙对于审查同样处在反向墙的 IP 力度非常大,这使得新疆地区的用户难以使用中转机场。

白名单制度

到目前为止,GFW 所实施的所有技术手段,都是基于一个共同的原则:黑名单。这意味着互联网是默认开放的,只有列在黑名单上的网站、IP 地址或关键词才会被封锁。然而,白名单制度则是一个完全相反的、更加极端的概念。它的核心原则是:除非某个网站或服务被明确地列入「白名单」,否则它就是默认被禁止的。

针对 GFW 推行或试点白名单制度的消息近些年来屡见不鲜,其中以福建泉州为首:2022 年,首次有人注意到在福建泉州存在疑似 GFW 白名单机制。根据此后的一些研究,该审查机制加入了针对域名后缀的封锁,本质上还是黑名单制度,只是规模更加庞大,而非真正意义上的网络白名单。

人工智能与机器学习

进入 AI 时代后,GFW 有机会拥有一个能够自主学习和识别的大脑,能够通过分析海量的网络流量数据,从中找出模式和异常行为。虽然目前未有证据表明 GFW 已经在使用 AI 技术对抗翻墙协议,但是这种可能性依旧存在。

例如,GFW 可以利用 AI 学习「正常」的跨境网络流量是什么样子的,通过分析正常的网页浏览、视频播放、文件下载等行为,从而建立一个关于「正常」流量的模型,任何与这个模型不符的流量,都可能被标记为可疑的翻墙流量。也可反其道而行之,学习以往被 GFW 审查过的「异常」的翻墙流量是什么样子的,进而不断提高识别各类层出不穷的翻墙协议的能力。