Response OverviewとColonel Clustered:Burpのレスポンスを内容でグループ化する

現在地:ホーム / ハッキングツール / Response OverviewとColonel Clustered – Burpのレスポンスを内容でグループ化する

Intruderの攻撃結果をステータスコードと長さで並べ替えれば、サイズが異なるレスポンスは見つかります。しかし、内容だけが異なるレスポンスは見逃してしまいます。Drew KirkpatrickがColonel Clusteredの紹介に使った例では、すべてのレスポンスが同じサイズでした。それでも、あるID値に対してだけ、数百行あるうちの1行が異なっていました。長さの列では、この違いはまったく見えません。

Image

Response OverviewとColonel Clusteredは、レスポンスを内容でグループ化する2つのBurp Suite拡張機能です。Response Overviewは、対象となるスコープ内のレスポンスが届くたびに振り分けます。Colonel Clusteredは、ユーザーが送信したレスポンスをまとめてグループ化します。

Advertisement

Discover more

Hacking tools directory

Cybersecurity training courses

Cyber security news

Response Overview:しきい値を自分で設定する

Response OverviewはBApp Storeからインストールできます。ストアにはバージョン1.6.0(2026年1月20日更新)が掲載されており、ProfessionalとCommunityの両エディションに対応しています。

ストアの手順は簡潔です。まず対象をスコープに追加し、Proxy、Scanner、Repeater、Intruderなど任意のツールでいつもどおりテストします。次にResponse Overviewタブを開き、任意の列で並べ替えて、小さなグループや珍しいステータスコードを調べます。確認が済んだ項目は、右クリックしてHide item(s)を選ぶと一覧から消せます。

各行は、代表となる1件のレスポンスとグループのサイズを表しています。レスポンスは、同じHTTPステータスコードを持つグループとだけ比較されます。その中で、各グループの最初のメンバーと照らし合わせます。類似度のしきい値(デフォルトは98%)を満たす最初のグループに加わり、どれにも該当しなければ新しいグループを作ります。

デフォルトでは、比較の前にリクエストパラメータの反映部分を除去します。対象は、8文字を超える名前と値で、デコード後とエンコード後の形式も含みます。そのため、長いペイロードがそのまま返されても、グループは分割されません。

デフォルトでは、スコープ内で1 MiB未満のレスポンスだけを対象にします。この上限は設定で変更できます。また、関心の薄いMIMEタイプやファイル拡張子、一般的なWebサーバーの標準エラーページはスキップします。

見逃す可能性があるケース。類似度は、Pythonのdifflib方式の比率で算出します。ただし、バイトの並び順ではなく、各バイトの出現頻度をもとに計算します。ソースコードには「ABBA and BAAB and BABA are all the same」と書かれています。

そのため、同じ文字を異なる順序で含む2つのレスポンスが、同一グループに入ることがあります。たとえば、表の中で2つの値が入れ替わっているケースです。8文字以下のペイロードは除去されないため、短い反映入力があるとグループが分割される場合もあります。

同じステータスコードとボディサイズを持つグループが30個に達すると、そのステータスとサイズのレスポンスはそれ以降まるごとスキップされます。表示されるグループサイズは実際より少なくなります。ソースコードでは、正確なカウントよりも速度を優先しています。

Colonel Clustered:しきい値を自動で決める

Kirkpatrickの解説では、まずIntruderの攻撃を最後まで実行します。次に、結果をすべて選択して右クリックし、Send to Colonel Clusteredを選びます。その後、「Col. Clustered」タブに切り替えると、デフォルトのFast Scanが実行されます。

このタブは4つのペインで構成されています。左上には、メンバー数付きのクラスタと、独立したOutliersグループが表示されます。その下には、選択したクラスタのメンバーが、ステータスコード、長さ、Content-Typeとともに並びます。これらは列ごとに並べ替えられます。右側にはリクエストとレスポンスのビューアがあります。

見るときは、小さいほうから確認します。メンバーが1つだけのクラスタやOutliersの項目は、他のどれにも似ていないレスポンスです。解説では、メンバーが1つだけのクラスタを選び、Burp Comparerで何が違ったのかを正確に確かめています。

内部では、各レスポンスをContent-Typeに応じて読み取ります。HTMLの場合は、タグとスクリプトを取り除き、表示テキストを5文字ずつのチャンクに分割します。このとき数字は正規化します。テンプレート内でIDが変わっても、1つのページが多数に分かれないようにするためです。

JSONでは、値を無視してキーとその入れ子構造だけを残します。バイナリデータは、5バイトの並びとして比較します。

同一のトークン集合は統合されます。その後、Fast ScanでDBSCANを実行します。近傍距離は、ユーザーが指定するのではなく、Kneedleアルゴリズムで選ばれます。より低速なDeep Analysisはボタンから起動します。こちらはJaccard距離から階層的にクラスタを構築し、クラスタの統合状況に基づいてしきい値を決めます。

見逃す可能性があるケース。テンプレート化されたページをまとめるためのルールが、ファジングで探している違いまで隠してしまうことがあります。最初に確認したいのはこの点です。

変わるのが値だけのJSONレスポンスは、近隣のレスポンスと同じキーを持つため、同じクラスタに入ります。たとえば、ロールが違う場合や、同じフィールド内のエラー文字列が違う場合です。数字は正規化されます。そのため、IDや件数、残高のように数字だけが変わる場合も、ページが別のクラスタに分かれない可能性があります。

作者は、高速アルゴリズムが「ほとんどの場合うまく機能した」と述べています。2つ目の例では、明らかに異なる2つのレスポンスが大きなクラスタにまとめられてしまいました。ただし、Intruderのサイズ、ステータスコード、Content-Typeの各列を見れば、違いに気づけたはずです。

Deep Analysisでは、その2つが独立したクラスタに分けられました。大きなクラスタのメンバー間でこれらの列に違いがある場合は、Deep Analysisを実行してください。処理が遅すぎる場合は、キャンセルもできます。

作者は、計算量をデフォルトでO(n²)、Deep AnalysisでO(n³)としています。また「このプラグインに5万件のレスポンスを投げるのはためらう」と述べています。攻撃結果は絞り込んだ一部を送るようにしましょう。

比較表

Response Overview Colonel Clustered
実行タイミング Burpのあらゆるツールから届く、対象のスコープ内レスポンスに対して常時実行 送信した項目に対してオンデマンドで実行
類似度のしきい値 ユーザーが設定(デフォルトは98%) 自動で決定。Fast ScanではKneedle、Deep Analysisでは統合距離を使用
比較の対象 バイトの出現頻度。デフォルトでは、8文字を超える反映パラメータの名前と値を先に除去 内容を考慮したトークン(表示テキスト、JSON構造、バイト列)
ステータスコード 同じステータスのレスポンスだけを比較 列として表示。READMEには、クラスタリングに影響するとの記載なし
隠れてしまう可能性があるもの 順序だけが異なる同じバイト列。短い反映ペイロードがあるとグループが分割される場合あり キーが同じJSONで値だけが変わった場合。数字だけの変化
入手方法 BApp Store(ProfessionalとCommunity) GitHubのリリースjarまたはビルド。2026年9月29日時点でBApp Storeには未掲載

どちらを選ぶか

Response Overviewは、案件全体をバックグラウンドで見渡すためのビューです。BApp StoreからCommunity版でも入手できます。スコープを設定して動かしたままにしておき、あとで小さなグループを確認します。

通常のばらつきでグループが増えすぎる場合は、類似度のしきい値を下げます。意味のある違いを持つレスポンスがまとめられてしまう場合は、しきい値を上げます。ステータスコードで分割する仕様のため、同じボディを持つ200と500は別々に扱われます。一方で、1つのページが2種類のコードで返された場合も、2つのグループに分かれます。

Colonel Clusteredは、すでに絞り込んだ一括データ(たとえば1回のIntruder攻撃)に向いています。しきい値を選ばなくてよい点が最大の利点です。

Colonel Clusteredでは、クラスタを開いてメンバーを読めます。Response Overviewは、グループごとに代表を1件だけ表示します。そのため、件数だけでは、背後にあるレスポンスがすべて一致していると判断できません。値の変化が重要な場合は、元のIntruderやProxyの結果に戻り、そのエンドポイントのレスポンスを複数件比較してください。

ファジング中のパラメータがJSON内の値を変える場合は、Colonel Clusteredの大きなクラスタでも同様に確認してください。トークン化の仕組み上、そうしたレスポンスは1つにまとめられてしまうためです。ページ上の数字だけが変わる場合も、大きなクラスタを確認してください。数字の正規化によって、変化が隠れる可能性があります。

Colonel Clusteredの入手方法

2026年1月3日のv1.0.0リリースには、ビルド済みのColonelClustered.jarが含まれています。BurpのExtensions > Addから読み込んでください。READMEでv1.0.1とされている最新のソースをビルドするには、JDK 17が必要です。

git clonehttps://github.com/hoodoer/ColonelClustered.git

cd ColonelClustered

./gradlew build

jarはbuild/libs/ColonelClustered.jarに生成されます。Burp Communityで動作するかどうかは、READMEに記載がありません。

Kirkpatrickの解説によると、PortSwiggerのBApp Storeへ申請済みですが、拡張機能の審査が滞っているとのことです。筆者が確認した時点では、まだ掲載されていませんでした。

このアイデアの背景

当サイトが2007年1月にBurp Suite 1.01を取り上げた時点で、すでにIntruderとサードパーティ製拡張機能向けのインターフェースがありました。今回の2つの拡張機能が変えるのは、攻撃後の工程です。結果を1行ずつ読む代わりに、グループ単位で読むようになります。

Response Overview自身のヘルプテキストによると、その源流はmodzeroのTobias Ospeltが作ったPython拡張機能ResponseClustererにあります。これは「似たレスポンスをまとめ、クラスタごとにリクエストとレスポンスを1件ずつ示す要約を表示する」ツールで、最後にプッシュされたのは2019年6月です。Ospeltは、これが「Burpのパフォーマンスを食っているかもしれない」と気づきました。2021年にツールが動かなくなると、機能を変えてKotlinで新しい拡張機能を書きました。

Response OverviewはBApp Storeからインストールできます(ソース:https://github.com/pentagridsec/PentagridResponseOverview)。Colonel Clusteredはhttps://github.com/hoodoer/ColonelClusteredで入手できます。作者による解説はTrustedSecのブログにあります。

翻訳元: https://www.darknet.org.uk/2026/10/response-overview-colonel-clustered-burp-response-grouping/

本記事は darknet.org.uk の記事を翻訳・要約したものです。