Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

admin 2025年5月14日15:25:24评论5 views字数 6873阅读22分54秒阅读模式

关注公众号,输入“学习交流”加入交流群

觉得不错的话,可以多点赞、分享、关注

介绍

这个功能作为综合burp fuzz插件的关键子功能,这两天也是看了不少项目,在研究了bypass-bot-detection、ja3proxy、burp-awesome-tls这些优秀的项目后,以后也是有了一些思路和自己的思考,这里也是对内容进行整理分析和分享一些burp指纹对抗的方法。

以前感觉不是很明显,但是这两年waf明显上的不少了,特别是银行方面的项目,有时候一半的站都有burp指纹拦截,所以感觉自己给工具写一个burp tls ja3指纹绕过还是挺有必要的。

国外waf方面可能会比较多的有这些校验拦截之类的,但是在国内的话,waf做这些方面的会少很多。

额外点

大家有的时候的目光,不用光盯着对抗上面,很多老的方法反而是经久不衰的,就比如下面所有介绍的方法,其实本质上也是绕过waf的一种过程,但是如果你能获取到他的真实ip,只要他没开着强制域名访问,那就waf都不用绕了,省时省力很多了。

burp指纹对抗1-HTTP证书页面特征

1.证书页方面的分析和检测

通过了解,burp会去访问会访问http://burphttp://burp/favicon.ico这样的url,这个大家应该都比较熟悉,这个是一个导出证书所使用的网站,大家应该还是比较熟悉的,但是证书导入到浏览器以后,就没什么作用了,但是不关闭设置的话,他会经常去请求这个网站,这就是特征点了,这里整一个html页面用于检测。

<!DOCTYPE html><htmllang="en"><head>    <metacharset="UTF-8">    <metaname="viewport"content="width=device-width, initial-scale=1.0">    <title>Burp 检测</title></head><body>    <divid="content"></div><h2id='indicator'>Loading...</h2><script>    function burp_found() {        let e = document.getElementById('indicator');        e.innerText = '发现走了burp代理,你是攻击者  !!!';    }    function burp_not_found() {        let e = document.getElementById('indicator');        e.innerText = '未发现走burp代理,顺利通行.';    }</script><imgstyle="display: none;"src='http://burp/favicon.ico'onload='burp_found()'onerror='burp_not_found()'/></body></html>

正常请求该页面,没挂burp代理,访问可以顺利通行。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这里就是一个挂载burp代理的请求,访问网站可以看到很容易就被检测到了

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这些之类的语句也都能进行检测

<imgstyle="display: none;"src='http://burp/favicon.ico'onload='burp_found()'onerror='burp_not_found()'/><linkrel="stylesheet"href="http://burp/"onload='burp_found()'onerror='burp_not_found()'"><scriptsrc="http://burp/test.js"onload='burp_found()'onerror='burp_not_found()'">

2.证书页方面的绕过

如果使用的是SwitchyOmega之类的插件,就可以通过添加不代理的地址列表将burp添加进去就可以了

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后就是也可以通过修改burp的配置来进行绕过

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp指纹对抗2-HTTP报错页面特征

1.报错页面方面的分析

在挂载burp的代理的请求遇到的报错页面是这样的,报错页面中会显示关于burp的一些特征,但是我感觉这方面检测会很少,因为现在大部分感觉就是检测tls ja3值和akamai指纹之类+加一些限制之类的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

2.报错页面方面的绕过

一样在burp设置,打开忽略浏览器的Burp错误信息

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp指纹对抗3-ua头http请求包特征

1.ua头http请求包分析

首先这里看到burp的设置中的匹配和替换,他这里是默认开启了一个请求包ua头的替换的

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这里详细看看,他会将数据包传入的头,默认替换成该User-Agent头,这个也就被当做了一个特征进行处理。

这个的方式处理起来也是挺简单,就是关掉该ua头替换,如果还是不行的话,可以选择替换成其他的ua头也就差不多了

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36

2.ua头http请求包绕过

主要就是取消那个默认的替换就可以了。

如果还有问题的话,可以自己选择替换成别的ua头或者是自己添加,或者就是最干脆的取消所有ua头替换,使用请求头原始的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp指纹对抗4-WebSocket请求头特征

1.请求头特征的分析和检测

首先我们可以使用python做一个ws的请求,走burpsuite的代理

import websocketdef on_open(ws):    print("连接已打开")    ws.send("Hello")if __name__ == "__main__":    ws_url = "ws://echo.websocket.burp" # 替换自己的ws请求url    ws = websocket.WebSocketApp(        ws_url,        on_open=on_open,    )    ws.run_forever(        http_proxy_host="127.0.0.1",        http_proxy_port=8080,        proxy_type="http"    )

这里就可以看到他传输的特征

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后这里对比一下正常传输的,发现是会多一层Sec-Websocket-Extensions请求头的

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

2.请求头特征的分析绕过

还是在设置中进行修改,关掉删除就行了,但是我感觉检测这个的很少,一方面使用的不多,另一方面一些正常的请求也可能会不带这个的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp指纹对抗5-tls ja3指纹修改

1.tls ja3指纹分析

来到关键的内容了,主要的也就是这方面的内容了,tls的ja3值。

TLS 版本、加密套件、扩展和一些值,都是可以从请求中获取的,所以在之前主要用于requests、aiohttp之类的爬虫常用的库的检测,就是防爬虫使用的,后续呢也是加入了burp的这些的ja3指纹了。

首先看到python requests的tls ja3值,这是client和server的tls ja3值

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

也可以在Cipher Suites中看看他的套件,requests使用的套件还是挺多

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后这里看到chrome的tls ja3的值和套件,还是不多的

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后是burp的,这些套件和ja3的指纹都是很明显的传输特征

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这里使用一些检测测试的平台来对burp原始请求进行测试,可以看到提取的burp ja3指纹值也是相同的,而且提示检测是人类的几率是1%,基本就可以判断是一个有问题的请求。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

当然光看这一个平台怎么行,看到另一个平台这里可以看到正常的浏览器是不支持tls1.1和tls1.0的,这是被认为不安全的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

但是在burp代理中,他是支持tls1.1和tls1.0,这也是一方面的小特征,但是感觉关系不是很大。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

2.tls ja3指纹绕过

方法可以结合起来使用

方法一:

比较吃运气的一个方法,我发现一些不同版本的burp的tls ja3指纹不同,而且一些waf只会记录一些版本的tls ja3指纹,所以这就是你切换burp发现有些网站没有被拦截了的原因

这里顺便放一个吾爱Datch burp破解的各个版本的链接,方便大家用于下载

123网盘(不限速 需登录 免客户端 )[https://www.123pan.com/s/F2W5Vv-Rk7Vv.html[1]](https://www.123pan.com/s/F2W5Vv-Rk7Vv.html[2])提取码:52pj

百度网盘链接:[https://pan.baidu.com/s/1J_CUxLKqC0h3Ypg4sQV0_g[3]](https://pan.baidu.com/s/1J_CUxLKqC0h3Ypg4sQV0_g[4])提取码:52pj

方法二:

修改tls加密套件,虽然 burp的源码我们是获取不了,也不能修改的,但是我们可以对他的套件进行一些修改

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

修改完套件,我这里是做一些增加的,这里可以看到他的client的tls ja3的值是发生了一些改变了

但是在waf的检测平台中,他还是被认为是有问题的,所以简单的修改套件的话,有些作用,但是作用不大

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

方法三:

这就是我也在做的方法,就是搞一个tls ja3指纹修改的插件。

现在基本都是使用中转的方法,因为burp是没有源码方面泄露的嘛,所以基本都只能burp走一个上层代理,进行修改ja3指纹,burp-awesome-tls就是这样的。

下面展示的是ja3proxy、burp-awesome-tls、Bypass_bot_detection的效果。

结论:burp-awesome-tls自定义伪装效果最佳,Bypass_bot_detection效果感觉是很不错的,Bypass_bot_detection可以选择单个url进行修改绕过,针对性比较强不会干扰到其他插件方面的运行。

我们首先尝试ja3proxy的效果,首先在本地起一个端口,然后给burp挂上,上级代理

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

可以看到基本都是变化了,重要的是请求也基本正常了,因为我们是模拟成了一个360的浏览器的请求了

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后这里看到Bypass_bot_detection的效果,他是burp的插件,他的好处呢,就是不会怎么影响到其他插件的运行,而且他不会对所有请求url进行修改,

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

最后就是我们所熟知的burp-awesome-tls,不愧是更新了很久的插件了,普遍检测都在90%以上。

但是的话,他是在本地起一个端口,走代理修改的,就所有流量都会经过自己本地的127.0.0.1起的一个端口,就导致了可能会对一些插件的运行会造成一些影响。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

Python-requests tls指纹修改

1.requests tls指纹分析

首先的话,requests的指纹我们在上面看过了,为什么要单独搞一个呢,因为可以简单修改一下库的源码,当前是简单的修改一下,难的我也搞不太了,这里可以做一些简单的绕过。

首先requests常用于爬虫之类的,所以也是肯定是被一些waf记录的,这里我们首先看到这里,这里他是去请求一个挂着可以拦截爬虫的网站。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后这里我们看一下requests的ja3 指纹,首先可以看到他的ja3指纹,然后就是发现他的akamai指纹甚至是空,这个问题也是很大的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

2.requets tls指纹绕过

方法一:

首先就是一个库啊,curl_cffi库,一个魔改后的库,可以模拟各种浏览器的指纹,看看下面效果还是挺不错的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

方法二:

想到一劳永逸的方法肯定是修改源码,但是ssl的不好改,tls的套件我们还是挺好改。

这里我们要知道requests其实就是对urllib的一个封装,这里我们去找到我们python目录下面的urllib3的ssl,通过该命令我们可以直接获取urllib3的位置

python3 -c "import urllib3; print(urllib3.__file__)"
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后在它的util目录下面,找到ssl_.py

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这里搜索到DEFAULT_CIPHERS,这里可以看到他使用的一些套件加密,这里对其中两个进行注释

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后重新去请求可以看到ja3的值变化了,但是有问题akamai指纹的值是没有东西,所以该方法只能绕过一些简单的waf,就是那些只记录了默认tls的ja3值的waf的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp如何绕过CloudFlare的指纹护盾

cloudFlare是国外的waf,算是一个挺常见的waf了,他的指纹方面主要就是这几个方面

1.tls ja3指纹2.HTTP/2 指纹3.请求头信息4.js 指纹信息(获取浏览器、操作系统和硬件信息,用于区分真人或者机器人)5.行为检测(请求的频率 之类的)

注意点:

如果没有绕过成功,可能有以下几种原因:

1.他有请求的频率限制,这个是结合js获取的指纹信息,如果都尝试了没有成功,可以尝试换一个浏览器,可能当前浏览器和自己的指纹被记录了2.注意一些被动扫描的插件,导致的一些poc请求,这些可能会导致ip被禁掉

绕过步骤:

我们主要需要先绕过前面三个,才能谈后续的内容

1.在挂着burp代理的,去请求某个网站,提示报错,这个页面很明显就是CloudFlare waf的页面

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

2.首先就是尝试去伪装tls ja3和HTTP/2的指纹,我这里使用的是bypass-bot-detection,设置对该域名设置指纹和HTTP2

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

3.发现还是存在问题,这里之前说过burp还有一个ua头的绕过,特别是CloudFlare有对请求头的内容进行查看

特别是Accept、User-Agent的之类头的校验是比较严格的,这里看到修改后,成功绕过CloudFlare waf的指纹认证。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

burp-awesome-tls源码及流程分析

然后来到我们的源码及其流程分析,首先看到burp-awesome-tls,这里我们可以看到分成两部分的,一个是go写的、另一个方面是java的。

go部分主要是代理服务器修改tls所使用的。

java部分主要就是插件前端各个部分的内容。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

java部分没什么好说,其实主要就是页面设置的一些东西,主要部分内容在这里,ServerLibrary.java中,可以看到他会先去判断本地的环境,比如是windows就dll文件等,而他加载的文件就是上面go编译的。

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

这里看到go的内容,首先就是主入口main.go文件,这里声明好了import "C",就是为了允许 Go 代码与 C 代码交互,首先通过输入的参数,通过server.StartServer()启动端口

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

在启动端口的时候,这里也会去做一些初始化的操作,比如NewCertificateAuthority,他会去生成自签名 CA 证书

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后他就会从请求头中提取配置信息

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后在这里判断是否要使用我们的截获的HexHelloClient

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

然后我们需要知道他所使用的指纹是哪里获取的,这里看到fingerprints.go,可以看到他是从https://github.com/bogdanfinn/tls-client/blob/master/profiles/profiles.go[5]中获取的各个浏览器指纹内容

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析
Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

最后就是设置我们请求的内容,将内容发送过去

Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

参考文件及工具:

https://s1nja.github.io/2025/03/29/Burpsuite%E7%89%B9%E5%BE%81%E6%A3%80%E6%B5%8B%E5%AF%B9%E6%8A%97/index.html

https://github.com/bright-cn/bypass-cloudflare

https://ares-x.com/2021/04/18/SSL-%E6%8C%87%E7%BA%B9%E8%AF%86%E5%88%AB%E5%92%8C%E7%BB%95%E8%BF%87/

https://github.com/LyleMi/ja3proxy

https://github.com/sleeyax/burp-awesome-tls

https://github.com/PortSwigger/bypass-bot-detection

原文始发于微信公众号(深潜sec安全团队):Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月14日15:25:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Burpsuite-http|ws|tls指纹对抗分析以及绕过 及如何绕过CloudFlare的指纹护盾 小部分源码分析https://cn-sec.com/archives/4062467.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息