C2回避テクニック:柔軟なC2プロファイルを理解する

2021年4月26日
Joshua St. Hilaire
Director of Security Research
C2回避テクニック:柔軟なC2プロファイルを理解する

今回は、コマンド&コントロール(C2)回避テクニック・シリーズの第2回で、可鍛性C2プロファイルについてお話しする。最初のブログ 最初のブログJA3シグネチャーのランダム化として知られる方法を検証している。

Malleable C2プロファイルは、ペンテスターやAdvanced Persistent Threat(APT)グループが使用する人気のフレームワークであるCobalt Strikeで広く採用され、使用されています。MalleableプロファイルはCobalt Strikeのユーザーにはおなじみだが、その採用が他のC2フレームワークにも広がり始めていることは注目に値する。この記事を書いている時点では、バージョン3.4のEmpire C2でもMalleableプロファイルが使われている。この開発をさらに興味深いものにしているのは、Empireチームが最近、人気のあるペンテスト用ディストリビューションであるKali Linuxとの提携を発表したことです。

回避のための柔軟なプロフィール

C2用の可鍛性プロファイルは、ネットワークベースの検知ツールだけでなく、エンドポイントセキュリティ製品からの検知を回避することを可能にする。Cobalt Strikeのオペレーターは、「可鍛性」のレベルにより、C2ビーコンの形状やタイミングを完全にカスタマイズできるだけでなく、プロセスインジェクションやインメモリ難読化手法のようなオンターゲット機能をカスタマイズすることもできる。ターゲット環境内でエージェントを実行する場合、運用上のセキュリティは常に懸念事項である。そのため、コマンド&コントロールでステルス性を維持する際には、ネットワークセキュリティの監視が常に考慮されます。攻撃者がネットワーク内の危険なマシンにエージェントをインストールし、これらのエージェントが C2 サーバに接続する際に生成するトラフィックが、同じか類似のユーザエージェント、URI、またはフラグを立てやすい他のアーティファクトを使用していたとします。繰り返し使用されるため、これらのアクティビティが事前に知られていた場合、検知されるリスクは非常に高くなります。そのため、「通常の」予想されるトラフィックに紛れ込ませるか、あるいは実行のたびに新しい値を使用するような方法で、トラフィックを変換または形成する必要がある。いずれのアプローチも、検知を回避するのに有効である。変更可能なプロファイルを採用するもう1つの動機は、既知の脅威に対してテストを行いたいという願望である。もしエージェントとC2サーバーをセットアップして、マルウェアがワイヤ越しに、あるいはターゲットのエンドポイント上でどのように見えるかを確認できれば、ネットワーク検知スタックやエンドポイント・セキュリティ・モニタリングがそのアクティビティにフラグを立てることができるかどうかを確認することができる。

ここで、可鍛性が活きてくる。C2をカスタマイズするために、オペレーターに提供されるオプションのいくつかを説明する価値がある。さらに、まとめとして、特にシグネチャ・ベースの検知戦略において、これらがいかに検知を困難にするかについて話す。機能の概要については、ネットワークとエンドポイントに分けて説明する。紹介するオプションは、決して網羅的なリストとはみなされない。

カスタマイズによる回避

ハイパーテキスト転送プロトコル(HTTP)や HTTPS などのネットワークプロトコルに関係なく、エージェントは指定された方法でサーバと通信します。HTTP を使用する場合、ネットワーク層の防御によって検査できる HTTP 会話の多くの部分があります。例えば、HTTP ヘッダ内の文字列は、十分ユニークなものであれば、防御側がワイヤ上の接続を検知するために使用することができます。ユニークなユーザーエージェント、カスタムのアクセプト文字列、ユニークなパス値のようなものは、すべて検査のためにオープンです 設定はまた、同様にサーバー側からヘッダー要素を変更するために使用することができます。

マレアブル・プロファイルを使用すると、HTTPヘッダー内の値など、正当なプログラムの値をミラーリングするだけで、例えばMicrosoft Windowsアップデート・エージェントのような良性の接続と同じに見せることができます。以下のスクリーンショットは、Cobalt Strike Windows update malleableプロファイルを使用したHTTPセッションをWiresharkで再構築したものです。

図 1:Cobalt Strike Windows Update の変更可能プロファイル

送信前にデータをエンコードするためにデータ変換が利用可能であることは指摘しておく価値がある。明白ではないかもしれないが、上のスクリーンショットのHTTP GETリクエストに続くUniform Resource Identifier(URI)は、送信前にbase64エンコードされ、サーバー側でデコードされる。以下のリストは、Cobalt Strike で利用可能なデータ変換です。

表1:Cobalt Strike データ変換

さらに、複数の変換を同時に行うこともできる。例えば、base64とmaskを一緒に重ねることで、OPSECを強化することができる。

HTTPSが使用されている場合でも、SSL(Secure Sockets Layer)証明書などの値を操作することができる。以下のSSL証明書は、前述のWindowsアップデートプロファイルで使用されています:

コネクションの表示方法を細かく制御するだけでなく、クライアントがC2サーバーに接続するタイミングを制御する値も、変更可能なプロファイルによって操作できる。ジッターやディレイなどの値により、攻撃者はC2接続のタイミング間隔を変更することができる。

エンドポイント可変型

Malleableは、エージェントがネットワーク経由でデータを送信するときだけでなく、メモリ内の特性、プロセスへの注入方法、および侵入後のタスクを制御するときにも使用されます。これは、エンドポイント検知とレスポンス (EDR)とアンチウイルス検知を回避するのに便利です。以下の例では、エージェントがターゲットエンドポイント上でどのように動作するかに関連するオプションをいくつか示しています。

図2:Cobalt Strike havexプロファイルにおける、エンドポイントに関連する変更可能なオプションの例。

ステージブロックでは、エージェントがメモリにロードする方法を制御できます。名前、コンパイル時間、メモリパーミッション、難読化、ローダータイプなどを指定できます。しばしば、プロセスにロードされた悪意のあるコードを探すアナリストは、最初にメモリセグメントをチェックし、疑わしいメモリセグメントで RWX パーミッションでロードされたセグメントをキーにします。

プロセス注入オプションでは、注入されたコンテンツを形成することができます。変換オプションを使用してデータをパディングし、割り当て方法を設定し、パーミッションを制御することができます。最後に、使用する異なるパイプ名を選択したり、スマートインジェクションを使用したり、スポーンロケーションを指定することで、悪用後のタスクを制御することもできます。これはEDRソリューションの回避やテストに最適です。より詳細な概要については、Cobalt Strikesオンラインガイドを参照できる。

ディフェンダーにとっての課題

Allowing such granularity with which to control C2 communications and the staging behavior make defending and detecting with signatures a challenging task. Another point of emphasis should be made that while Cobalt Strike has allowed malleability for some time other popular C2 Frameworks like Empire C2 are also adopting malleable profiles. This coupled with the fact that their use is increasing in recent intrusions by APT and ransomware actors makes for an increasingly complex task for defenders.

ネットワークとエンドポイントの防御技術は、迅速に更新されるシグネチャを持つか、データの繰り返しパターンやビーコン活動に対応するタイミングシーケンスにさえ頼らない、コマンド&コントロールを検知するための他の調査方法を使用しなければならないだろう。

よくあるご質問(FAQ)

可鍛性C2プロファイルとは何ですか?また、Cobalt Strike でどのように使用されていますか?
マレアブルC2のプロファイルはどのように他のフレームワークに広がっているのか?
なぜMalleable C2プロファイルは攻撃者にとって有益なのか?
Malleableプロファイルを使用して、C2トラフィックのどのような要素をカスタマイズできますか?
Malleableプロファイルは、侵入テストや攻撃時の運用セキュリティをどのように強化するのか?
マレアブル・プロファイルは守備側にどのような課題をもたらすのか?
Malleableプロファイルはエンドポイントセキュリティにどのような影響を与えるのか?
Cobalt Strike 、エンドポイントの動作について利用可能な具体的なカスタマイズ・オプションにはどのようなものがありますか?
マレアブル・プロファイルの使用は、ビーコン活動の検出をどのように複雑にするのか?
セキュリティ・オペレーション・センター(SOC)がMalleableプロファイルに対応する際に、なぜ堅牢な脅威検知とレスポンス 。