Burpsuite 特征检测对抗
BurpSuite 是一款广泛使用的 web 应用程序安全测试工具。然而,越来越多的站点、应用程序、安全设备开始部署检测机制,以识别和阻止通过Burp的流量,这种情况导致我们在进行测试时无法正常抓包,从而影响整个测试过程,所以本文主要研究burp的常见特征以及绕过检测的隐藏方式。
HTTP特征
当使用BurpSuite时,经常会访问http://burp
和http://burpsuite
这类页面。这些页面主要用于导出证书,当证书导入到浏览器后就不再有实际作用。然而,这些访问行为也成为了BurpSuite的典型流量特征之一。
证书页
写个demo,模拟下检测过程
当攻击者访问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
代理
2、设置burp主机名不走代理
报错页
即使关闭http://burp
后,通过报错页仍能显示burp特征
检测绕过
关闭报错在浏览器中显示即可
WebSocket请求头检测
Sec-WebSocket-Extensions
Sec-WebSocket-Extensions是用于在 WebSocket 连接期间协商和传输 WebSocket 扩展的HTTP标头,当发起websocket连接时,会在 HTTP 请求中添加 Sec-WebSocket-Extensions
请求头,用于声明并协商使用的 WebSocket 扩展。而当websocket连接经过burp代理后会将其删除,因此这也便是明显特征之一。
开启burp代理时
关闭burp代理后
通过建立websocket连接,查看请求包中是否存在Sec-WebSocket-Extensions
便可判断是否使用burp代理
检测绕过
是否Sec-WebSocket-Extensions请求头是通过burp的Strip Sec-WebSocket-Extensions headers in incoming requests
设置选项决定的。默认情况下,Burp 删除此标头以减少使用扩展名的机会.如果服务器要求特定的扩展名,则可取消选中此选项.
此时开启burp代理,进行抓包,Sec-WebSocket-Extensions请求头仍然存在
TLS指纹
许多服务器使用 TLS 指纹技术来识别和检测客户端的特性。TLS 指纹包括客户端发送的 TLS 握手消息中的一系列参数,如:TLS 版本、加密套件、扩展等。通过抓包便可直观的看到这些信息:
burp默认使用所有Cipher Suites,因此会有比较明显的特征
检测绕过
1、添加删除几个burp的Cipher套件
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 |
使用前:
使用后:
可以看到大部分ip都变为了ipv6的形式,并且hash从8bd06f4341a65d44a68bd2cef7cbedc6
变成了cd08e31494f9531f560d64c695473da9
从前后数据包对比也不难看出