TL;DR trojan 用户请开启配置中的 verify 和 verify_hostname。
根据 trojan 的工作原理,只要开启了 config.ssl.verify 和 config.ssl.verify_hostname,就不会受到 MITM 攻击,也不会泄露出客户端正在使用 trojan 翻墙。所以建议大家尽快为服务器配置证书,可以使用提供免费证书的 acme.sh 和 certbot。
未开启 verify 和 verify_hostname 的客户端,如果遭到 GFW 的 MITM 攻击,GFW 将可能尝试使用 trojan 协议规定的数据包格式来解析你的请求。如果解析成功,说明你在 TLS 中传输的不是 HTTP 请求——换言之,说明你在使用 trojan 翻墙。同时,GFW 也可以得知你所访问的服务器 ip 正提供基于 trojan 的翻墙服务,进而有针对性地封禁服务器。
更进一步地,GFW 如果对 trojan 代码进行修改,使其在作为 server 工作时允许所有 trojan client 连接,那么将可以获得所有未开启 verify 和 verify_hostname 的客户端的请求明文,且客户端不会请求失败。这非常简单,只需要将 https://github.com/trojan-gfw/trojan/blob/master/src/session/serversession.cpp#L141 这一行修改为 if(false) { 即可。在此基础上,GFW 将可以在 TLS MITM 攻击的基础上,发起 trojan MITM 攻击,使得未开启 verify 和 verify_hostname 的 trojan 客户端在无感知的情况下被 GFW 获得请求与应答。
旧:trojan client —> trojan server —> website —> trojan server —> client
新:trojan client —> GFW trojan server (MITM) —> actual trojan server —> website —> actual trojan server —> GFW trojan server (MITM) —> trojan client
开启了 verify 和 verify_hostname 的客户端将不会被 MITM 攻击。
(不用担心你设定的 trojan 密码被知道(即使是没有开启 verify 和 verify_hostname)。这是因为 trojan 在传输密码时只传输其哈希值(详见 https://trojan-gfw.github.io/trojan/protocol 和 https://github.com/trojan-gfw/trojan/blob/master/src/core/config.cpp#L65 )。)
结论:至少根据咱的分析,这是完全可行的攻击思路。所以,趁着他们还没有这么做,赶紧去给自己的 trojan server 加上证书。以 trojan 的用户规模,可能在 GFW 那里的优先级不算很高,应该还来得及。
消息来源: https://t.me/melon_murmur/333
根据 trojan 的工作原理,只要开启了 config.ssl.verify 和 config.ssl.verify_hostname,就不会受到 MITM 攻击,也不会泄露出客户端正在使用 trojan 翻墙。所以建议大家尽快为服务器配置证书,可以使用提供免费证书的 acme.sh 和 certbot。
未开启 verify 和 verify_hostname 的客户端,如果遭到 GFW 的 MITM 攻击,GFW 将可能尝试使用 trojan 协议规定的数据包格式来解析你的请求。如果解析成功,说明你在 TLS 中传输的不是 HTTP 请求——换言之,说明你在使用 trojan 翻墙。同时,GFW 也可以得知你所访问的服务器 ip 正提供基于 trojan 的翻墙服务,进而有针对性地封禁服务器。
更进一步地,GFW 如果对 trojan 代码进行修改,使其在作为 server 工作时允许所有 trojan client 连接,那么将可以获得所有未开启 verify 和 verify_hostname 的客户端的请求明文,且客户端不会请求失败。这非常简单,只需要将 https://github.com/trojan-gfw/trojan/blob/master/src/session/serversession.cpp#L141 这一行修改为 if(false) { 即可。在此基础上,GFW 将可以在 TLS MITM 攻击的基础上,发起 trojan MITM 攻击,使得未开启 verify 和 verify_hostname 的 trojan 客户端在无感知的情况下被 GFW 获得请求与应答。
旧:trojan client —> trojan server —> website —> trojan server —> client
新:trojan client —> GFW trojan server (MITM) —> actual trojan server —> website —> actual trojan server —> GFW trojan server (MITM) —> trojan client
开启了 verify 和 verify_hostname 的客户端将不会被 MITM 攻击。
(不用担心你设定的 trojan 密码被知道(即使是没有开启 verify 和 verify_hostname)。这是因为 trojan 在传输密码时只传输其哈希值(详见 https://trojan-gfw.github.io/trojan/protocol 和 https://github.com/trojan-gfw/trojan/blob/master/src/core/config.cpp#L65 )。)
结论:至少根据咱的分析,这是完全可行的攻击思路。所以,趁着他们还没有这么做,赶紧去给自己的 trojan server 加上证书。以 trojan 的用户规模,可能在 GFW 那里的优先级不算很高,应该还来得及。
消息来源: https://t.me/melon_murmur/333