本帖最后由 BigBoss007 于 2024-7-18 09:39 编辑
本文主要针对HTTPS协议分析讲解
tls指纹检测 ja3指纹检测它能在客户Duan与服务端的连接过程中,识别出你不是正常用户。
那么它是如何实现的呢,如何知道服务端是否有检测呢,我们又该如何绕过检测呢,请听我给你娓娓道来。
众所周知,建立一个TCP连接需要三次握手,终止一个TCP连接需要四次挥手。 (如果你不知道,那你现在知道了)
不是讲HTTPS吗,为什么讲TCP呢,因为HTTP是基于TCP实现的,而 S 代表 SSL/TLS
三次握手之后,如果需要使用传输层安全协议(TLS/SSL),还将需要进行TLS/SSL握手,版本不同,握手形式有所不同,不过好在我们不必关注这个,我们只需要关注TLS/SSL握手阶段的 ClientHello 请求
上面呢就是使用Wireshark抓包到的ClientHello握手包,也可以访问一些TLS指纹查询网站查询到我们发送的指纹,在最下面我们看到有JA3/JA4, 这实际并不是ClientHello握手包发送的数据,而是Wireshark通过JA3/JA4生成指纹的方法,生成出来的。
所以并不能通过这个字段判定服务端是否有TLS检测,实际上,我们无法通过技术手段判断服务端是否有TLS检测,我们只能通过他人分享的已知某平台有TLS检测,或通过排除法,排除请求数据没有问题,再考虑是否有TLS检测。
JA3/JA4有什么区别
JA3是根据ClientHello握手包生成指纹,而JA4更加强大,不仅在ClientHello握手阶段生成指纹,还增加了一些其他类型的指纹,更多详细信息,可以浏览JA3/JA4作者发布的文档(需要科学上网打开)。
JA3:https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/
JA4:https://blog.foxio.io/ja4%2B-network-fingerprinting
Tips:目前阶段,包括以后很多年,其实我们根据JA3来绕过TLS检测就可以了,另外如果使用了HTTP2.0协议,还会有HTTP2指纹,不过我们可以对使用了HTTP2,HTTP3的HTTP请求强制使用HTTP1.1 ,绝大部分平台即使使用HTTP/2/3,但是对于HTTP1.1还是支持的。
如何绕过TLS检测
既然知道了,TLS检测主要是识别ClientHello握手包生成的指纹,那么我们更改ClientHello握手包的内容不就得了,先别骂,我知道这很困难,但是知名企业家雷军说过:“99%的问题,都有标准答案“。
那么我们只需要寻找这个标准答案就好了,我帮你找好了。
值得注意的是,不同的服务端有不同的检测强度,大部分解决方案都并不完美,可能无法绕过检测,这是因为解决方案的开发者修改ClientHello握手包,修改的并不好,或者被检测出修改了,你能做的就是更换解决方案,测试,直到找到一个相对完美的解决方案。
解决方案:
易语言解决方案:https://bbs.125.la/forum.php?mod=viewthread&tid=14759851&highlight=curl-impersonate
Python解决方案:https://github.com/lwthiker/curl-impersonate
更多解决方案:https://www.google.com/
我的解决方案:机密文档,无权查看,本文仅分享关于TLS检测的方法,可以尝试上面的解决方案
麻烦各位 三连一波 帮忙点赞+收藏+好评
|