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

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以回答这个问题。目前常用的TLS指纹识别工具有:nmap、sslscan、sslyze、testssl.sh、tlsenum、tls_prober等。这些工具可以用于识别目标主机的TLS版本、加密套件、证书信息等。 ### 回答2: TLS指纹识别工具是用于识别和分析传输层安全协议(TLS)的工具,用于确定TLS连接所使用的具体协议版本和密码套件。以下是一些常见的TLS指纹识别工具: 1. Wireshark:Wireshark是一款流行的网络数据包分析工具,可以通过分析网络数据包来识别TLS协议的版本和密码套件。 2. Nmap:Nmap是一款强大的网络扫描工具,其脚本引擎可以使用SSL/TLS指纹库来识别TLS协议的版本和密码套件。 3. sslyze:sslyze是一款用于自动化TLS安全评估的工具,它能够检测目标服务器支持的TLS协议版本、密码套件以及其他安全配置。 4. tlsfingerprints:tlsfingerprints是一款基于PythonTLS指纹识别工具,它通过分析目标服务器的TLS握手报文,来检测支持的TLS协议版本和密码套件。 5. TLS-Attacker:TLS-Attacker是一个开源的TLS协议安全测试工具,可以用于模拟各种TLS握手情景,包括识别目标服务器支持的TLS协议版本和密码套件。 这些工具都提供了方便快捷的方式来分析和识别TLS连接使用的具体协议版本和密码套件,有助于评估网络安全性和发现潜在的漏洞。 ### 回答3: TLS指纹识别工具是一种用于识别传输层安全协议(TLS)的工具,用于确定与目标服务器建立的加密连接所使用的具体协议和版本。以下是几个常用的TLS指纹识别工具: 1. Wireshark:Wireshark是一款功能强大的网络协议分析工具,它可以捕获并分析网络数据包。Wireshark可以用于检测和分析TLS握手过程中的TLS版本、加密套件和证书信息,从而识别目标服务器使用的TLS协议版本。 2. nmap:nmap是一款常用的网络扫描工具,它可以用于探测服务器和网络设备的开放端口、识别服务和操作系统等信息。nmap也可以通过对TLS协议进行识别来确定目标服务器的TLS版本和加密套件。 3. sslyze:sslyze是一款专门用于TLS安全评估的工具,它可以帮助检测服务器的TLS配置和漏洞。sslyze提供了丰富的测试选项,可以识别目标服务器使用的TLS版本、支持的加密套件以及可能存在的弱点和风险。 4. tlssled:tlssled是一个简单易用的TLS指纹识别工具,它可以检测并显示目标服务器所使用的TLS版本和加密套件。tlssled提供了图形化界面和命令行接口,方便用户快速获取TLS信息。 这些工具都可以帮助渗透测试人员、安全研究人员和系统管理员等专业人士快速识别目标服务器的TLS指纹,从而评估其安全性和弱点。在进行相关测试和识别时,应确保遵守法律和道德规范,并获得合法的授权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值