Skip to content

Instantly share code, notes, and snippets.

@clowwindy
Last active April 26, 2024 03:04
Show Gist options
  • Save clowwindy/5947691 to your computer and use it in GitHub Desktop.
Save clowwindy/5947691 to your computer and use it in GitHub Desktop.
为什么不应该用 SSL 翻墙

SSL 设计目标:

  1. 防内容篡改
  2. 防冒充服务器身份
  3. 加密通信内容

而翻墙的目标:

  1. 不被检测出客户端在访问什么网站
  2. 不被检测出服务器在提供翻墙服务

SSL 和这个目标还是有一些出入。其中最大的问题是,2. 防冒充服务器身份 这个功能多余了。他会导致墙嗅探出证书信息,继而墙会知道服务器身份。如果墙知道一个服务器身份是用来翻墙的,它要做的仅仅是封掉使用这个证书的所有 IP。

墙看见的 SSL 握手响应头部如下:

QMQڑ????β????!AFf?a?1??[?
? G
0???R???̙G!GfX-??5?k ??Q?
u
q
0??1 *?H?? n?0?|0?d?"?7??^??eĵ??F0
0 UUS10U
VeriSign, Inc.10U
VeriSign Trust Network1;09U
140510235959Z0?10 2Terms of use at https://www.verisign.com/rpa (c)061402U+VeriSign Class 3 Extended Validation SSL CA0
+?7<US10
+?7Delaware10Private Organization10U43374461
0 UUS10
U9410710U
San Francisco1!0U 795 Folsom St, Suite 60010U
Twitter, Inc.10U
Twitter Security10U
?0? *?H?? twitter.com0?"0
???w?…?tSmZ ?T#7Tn,?l\C????
??^d?L?*q? ???\n*???*?X?[?????-?b?V?Ic[[ݙn??D??i;?j~,亵Ȯu?z۴Jz9qr??כ????G?#???u2j?7_;?3[Y?&?P???P?@?U?N?,?Tx?e?N???SVߝ???*!Po???Q???!??sIpҒ#`H??U'?"^?*?7
_?>???Z|`W?.p_??????p????v2?p????0?0'U 0?www.twitter.com?
twitter.com0 U00U?x?Fy?n?]@H?G???(?1?0
U?0BU;0907?5?3?1http://EVSecure-crl.verisign.com/EVSecure2006.crl0DU =0;09
`?H??E0*+https://www.verisign.com/rpa0U%+0U#0???P???%Z{U?O?c??XkC0+p0n0+0?!http://EVSecure-ocsp.verisign.com0+0?1http://EVSecure-aia.verisign.com/EVSecure2006.cer0+
b0`?^?\0Z0X0V image/gif0!00+Kk?(?
? ??*?H??K?!0&$http://logo.verisign.com/vslogo1.gif0
??Z
GD?𥛄8ݫ?NJnJXn?????]?? -";J?#O????
<r?Q&?.??;? F
?????K??Fq?mD?-?Sl??=3???]?.??=v?I???
???ѱ??)i?Y!K?L???GC??rI0IR??f!~
b4˼??]?b?????_5a=?-B¹ax???rif߰?j?[??j?????3???d?Ўo
kS
?m'?9????X?H???`ln?n%???ߍ5G?H?!w?+x:
?u?86K?[,!?z?ipŵh?4uf????/N? Dt?'\??d+A???]?? ??gqP???V{?0c?1??mKǫ??o;
@yufish
Copy link

yufish commented Mar 22, 2019

关于对抗 GFW 的特征检测
不论是 Shadowsocks 还是 VPN 或 SSH 隧道,共性都很明显——长时间的 TCP 长连接。
这样一种特征,非常明显是被用来翻墙。

或许可以考虑换一种思路:
用普通的,明文的 HTTP 请求来承载上层的翻墙数据。

以 SOCKS 代理为例:
把 SOCKS 代理切割成两个部分,一部分部署在客户端,一部分部署在 VPS。
两者之间的通讯,伪装成普通的,明文的 HTTP 流量。
(表面上看,像是明文的,但是承载的数据,依然用加密方式,比如打包成图片的内容)

这时候,SOCKS代理的客户端部分,对本地开启SOCKS 监听端口,然后把数据包装成 HTTP 发送到 VPS 的服务端。VPS 的部分再解包,重新转化为原始的 SOCKS 流量发送到最终目的 IP

对本地的网络软件而言,看到的依然是普通的 SOCKS 代理,因此浏览器或 IM 可以无缝兼容。

这样的流量特征,就非常类似于平时访问网站的流量特征。可以避免被 GFW 察觉。
如果伪装得好,即使是 Ghost Assassin 在 7单元 提到的“人工审核”,也可以骗过。

转载自:http://program-think.blogspot.com/2015/02/Princelings.html?comment=1423062885928

底层改为伪造的明文图片类http连接而不是长连接,会不会大幅度降低传输效率?

@Ad-superman
Copy link

Finally, may the Force be with you

@Ad-superman
Copy link

不知该说什么,GFW已经对TLS系列具备攻击能力了

@chenjie
Copy link

chenjie commented Dec 27, 2019

如果墙知道一个服务器身份是用来翻墙的

This is a big if. trojan-gfw is implemented almost entirely based on SSL. Let's see if it works.

@fbion
Copy link

fbion commented Mar 11, 2020

naive trojan ws tls v2

@xirotech
Copy link

等哪天领导在天安门喊上一句话 "中华人民共和国 天朝局域网 正式 · 成立啦啊啊啊啊啊啊啊"
到时候看你们这些妖魔鬼怪 飞天遁地 八仙过海 各显神通
能不能飞得出老佛爷的五指山 :XD

@960PRO
Copy link

960PRO commented Aug 2, 2020

致敬前辈,TLS1.3正在普及中——ESNI功能将域名也加密了。有了依附的自由,今后流量伪装更方便了。

@arloor
Copy link

arloor commented Aug 9, 2020

致敬前辈,TLS1.3正在普及中——ESNI功能将域名也加密了。有了依附的自由,今后流量伪装更方便了。

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/

GFW开始研究ESNI了

@genufish
Copy link

致敬前辈,TLS1.3正在普及中——ESNI功能将域名也加密了。有了依附的自由,今后流量伪装更方便了。

esni已经被封了

@crazypeace
Copy link

crazypeace commented Apr 26, 2024

偶然进到这个链接.
我来更新一句最近的状况吧.


很多地方的GFW在TLS握手过程中, 针对SNI信息进行屏蔽.
于是, xray搞了个功能, 对TLS client hello包,在SNI处截断. 这样, 目前的情况是, GFW探测不出来了.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment