
AES暗号化トラフィックをリアルタイムで復号するBurpプラグイン
AES 暗号化トラフィックをオンザフライで復号化する Burpsuite プラグイン
注意: 現在、AES/CBC/PKCS5Padding および AES/ECB/PKCS5Padding の暗号化/復号化をサポートしています。
$ git clone https://github.com/Ebryx/AES-Killer/
$ cd AES-Killer
$ ./gradlew clean build
AES_Killer-Parameters.java: 例えば、アプリケーションがリクエストの一部のパラメータに暗号化を強制しており、これらのパラメータがエンドポイント/リクエストごとに変化する場合、以下のようにするだけです。
- registerExtenderCallbacks 関数内で this.endpoints.add("abc"); を追加してエンドポイントを追加します
- `String[][] parameters` に暗号化されるパラメータを追加します
- 残りのパラメータは grant_type に追加するか、空のエントリにします
コードが自動的に処理します。
AES_Killer_v3.0.java: このバリアントは汎用的で、GET、POST(Form、JSON)など、あらゆるタイプのリクエスト形式を扱うことができ、異なるエンドポイント上の代替パラメータにも対応します。
- プロジェクトをクローンし、BurpExtender.java を AES_Killer_v3.0.java のコードで置き換えます - 以下に示すように、各リクエストタイプのエンドポイントとパラメータを順に変更します - SecretKey と IV のパラメータ、およびその他の必要なメソッドを更新します - プロジェクトをビルドすれば完了です
AES_Killer_v4.0.java: このバリアントはマルチレベル暗号化用で、アプリケーションが一部のリクエストパラメータを一方の鍵で暗号化し、その後リクエスト本文全体を別の鍵で暗号化する場合に使用します。
- プロジェクトをクローンし、BurpExtender.java を AES_Killer_v4.0.java のコードで置き換えます - 以下に示すように、エンドポイントとパラメータを変更します - 秘密鍵とその他の必要なメソッドを更新します - プロジェクトをビルドし、jar ファイルをエクステンダーに追加します
注意: これらのバリアントは、リクエストの性質上、そのままでは機能しない可能性があるため、多少の調整が必要になる場合があります。
リリースから jar ファイルをダウンロードし、Burpsuite に追加します
Secret Key フィールドに SecretSpecKey を入力しますInitialize Vector フィールドに IV を入力しますStart AES Killer を押します
AES Killer を起動すると、Burp の IHttpListener.processHttpMessage を制御します。これはすべての送信トラフィックと受信トラフィックを処理し、AES Killer は以下の処理を行います。
ProcessHttpMessage がリクエストを暗号化しますProcessHttpMessage は最初にレスポンスを復号化してから表示しますそのため、平文のレスポンスのみを取得でき、平文のリクエストを操作できます。
AES Killer を使用して、文字列を手動で暗号化および復号化することもできます。リクエストから暗号化された文字列 TYROd49FWJjYBfv02oiUzwRQgxWMWiw4W3oCqvNf8h3bnb7X0bobypFzMt797CYU を取得し、AES Killer で復号化してみましょう。同様に、暗号化も実行できます。
デモアプリは こちらからダウンロードしてください