tls指纹之到底怎么判断是否有tls、到底怎么对抗tls

 声明

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

tls指纹之到底怎么判断是否有tls、到底怎么对抗tls (qq.com)

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

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

一、前言

其实自从大概一年前,发了tls/ja3那篇文章之后开始 ,就时不时有朋友找我私聊,让我帮忙看看某某平台,“怎么回事啊?”,“怎么python请求不到?”,“到底是不是tls?”,“怎么过tls?”,等等...

真的还挺多的

所以,这篇文章,我把我想的写出来,还不太懂的,请仔细看,一个字一个字的看,因为有的朋友问的问题,之前的文章其实都有的,所以我希望各位朋友,这篇文章请认真看

如果看完我这篇文章,还是无法确定是否是tls的话,也可以继续问我,但我希望你是经过自己思考还是没搞定的情况下再来的。

对tls还很陌生的朋友,可以看下猿人学的题,外部题19题,内部题22、29题,5s盾,阿什么迈

以及下面这几篇文章(请按顺序从上到下看)

https://mp.weixin.qq.com/s/Qx7PjnBgrTR30oCurU6CGw

https://www.cnblogs.com/Eeyhan/p/15662849.html

深度剖析ja3指纹及突破

ja3指纹补充说明

python完美突破tls/ja3

python突破tls后续:pip install

能过tls检测的curl-impersonate win版,搞起来啊

二、怎么判断有没有tls

这个话题我其实之前也说过了

你先排除以下情况:

1.验证了请求头顺序

比如猿人学的一道题,就验证了请求参数

我以前写过的博客:

https://www.cnblogs.com/Eeyhan/p/15292983.html

2.强制HTTP2.0协议

还是猿人学的一道题

我以前写的博客

https://www.cnblogs.com/Eeyhan/p/15662528.html

3.请求参数保证和抓包工具完全一致

比如,你的cookies,还有请求参数json.dumps的时候,是否要去掉空格

separators=(',', ':')

1.某车xx

群友给的,就不好说全名了,postman可以:

用python就是不行:

加下这个separators就可以了

2.某姓平台

访问进去的会有个验证,主要他还提示有个ssl安全加密

让你不得不联想到可能有tls,但是其实并没有,requests就可以访问的

3.某家平台

浏览器访问:
 

python下复制过来啥都不改就能访问的:

4.请求编码问题

某量引擎的请求参数 ,需要这样编码,才能正常请求

data="""{"keyword_list":["xxx"],"start_date":"20230115","end_date":"20230215","app_name":"aweme","region":[]}""".encode("utf-8")

某音也有类似的问题

更多的就得你自己具体问题具体分析

5.补充

补充一点就是,新版的requests 和 urllib3库,对ssl有校验,导致你开了抓包工具后,就无法请求数据,即使设置了verify=False,

解决办法就是安装低版本的requests和urllib3库即可

ip uninstall requests urllib3  # 先卸载 pip install requests==2.27  urllib3==1.25.8 -i https://pypi.doubanio.com/simple  # 指定版本安装,不然默认会装最新版

4.其他语言或者工具可以请求,就python不行

你到这里,那确实可能有tls校验,注意我说的词,【可能有】,因为也不一定

5.web平台,除了浏览器可以,其他语言都不行,app平台,除了app,其他语言都不行

你到这里,那有tls校验概率就很高很高了。

为啥还是没法100%确定有?别急,下面有解释

三、怎么判断有没有强校验的tls

请先用上面的流程判断是否有tls之后,再来看这里

1.弱校验

就是postman可以 ,javascript也可以(js也可能不行),curl也可以,就python不行,那大概率是很弱的校验,只需要照着我下面的方案即可解决:

以猿人学的题为例:

https://www.cnblogs.com/Eeyhan/p/15662849.html

2.中校验

按照我上面的改tls套件的方法不行,但是curl或者postman就是可以

毕竟方案已经公开,可能针对性的改了下,所以你针对性的分析,

可以用以下方案过可以过

  • go库:ja3transport,不支持HTTP2.0

  • go库:cycletls,支持HTTP2.0

  • requests go版:https://github.com/wangluozhe/requests

  • 志远大佬的方案,魔改openssl

3.强校验

python、postman、curl、js请求都不行,只有浏览器可以

用以下方案可以过:

四、误区:抓包工具没法判断是否有tls

很多人用抓包工具(wireshark,charles)看是否有tls,这个也是我之前对tls还不了解犯的错:

https://www.cnblogs.com/Eeyhan/p/15662849.html

抓包工具看到的是tls的套件算法,能不能验证是否有tls,这个是服务端判断的,只要有ssl,都会有tls套件的,比如,我用抓包工具看百度

比如上面,这里面能看到一堆tls算法,他就一定是tls吗,python也能直接请求百度啊。

tls真正的验证实际在服务端,所以我上面说判断是否有tls,我都没用肯定的语气词,都说的可能,大概率,这东西只有靠排除和猜的,在服务端的东西,前端是看不到的
 

五、哪些网站、平台确定有tls检测

有某迈、5s防护盾的网站

国外的电商平台基本都有tls(某逊等)

六、怎么过tls校验

请先用上面的流程判断是否有tls之后,再来看这里

上面解释怎么判断tls强弱的时候,已经总结了点,之前的文章【ja3补充说明】也总结了点,这里我重新做一个比较全面、完整的总结:

根据tls校验程度从小到大排序:

1.原生python层面修改tls套件

参考:

https://www.cnblogs.com/Eeyhan/p/15662849.html

2.用go的库ja3transport

https://github.com/CUCyber/ja3transport

3.用go的库requests

https://github.com/wangluozhe/requests

4.用go的库cycletls

https://github.com/Danny-Dasilva/CycleTLS

5.魔改openssl

志远大佬的方案,我就不好贴地址了

6.用python的库 pyhttpx

这个是我群里的大佬自己实现了底层socket搞出来的:

https://github.com/zero3301/pyhttpx

7.用杆总魔改的pycurl

我之前的文章里有详细配置步骤:

python完美突破tls/ja3

8.用python的库

其实就是魔改的pycurl的简易安装版,群里一个大佬编译好的,

里面有详细的步骤:

https://github.com/synodriver/pycurl/blob/master/special.markdown

9.pycurl 的docker版

我的docker镜像:

docker pull geekbyte1/pyantitls:v1.0docker run -it -d geekbyte1/pyantitls:v1.0

Q佬的docker file:

https://mp.weixin.qq.com/s/UZlLuzlQZrI7w82HI7zGuw

10.直接调用curl_impersonnate

就是魔改版的pycurl,用的核心的东西,直接操作终端然后调用curl_impersonnate

现在curl_impersonnate已经出windows版

能过tls检测的curl-impersonate win版,搞起来啊

11.cycletls的python版

https://github.com/Danny-Dasilva/cycletls_python

cycletls的作者已经在开发python版的cycletls了,刺不刺激

不过别高兴太早,目前还没pip install ,作者自己也说了,在积极开发中

去年12月我跟他发过邮件,想让他帮忙搞个python版出来,他到现在没回我,也不知道是不是因为我发的邮件让他想搞个python版出来,总之是有了,且快了

结语

这次应该算是够完整了吧,如果你还遇到问题,也乐意交流的

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

扫码或者搜ID:geekbyte

### TLS Fingerprinting in Cybersecurity and Network Communication TLS fingerprinting refers to the process of identifying unique characteristics associated with a specific implementation or configuration of Transport Layer Security (TLS). This technique leverages distinct patterns found within handshake processes, cipher suite preferences, extensions used during negotiation phases, as well as timing information related to packet exchanges [^1]. The identification of these attributes allows security analysts and researchers to determine not only what type of device is communicating over a network but also potentially which operating system version it runs on along with other software components involved in establishing secure connections. In addition, clock skew/timing inference methods can be applied specifically when analyzing TLS handshakes by measuring time intervals between packets sent from clients initiating probe requests. Improved timing analysis techniques further refine this approach through examination of transmission times alongside inter-arrival periods for frames exchanged throughout sessions . Such detailed profiling capabilities provided via TLS fingerprints serve multiple purposes including threat detection, anomaly monitoring, forensic investigations into cyber incidents involving encrypted traffic flows where traditional deep-packet inspection tools may fall short due to encryption barriers preventing direct content visibility [^2]. ```python import ssl from scapy.all import * def tls_fingerprint(packet): if packet.haslayer(TLSClientHello): client_hello = packet[TLSClientHello] ciphersuites = client_hello.cipher_suites extensions = client_hello.ext # Extract and analyze various parameters here... print(f"Cipher Suites: {ciphersuites}") print(f"Extensions: {[ext.type for ext in extensions]}") sniff(filter="tcp port 443", prn=tls_fingerprint) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值