GFW使用的那些奇怪技术
浏览 123 | 评论 0 | 字数 3119
卖女孩的小火柴
2020年08月08日
  • 毋庸置疑,GFW算是世界上每日通过流量最大,审查流量最大,唯一一个可以实时识别T级流量的防火墙了,技术实力堪称世界领先。为了过滤异常流量,GFW也使用了很多阴间招数,从网络安全的角度还是很有必要探究一下的。

    DNS污染

    DNS解析是访问网站的第一步,如能直接将用户导向错误的IP,那流量根本不需要过境,也减少了审查的成本。

    污染方式:

    1. 国内UDP递归污染
      目前国内公开宣称无劫持的公共DNS(私人建立的除外,比如红鱼)无一不受到递归污染,它们在请求上级DNS解析时,必定在出境时被GFW抢答错误IP(之前错误IP是固定或者非常有规律,现在都是一个IP段内随机生成了),从而缓存到错误结果,导致返回给你的也是错误结果。这是GFW最低程度的污染,不少所谓被墙网站只位于这一层,比如ao3。
    2. 过墙UDP污染
      有人说,国内的都被递归污染了,那我用国外的呢?显然也是不行的,境外DNS有两种情况,一种是全部劫持,如不少地区的8.8.8.8,按理是可以打开https://8.8.8.8的,但实际上打不开,但UDP查询是可用的,并且延迟都非常低,显然是境内劫持了;另一种是选择GFW污染的域名进行抢答。
    3. 过墙TCP阻断
      DNS也有TCP查询方式,TCP是无法抢答的,在连接建立后,未发送数据之前,GFW也不知道你要查询哪个域名,故直接采取阻断方式,也就是TCP RST。

    解决方式:

    1. 修改Host
    2. 使用DOT/DOH进行查询

    IP段空路由

    并不发生在过境段,通常在省骨干网就发生了。
    巨头们往往会直接包下好几个C段,专门为某些网站服务,在国内这些段就是不可达的,通俗来讲就是路由表没有到这些段路径,路由表现上就是空路由,在到达省骨干后路由全变*

    明文内容审查

    如果曾经想要用境外主机做谷歌反代的同学应该都遇到过,如果使用HTTP协议做反代,那恭喜,那你肯定遇到了connect reset by peer,在GFW早期,是没有内容审查的,修改Host就能直接谷歌。

    解决方式:

    使用可靠的加密协议加密流量,避免明文传输

    重放攻击

    GFW会随机针对高流量或者可疑流量进行重放攻击,以确定服务器是否可疑。
    在上文我曾经提到过反代谷歌,有人说那使用HTTPS就行了呀,GFW又不会知道TLS包内的内容是谷歌的。事实上这样的做法自己用用还行,如果使用的人多了或者触发了某些识别,GFW也是会模拟请求一次,如果GFW确认你的服务器和域名用于了反代谷歌,那就只能恭喜你了。

    一个真实例子就是Tor洋葱,GFW会伪装成真实的Tor客户端尝试连接节点和网桥,如果连接成功也就证明识别成功。
    同样的例子还有360发现的酸酸漏洞,不过并没有被GFW实际使用。

    协议识别

    目前GFW主要处理/识别的就是四类流量,DNS和HTTP/HTTPS流量,以及传统的PPTP/L2TP/Open外皮恩之类的流量,还有新型加密流量,比如酸酸/MTG,其他一些如ED2K/BT等则不在讨论范围内。
    传统DNS/HTTP为明文流量,处理起来自然非常方便,那HTTPS呢?

    服务器名称指示(英语:Server Name Indication,缩写:SNI)是 TLS 的一个扩展协议,在该协议下,在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称。这允许服务器在相同的 IP 地址和 TCP 端口号上呈现多个证书,并且因此允许在相同的 IP 地址上提供多个安全(HTTPS)网站(或其他任何基于 TLS 的服务),而不需要所有这些站点使用相同的证书。它与 HTTP/1.1 基于名称的虚拟主机的概念相同,但是用于 HTTPS。所需的主机名未加密,因此窃听者可以查看请求的网站。 (https://zh.wikipedia.org/wiki/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8D%E7%A7%B0%E6%8C%87%E7%A4%BA)

    简而言之,GFW确实不知道你的HTTPS,也就是TLS里面的内容,也无法对这个内容进行重放,但它可以通过SNI来确定你要连接的域名是什么,如果识别到,那自然又会阻断这个连接。
    如果针对SNI进行加密呢?比如ESNI?GFW选择了全部阻断。详情可见: https://www.iyouport.org/%E6%8A%A5%E5%91%8A%EF%BC%9A%E4%B8%AD%E5%9B%BD%E7%9A%84%E9%98%B2%E7%81%AB%E9%95%BF%E5%9F%8E%E5%B7%B2%E7%BB%8F%E5%B0%81%E9%94%81%E5%8A%A0%E5%AF%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8D%E7%A7%B0%E6%8C%87/

    而传统外皮恩则主要通过简单的特征识别,比如固定的握手包之类,已经是历史的尘埃了。

    不少新型xxx都学习参考了SOCKS协议的实现过程,早期基本上是类似于对SOCKS协议传输过程的加解密,并没有增加混淆等功能,如开创者酸酸; 后期则侧重于伪装成某些协议,甚至真实采用某种协议进行传输,如v2的ws/wss之类。

    显然,针对目前出入境流量中最大的HTTPS流量,即使是GFW也没有太好的方法,但GFW仍然有部分能力对其进行简单的识别(如TLS指纹)。同时,还在维护的后来者们也会积极的自查自清,反复琢磨,以逃避审查,不过显然用于逃避审查的工作量已经比前人们要少不少了。

    以下是针对后来者们的一些安全报告,希望您也可以有所启发:

    1. https://paper.seebug.org/1134/
    2. https://github.com/edwardz246003/shadowsocks
    3. https://github.com/LeadroyaL/ss-redirect-vuln-exp
    4. https://github.com/v2ray/v2ray-core/issues/2537
    5. https://github.com/v2ray/v2ray-core/issues/2542
    6. https://github.com/v2ray/v2ray-core/issues/2518
    7. https://github.com/v2ray/v2ray-core/issues/2523
    8. https://github.com/v2ray/v2ray-core/issues/2526
    9. https://github.com/trojan-gfw/trojan/issues/14
    10. https://github.com/v2ray/discussion/issues/704
    11. http://allenn.cn/articles/2016-10/2016-10-20-learn-gfw/

    同样,部分服务商也有能力进行审查,比如阿x云,不过不清楚审查方式,是机内进程审查,对等流量,还是其他方式。

    不过现在GFW已经算是比较仁慈了,毕竟真要算起来WSS跑超大流量显然非常可疑,V2的部分识别漏洞也没有及时跟进,甚至还主动解禁了一批国外网站。

    本文作者:卖女孩的小火柴
    本文链接:https://www.shinenet.cn/archives/145.html
    最后修改时间:2020-08-08 22:45:19
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    如果文章对您有帮助,不妨打赏杯可乐?微信-赞赏码
    评论
    如果可能,请填写真实邮箱,有回复会送至邮箱。请不要水评论,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    暂无评论