一个用于对 HTTP 响应进行聚类以发现异常值的 Burp Suite 扩展。
这是我多年来一直想构建的一个插件,原因很简单:我对我们在 Burp intruder 中分析模糊测试攻击结果的方式感到有些恼火。在模糊测试攻击中,我们通常寻找服务器响应的变化。而我们通过查看状态码、响应时间和响应大小来寻找这些差异。所有这些都是对响应内容的间接度量。当然,作为渗透测试人员,我们没有时间去阅读数千个服务器的内容来寻找响应内容的差异。但我们当然可以让算法替我们完成这件事。
这就是这个插件的用武之地。它使用文本聚类技术来分析响应的内容,并根据相似度将它们分组到不同的簇中。它为你提供了另一种查看 intruder 模糊测试攻击结果的方式,并快速识别出那些不同的服务器响应。
Colonel Clustered 提供两种不同的算法来执行响应聚类。默认算法相对较快,另有一个可选的深度分析算法,擅长发现异常值,但扩展性不佳。好吧,两者扩展性都不好,我不建议向这个插件投喂 5 万条响应。较快/默认算法的复杂度为 O(n^2),而深度分析算法的复杂度为 O(n^3)。所以在将 intruder 结果发送给它处理时请记住这一点。
内容感知分词:该扩展首先检查每个响应的 Content-Type 头,以应用最智能的分词策略:
预分组:为了在数千条响应的情况下仍保持快速,该扩展执行一次遍历,将所有完全相同的响应分组。它计算每个响应 token 集合的哈希值,并将所有共享相同哈希值的项分组。这意味着昂贵的聚类算法只需在规模小得多的唯一响应正文集合上运行。
双聚类算法:Colonel Clustered 提供两种不同的聚类算法:
快速扫描(默认):当你向该扩展发送多个请求/响应时,会自动运行一种高性能的基于 DBSCAN 的算法。
深度分析(手动触发):原始的、计算量更大的层次聚类算法可通过 "Deep Analysis" 按钮使用。此选项专为需要更细粒度且可能不同的聚类视角的场景而设计,利用 Average Linkage 来改善簇的内聚性。
异常值合并:聚类后,任何仅包含单个唯一成员的组都被视为异常值。所有此类异常值随后会在 UI 中合并为一个方便的 "Outliers" 组。
这两种算法应该能提供一种简便的方法来自动识别内容不同的服务器响应,即使响应大小是响应差异的不可靠度量时也是如此。
加载扩展:
发送响应进行分析:
执行深度分析(可选):
在四窗格 UI 中分析结果:
Request/Response Pair:该项的原始索引。Status Code:HTTP 响应状态码。Length:响应正文的长度(以字节为单位)。Content-Type:响应的 Content-Type 头。
本项目使用 Gradle。你需要安装 JDK 17 才能构建该插件。
git clone <repository-url>
cd ColonelClustered
./gradlew build
build/libs/ColonelClustered.jar。Drew Kirkpatrick
@hoodoer
[email protected]
你可以在 Blackthorne Consulting 找到我。
本项目根据 Unlicense 发布到公共领域。详情请参阅 LICENSE 文件。