This post is also available in: English (英語)
概要
Unit 42のリサーチャーは、インターネット上にホストされている2つのCobalt Strike Team Serverインスタンスを特定しました。また、公開リポジトリ上にはない、新たなプロファイルを発見しました。本稿は攻撃者による独自技術を取り上げ、Cobalt Strikeプラットフォームをどのように悪用し、シグネチャー ベースの検出を回避しているかを解説します。
私たちはインターネット接続されたTeam Serverインスタンスを特定しましたが、これらはBeaconインプラントをホストし、コマンド&コントロール(C2)機能を提供していました。Beaconバイナリーからは、Malleable C2プロファイルの構成も抽出しました。これらの構成を見ることで、標準的な検出を回避するためにどのような手法が使われているのかの理解が深まります。
Cobalt Strike Team Serverのオペレーターは、C2インフラを良性のよく知られたサービスの背後に隠すことで検出を回避しようとしていました。また私たちは、Team Server用のC2インフラが、著名なパブリック クラウドのインフラ プロバイダーを利用してホストされていることも確認しました。さらにこのオペレーターは、新たなMalleable C2プロファイルもデプロイしていました。脅威もレッド チーム アクターも、セキュリティ コントロールを欺いてセキュリティ対策や検出を回避するために新たなプロファイルを作成します。こうした戦術には、HTTPのURLやヘッダー パラメーター、ホスト ヘッダーを、良性の広く認知されているドメインに変更することが含まれます。
パロアルトネットワークスのお客様は、以下の方法でCobalt Strike BeaconおよびTeam ServerのC2通信からの保護と緩和を受けています。
- Advanced Threat Preventionサブスクリプションを有効にした次世代ファイアウォール(NGFW)は、カスタム プロファイルが生成したCobalt StrikeのHTTP C2リクエストを識別してブロックし、デフォルト プロファイル(シグネチャー86445、86446)のBase64エンコーディング設定でマスキングされたHTTP C2 リクエストとレスポンスをブロックします。
- WildFireとCortex XDRは、Cobalt Strike Beaconのバイナリーを識別・ブロックできます。また、XDRは関連するエクスプロイト試行を報告します。
- Cortex XSOARのレスポンス パックとプレイブックは緩和対策プロセスを自動化します。
- Advanced URL Filteringには、悪意のあるURLとIPアドレスを追加済みです。
関連するUnit 42のトピック | Cobalt Strike, Malware |
事例分析
Cobalt Strikeは、専門家らが企業ネットワーク環境における脅威シミュレーションに使う効果の高いプラットフォームです。主な目的はBeaconインプラントとTeam Serverの間に安全で検出されない通信チャネルを確立することです。Malleable C2を使用することで、Cobalt Strikeのオペレーターらは、非常に柔軟で回避的なネットワーク プロファイルを簡単に作成し、さまざまなC2トラフィックを簡単に生成できます。
Unit42のリサーチャーは、脅威またはレッドチーム アクターが現在のセキュリティ コントロールによる検出を回避するために使用っている2つの独自戦術を発見しました。これらの事例を検証することにより、これらの人々がどのような技術を使い、セキュリティ アラートを避けつつ有害行為を遂行しているのかをより深く理解できるようになります。
以下の事例研究は真陽性(True Positive: TP)だった検出を分析して得たものです。以下のシナリオでは、Cobalt Strike Team Serverのインフラを特定し、Malleable C2プロファイルの構成情報を抽出し、その構成とインプラント データを再構築することで、検出改善につなげました。
事例1: 新たなプロファイル
Cobalt Strikeには、十分に文書化されたカスタムプロファイル言語があります。攻撃者やレッド チームは、公開されている既知のMalleable C2プロファイルを探すセキュリティ フィルターを回避するため、よく設計されたユニークなMalleable C2プロファイルを作成してオペレーションを展開する傾向があります。
私たちは23.95.44[.]80:80で稼働しているTeam Serverを見つけました。このTeam ServerにはSHA-256ハッシュが22631d171fd7d531c0bc083a5335a910a95257e3194b50d8b471740d3a91fe34のBeaconファイルがホストされていました。私たちはこのBeaconバイナリーから構成を抽出し、社内ツールでMalleable C2のプロファイルを導出して再構築しました。
図1は、私たちが抽出・再作成したカスタム プロファイルです。画像の左半分はBeacon通信のGETトランザクション、右側はPOSTトランザクションを示しています。
GETトランザクション内の暗号化・エンコードされたデータは、CookieパラメーターのSESSIONIDに格納されます。POSTトランザクションのIDは、カスタム ヘッダーのUserに追加されます。このIDはMaskとNetBIOSUを使って二重にエンコードされます。タスク実行からの出力も二重にエンコードされ、POSTボディのデータのパラメーターに追加されます。
Beaconの情報
- Team Server IP/ポート: 23.95.44[.]80:80
- AS番号(ASN): AS-36352
- 使われたプロファイル: 新たなプロファイル
- BeaconのペイロードのSHA-256 ハッシュ: 22631d171fd7d531c0bc083a5335a910a95257e3194b50d8b471740d3a91fe34
![画像1は、新たなMalleable C2プロファイルのスクリーンショットです。画面左のコード行は、GETトランザクションです。画面右のコード行は、POSTトランザクションです。このスクリーンショットにはBeaconの情報も含まれています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/06/word-image-128961-1.png)
事例2: 既知の良性サービスの背後に隠れる
セキュリティ ベンダーは、HTTPトラフィックの要素を使い、あるフローが疑わしい、あるいは悪性であると判断します。あるHTTPリクエストのHostヘッダーのドメインが、よく知られたドメインの上位リストに入っているものだったとしましょう。その場合、そのリクエストは良性と識別されるかもしれず、悪性判定基準の一部が対象から外れることがありえます。同様に、宛先サーバーが著名クラウド プロバイダーのものであれば、そのIPアドレスが許可リストに登録されて良性とみなされる可能性があります。
攻撃者はこうした検出基準をうまく使い、よく知られた良性のサービスをまねてHTTPリクエスト トラフィックを生成することで、識別を回避しています。私たちは、インターネット通販サイトや検索エンジン、メール プロバイダーなどのよく知られた良性Webサイトを模倣したMalleable C2プロファイルを日常的に捕捉しています。
事例2.1: セキュリティ検出回避を狙った良性/著名ドメイン名を持つホスト
偽造したHostヘッダーを使い、一見良性に見えるトラフィックを生成して、ネットワーク セキュリティ検査を回避する攻撃者は少なくありません。ただしそうしたトラフィックも、専門家が検査すれば悪性であることは識別できます。
図2はあるBeaconのサンプルです。修正されたMalleable C2プロファイルを使い、GitHubにホストされています。この人物は、悪性のトラフィックを、あるレピュテーションの高いWebサイトの良性のトラフィックに偽装しようとしていました。ですが、宛先IPアドレスのASNレコードからはこれが異なる所有者のものとわかり、偽装を裏付けることになっています。
Beaconの情報
- Team Server IP/ポート: 159.65.219[.]189:443
- AS番号(ASN): AS-14061
- 使われたプロファイル: GitHubにホストされている修正されたプロファイル
- BeaconのペイロードのSHA-256 ハッシュ: 3528313aeff15375a2bce7b7587b188dcf1befb1e50c9db65d46e81a77a4a096
![画像2は、偽造されたHTTP Hostヘッダーを持つ、Malleable C2プロファイルのスクリーンショットです。画面左のコード行は、GETトランザクションです。画面右のコード行は、POSTトランザクションです。このスクリーンショットにはBeaconの情報も含まれています。宛先IPアドレスのASNレコードが別の所有者のものであることからこれが改ざんされたものであることがわかります。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/06/word-image-128961-2.png)
事例2.2: セキュリティ検出回避を狙ったパブリック クラウドから使用される宛先IPアドレス
この事例からは、脅威やレッドチーム アクターが、パブリック クラウド プラットフォームをどのようにC2サーバーとして利用しているかがわかります。サービス プロバイダー自体は良性なので、VirusTotalやURLフィルタリング製品といったIPレピュテーション サービスでこうした事例を検出するのは難しいことが多いでしょう。
ペネトレーション テスターは、オンライン サービスの人気をふまえ、それを上手に利用します。一見良性に見えるサービスにペイロードを隠し、悪質なアクティビティの検出を妨げるのです。
Unit 42のリサーチャーは、IPアドレス35.224.140[.]15:443上のTeam Serverを特定しました。このTeam ServerにはCobalt Strike Beaconがホストされていて、SHA-256ハッシュは3ac4be4291bddaaa39a815cc05ece6d611cd69a1604fec8dec0f7e5451659cfaです。このTeam ServerのIPアドレスはある著名クラウド プロバイダーのものでした。
図3は、Team ServerインスタンスがホストしていたBeaconバイナリーから再作成されたMalleable C2プロファイルです。このTeam Serverは著名クラウドプロバイダー上で稼働していました。
Beaconの情報
- Team Server IP/ポート: 35.224.140[.]15:443
- AS番号 (ASN): AS-396982
- 使われていたプロファイル: デフォルト プロファイル
- BeaconのペイロードのSHA-256 ハッシュ: 3ac4be4291bddaaa39a815cc05ece6d611cd69a1604fec8dec0f7e5451659cfa
![画像3は、既知のパブリック クラウド サービスを使用したMalleable C2プロファイルのスクリーンショットです。画面左のコード行は、GETトランザクションです。画面右のコード行は、POSTトランザクションです。このスクリーンショットにはBeaconの情報も含まれています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/06/word-image-128961-3.png)
結論
Cobalt Strikeは非常に汎用性の高いツールで、セキュリティ ベンダーの多くがそのC2トラフィックの正確な検出に苦心しています。このため、Cobalt Strikeはマルウェアの成功確率を高めたい攻撃者にとっては理想的な選択肢となっています。
私たちは、Beaconバイナリーをホストしている新しいTeam Serverを継続的に発見しています。この脅威ハンティングはサイバー攻撃でのCobalt Strike悪用に対し、効果をあげています。スキャンと学習のサイクルを回し続けることは、警戒を怠らず、サイバー犯罪へのプロアクティブな防御を提供する上で役に立ちます。
パロアルトネットワークスのお客様は、以下の製品を通じて、上記の脅威から保護されています。
- Advanced Threat Preventionサブスクリプションを有効にした次世代ファイアウォール(NGFW)は、デフォルト以外のプロファイルを使っているCobalt StrikeのHTTPによるC2リクエストを識別・ブロックします。Advanced Threat Preventionのシグネチャー86445と86446は、デフォルト プロファイル内のBase64のメタデータ エンコーディングでHTTP C2リクエストを識別できます。
- NGFW用のセキュリティサブスクリプションWildFireとCortex XDRはCobalt Strike Beaconを識別・ブロックします。
- Cortex XSOARのレスポンスパックとプレイブックは緩和対策プロセスを自動化します。
- Cortex XDRは関連するエクスプロイト試行を報告します。
- Advanced URL Filteringには、悪意のあるURLとIPアドレスを追加済みです。
IoC (侵害指標)
Cobalt Strike Beacon サンプル
- 22631d171fd7d531c0bc083a5335a910a95257e3194b50d8b471740d3a91fe34
- 3528313aeff15375a2bce7b7587b188dcf1befb1e50c9db65d46e81a77a4a096
- 3ac4be4291bddaaa39a815cc05ece6d611cd69a1604fec8dec0f7e5451659cfa
Cobalt Strike Team Server IPアドレス
- 23.95.44[.]80:80
- 159.65.219[.]189:443
- 35.224.140[.]15:443
追加リソース
- Cobalt Strike Training – Cobalt Strike
- Cobalt Strike Malleable C2 Profile – Cobalt Strike
- Cobalt Strike: Using Known Private Keys To Decrypt Traffic – Part 1 – NVISO Labs Blog
- Cobalt Strike解析&チュートリアル: Malleable C2プロファイルでCobalt Strike検出が難しくなる理由 – パロアルトネットワークス Unit 42
- Cobalt Strike解析&チュートリアル: Cobalt Strikeによるメタデータのエンコードとデコード
– パロアルトネットワークス Unit 42 - Cobalt Strike解析&チュートリアル: Cobalt Strikeによるメタデータの暗号化と復号 – パロアルトネットワークス Unit 42
- Cobalt Strike解析&チュートリアル: 野生(in the wild)のCobalt Strike Beacon Team Serverの識別 – パロアルトネットワークス Unit 42
- Cobalt Strike Attack Detection & Defense Technology Overview (Cobalt Strikeの攻撃検出と防御技術の概要) – パロアルトネットワークス Unit 42