
Blue Pigeonは、Bluetoothベースのデータ漏洩およびプロキシツールであり、リモートのコマンド&コントロール(C2)サーバーと侵害されたホストとの間の通信を可能にします。
Blue Pigeon: Bluetoothを利用したレッドチーム向けデータ流出・プロキシツール
Blue PigeonはBluetoothベースのデータ流出およびプロキシツールで、リモートのC2(Command and Control)サーバーと侵害されたホストとの通信を可能にします。
カワラバトがメッセージを巣に運ぶ能力に触発され、Blue Pigeonはその帰巣行動を模倣し、エージェント(侵害されたホスト)とその巣(モバイルアプリケーション、その後C2サーバーにプロキシされる)の間でメッセージやペイロードを届けます。
Blue Pigeonはレッドチームメンバーが侵害されたホストの近くに展開するAndroidアプリケーションとして開発されており、特に従来の通信チャネル(Web、電子メール、DNSなど)が利用できないレッドチームオペレーションに役立ちます。
MITRE AT&CKフレームワークのExfiltration戦術における「代替プロトコル経由のデータ流出」技術(ID: T1048)を拡張し、Blue PigeonはBluetoothファイル共有を流出媒体として利用することで、Cyber Kill ChainのAction on ObjectiveとしてC2の確立とデータ流出を実行する新たな方法を提供します。
Blue Pigeonは@mahchiahui、@jingloon、@cloudkanghaoによって作成されました。
(出典: https://spectrum.ieee.org/tech-history/silicon-revolution/consider-the-pigeon-a-surprisingly-capable-technology)
C2の確立とデータ流出の実行はCyber Kill Chainの重要なフェーズですが、誤った実行は深刻な結果を招き、ネットワークアクティビティログに永続的な痕跡を残し、検出機構に警報を発する可能性があります。
一部のレッドチーミング演習では、従来のチャネル(Web、電子メール、DNS)を通さずにデータを流出させ、侵害されたホストと通信する方法が必要であると感じました。
このニーズに対応する既存のソリューションは少なく、無線/無線通信ベクトルに基づくさまざまな流出アイデアを模索しました。その結果、レッドチームツールセットを拡張するためにBlue Pigeonが作成されました。
Blue PigeonはAndroidスマートフォン上でフォアグラウンドサービスとして動作します。レッドチームメンバー/悪意のある内部関係者がスマートフォンを侵害されたホスト(Blue Dispatcherペイロードに感染)の近くに展開すると、Blue Pigeonは流出ポイントおよびリモートC2サーバー(別名Blue Coop)へのコマンド中継プロキシとして機能します。
Blue Pigeonは以下の主要要件に基づいて設計されました:
Blue Pigeonは、さまざまなレベルでの検出を回避しながらデータ流出を可能にしなければなりません。
ネットワークトラフィック検出の回避: 侵害されたホストからのデータ流出は、従来の通信チャネルを通じて行うことはできません。なぜなら、それらは通常のエンドポイント検出・応答(EDR)によってログ記録・監視される可能性が高いからです(そして、すでに多くの優れた選択肢があるため、車輪の再発明をする必要はありませんよね?)。
人間による検出の回避: データ流出は被害者のマシン上に視覚的な兆候を一切残さずに行われなければなりません。最悪の場合、被害者がまだ侵害されたマシンを使用している可能性があります。
Blue Pigeonはステルス性を維持しなければなりません。つまり、現場に展開された状態で目立たないようにすることです。
かさばるノートPCやRaspberry Pi、自作ハッカーキットは絶対に避けるべきです。なぜなら、展開の可能性と実現性が制限されるからです。小さくて無害そうな鳩が必要であり、派手な孔雀ではありません!
Blue Pigeonは通常のAndroidスマートフォンに隠れており、レッドチームメンバー/悪意のある内部関係者が現場に持ち込めます。誰もスマートフォンを疑いません...
万一レッドチームメンバーが検査を求められた場合、Blue Pigeonは作戦の状況に合わせて無害そうなアプリケーションに偽装できます。基本の概念実証では、モバイルアプリケーションはバッテリー最適化アプリに偽装されています。リポジトリをフォークして、Blue Pigeonの外観を自由にカスタマイズしてください!
Blue Pigeonは、電話を展開する際にレッドチームメンバーが流出企図の兆候を漏らすことを避けるべきです。
レッドチームメンバーはアプリケーションを起動し、スマートフォンを侵害されたマシンの近くに持っていくだけで済みます。
Blue Pigeonはスマートフォンのバックグラウンドで動作し、画面をオンにしておく必要はありません。
Blue Pigeonは受信メッセージを自動的に消費し、レッドチームメンバーがファイル転送リクエストのポップアップを手動で承認する必要はありません(実際にはポップアップすら表示されません)。
Blue Pigeonは、展開中に(そして展開中の侵害されたホストに対してのみ)最大限の可用性を維持しなければなりません。
Blue Pigeonは、レッドチームメンバーによる定期的な介入なしに、受信メッセージをキャッチし続けることができなければなりません。
Blue Pigeonは悪意のあるリクエスト/DoS攻撃に耐え、意図されたホストに対する可用性を維持できなければなりません。
Blue Pigeonは、侵害されたホストがスキャンして接続できるように、永続的に検出可能モードを維持できます。
HMACベースの認証とファイル名のランダム化を採用し、DoS攻撃やリプレイ攻撃を軽減します。Blue Pigeonは、設定可能な秘密のパスフレーズによる認証後にのみファイル転送リクエストを受け入れます。
Blue Pigeonは以下の3つのコンポーネントからなるフレームワークとして設計されています:
Blue PigeonはAndroidモバイルアプリケーションで、侵害されたホストとC2サーバー(別名Blue Coop)の間の中継プロキシとして機能します。Blue Pigeonは従来のBluetoothファイル共有(OBEXを使用)を介して侵害されたホスト(Blue Dispatcherペイロードに感染)と通信します。データはテキストファイル内のJSONオブジェクトとしてホストから流出されます。これはcom.csg.bluepigeon.pigeonパッケージのBluePigeonListenerクラスを編集することでカスタマイズでき、その後リモートのBlue Coopに中継できます。受信後、メッセージのコピーは/sdcard/blue_pigeon/backupディレクトリにも保存されます。
このリポジトリでは、Blue Pigeonはシンプルなバッテリー最適化アプリケーションの形で提供されています。ただし、他のUIスタイルに変更することも可能です。com.csg.bluepigeon.uiパッケージを編集して、作戦のニーズに合わせてBlue PigeonのUIを自由にカスタマイズしてください。
何もありませんよ…ただの無害なバッテリー最適化アプリです!
Blue Beakパッケージには、最新のAndroid(Android 9/10)のBluetooth API制限を回避するために書かれたカスタムEdXposed Frameworkフック*のセットが含まれています:
BlueBeakHook - 着信ファイル転送リクエストを検査し、消費するかどうかを決定します。設定可能な秘密のパスフレーズを使用した認証を採用し、受信メッセージが信頼できるソースからのものであることを確認します。誤って悪意のある大きなリクエスト(DoSによる占有攻撃の緩和)を消費しないようにします。また、以前に消費されたファイル名を拒否します(リプレイ攻撃によるDoSの緩和)。(セキュリティ上の考慮事項を参照)
CooCooHook - デフォルトのAndroid Bluetooth検出可能モードのタイムアウトをバイパスし、スマートフォンが現場に展開されている間、発見パケットをブロードキャストし続けるようにします。これは、侵害されたホストが作戦中の任意の時点でBlue Pigeonをスキャンして接続できるようにするために必要です。
NoPopupHook - Android OSのBluetoothファイル転送ポップアップ生成をバイパスし、コードによるリクエストの受け入れ/拒否を可能にします。これにより、レッドチームメンバーが常に電話で受信メッセージを受け入れる必要がなくなります。怪しいですよ、怪しい…
BirdIsAliveHook - システム時計の横に小さな視覚的インジケータを表示し、すべてが正常で展開準備が整っていることを示します。
コンセプトアートはかなり正確でした!
*なぜEdXposedなのか? 概念化段階の初期に2つの大きな問題に直面しました:
1. セキュリティ上の懸念から、現代のAndroid OSはアプリがプログラムで着信Bluetoothファイル転送リクエストを受け入れたりフィルタリングしたりすることを許可しなくなりました。Blue Pigeonの動作方法は、着信リクエストを検査し、リアルタイムで受け入れまたは拒否することに依存しているため、これが問題となります。
2. AndroidのBluetooth検出可能モードのデフォルトの最大タイムアウト時間は3600秒(1時間)です。この制限に従うと、レッドチームメンバーが頻繁にBlue Pigeonを手動で更新する必要があり、非現実的で作戦の遂行を妨げる可能性があります。
これらの問題を効果的に解決するために、私たちはEdXposed Frameworkを使用し、アプリケーション実行時(ART)フックを提供して、OSレベルの制限をモジュール方式でバイパスするカスタムフックを作成することにしました。
Blue Dispatcherには、Windows Bluetoothスタックを使用してBlue Pigeンとの間でペイロードを生成・送受信する.NETモジュールが含まれています。このモジュールは、Blue Pigeonと侵害されたホストの間でBluetoothセキュリティ認証(デバイスペアリング)を必要とせずにファイル転送を可能にします。これにより、被害者のマシン上に視覚的なポップアップが表示されず、疑念を招かないため、回避性(主要要件)の維持に役立ちます。
開発者が描いた、視覚的な妨害による作戦失敗の芸術的イメージ。
Blue Dispatcherが使用する基礎的なBluetoothモジュールのほとんどは、有名で非常に強力な32feetライブラリから来ています。
Blue Dispatcherには、送信用のフラグを入力できるオプションがあります。
| フラグ | 説明 |
|---|---|
| --device, -d | 送信先のモバイルデバイス |
| --message, -m | 送信するテキスト文字列 |
C:\Users\user>.\BlueDispatcher.exe
Usage: BlueDispatcher [options]
Options:
-m|--message Message to send to server
-d|--device Device to send to
C:\Users\user>.\BlueDispatcher.exe -d "Pixel 3 XL" -m "fly pigeon fly"
注意: ペイロードはRFCOMM経由で平文で転送されるため、必要に応じてBlue Dispatcherに独自のアプリケーション層暗号化を実装してください。
データ流出のためにBlue Pigeonを展開するには、以下が必要です:
Blue Pigeonにはroot化されたAndroid端末とMagiskが必要です。
Magiskを介してriru-coreとriru-edxposedをインストールします。モジュールインストール後、Android端末を再起動します。
「Battery Optimizer」アプリケーションを開いてBlue Pigeonを起動します。
Blue Coopのエンドポイントと秘密のパスフレーズ(認証に使用)は、左上隅のボタンをクリックして設定できます。
攻撃ツールとして、他の攻撃者や鳥嫌いからの単純な試みに対して脆弱であるのは恥ずかしいことです。
とりあえず*、Blue Pigeonは以下の潜在的な攻撃から保護するように設計されています:
流出媒体としてBluetoothファイル共有を使用する場合の制限の1つは、非同期転送ができないことです。一度に1つのファイル転送プロセスのみ実行できるため、Blue Pigeonは正当な受信リクエストのみを許可し消費するように注意する必要があります。
近くの攻撃者が不正なリクエストを作成し、Blue Pigeンに受け入れさせることに成功した場合、過度に大きなダミーファイルを送信することで一時的なDoS攻撃を誘発する可能性があります。攻撃者はさらに、ファイルに埋め込まれた悪意のあるコンテンツでスマートフォンやリモートのBlue Coopを危険にさらそうとする可能性もあります。
このような潜在的な攻撃を軽減するため、受信ファイルリクエストのファイル名は、設定可能な共有パスフレーズを使用したHMAC認証スキームを使用して認証されます。
ファイル名検証手順は以下のステップに分けられます:
BP-e2211d9e19f1669d1a09ea4828d3e2bc171a10bce71cafb53a64179f497273ea.txtprovidedHash と randHmacSHA512(rand, passphrase) を providedHash と検証(最初の32桁の16進数/16バイトを比較)ファイル名検証ロジックは com.csg.bluepigeon.util.EncryptionManager にあり、適宜カスタマイズできます。
開発者注: 実際には、送信元MACアドレスの検証が最も理想的ですが、被害者のBluetooth MACアドレスを事前に特定するのは困難なため、代わりにファイル名検証を採用しました。
別の攻撃経路としてリプレイ攻撃があります。近くの攻撃者が通信トラフィックを傍受し、以前に受け入れられたファイル名を取得する可能性があります。その後、そのファイル名を再利用/「リプレイ」して、Blue Pigeonに不正なファイル転送リクエストを送信しようとする可能性があります。同様に、十分に大きな不正ファイル転送は一時的なDoSを誘発する可能性があります。
これを軽減するため、ファイル名の再利用は許可されません。Blue Beakは、受信ファイル名が以前に消費されていないことを確認します(/sdcard/blue_pigeon/backup フォルダをポーリングすることにより)。
この基本リポジトリでは、ファイル名の rand コンポーネントは32桁の16進数/16バイトであり、衝突確率は約2^128分の1です(適切なランダム性を仮定した単純計算)。
衝突しきい値は、ファイル名構造と検証スキームをカスタマイズすることで調整できます。関連するコードは com.csg.bluepigeon.util.EncryptionManager にあります。
*他に見落としている鳥を殺す機会を発見した場合、またはBlue Pigeonの強化に貢献したい場合は、遠慮なくIssueを作成するかプルリクエストを送信してください!
遠慮なくIssueを作成し、プルリクエストを送信してください!