-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
是否可以通过DNS解析记录来识别 REALITY #2230
Comments
这样来不可行。原理群友聊天时说过我记不到链接了,你有兴趣来Xray群问其它人交流看法。 |
第一个是收集不了所有的解析结果,第二个是不排除有人使用 DOH 这种不怕中间人攻击的 DNS 解析方式,第三个是所以要使用冷门的源服务器 当然对于黑盒不要去猜测有没有这个能力,一切宁可信其有 |
如果是用dns-ip匹配是不行的,誤報率會很高,雖然100%識別REALITY 如果是用dns-asn匹配誤報率低,但是會漏掉一些REALITY,這種方法能湊合著用 https://github.com/nursery01/GFW-system/tree/main/TLS/passive%20detection 中國的gfw和伊朗的isp不一樣,gfw考慮的是低誤報率,而伊朗考慮的是接近滴水不漏 |
即使使用了DoH,gfw還是能拿到sni,除非sni是null |
GFW 拿到的 SNI 是 DNS 服务器的 SNI,拿不到解析的域名 这样的话倒无所谓,因为网络层明文是 1.1.1.1,SNI 是不是 1.1.1.1 都无所谓了 |
sni是可以從client hello裡面獲取的,它是明文的,現階段的標準並沒有完全加密sni,包括下一代技術http3 |
在 Client Hello 里的是 DNS 服务器的 SNI,而请求解析的域名是在 Body 里的,是完全加密的;GFW 自然知道我是在进行 DNS 解析,然而它也就只知道我在进行 DNS 解析,却不知道具体内容 |
以及 TLS 1.3 其实已经有加密 SNI 技术了,但是没有广泛应用而已 H3 是 HTTP 协议,而非 TLS 协议,加密是由 TLS 进行的,H3 只是强制使用 TLS 而已 扯远了,确实应该考虑地狱般的伊朗防火墙 |
你說的這個技術是DoH-ECH技術,然而上文我說過了,它並沒有被完全加密,我抓過包親手驗證過,並且ECH標準協定裡寫了它發了兩條,有一條是加密的,一條是沒有加密的用於退回,那條退回的請求是包含sni的 你如果想知道自己可以去抓包驗證,"我不信,我不聽,我不管"這種話就不要說了 |
但是我确实抓过,包括刚刚我也试了一遍 我是将 DNS 解析交给 Xray 来进行的 {
"dns": {
"servers": [
{
"address": "https://[2606:4700:4700::1111]/dns-query"
}
]
} 确实没有发现相关 SNI 内容 对于没有自信的内容我其实是不敢直接说出来的 证有不证无,麻烦把抓包信息给我看一下,可能我们聊得不是同一个东西 |
你要驗證肯定不是這樣驗證,但是你最初的問題問的是
然後我的回答是
但是你現在的回答是挂了代理你在某一層面沒有截取到sni(如果你是匹配出口REALITY ip截取),這部分回答可能沒有問題,但是REALITY的sni還是能截取到,它是明文的 你還說了
我看到這裏我終於懂你的意思了,你當初是想說(挂了代理)啓用doh的話,不怕中間人,但是我的回答也是沒有問題的,REALITY的sni還是能拿得到,除非是空sni,因爲這個討論的標題是關於REALITY的識別問題,所以根據標題和你的回答這一層面我當初的回答沒有產生誤解這種情況 你想驗證應該在瀏覽器啓用DoH和ECH,然後打開https://crypto.cloudflare.com/cdn-cgi/trace/來驗證,來驗證DoH-ECH這種技術是否真的加密了sni 我是4月在v2ray社區討論過這個問題,當時我對ECH很自信,認爲有了它以後不挂代理GFW也拿不到sni了,但是後來抓包發現sni還是明文的 |
我明白了,你说的是访问源服务器的 SNI,而我说的是请求 DNS 时的内容; 我想表达的意思是”中间人是看不到 DNS 解析结果的”,而你的意思是“中间人能看到访问源站的 SNI“ 我是针对
这句话的,意思就是说中间人收集不到完整的结果 |
日经问题,简单来说这种方式要么高误伤,要么高遗漏。 @nursery01 的测试方法仍是不完善的,没有换加密 DNS、运营商、位置 #2161 (reply in thread) 。不仅是 GFW 在哪的问题,现实中人会带着手机电脑到处跑,会出现带着上一个运营商、位置的 DNS 缓存的情况,而若算入多个 ASN,则会造成更高的遗漏率。 还有,我就说会有人引用、参考吧, 我觉得更有意义且简单的是仅测可以直连的境外域名(有数据库?),在多个完全不同的环境、时间查 DNS,对比一下 IP、ASN。 从封锁的角度出发,如果没有 SNI 白名单,则区分 REALITY 和 TLS 的意义不大,因为注册一个域名又不难,改偷自己不就好了。 如果已有 SNI 白名单,再匹配 IP 那就是 IP 白名单,连地狱模式的伊朗也只是试行了一段时间的 IP 白名单,中国就更加遥远。 |
话说回来,参考伊朗的情况可以看到,REALITY 基本上是最后一道防线了,如果 REALITY 都不能用了,那可能就没什么能用的了。 所以与其天天担心这个问题,不如让自己活得开心一些,这种东西真来了就是全面封锁,一个都逃不掉,共勉。 |
@RPRX 已經更新 |
魔法参考:#2059 (comment) ,这里 REALITY 及其公私钥设计的好处就在于:
|
若有相关资源,请私聊 @yuhan6665。如果所有线路上都有一点点 REALITY,那么 GFW 即使上“协议+SNI+IP”白名单也不好使了。 |
是,如果能拿到一些私料,比如美國銀行的線路倒是可以,這種一般不會封,就是在ip白名單內,問題是普通人弄不到 |
"Everything that has a beginning has an end. I see the end coming, I see the darkness spreading. I see death... and you are all that stands in his way. And if you can't find the answer, then I'm afraid there may be no tomorrow for any of us." |
我有一个大胆的想法: 可以参考 REALITY 的原理设计一个加密 IP 的标准,把真正的目标 IP 加密后放 Session ID,对于占 16 字节的 IPv6 空间也刚好够。 它解决了“目标 IP 没加密”的痛点,与现有的 middle-box 完全兼容且具有 欺骗性,只有手握私钥的路由节点才知道真正的目标 IP。 应该推动这个标准进 IETF,各地路由节点公开其公钥,你想让哪个节点知道,使用它的公钥即可。SNI 欺骗则由新 REALITY 负责。 |
世界五大秘密 |
IETF有过推进IP层面安全的尝试(IPsec) 但是阻力非常巨大 从要求变成了可选 |
所以基于 TCP 的 TLS 用得最广泛,所以 QUIC 选择了基于 UDP。同理,上述标准基于现有的 TLSv1.3,而且非常简单,易推广。 若上述标准推广开,与之配合的新 REALITY 都不用防主动探测了,反正始终藏在假 IP 后面。 |
安排上,后年出 💏 |
即使設計加密IP,目標ip在某一層肯定是要明文的,否則就會出口丟失 |
再理解下中间那行 |
只從IT理論邏輯角度考慮行不行的話 你家裡的路由器開始發包給本地isp的交換機它就能拿私鑰解密了 如果你的意思是直接把包發給美國,然後由美國isp解密,中國的isp公司不參與解密,那麽你發了一個包,進過本地isp的交換機,那台交換機在不知道ip的情況下要把包發給誰呢?北京?美國?非洲? 那假如在包裡帶個類似於ip的明文的地址,寫著台灣台北市中華電信A號交換機,這樣ip加密也知道發向哪了,那反過來說它就能審查了 而且還有回包解密問題 而且ip是網路基礎"粒子",加密的話會引來各種複雜的問題 |
推进这种IP加密听上去还是比较看海外ISP脸色了,不清楚它们对这类东西态度怎么样。 |
倒过来想: 我不能确保某个白名单IP会经过私钥节点, 但我只需要确保某个私钥节点上存在白名单IP
如果我的理解正确的话, GFW顶多知道这个节点支持这个技术. 所以最理想的情况是这个技术是广泛部署的标准. 如果成为了IETF标准并且你能确定每个节点的转发行为, 你甚至可以玩IP套娃, |
只是说的玩的为什么有那么多人感兴趣() |
这是不是理解错了?楼主的意思是对比SNI中域名的真实解析IP与流量中的目标IP,来判断是否是reality。而不是DNS解析查询的过程。 |
这个是不是有点难。。。 |
由于代理服务器的 ASN 是可知的,有没有可能针对 ASN 建立域名黑名单,或针对域名建立 ASN 黑名单甚至白名单?比如微软不会使用 linode 的 ASN 这样的假设,应该并不会误伤。又或者某公司的 ASN 全是已知的。 这种规则不容易做到多高的覆盖率,但能检测到集中配置为几个域名的用户,并且使以后不容易找可用的域名。 |
现在似乎确实已在建议不要乱偷了,我记得群里好像有人报告问题,讨论怀疑是ASN的问题。 |
net4people/bbs#254 (comment) 当然你提到的“干净 IP 来自不太知名的提供商”会被限速,我觉得即使 GFW 没有能力实时同步所有域名的所有 IP,GFW 至少有能力查出你这个小众 IP 段不可能有某个知名网站,这个事情我也不是第一次说了 |
我可以进群吗 |
自己注册tg再去加群就是了,群地址在readme里面写了的。 |
IPsec当然加密了IP地址…… IPsec没有什么不能推广的,如果双端都是公网IP那么,IPsec(50号IP协议)可以直接连通 不过话虽然这么说,我的strongSwan服务器好几年了一直没封…… |
没用过 IPsec,如果它把 IP 地址 完全 加密了,怎么做路由 |
@RPRX 是的。我就是这个意思,IPsec其实是一种Policy Based VPN(意味着它不会创建类似于TUN/TAP这种VTI设备) |
@RPRX |
另一个观察到的现象是,目前封锁似乎集中于TCP和UDP |
误伤的话, 目前我们想做的是用白名单协议(TLS 类)加白名单 SNI 加白名单 IP 来骗 GFW,由于 QUIC 少一次握手,其实它更适合干这件事 再加上 符合目标网站的白名单流量特征,总之除了隐写真实 IP 目标这种操作需要推动标准进 IETF,其它的都不是大问题 |
the ECH protocol involves two ClientHello messages: the ClientHelloOuter, which is sent in the clear, The server completes the handshake with just one of these ClientHellos. If decryption succeeds, it proceeds with the ClientHelloInner; otherwise, it proceeds with the ClientHelloOuter. This means that while there is an unencrypted message (ClientHelloOuter) in ECH, it is used as a fallback option if decryption fails. However, it's important to note that the actual handshake parameters, including the sensitive values like the SNI and ALPN list, are encapsulated within the encrypted ClientHelloInner. The ClientHelloOuter is not used for establishing the intended connection but rather signals to the client that decryption failed and prompts it to retry the handshake with the public key provided by the server. |
Iranian people need that |
那么如果GFW使用的方式不是封禁IP或者端口的方式,而是把疑似reality的连接,给转发到已知的真正服务器,从而进行干扰呢? 比如GFW观测到一个发向www.microsoft.com的连接,其目的IP和GFW已知的www.microsfot.com的真实IP都不匹配,GFW就把这个请求转发到真正的www.microsoft.com的IP上(即DNAT),从而这种方案不会影响真正www.microsoft.com请求。因为真正的请求也必定会被转发到真正的IP上,因此误伤造成的影响几乎是0。 |
依赖DNS解析到不同ip来工作的服务不会失灵,因为GFW只需要根据该IP是不是已知的真实服务器IP来决定是否转发就行,而不是转发所有请求。 GFW可以把全国各地DNS解析得到的IP作为真实服务器IP列表。GFW只把目的地址不是这个列表里的请求转发到这个真实服务器IP列表中的之一(比如根据就近转发原则来选择)。这样不会影响依赖DNS解析到不同ip来工作的服务,因为GFW不会去转发这类请求。即使GFW收集的真实服务器IP不全,转发也顶多造成延迟不一样这种后果,但是对于reality却是完全起到了封禁的作用。 |
对于楼主这样的想法我有三个问题:
|
reality 的流量只能在 L4 处理,因为它不是标准的 TLS 流量。而一般情况下,会用到 L4 转发的都是那种负载均衡,并且是并发很高的场景,不然 L7 的负载均衡就够用了。这种产品一般它后面只有那个企业的一个业务。
通常来说,翻墙建站二合一的网站,访客都很少,防火墙大概是两个一起墙了。
那么这个网站的 DNS 记录在缓存失效前,且更换 IP 后这段时间,本来就是有用户无法访问的。当网络运营商的递归解析器缓存失效得到新的 IP 后,及时向防火墙添加记录放行,就能解决此问题。 |
中共如果它有这个本事让它来试试再说 |
大哥是想再造一个 |
首先我是网络专业的小小白. 有些理解可能是不对的.
比如 GFW 要查找青岛地区的用户是否使用了 REALITY, 只需记录跨国企业的域名 (比如 apple.com) 在该地区的 DNS 解析出来的所有合法的 Apple 服务器的 IP 地址. 当青岛用户的 REALITY 流量过防火墙时, 如果 SNI 是 apple.com, 就会去 "合法的 DNS 解析记录字典" 里去查找, 如果 REALITY 的 IP 不在合法字典里, 就会风控不合法的 IP.
从 GFW 的角度, 以上做法是否可行 ?
The text was updated successfully, but these errors were encountered: