tls指纹之chrome新版功能/近期问题汇总/目前能直接使用的tls对抗库

 声明

以下只是搬运下我公众号的东西。很早就发过了。原帖地址:

tls指纹之chrome新版功能/近期问题汇总/目前能直接使用的tls对抗库 (qq.com)

已经发公众号的为什么还发csdn

有的圈内朋友,不经过我的允许,删减摘录我公众号的内容,这里就不提谁了,心里清楚,还能获得一些关注和流量。很无语,所以我还不如自己也发发。【猛男落泪】

前言

今天在找某个东西的时候,无意间,想看看ja3相关的东西,有没有啥值得研究的,然后就突然想起chrome随机指纹那个事,这个其实在2023年开年上班那几天的时候,就我群里看到群友说,chrome新版,自带随机ja3指纹,卧槽?

我当时是不信的,结果试了半天,确实是不一样了????

我用的以下网站测试,ja3官网现在经常无法访问了

https://ja3.zone/checkhttps://browserleaks.com/sslhttps://tls.peet.ws/api/all

这是什么个情况?

我反复确认,确实是不一样了,具体哪里不一样了呢?

颠覆了啊,卧槽,为啥,ja3官网之前不是说一个浏览器客户端ja3指纹基本是固定的吗?

分析

打开sublime text,把上面的4个标签的ja3 指纹复制出来:仔细看,发现就是第三组不一样了,这一组是Extensions

我们知道,这5个组合,实际就是下面的5个

TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats

有关第三个数Extensions扩展列表,感兴趣的可以看看更详细的解释:

https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml

而现在,谷歌搞这个操作,直接通过随机第三个数组,让ja3指纹随机了?

验证

查阅资料,果然:

原文链接:

​​​​​​​

https://chromestatus.com/feature/5124606246518784https://docs.google.com/document/d/13hbMJDFU8kZ_qtLukNYoWZOEnr0wRKeP6XBmY_TQ0B4/edit#

卧槽了,刺激啊,他为啥要改成随机啊?

谷歌官方说:

使用固定的扩展顺序可能会鼓励服务器开发者对 Chrome 进行指纹识别,然后进行特定的实现行为。当 Chrome 将来对 TLS 进行修改时,如果服务器实现没有为 Chrome 更改其 ClientHello 做好准备,这可能会限制生态系统的敏捷性

https://docs.google.com/document/d/13hbMJDFU8kZ_qtLukNYoWZOEnr0wRKeP6XBmY_TQ0B4/edit#

反正通俗的说,就是防止因为固定的指纹,导致限制后续发展。

举个例子,假如我用爬虫,或者浏览器,超频请求某个带有tls检测的网站,然后这个网站通过我的ja3指纹,把我封了,那我以后都无法正常请求这个网站,而指纹跟我一样的其他人,也访问不了,有朋友会说,为啥会有一样,同一台电脑,相同的配置,用的同一个版本的浏览器,有很大可能ja3指纹是一致的,毕竟不像canvas指纹,借助了硬件参数生成的指纹。

还有点我个人觉得,谷歌官方不希望只通过ja3指纹来轻松识别爬虫和非爬虫,那这样下去,只会绝对依赖ja3指纹,后续的技术不再进步,换句话,只能拦住一部分人,只要能突破你的指纹检测,后续的操作简直无任何压力。

chrome随机指纹对爬虫/反爬虫可用性探讨

理论上的猜测

那既然都可以随机了,可以起飞了吗?肆无忌惮?

其实并不会,你想想哈,我如果是做防护的,我对这个新版的chrome有了一定研究之后,我就发现,其实,只是第三组在变,那么我直接不把第三组作为依据记入,我就检测前两组加最后两组(如果有最后两组)

如果没有最后两组,那我就只检测前两组不就完了,你前两组始终是固定的,且第一组是tls版本,我们通过资料查询,可以知道,不同的tls版本,可能支持的tls算法不一样,那么通过这些一系列的操作,也可以一定概率的做指纹识别。

而最后一组,浏览器是【0】,根据前面的文章,我们知道,python最后一组并不是【0】,这不直接绝杀?

那么,我大胆推测,既然我都能想到,那么谷歌官方肯定也能想到这个问题,所以他这么搞的意义,并不是为了帮助爬虫一方逃逸检测,而是告诉完全依赖ja3指纹的后端开发者,你别绝对依赖固定的ja3指纹,万一后续有升级,可能会导致所有客户端浏览器都无法访问你的平台,导致丢失流量。

技术层面的可用性

其实在ja3作者自己的博客里就说过了,回到最开始那篇 深度剖析ja3指纹及突破

我之前只是没有把这一部分单独提取出来

根据之前的文章说过,其实Extensions、EllipticCurves、EllipticCurvePointFormats 都是可以省略的,根据客户端的支持的算法提交给服务端,服务端根据支持的算法来计算ja3指纹,所以,也就是说,只要我client hello 传的部分算法,就可以一定程度的修改客户端的ja3指纹(有点像请求头里的content-type)

看上面的,其实就可以合理解释随机的情况了,能不能直接用来绕过ja3指纹检测,也不言而喻了。

原文依据:

https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/

近期问题汇总

最近还是有很多老哥私聊问我问题,其实问的很多问题,文章里都有的

请根据我发tls/ja3相关文章的时间先后顺序来看,因为里面有些东西已经无法用或者过时了的,把相关的全都看了,你想问的问题,可能已经有了答案

1.tls属于web还是app

tls是单独的体系,不属于web,也不属于app,换句话,可以在web上,也可以在app上。

而我前面发的文章,JS逆向之猿人学第十九题突破ja3指纹验证

这里也纠正下,跟js根本没关系。为什么会这样,因为这是我之前在博客园写文章的时候,对猿人学的题的解析,标题是直接把之前的文章复制过来改改的,所以,并没有在意前面的js逆向(博客园已经不咋更新,因为文章被盗版严重,后续有质量的还是在微信公众号)

2.cycletls这个库不行了吗?

cycletls只是hook修改发出去的ja3指纹,只要是稍微严格点的校验,不检测指纹,而是检测客户端本来的那五组(TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats)然后自己生成,都不看你给的指纹,你说他可以检测到不

3.pycurl怎么感觉不行了,有些网站用不了

这个问题,作者肝总说过,需要更新,说实话我其实不是太了解,因为那些库,我其实用的不多,毕竟对我来说没有什么使用场景,不咋搞国外的东西。

4.怎么做tls防护

这个问题,有极个别做安全的朋友,加上我就一顿问,说白了就是想白嫖,有个老哥还用我文章说过的话:【故事要留给过去,但成长要用于分享】来阴阳我,意思是我不给他白嫖,他就觉得我说的这句话,前后矛盾。

这种白嫖怪,就有多远离我多远吧,不想跟这种人浪费时间。

目前可用的简单配置的tls库

以下库,直接pip 安装就能使用

  • tls-client

  • curl-cffi(据群友说,这个用着不太顺手)

广告(不喜忽略)

打一波广告,肉师傅新课,ios逆向已开,感兴趣扫码,找我会有优惠的哦

js逆向+小程序逆向、云函数抓包等课程,同样的,找我有优惠哟

结语

工作避坑&内推(仅成都)、技术交流、商务合作、技术交流群

扫码或者搜ID:geekbyte

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值