Kisesy / gscan_quic

Google Quic 扫描工具
The Unlicense
349 stars 81 forks source link

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

Open tec1987 opened 6 years ago

tec1987 commented 6 years ago

中文技术解析: 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 可以解决的问题:https://github.com/googlehosts/hosts/issues/87 相关内容:https://github.com/brave/browser-laptop/issues/12235 已实现项目:https://github.com/Macronut/SNI-Mask

SeaHOH commented 6 years ago

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

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

tec1987 commented 6 years ago

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

SeaHOH commented 6 years ago

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

SeaHOH commented 6 years ago

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

tec1987 commented 6 years ago

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

SeaHOH commented 6 years ago

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

SeaHOH commented 6 years ago

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

blob2015 commented 6 years ago

大海兄起得早啊 tec兄好

tec1987 commented 6 years ago

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

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

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

SeaHOH commented 6 years ago

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

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

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

SeaHOH commented 6 years ago

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

tec1987 commented 6 years ago

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

SeaHOH commented 6 years ago

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

tec1987 commented 6 years ago

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

tec1987 commented 6 years ago

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

macronut commented 5 years ago

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

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

SeaHOH commented 5 years ago

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

tec1987 commented 5 years ago

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

macronut commented 5 years ago

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

bypass-GFW-SNI commented 5 years ago

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

tec1987 commented 5 years ago

@bypass-GFW-SNI 感谢分享