​ BurpSuite 是一款广泛使用的 web 应用程序安全测试工具。然而,越来越多的站点、应用程序、安全设备开始部署检测机制,以识别和阻止通过Burp的流量,这种情况导致我们在进行测试时无法正常抓包,从而影响整个测试过程,所以本文主要研究burp的常见特征以及绕过检测的隐藏方式。

HTTP特征

​ 当使用BurpSuite时,经常会访问http://burphttp://burpsuite这类页面。这些页面主要用于导出证书,当证书导入到浏览器后就不再有实际作用。然而,这些访问行为也成为了BurpSuite的典型流量特征之一。

证书页

​ 写个demo,模拟下检测过程

image-20240718175449792

当攻击者访问index时,如果检测到burp流量特征,则直接跳转到check页面,防止进一步请求。这里使用的是iframe标签,不受跨域请求限制,除此外还有:

  • img

favicon.ico在resources/Media/路径下,删除即可,但请求后仍会返回错误页回显burp特征

1
<img src="http://burp/favicon.ico" onload="window.location.href='/hack'" onerror="console.log('无法访问目标主机')">
  • link
1
<link rel="stylesheet" href="http://burp/" onload="window.location.href='/hack'" onerror="console.log('无法访问目标主机')">
  • script
1
<script src="http://burp/test.js" onload="window.location.href='/hack'" onerror="console.log('无法访问目标主机')"></script>

检测绕过

1、关闭http://burp代理

image-20240718181246563

2、设置burp主机名不走代理

image-20240718181731592

报错页

​ 即使关闭http://burp后,通过报错页仍能显示burp特征

image-20240718182403682

检测绕过

关闭报错在浏览器中显示即可

image-20240718203931449

WebSocket请求头检测

Sec-WebSocket-Extensions

​ Sec-WebSocket-Extensions是用于在 WebSocket 连接期间协商和传输 WebSocket 扩展的HTTP标头,当发起websocket连接时,会在 HTTP 请求中添加 Sec-WebSocket-Extensions 请求头,用于声明并协商使用的 WebSocket 扩展。而当websocket连接经过burp代理后会将其删除,因此这也便是明显特征之一。

开启burp代理时

image-20240718230215657

关闭burp代理后

image-20240718230253899

通过建立websocket连接,查看请求包中是否存在Sec-WebSocket-Extensions便可判断是否使用burp代理

检测绕过

​ 是否Sec-WebSocket-Extensions请求头是通过burp的Strip Sec-WebSocket-Extensions headers in incoming requests设置选项决定的。默认情况下,Burp 删除此标头以减少使用扩展名的机会.如果服务器要求特定的扩展名,则可取消选中此选项.

image-20240718231755732

此时开启burp代理,进行抓包,Sec-WebSocket-Extensions请求头仍然存在

image-20240718232050810

TLS指纹

​ 许多服务器使用 TLS 指纹技术来识别和检测客户端的特性。TLS 指纹包括客户端发送的 TLS 握手消息中的一系列参数,如:TLS 版本、加密套件、扩展等。通过抓包便可直观的看到这些信息:

image-20240719001633223

burp默认使用所有Cipher Suites,因此会有比较明显的特征

image-20240719002715595

检测绕过

1、添加删除几个burp的Cipher套件

image-20240719001953995

2、使用burp插件:burp-awesome-tls

​ 该扩展可劫持 Burp 的 HTTP 和 TLS 堆栈,让您可以欺骗任何浏览器的 TLS 指纹 (JA3)。它增强了 Burp Suite 的功能,同时降低了各种 WAF(如 CloudFlare、PerimeterX、Akamai、DataDome 等)识别指纹的可能性。

可以通过ja3工具查看下使用前后差异,ja3的主要原理是将TLS 握手时客户端发送的 Client Hello 里面的 Version + Cipher Suites + Extensions 提取出来进行MD5计算

1
python ja3.py burp.pcapng

使用前:

image-20240719003155743

使用后:

可以看到大部分ip都变为了ipv6的形式,并且hash从8bd06f4341a65d44a68bd2cef7cbedc6变成了cd08e31494f9531f560d64c695473da9

image-20240719003246877

从前后数据包对比也不难看出

image-20240719004256272

参考文章

精确判断网站访问者是否是黑客的方法 (qq.com)

Burpsuite 特征识别及其对抗措施 - rmb122’s notebook

【知道创宇小课堂】防止Burp被识别 (qq.com)