ポストエクスプロイト(事後悪用)ツールは、脅威アクターがネットワーク内で横方向に移動し、権限を昇格してデータを盗み、マルウェアを展開し、バックドアを作成するなどの目的で使用します。レッドチームや倫理的ハッカーもこれらのツールを使用します。実際のところ、対戦相手(攻撃者)の取り組みをシミュレーションすることは、システム、アプリケーション、ファイルを保護するための効果的な対策を実装するうえで重要な役割を果たします。
つい最近まで、最も広く使われていたポストエクスプロイト(事後悪用)フレームワークの1つは PowerShell Empire(PSEmpire)でした。これにより、攻撃者は PowerShell と Python のエージェントを使用して、キーロガーから mimikatz までの悪意あるアイテムを、Windows、Linux、macOS 環境で検知を回避しながら展開できました。ところが 2019 年に Empire GitHub のプロジェクトページで、PowerShell Empire はもはやサポートされないと掲載されました。これは、おそらく端末の検知と応答(endpoint detection and response:EDR)ツールが、悪意のある PowerShell の使用を検知する点でより効果的になってきたためでしょう。
それに伴い、多くの攻撃者やサイバーセキュリティの専門家も、次世代のオープンソース C2 フレームワークへと移行しています。本記事では、そのようなポストエクスプロイト(post exploitation)ツールの1つである Covenant C2 を取り上げます。
Covenant C2 について
Covenant C2 は、Web アプリケーションやそれを支えるネットワーク環境を容易に悪用できるようにするコマンド&コントロール(C&C)フレームワークです。この高度にスケーラブルなオープンソースのフレームワークは GitHub で利用できます。C2 フレームワークの経験がほとんどない人であっても、数分で導入でき、直感的な Web ベースのインターフェース(図 1 を参照)を提供します。これにより、新しいエージェント、データソース、統合を追加したり、データや資格情報を抽出したりすることが簡単になります。
図 1. Covenant ダッシュボード(出典:GitHub)
アーキテクチャ
Covenant は、開発者がフレームワークとの連携を容易に構築できるようにする、高度にスケーラブルなアーキテクチャである C# で作られています。認証付きのマルチユーザープロファイルをサポートし、SQLLite や PostgreSQL のような軽量で信頼性の高いデータベースを利用します。マルチプラットフォーム対応には Windows、macOS、そして Kali のような Linux ディストリビューションが含まれます。
Covenant Server は command-and-control(命令と制御)機能を実行し、ユーザー同士が協力して操作できるようにします。grunts を利用します。これは、古代戦争で砲台(キャノン・フォダー)として使われた“兵卒”のように振る舞うエージェントです。これらの grunts は、割り当てられたタスクを実行しながら検知を回避し、その間 Covenant server と通信します。
Covenant の導入
Covenant サーバーは数分で起動して稼働状態にできます。Windows では、前提条件は .NET Core SDK のみです。Covenant ASP .NET Core アプリケーションをビルドして開始するには、次のコマンドを実行するだけです:
git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
dotnet build
dotnet run
または Docker containerを使用することもできます。
次に、ポート 7443 を使って localhost にアクセスすれば、好みのブラウザで Covenant UI を使い始められます。
Covenant の使用
最初のタスクは、here に詳しく記載されているとおり、リスナーをセットアップすることです。その後、ペイロードを作成して、リモートマシン上に grunts をデプロイし、Covenant サーバーとの通信を確立させます。
その後、Covenant UI の以下のページを使って、タスクを作成・実行・確認できます。
Grunts ページ
Grunts ページ を使用して、grunts を確認し、タスクを実行させます。
図 2. Grunt の詳細ページ(出典:GitHub)
例:mimikatz の展開
たとえば、下の動画では Grunt を使って mimikatz を展開する方法を示します:
図 3. grunt を使用して mimikatz をデプロイする
ブラウザーのインターフェイスを使用して、実行されたタスクの出力を確認できます。
図 4. grunt が実行したタスクの出力を確認する
タスクページ
タスクページ では、Grunts に割り当てられるすべての利用可能なタスクを、並べ替えと検索ができる一覧で確認できます。
図 5. タスクリストのページ
タスキングスページ
タスキングスページには、grunts に割り当てたタスクとそのステータスが表示されます。
図 6. タスキングスのページ
データページ
タスクの目的はデータを収集し、その内容を Data Page に要約することです。Indicators タブでは、活動の監査証跡(audit trail)が提供されます。これをブルーチームに引き渡して、セキュリティ対応を強化できます。
図 7.Data page
結論
Covenant C2 は、オープンソースの C2(コマンド&コントロール)ポストエクスプロイト(post-exploitation)プロジェクトが、PowerShell Empire からバトンを受け継いでレッドチームを強化する方法の好例です。協力的な倫理的ハッキングの取り組みに最適な、多くの印象的な機能が含まれています。Covenant GitHub には、始めるための優れたリソースがたくさんあります。もし Covenant フレームワークが初めてなら、そろそろチェックしてみる時期です。
共有する
もっと詳しく
著者について
Joe Dibley
セキュリティリサーチャー
Netwrix のセキュリティリサーチャーであり、Netwrix Security Research Team のメンバーです。Joe は Active Directory、Windows、およびさまざまなエンタープライズソフトウェアのプラットフォームとテクノロジーの専門家であり、新たなセキュリティリスク、複雑な攻撃手法、そしてそれに関連する緩和策と検知について研究しています。