Skip to content
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

西厢计划之延续--- #159

Open
tec1987 opened this issue Sep 9, 2018 · 21 comments
Open

西厢计划之延续--- #159

tec1987 opened this issue Sep 9, 2018 · 21 comments

Comments

@tec1987
Copy link

tec1987 commented Sep 9, 2018

中文技术解析:
https://zrstea.com/263/

原文: http://www.cs.ucr.edu/~krish/imc17.pdf.
项目: https://github.com/seclab-ucr/INTANG

另附一篇,绕过基于SNI的HTTPS过滤
https://hal.inria.fr/hal-01202712/document
可以解决的问题:googlehosts/hosts#87
相关内容:brave/browser-laptop#12235
已实现项目:https://github.com/Macronut/SNI-Mask

@SeaHOH
Copy link

SeaHOH commented Sep 10, 2018

如果是单纯绕过 SNI 检测,有更简单的方法:分割数据包。

以上方法错误,实验时搞错对象了。。。

@tec1987
Copy link
Author

tec1987 commented Sep 10, 2018

你指的是第一篇文章里提到的方法吧?
不管TCP怎么分片,server name 还是明文啊?

@SeaHOH
Copy link

SeaHOH commented Sep 10, 2018

从 SNI 开始到结束前一个字节,随机分割成两部分。并不是文章里提到的方法。
确实还是明文,但是要检测这种方法,计算量起码要比现在翻上好几倍。
实际上我已经成功使用这个方法好些天了,但是还没来得及完善细节作为一种常规应用。

@SeaHOH
Copy link

SeaHOH commented Sep 10, 2018

即使分割的方法也被封掉(估计怎么也要一年半载的), 还有后着。
其实也不算新方法,只是突破效果更好,但是有兼容性方面的副作用。

@tec1987
Copy link
Author

tec1987 commented Sep 10, 2018

准备利用proxocket 在Windows下绕过基于SNI过滤

@SeaHOH
Copy link

SeaHOH commented Sep 10, 2018

如果不考虑其它系统,proxocket 的确挺方便。

@SeaHOH
Copy link

SeaHOH commented Sep 11, 2018

昨天换了一个域名测试,发现我之前搞错了对象,一个多星期了,居然没发现。。。
只能继续使用直接修改的方法,就是第二个 pdf 文档中的方法。
继续学习第一个文章的新方法~

@blob2015
Copy link

大海兄起得早啊
tec兄好

@tec1987
Copy link
Author

tec1987 commented Sep 13, 2018

经过实际测试,结果不能用proxocket在socket上修改SNI。
由于TLS握手的最后一步需要对所有握手消息计算校验,所以在socket上或者TCP/IP层直接修改SSL握手中的SNI会导致校验失败,无法完成握手。
看来对SSL的机制还是了解太少,查了一些资料才搞明白这一点。。。冏

所以只能在应用层修改SNI(在SSL会话开始之前),例如利用文档中提到的Escape插件配合旧板ff、
使用不发送SNI的浏览器、修改过的客户端等等

@SeaHOH 海少,你的TCP分片是win平台上的? 用什么实现的?

@SeaHOH
Copy link

SeaHOH commented Sep 13, 2018

效验不是发生在 TCP 堆栈,而是直接改 Hello 数据包,会导致 TLS 进入到加密阶段无法解码。

我是在套接字初始化时传入假的 SNI,由于是作为代理实现,会导致证书兼容性问题。
如果是实现单独应用,就不存在证书问题。

分片那个是我搞错了,上面已经修改。
看来重组数据包的花费要比我想像的小,又搞错了实验对象。。。

@SeaHOH
Copy link

SeaHOH commented Sep 13, 2018

还是要学第一个论文的方法,下载价格 5-15刀。
其中减少 TTL 配合一个假数据包最好用。

@tec1987
Copy link
Author

tec1987 commented Sep 13, 2018

@SeaHOH 干嘛要15刀。。。第一个PDF就是啊

@SeaHOH
Copy link

SeaHOH commented Sep 13, 2018

没花钱,很久以前看到的。只是感叹下知识就是财富,真理! 😺

@tec1987
Copy link
Author

tec1987 commented Sep 14, 2018

近些年墙的动作太大,已成为热门话题。。。

@tec1987
Copy link
Author

tec1987 commented Sep 14, 2018

试了一下Escape这个ff扩展,用的是MITM,仅ff32之前的版本可用,33.1及以后的版本无法使用。

@macronut
Copy link

macronut commented Dec 7, 2018

还是要学第一个论文的方法,下载价格 5-15刀。
其中减少 TTL 配合一个假数据包最好用。

TTL不足,校验和错误,附加MD5的假数据包皆可,空校验和这个最好实现我去年就开始这么用了一直效果很好,连SNI代理能重新捞起来用。

@SeaHOH
Copy link

SeaHOH commented Dec 7, 2018

可惜 Windows 上不好搞,抓包注入有性能问题,但是采用代理方式又有局限性使用还不方便。。。

@tec1987
Copy link
Author

tec1987 commented Dec 7, 2018

@SeaHOH 如果想办法折腾到路由器上,就能愉快的玩耍了。。。

@macronut
Copy link

macronut commented Dec 8, 2018

本来就支持在Linux的路由器上跑,配合DNS指向路由器的IP

@bypass-GFW-SNI
Copy link

我也自行实现了一个配置简单,代码量少且没有 TCP 底层操作的实现 bypass-GFW-SNI/main,原理和那篇论文差不多。因为自己有 DNS 服务器所以应用范围大,而且顺便可以解决 DNS 污染的问题。

@tec1987
Copy link
Author

tec1987 commented Jan 8, 2019

@bypass-GFW-SNI 感谢分享

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants