サイバー脅威
「Cobalt Strike」に取って代わる可能性のあるC&Cフレームワーク「DeimosC2」とは?
ネットワークセキュリティの観点からペネトレーションツール「Cobalt Strike」に対する警戒が強まる中、攻撃者は代替のコマンドコントロール(C&C)フレームワークにも目を向けるようになっています。本稿では、代替フレームワークの1つである「DeimosC2」に注目し、防御チームやセキュリティ・オペレーション・センター(SOC)の担当チームがこのツールと対峙する上で知っておくべき技術事項について解説いたします。
ネットワークセキュリティの観点からペネトレーションツール「Cobalt Strike」に対する警戒が強まる中、攻撃者は代替のコマンドコントロール(C&C)フレームワークにも目を向けるようになっています。特に「Brute Ratel」や「Sliver」は最近の記事で取り上げられる機会も増え、評判になっていますが、今回は同様の代替フレームワークの1つである「DeimosC2」に注目し、防御チームやセキュリティ・オペレーション・センター(SOC)の担当チームがこのツールと対峙する上で知っておくべき技術事項について解説いたします。
C&Cシステムは、ペネトレーションテストチームや、演習時に攻撃役を演じる「レッドチーム」にとって有用なコラボレーションツールです。このツールは、全被害端末からアクセスを受け入れて指示を送り出す共通の場を提供すると当時に、複数ユーザによる同一被害端末へのアクセスを可能にします。これによってレポートログを一箇所に集約できるため、正式なテスト実施時には特に有用です。一方、これらのツールは攻撃者側にも利用され、オープンソースから商用のものまで含めてその数は増加しています。容易に利用可能で安定性に優れ、長期に渡って問題なく稼働できることから、サイバー犯罪者でさえも、自作のツールから既成のC&Cプラットフォームへの移行を進めています。
Cobalt Strikeのように定着した商用ツールの悪用に大勢の視線が向けられる中、サイバー犯罪者は同等の機能を持つ代替ツールを模索してきました。このことは、防御者の視点から見ると、サイバー犯罪者がオープンソースのC&Cソフトウェア(数多くの異なるオプション機能を提供し、1つのホスト上に複数のプラットフォームを展開させることもある)に手を出した結果、個人や企業または組織で対処すべき攻撃ツールの種類が増え、取り巻く脅威がさらに広く奥深くなったことを意味します。
攻撃者が使用するようになったフレームワークとしては、Brute RatelやSliverが有名です。本稿では、類似するもう1つのオープンソース・フレームワークとして、今後防御チームが対峙する可能性のある「DeimosC2」に注目します。以降、DeimosC2の攻撃からネットワークを保護するための一助として、本フレームワークの仕組みや、関連するネットワークトラフィックおよびバイナリの識別方法について解説します。
オープンソースのC&Cソフトウェア
Ares C2、PoshC2、TrevorC2など他のオープンソースによるC&Cフレームワークと同様、DeimosC2は従来からの基本機能を提供する一方で、Cobalt StrikeやMetasploit Proのような商用ツールに近い感覚で操作できるインターフェースも備えています。そのため、レッドチームの間ではDeimosC2に関する議論が盛んに行われています。
Webサイト「2matrix」では、レッドチームの活動に適したフレームワークの発見に役立つ情報や、オープンソースと商用製品の比較表が掲載されています。すでに注目されている有名なフレームワークだけでなく、特定の用途で最近登場した新しいものも網羅されています。レッドチームやペネトレーションテストチームはこうしたサイトを用いることで、要求を満たすフレームワークを発見しやすくなるでしょう。しかしこうしたメリットはサイバー犯罪グループにとっても同様であり、次の攻撃に利用すべきフレームワーク、特にサポートが手厚く、それでいてセキュリティ業界からはまだ注目されていないものを見つける際に役立つでしょう。
現時点で、代替手段としてのDeimosC2がサイバー犯罪コミュニティ内で活発に議論されているわけではありません。しかし近い将来、攻撃者がCobalt Strikeからの移行先としてDeimosC2を選ぶ可能性は考えられます。この他にも、話題に上がり、使用が確認されているとしてPoshC2やPHPSploit、Merlinなどが挙げられます。また、C&Cフレームワークのインターフェースについては、ビルドやメンテナンス、運用のし易さといった好みに応じて、コマンドラインとGUIを組み合わせたものがレッドチームと攻撃者の双方から好まれる傾向にあります。
2022年7月、検索サイト「Censys」は、オープンソースのC&Cフレームワークがランサムウェアグループに利用されていることをブログエントリで報告しました。当該報告では、脆弱性を発見してシステムを不正使用するために、PoshC2やDeimosC2をMetasploitやAcunetixとの組み合わせで利用できることが述べられています。このシナリオでは、システム侵入後、PoshC2とDeimosC2のどちらかがC&Cとの通信に利用されます。
現状、代替のC&Cプラットフォームを模索する攻撃者の間で、DeimosC2が最有力候補として上がっているわけではありません。しかし、そうであればこそ、早期のうちに調査しておくことが重要です。攻撃者はまだ良く知られてないツールに目を向け、セキュリティ業界で注目されていない間にそれを解析して利用しようとします。以上を踏まえ今回は、C&Cフレームワークを利用するサイバー犯罪者がDeimosC2のどのような部分に価値を見出すのか、という観点で調査を行いました。
DeimosC2とは
DeimosC2は、2020年6月にリリースされたオープンソースによるC&Cフレームワークです。他のオープンソースソフトウェア同様に不正な目的のために開発されたものではなく、攻撃者の「Living Off the Land(環境寄生)」戦略の下で悪用されているものです。攻撃者によるアクセス、ペイロードの作成、感染端末とのやり取りなど、フレームワークとして十分な機能を備えています。DeimosC2はポストエクスプロイト用(システムへの侵入後に利用開始する)C&Cフレームワークであり、ソーシャルエンジニアリングやブルートフォース、脆弱性を突いた攻撃で事前に侵害済みの端末上にペイロードを作成します。なお、このペイロードは手動で起動する必要があります。ペイロードのデプロイに成功すると、攻撃者は、通常ユーザや管理者などデプロイ時のユーザアカウントと同じ権限で標的システムにアクセスできるようになります。なお、DeimosC2に権限昇格を能動的に実行する機能は含まれていません。
ポストエクスプロイト用C&Cサーバは、複数の被害端末とのやり取り、情報収集、各端末で行われた処理の記録に役立つ手段を提供するため、レッドチームの間で高く評価されています。レッドチームはこうした手段を用いることで、仮に防御チーム側がインシデント対応を発動してクリーンアップ作業に踏み切った際にも、自身がシステム内に潜伏している限り、そこで何が行われたのかを全て細かく把握することが可能です。
DeimosC2の機能
DeimosC2では、2種類のインストールオプションが提供されています。1つ目はビルド済みバイナリであり、Go言語の事前インストールは不要です。2つ目はソースコードであり、Go言語がインストールされた任意のシステム上でコンパイルして起動できます。今回の調査では、Debianの仮想マシン(VM:Virtual Machine)に対応するビルド済みバイナリを用いました。そのため、ソースコードをGitHubプロジェクトから直接ダウンロードして使用した場合と比べると、挙動が異なる場合があります。
DeimosC2は、他のC&Cソフトウェアプラットフォームと同様さまざまな機能を組み合わせて提供します。DeimosC2をはじめとするC&Cシステムの目的の1つは、インフラの統一、侵害した端末の他者との共有、活動終了後のレポート作成などに有用な手段を提供し、レッドチームやペネトレーションテストチームを支援することです。こうした点を踏まえ、DeimosC2のユーザ設定では、「Administrator(管理者)」、「User(ユーザ)」という2種のユーザロール区分が使用されます。今回の調査で用いたDeimosC2のユーザ設定を図4に示します。
以上の他にもDeimosC2はレッドチームへの支援を念頭に、多要素認証(MFA:Multifactor Authentication)やAPI、バックアップと復元、さらに開発または本番などの環境フラグをシステムにマーキングする機能を備えています。
ユーザ登録完了後に行うステップは「リスナー」の設定であり、被害端末からC&Cサーバへのアクセス時に利用するプロトコルやソケット情報を設定します。DeimosC2では、ペイロード用に5種類のリスナータイプが提供されています。最近特に多く使用されているリスナータイプとしては「HTTPS」と「TCP」が挙げられます。今後こうしたツールの人気が高まっていく中、「DNS over HTTPS(DoH)」といったリスナータイプも、攻撃者によって利用されるようになると推測されます。
リスナータイプ(今回はHTTPS)を選択後、対応する必須項目と任意項目を設定します。必須項目は、ドメインネームやIPアドレスなどであり、ユーザによる入力が必要です。任意項目としては、鍵データの他、「高度な設定」に属するほぼ全項目が該当し、省略可能です。
「高度な設定」には、C&Cサーバの挙動を変更できる設定項目が含まれます。例えば、被害端末がC&CサーバにHTTP POSTでアクセスする際に使用するパスを、デフォルトのものから変更できます。デフォルトでは、使用するパスとして「/login」、「/index」、「/settings」、「/profile」が用途別に設定されていますが、リスナー作成時に変更可能です。リスナー作成後でも変更は可能ですが、その場合はバイナリの新規作成が必要になります。
全ての設定が完了すると、設定項目中の「コンパイルオプション(Compile Options)」で指定した内容に基づいてバイナリが作成されます。作成対象とするバイナリファイルの種類や難読化の有無についても、当該設定項目に応じて決定されます。
バイナリファイルの作成完了後、リスナーオプションから「interact」を選択することで、当該ファイルをダウンロードできます。
ダウンロードしたバイナリファイルは、フィッシングや脆弱性を突いた攻撃で侵害済みの端末にデプロイすることが可能です。ここまで述べたように、DeimosC2では、C&C通信を行うポストエクスプロイト用バイナリを手軽に作成する仕組みが用意されています。こうした点は、有力なツールを求めるレッドチームやペネトレーションテストチームにとって、魅力的に映るでしょう。
DeimosC2エージェントの分析
DeimosC2の検体は多くの場合、Go言語の難読化ツール「gobfuscate」によって難読化されていましたが、難読化されていない検体もいくつか発見されました。これらの検体を解析した結果、オープンソースによるポストエクスプロイト用C&Cフレームワークであることが判明し、DeimosC2のパッケージ名も発見されました。なお、gobfuscateなどのツールによる難読化を手動で解除することも可能ですが、その場合は解析のためにより多くの時間が必要になります。
DeimosC2には「エージェント(Agent)」という用語があり、被害端末に感染させるためのクライアント用バイナリを指します。DeimosC2では、マルチプラットフォームに対応するGo言語の特性を活かすことで、Windows、Linux、macOS、Androidなどの各種アーキテクチャに対応したエージェントのコンパイルおよび作成が可能です。
エージェントの動作は簡潔です。起動すると、稼働時刻が指定されている場合を除き、即座にハードコーディングされたC&CドメインまたはIPアドレスに接続し、リスナーと通信しようとします。
DeimosC2のエージェントは、リスナーとのメッセージのやり取りに3種類の鍵データを使用します。
Agent鍵
Agent鍵は、エージェントを識別するための一意なデータです。初期値は以下iに設定されていますが、リスナーから最初の応答を受け取った際に、汎用一意識別子「4 UUID」の形式で更新されます。
000000000000000000000000000000000000
AES鍵
AES鍵の長さは256ビットであり、エージェントがC&Cリスナーと通信するたびに乱数値で更新されます。C&Cリスナーとやり取りするメッセージはこの鍵によって暗号化されます。
RSA鍵
RSA鍵は、他の鍵データの暗号化と復号に使用されます。具体的に、エージェントはハードコーディングされたRSA-2048公開鍵を用いて上述のAgent鍵とAES鍵を暗号化します。リスナー側はこの暗号化データを復号するために、RSA-2048秘密鍵を使用します。
図8に、エージェント視点から見た暗号化の手続きを示します。
エージェントがC&Cリスナーに対して最初に送るメッセージには、図9の通り、感染端末の情報をJSON形式で記載したデータが含まれます。
JSONデータの内容として、オペレーティングシステム(OS)、インストールされたアンチウイルス製品、ホスト名、ログインしたユーザ名、内部IPアドレス、エージェントのファイルパス、利用可能なシェルプログラム、プロセスID(PID:Process ID)、ユーザ権限などの情報が含まれます。
コマンド
C&Cリスナーが応答データを返す際、1つまたは複数のコマンド(DeimosC2の用語で「job」と呼ばれる)を含めることがあります。表1に各コマンドの内容を記載します。
コマンド |
内容 |
shell |
シェルコマンドを実行 |
download |
C&Cサーバにファイルをダウンロード |
upload |
感染端末にファイルをアップロード |
options |
オプション「jitter」と「delay」はC&C通信のスリープ時間を設定する。「eol(End-of-Lifeの略と推測)」はエージェントの処理終了日を設定する。「hours」は通信を行う時刻を範囲指定する。 |
fileBrowser |
指定されたパス配下の全ファイルおよびディレクトリの一覧情報をエージェントに要求 |
shellInject |
エージェントプロセス内にカスタムのシェルコードをインジェクトして実行 |
module |
モジュールを実行 |
reinit |
エージェントと再接続;Agent鍵は新規作成 |
pivotTCP |
感染端末上でTCPサーバを起動する。このサーバは他のエージェントからのリスナーとして動作する。この仕組は、外部インターネットにアクセスできない端末を感染させる際に役立つ。 |
pivotJob |
上記TCPサーバに関連するジョブの管理 |
pivotKill |
上記TCPサーバのリスナーに関する一覧情報を初期化 |
kill |
エージェントをアンインストール |
モジュール
DeimosC2は、標的端末上で実行可能なモジュールによって機能拡張を行います。今回の調査では、下記のモジュールが利用可能な状態で発見されました。
モジュール |
実行内容 |
screengrab |
感染端末のスクリーンショットを取得 |
minidump |
指定したプロセスのミニダンプをユーザモードで取得 |
lsadump |
認証情報窃取のために、レジストリハイブ「SECURITY」と「SYSTEM」をダウンロード |
ntsdump |
認証情報窃取のために、Active Directoryのデータベース用ファイル「Ntds.dit」と、Ntds.ditの復号に必要なファイル「SYSTEM」をダウンロード |
samdump |
認証情報窃取のために、レジストリハイブ「SECURITY」、「SYSTEM」、「SAM」をダウンロード |
shadowdump |
Linux端末からパスワード関連ファイル「/etc/shadow」をダウンロード |
C&Cリスナーは、DeimosC2のモジュール用インターフェースを介してモジュールを追加投入し、ディスクまたはメモリ上(コードインジェクションを使用)で実行することが可能です。
ネットワークの分析
先述の通り、DeimosC2では利用可能なリスナータイプが複数用意されています。その中でもHTTPS、TCP、DoHは、他のC&Cプラットフォームで使用されていることもあり、標準的な選択肢と呼べるでしょう。今回の調査では、DeimosC2がオープンソースで配布されていることも功を奏し、これらの各種リスナーの細かな動作仕様が判明しました。
HTTPSリスナー
HTTPSリスナーが起動すると、当該サーバ上に設定されたデフォルトWebページの存在が確認されました。GitHubページを確認したところ、当該Webページは、Ubuntuを使用したApacheのデフォルトWebページであることが判明しました。
リスナー作成時の設定項目から判断すると、エージェントによるリスナーへのアクセスに際しては、複数のパスが用いられます。エージェントのソースコード(.go言語で書かれたもの)から、こうしたパス設定を反映して作成、使用されたプロセスが確認されました。
変数「firsttime」は、サーバへの初回通信時に使用されます。それ以降は、変数「checkin」がハートビート(接続維持)のために使用されます。
以上に基づき、C&Cサーバがデフォルト設定の状態であるか、HTTPSによるアクセスを監視しているかどうかを識別できます。デフォルト設定でHTTPSを監視している場合、エージェントはまず「HTTP POST」のリクエストを「/login」宛に送信し、以降は定期的に「/index」宛に送信します。HTTPSリスナーが使用するデフォルトのポート番号は4443ですが、この値はリスナー作成時に容易に変更可能です。また、「/profile」を指す変数「moduleloc」は、エージェントからサーバ側にデータを返却するために使用されます。最後に変数「pivotloc」は、先に延べたコマンド「pivotTCP」による中継エージェントの機能として、当該端末を介してデータを転送する際に使用されます。
図13は、HTTPSリスナーを使用するように設定されたエージェントが暗号化状態で送ったPOSTリクエストです。デフォルト設定の場合、最初のメッセージは「/login」に、以降は「/checkin」に送信します。
TCPリスナー
TCPリスナーは、Go言語が提供する機能を用いてパケットを作成し、それをソケットに送信します。暗号化の手続きについては、HTTPS暗号化の場合と同様に動作します。TCPの場合に見られる唯一の違いは、復号処理の補助として、送信するデータの長さに相当する数値データが付加されることです。具体的に、エージェントは、送信対象とする暗号化済みデータの先頭部に、そのデータ長を示す数値を追加します。こうして構築されたデータが、ソケットを経由してC&Cサーバに送信されます。
TCP用エージェントがリスナーに送信したパケットデータを分析したところ、ある共通した特徴が見出されました。まず、データ長を示す数値は、図14のuint64呼び出し(msgLen)から分かるように、64ビットまたは8バイトの符号なし整数で表現されます。従って、パケットのデータ部は8バイトの整数値から始まり、その値自体が、後続する処理対象データの長さに相当します。実際にC&Cサーバに送られたハートビート通信パケットを解析したところ、大半はこのパターンに従っていました。また、各パケットの全長は350バイトであり、そのうちデータ部が296バイトを占めていました。
TCPエージェントのパケットを取得した場合、データ部の先頭8バイトはデータ長を示す符号なし整数値であり、9バイト目から先は、そのデータ長分だけ、暗号化データが続くものと判断できます。
今回のケースでは、パケットのデータ部が296バイトありました。ここからデータ長を示す先頭8バイトを除いて得られる288バイトが、C&Cサーバからのコマンド用データに相当します。このことは、図15からも容易に確認できます。数値「288」を16進数で表すと「01 20(または0x120)」であり、実際に図15の先頭6バイト「00 00 00 00 00 00」に続く値「01 20」と一致することが分かります。
こうしたエージェントの挙動を検知する1つの方法は、不正検知侵入システム「Snort」のルール記述によって、ハートビート通信を捕らえることです。下記に、今回の検体が送信するパケットを検知するためのsnortルールを示します。
alert tcp any any -> any any (content: "|00 00 00 00 00 00 01 20|";
offset: 0; depth: 8; msg:"Possible DeimosC2 TCP
Agent Heartbeat Communications"; sid:123400; priority:3; rev:1;)
実際にSnortで上記ルールのみを適用したところ、TCPエージェントからのハートビート通信が確かに検知されました。ただし、セットアップ状態によっては、誤検知を排除して検知の品質を高めるために、ルールの調整が必要な場合も考えられます。
DoHリスナー
DoH(DNS over HTTPS)リスナーは、C&Cサーバとの通信にDNSクエリを使用します。攻撃側がDoHを用いることで得られる利点の1つは、C&Cサーバとの直接的な通信が不要になることです。一方、通信遅延という欠点もあります。そのため、特にレッドチームの活動にステルス性が求められる場合などにおいては、このDoHがよく用いられます。DeimosC2では、DoHの実現手段として、Googleによる「HTTPS JSON API」を使用しています。Googleからはこの他にも、標準規格「RFC 8484」に則した別の方式が提供されています。しかし、前者の方がプログラミング的に扱いやすいこともあり、攻撃者の間ではより一般的な選択肢となっています。
DoHリスナーの設定時、パス関連では2つの変数「firsttime」と「checkin」を変更できます。リスナー作成時、これら2変数のデフォルト値はそれぞれ「getname」、「checkin」となっています。2変数の使用タイミングとして、エージェントはリスナーへの初期アクセス時にまず「firsttime」を使用し、それ以降のハートビート通信では「checkin」を使用します。HTTPSやTCPの場合と異なり、エージェントはリスナーとの間で直接的な通信は行わず、代わりに、前述したGoogleによるDNSサービスと通信を行います。
初期設定の場合、エージェントは下記のようなクエリを送信します。
https://dns.google.com/resolve?name=0000000000.6765746e616d65.ftr.trendmicro.com
上記クエリで目を引く点として、初期通信時の処理によって生成されるサブドメイン「6765746e616d65」が挙げられます。今回の場合、当該文字列は、変数「firsttime」として設定した文字列(今回の場合はgetname)をASCIIベースの16進数に変換することで得られます。得られた値は第一サブドメインとして利用され、「dns.google.com」に送信されます。送信されたデータをデコードするためには、エージェントかC&Cサーバ自体からAES鍵を取得する必要があります。
ここまで述べてきたDeimosC2の動作は、パスや変数が全てデフォルト設定された場合を想定しています。これらの設定は、リスナー作成時に容易に変更可能です。デフォルト値の変更は、DeimosC2を利用するレッドチームにとって、ブルーチーム側とも協力して関連するトラフィックを特定しやすくなるメリットがあります。一方、実際のサイバー犯罪者にとっても、将来的に展開する攻撃キャンペーンのツールやタクティクス、プロシージャ(TTPs)に微細な変化を生じさせて攻撃の検知を阻害できるというメリットがあります。今回こうした調査事項を報告する目的は、防御チームが将来的に通常とは異なった挙動を示すDeimosC2と遭遇した際に、攻撃の背後で起きている事象の解明に繋がる手がかりを提供するためです。
リスナー設定のデフォルト値を変更
DeimosC2のパス設定は、インターフェース画面上から容易に変更できます。仮に攻撃者がHTTPリスナーのデフォルト値「/login」、「/index」、「/settings」、「/profile」を変更したい場合、リスナー作成時に「高度な設定」メニューを開くだけで、パス変更用の画面にたどり着けます。
パスの変更は、攻撃者は戦略上用いそうな手段の1つです。この場合、DeimosC2の挙動にも変化が生じ、上述したバイナリやトラフィックパターンとは異なる部分も出でくるでしょう。例えば、DoHエージェントの変数「getname」の値を変更した場合、送信クエリに現れるサブドメイン名は先述の「6765746e616d65」ではなく、新しいgetnameの値の16進数表現に置き換えらます(例としてgetnameが「trendmicroftr」の場合、DoHクエリに出現するサブドメイン名は「7472656e646d6963726f667472」になる)。こうした動作の変化は、DeimosC2をはじめとするレッドチーム用ツールの検知をより一層困難にするものです。また、こうした検知回避の手段が、ツールに組み込まれた設定によって実現できることも、特記に値します。
パスやドメインなどの設定は、各リスナーについて、使用されているものを個別に変更できます。本稿執筆時点で設定項目数が最も少ないのはTCPリスナーであり、恐らく、ネットワーク監視技術による検出も最も容易に行えるでしょう。
DeimosC2からネットワークを守るために
C&Cトラフィックの検知は、世界中のネットワーク防御者にとって困難な課題となる可能性があります。幸い、今回のDeimosC2を対象とする調査では、サーバと通信するエージェントの検知に役立つ手段が発見されました。
- リスナー作成時にURLのパス設定が攻撃者によって変更されるケースなど、ネットワーク挙動の一部は動的に変化する。その一方で、予測しやすいものもある。例えば、TCPリスナーによる通信データの先頭8バイト分などは、侵入検知システム(IDS:Intrusion Detection System)のSnortルールによる検知が有効である。
- DoHでの例について、もし防御者が通常の業務サービスにJSON版のDoHを使用していない場合、dns[.]googleへのHTTPSリクエストをブロックするか、最低でも記録することを推奨する。これまでに確認されたDeimosC2検体のほとんどが、DoHの実装手段として、GoogleのJSON版DoHを使用している。そのため、当該DNSサービスへのHTTPSリクエストをブロックすることで、これらのエージェントを停止できる。
しかし、DeimosC2はポストエクスプロイト用C&Cフレームワークであることに注意する必要があります。もしネットワーク内にDeimosC2の通信が見つかった場合、恐らく、当該システムは別の手口ですでに侵害され、背後にいる攻撃者は永続化に向けた活動を行っていると考えられます。また、未確認の別の攻撃用ツールがシステム内にデプロイされている可能性も考慮する必要があります。すでに侵害を受けているという認識に立つことで、次に取るべき防衛手段が見えてきます。
- 防御者は、多くの帯域を占めている外部向け通信について定期的に調査することを推奨します。特に、普段の検査時よりも著しく大きなデータを送信したホストを検査することが有効です。
- 新しく、突発的で、しかも高頻度に頻発する通信を発見して監視することは、ネットワーク防衛における重要な一面を担います。そうすることで、DeimosC2だけでなく、本質的に不正な他のマルウェアや通信の早期発見にも繋がります。特に、C&Cサーバへのコールバックやハートビート通信については、このことが言えます。
これらのツールは防御用に設計されたものではありませんが、防御面でも想定外に役立つ場合があります。先に述べた通り、C&Cフレームワークは、実行された全コマンドの記録機能(デフォルトで有効になっているかどうかはフレームワークによる)などを通して、レッドチームやペネトレーションテストチームによる負担の軽減を意図して作られています。
正規のユーザは、これらのツールを使用することで、レポートデータを迅速に作成できます。さらに、調査担当者が攻撃者のサーバを掌握し、そのサーバ上で先述した全コマンド記録の設定が有効化(恐らく攻撃者は関知していなかった)されていた場合、攻撃者による侵入後の活動を知るための貴重な情報源になるでしょう。
結論
本報告の狙いは、サイバー犯罪者が使用するC&Cフレームワークの1つであるDeimosC2に焦点を当て、その動作を解明することです。今後、SOCチームがネットワーク侵入後の攻撃活動に対峙した際、当該ツールに遭遇する可能性が見込まれます。数ヶ月または数年のうちに、DeimosC2を始めとする数多くの代替用C&Cフレームワークが使用されるようになると予測されます。防御チームがCobalt Strikeの通信やエージェントの活動を検知してブロックする技術を進歩させる一方、攻撃者の一部は、すでにCobalt Strikeから各種代替ツールへの移行を進めていることが、トレンドマイクロの調査によって確認されています。
C&Cツールには2つの目的があることを意識する必要があります。こうしたツールの存在が、必ずしもサイバー犯罪者の活動を示唆するわけではありません。ツールは攻撃者だけでなく、内部および外部のペネトレーションテストチームやレッドチームの間でも好んで使用されるためです。レッドチームの役割は、攻撃側が行う活動を実演し、企業とも協力することで、同じツールを用いたネットワーク攻撃への対策を強化することです。一方、ネットワーク防御チームにとっても、こうしたツールの存在について認識しておくことは有益です。企業や組織はこれらのツールの検知法やブロック法について理解することで、防衛体制を強化し、攻撃者によるネットワーク内での移動やデータ窃取、その他さまざまな被害に繋がる活動を阻止することが可能です。
DeimosC2の検体
発見された一部のDeimosC2検体について、そのプラットフォーム、プロトコル、C&Cサーバ、RSA公開鍵などの詳細情報(挙動のクラスタリング解析に有用)をこちらから確認できます。
この解析結果は、設定情報抽出用にトレンドマイクロが作成した2種のx64dbgスクリプトから得られたものです。
なお、トレンドマイクロによる検出結果の一覧はこちらから確認できます。
参考記事:
DeimosC2: What SOC Analysts and Incident Responders Need to Know About This C&C Framework
By: Feike Hacquebord, Stephen Hilt, Fernando Merces
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)