コンテンツに移動
セキュリティ & アイデンティティ

脅威アクターによる Cobalt Strike の不正使用を阻止するために Google が行ったこと

2022年12月5日
https://storage.googleapis.com/gweb-cloudblog-publish/images/security_2022_QrjeiL9.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2022 年 11 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。

レッドチームがサイバー防御の復元力のテストに使用する一般的なツールである Cobalt Strike には、過去 10 年間で多くの反復と改善が見られました。2012 年に最初にリリースされた Cobalt Strike は、もともとオープンソースの Armitage プロジェクトの商用スピンオフで、Metasploit フレームワークにグラフィカル ユーザー インターフェース(GUI)を追加して、セキュリティ担当者がソフトウェアの脆弱性をより迅速に検出できるようにするものでした。

そこから成熟を重ねた Cobalt Strike は、マウス操作だけで万能なリモート アクセス ツールをターゲット アセットにデプロイできるシステムになりました。Cobalt Strike の目的は現実のサイバー脅威をエミュレートすることですが、悪意のあるアクターはその機能を利用して第 2 段階の攻撃ペイロードに組み込み、被害者のネットワークでラテラル ムーブメントを実行する強力なツールとして使用しています。

Cobalt Strike のベンダーである Fortra(最近まで Help Systems として知られていました)は、悪意のあるアクターにソフトウェアが提供されて不正使用される可能性を最小限に抑えるための審査プロセスを使用していますが、Cobalt Strike は何年にもわたって漏洩やクラッキングの被害にあってきました。こうした無許可のバージョンの Cobalt Strike は、有効なライセンスを保有していないため簡単にアップグレードできないことを除けば、正規版と変わらない機能を有しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gcat_inline_wrap.max-1900x1900.jpg

Google は、コミュニティが Cobalt Strike のコンポーネントとその各バージョンにフラグを立てて識別するのに役立つオープンソース YARA ルールと、それらを統合した VirusTotal コレクションをコミュニティにリリースする予定です。脅威アクターの多くは、クラッキングされたバージョンの Cobalt Strike に依存してサイバー攻撃を進行しているため、Google はその使用を妨害することで、世界中の組織とその従業員および顧客の保護に貢献したいと考えています。

Cobalt Strike の解剖図

Cobalt Strike は、単一の JAR ファイルにまとめられた複数のソフトウェア ツールのコレクションです。アクターはまず、Team Server コンポーネントをアクティブ化します。このコンポーネントは、コマンド アンド コントロール(C2)エンドポイントと、感染したデバイスを複数のアクターで制御するための調整ハブの両方として動作する集中型サーバーをセットアップします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/GC-Op27_graph.max-2200x2200.jpg
図 1: 一般的な Cobalt Strike インフラストラクチャのセットアップ

アクターは JAR をクライアントとしてアクティブ化することで Team Server に接続します。クライアントは Team Server や感染したホストをアクターが制御できる GUI を提供します。Team Server はアクターがリモート エンドポイントを感染させ、制御するためにデプロイできる多数の攻撃フレームワーク コンポーネントを生成します。

Cobalt Strike には JavaScript、VBA マクロ、Powershell スクリプト向けのデリバリー テンプレートがいくつか含まれており、ステージャーと呼ばれる小規模のシェルコード(ディスクレス)インプラントをデプロイできます。こうしたステージャーは、HTTP / HTTPS、SMB、DNS といったサポート対象の通信チャネルのいずれかを経由して Team Server にコールバックし、ビーコンと呼ばれる最終ステージのインプラントをダウンロードします。

ビーコンは、感染したコンピュータをアクターが制御できるようにするコアバイナリです。複数のコマンドと操作に対応するとともに、アクターが開発したモジュールのダウンロードと実行を可能にする拡張性もあります。Team Server / クライアント モデルでは、感染したアセットのコレクション上で複数のアクターが共同作業することもできます。

ステージャー、テンプレート、ビーコンは Cobalt Strike JAR ファイルに含まれており、その場で作成されることも、Team Server からデプロイする前に大幅に難読化されることもありません。Cobalt Strike は、復号可能な XOR エンコーディングを使用して基本的な保護を提供します。

ハッキングされた Cobalt Strike を救うソリューション

Google は、バージョン 1.44(2012 年頃)からバージョン 4.7(このブログの公開時点における最新バージョン)までの Cobalt Strike JAR ファイルのバージョンを見つけることができました。また、バージョン 1.44 以降の Cobalt Strike で使用されている XOR エンコーディングを含む、ステージャー、テンプレート、ビーコンをカタログ化しました。

Cobalt Strike のコンポーネントを整理することで、こうした悪意のある亜種を YARA ベースで高精度検出できるようにしました。Cobalt Strike の各バージョンには、約 10~100 の攻撃テンプレート バイナリが含まれています。34 の異なる Cobalt Strike リリース バージョンと、これらのバージョン全体で合計 275 の一意の JAR ファイルが見つかりました。全体として、少なくとも 340 のバイナリを分析し、それを検出するためのシグネチャを作成する必要があると推定されます。

Cobalt Strike のリリース バージョンごとに、新しい一意のビーコン コンポーネントが作成されるのが通常であることがわかりました。一方、ステージャーとテンプレートは、バージョン間で一定である傾向があります。バージョン 4.7 までの Cobalt Strike バージョンにわたって、こうした Cobalt Strike コンポーネントを検出するために、さまざまなバージョンで一意のステージャー、テンプレート、ビーコンを探し、合計 165 のシグネチャが生成されました。

Google では、忠実度の高い検出を行い、個別の Cobalt Strike コンポーネントのバージョンを正確に特定できるようにするという目標に基づいて、Cobalt Strike コンポーネントの具体的なバージョンを検出するためのシグネチャを可能な限り作成しました。

Cobalt Strike の不正使用の阻止

一部のバージョンが脅威アクターによって不正に使用されているなか、Google は Cobalt Strike のバージョンを正確に検出することが、悪意のないアクターによる使用の正当性を判断するための重要な要素であると判断しました。

不正なアクターによるアクションをより適切に検出するには、正規のバージョンをそのままにして不正なバージョンを切除する外科的アプローチが必要でした。そのためには、Cobalt Strike コンポーネントのバージョンを正確に検出する必要がありました。コンポーネントの非現行バージョンのみをターゲットにすることで、有料ユーザーが使用している最新バージョンをそのままにしておくことができます。

漏洩およびクラッキングされた Cobalt Strike の各バージョンは、Fortra の最新バージョンではなく、少なくとも 1 つ古いリリース バージョンであることが通常です。Google は、VirusTotal で利用できるコミュニティ シグネチャのコレクションとして統合した何百もの一意のシグネチャを作成することで、こうしたバージョンに重点を置きました。また、こうしたシグネチャを自社プロダクトにデプロイすることに関心を持つサイバーセキュリティ ベンダーに向けてシグネチャをオープンソースでリリースし、業界全体でオープンソース セキュリティを向上させるための取り組みを継続しています。

Google の目的は、このツールを正規のレッドチームの領域に戻し、悪意のある者の不正使用を阻止することです。YARA ルールを使用して Cobalt Strike の不正使用を阻止する方法について詳しくは、こちらの Google Cloud Security Podcast をお聴きください。


- Cloud Threat Intelligence セキュリティ エンジニア Greg Sinclair
投稿先