Cobalt Strike – エクスプロイト後の攻撃ツールキット
Cobalt Strike フレームワークの紹介
Cobalt Strike (CS) は有料のペネトレーションテスト用ツールキットで、攻撃者は犠牲者のマシンに Beacon というコンポーネントを配置することができま す。CS は、そのシンプルさ、信頼性、汎用性の高さから、攻撃者の間で非常に人気があり、ダークウェブ[1]では、クラックされたバージョンの CS が数多く出回っています。このような背景から、最近のサイバー攻撃では頻繁に使用されています[2]。
CSは、コマンド実行、キーロギング[3]、ファイル転送、特権昇格、ポートス キャン、横方向への移動など、攻撃者に豊富な機能を提供します。このフレームワークは、クライアントとサーバーの2つのコンポーネントに分かれています。サーバーモジュール(別名:チームサーバー)は、Beaconペイロードのコントローラーです。このモジュールを使用することで、攻撃者は感染したホストを追跡してコマンドを実行し、フレームワークのすべての機能を利用することができます。
Cobalt Strike Beacon
Beaconは、アカウントを標的とするために使用される主要なコンポーネントであり、オペレーターはコマンドの実行、キーストロークの記録、ファイルのドロップ、標的となるシステムとの通信を行うことができます。CSは主に、システムに侵入した後、攻撃者が隠れるために利用するポストエクスプロイトのツールとして使用されます。
Beaconを配備し、その通信がサイバーセキュリティ製品やチームに見つからないようにすることは、敵対者にとって重要なタスクです。Beaconには、これを実現するために、HTTP、HTTPS、DNS、SMBなど、いくつかの通信手段[4]があります。 デフォルトでは、Beaconは定期的にC2に接続し、メタデータを送り返し、オペレータが発行したコマンドを収集します。攻撃者はBeaconコンソールを使って、 Beaconに発行されたタスクを監視し、そのステータスを追跡したり、コマンドの出力を確認したり、ターゲットの追加情報を見つけたりすることができます。
攻撃者によるCobalt Strikeの利用方法
CSは有料のペネトレーションテスト製品であるにもかかわらず、その豊富な機能と、新機能の追加や既存機能の変更が可能なことから、非常に高い人気を誇っています。この柔軟性により、攻撃者は独自のツールを実装したり、内蔵のツールを使用したり、MetasploitフレームワークやMimikatzなどの他のペネトレーション・テスト・ツールと統合したりすることができます。CSの主な用途は、攻撃者が情報を収集したり、認証情報を取得したり、感染したホストに他のペイロードを展開したりするためのポストエクスプロイトツールとして機能するように設計されています。CSは、VBAマクロやWindowsで実行可能なジェネレータなど、アクセスに役立つコンポーネントを備えていますが、システムへの初期アクセスを目的として設計されていないことを意味します。
CSは攻撃者に幅広いツールを提供します。ここでは攻撃チェーンの観点からCSが持っている機能の一部を紹介します。完全なリストは、MITRE matrix[5]に掲載されています。
初期アクセス(最初の侵入時)
- システムプロファイラ: ターゲットの情報を収集するための偵察ツールとして使用されるハニーポット。CSの管理するサーバーにアクセスしたシステムやユーザーの情報を収集し、発見されたアプリケーションやプラグインのリストを提供するように設計されている(ホストに感染させることは目的としていない)。
- MSマクロジェネレータ:CSはOfficeドキュメントに埋め込むVBAコードを生成することができる。
- Web サイト・クローンツール:このツールは、リンクや画像を修正するコードが追加されたウェブサイトのローカルコピーを作成し、本来の動作をさせることができる。攻撃者は、被害者がクローンされたWebサイトに入るように誘導し、被害者のネットワークに関する情報を収集することが可能。
- Windows ローダーとペイロード生成:CSは、Beaconを含むWindows実行ファイル、スクリプト(PowerShell、HTAなど)、または位置に依存しないコードの生のBlobデータを生成することができる。CSはシェルコードや実行ファイルを構築するための内部キットを提供する。このキットは、攻撃者のニーズに合わせて簡単に変更することが可能。
- フィッシング:CSのフィッシングモジュールは、攻撃者がリンクやテキストを置き換えて、説得力のあるフィッシングを電子メールのテンプレートで構築し、複数の受信者に送信して誰が入力したかを追跡することができる。このモジュールは、Webサイトクローンツールと合わせて使用することで、被害者をCSが所有するWebサイトに誘い込むことが可能。
権限昇格と横方向への移動
- Mimikatz:ユーザが認証情報を閲覧・保存したり、システムのメモリから平文のパスワード,ハッシュ,PINコード,Kerberosチケットを抽出することができるオープンソースのツール。Mimikatz は CS で完全にサポートされており、攻撃者はCSのコマンドライン・インターフェースから直接Mimikatzコマンドを実行することができる。
- User-Account-Contraol (UAC) バイパス[6]:リフレクティブDLLインジェクションと呼ばれる方法を利用して、UACによる検知をバイパスすることができる。
- Antimalware Scan Interface (AMSI) バイパス:AMSIの機能を制限するOS機能にパッチを当てることで、AMSIをバイパスすることができる。
コマンドの実行
- Aggressorスクリプト:独自のスクリプト言語を持ち、ユーザーがBeaconsの機能を変更・拡張することができる。
- コマンドの実行: 感染したシステムと対話するためにコマンドライン・インターフェースを使用する。コマンドは、cmd.exe[7]、powershell.exe[8]、psinject[9]、Powerpick[10]などを介して実行される。
- ネイティブAPI[11]:Beaconは、OSのAPI関数を直接呼び出すか、Powershell.exeを使用せずにPowershellを実行できるプログラムであるPowerpickを使用することで、cmd.exeやpowershell.exeを使用せずにシェルコマンドを実行できる。
Command & Control 通信
- Web プロトコル:HTTP/HTTPS/DNSでカプセル化可能な独自のコマンド&コントロール通信プロトコルを使用する。
- SMB(Server Message Block):SMBプロトコルでカプセル化されたWindows名のパイプ上でP2P通信を行うことができる。
Cobalt Strikeからの防御
Deep Instinctは、すべての攻撃段階でCSフレームワークとそのコンポーネントをブロックします。最初に考えられる攻撃ベクトルはローダーです。それがWindowsの実行ファイルであれ、Officeドキュメントであれ、ディープラーニングベースのモデルによる静的解析を用いてそれらを防ぎ、攻撃の連鎖を可能な限り早い段階で止めます。
また、攻撃者がすでに被害者のシステムにアクセスし、Beaconを展開しようとしている場合、当社の振る舞い検知機能により、DLLインジェクションやシェルコードの実行などのメモリ内アクションを発見し、これらのエクスプロイト後の試みが実行されるのを防ぎます。さらに、当社のPowerShell ディープラーニングベースのPowerShellモデルによる静的分析と振る舞い検知により、悪意のあるPowerShellの活動をもすべて多層的に防ぐことができます
まとめ
Cobalt Strike は有料のペネトレーション・テスト製品で、継続的に開発が行われており、そのチームは最も先進的で最新のセキュリティ機能と性能を備えたフレームワークを構築しています。セキュリティチームと脅威アクターの両方が同じ目的で使用しているため、セキュリティ製品、組織、個人にとって深刻かつ継続的な脅威となっています。
Deep Instinctのお客様は、当社の高度なディープラーニングベースのモデルと振る舞い検知の機能を使用することで、Cobalt Strikeとその機能に対する防御を実現することができ、攻撃は数ミリ秒のうちに検出され、防止されます。
当社の製品や機能について詳しく知りたい方は、資料請求フォームからご依頼ください。
----------------------------------------
[1] https://www.bleepingcomputer.com/news/security/alleged-source-code-of-cobalt-strike-toolkit-shared-online/
[2] https://www.bleepingcomputer.com/news/security/solarwinds-hackers-used-7-zip-code-to-hide-raindrop-cobalt-strike-loader/
[3] https://attack.mitre.org/techniques/T1056/001/
[4] https://attack.mitre.org/techniques/T1071/001/
[5] https://attack.mitre.org/software/S0154/
[6] https://attack.mitre.org/techniques/T1548/002/
[7] https://attack.mitre.org/techniques/T1059/003/
[8] https://attack.mitre.org/techniques/T1059/001/
[9] https://github.com/EmpireProject/PSInject/
[10] https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick/