Cisco Talos は、作成者が「Manjusaka」(簡体字中国語で「牛花」と表記、曼珠沙華のこと)と呼ぶ比較的新しい攻撃フレームワークが実際に使用されているのを確認しました。
防御する企業の側は、Cobalt Strike
調査は、悪意のある Microsoft Word の不正ドキュメントから始まりました。このドキュメントには Cobalt Strike ビーコンが含まれており、誘い込みの手口として、青海省海西モンゴル族チベット族自治州の最大の都市の 1 つであるゴルムド市で新型コロナウイルスの感染例が確認されたことに言及していました。調査中、このフレームワーク(GitHub で無料で入手可能)が使用されていること以外には、攻撃とフレームワークの開発者との間に直接的な関連性は確認されませんでした。なお、はっきりした被害者像を裏付けるデータは見つかっていません。ただ、被害者の少なさを考慮すればそれも当然のことで、攻撃は初期段階にあると推測されます。不正ドキュメントの作成時期が 2022 年 6 月後半であることがメタデータから判明したことも、その裏付けとなります。
不正ドキュメントの感染チェーンを調査していたところ、Manjusaka 感染をインストゥルメント化するためのインプラントが Cobalt Strike ビーコンと同じ IP アドレスに接続するのを確認しました。このインプラントは Rust プログラミング言語で記述されており、Windows および Linux オペレーティングシステム向けのサンプルが見つかりました。Windows 向けのインプラントには、インターネットでルーティングできない IP アドレスをコマンドアンドコントロール(C2)として持つテストサンプルが含まれていました。Talos は、GitHub で Manjusaka の C2 実行ファイルも発見しました。GoLang で記述された C2 ELF バイナリであり、十分に機能し、簡体字中国語のユーザーインターフェイスを備えています。C2 を分析する中で、構成を指定してインプラントを生成しました。開発者は、Manjusaka のインプラント生成フレームワークは Cobalt Strike
公開された Manjusaka フレームワークの設計図には、さまざまなコンポーネント間の通信の記載があります。ですが、こうしたコンポーネントの多くは、無料で入手できる C2 バイナリには実装されていません。したがって、可能性としては次のいずれかとなります。
Manjusaka の設計図
このマルウェアインプラントは、「Manjusaka」という RAT ファミリです。Manjusaka の C2 は、GoLang で記述された ELF バイナリです。一方、インプラントは Rust プログラミング言語で記述されており、任意のコマンドの実行など、感染したエンドポイントの制御に使用できるさまざまな機能で構成されています。Talos は、インプラントの EXE バージョンと ELF バージョンを発見しました。Windows と Linux プラットフォームに対応するこれらのサンプルセットは、どちらもほぼ同じ RAT 機能と通信メカニズムのセットで構成されています。
このサンプルは、固定アドレス「http[:]//39[.]104[.]90[.]45/global/favicon.png」に HTTP リクエストを送信します。この HTTP リクエストにはサーバーではなくサンプルによって定義される固定セッション Cookie が含まれています。HTTP リクエストのセッション Cookie は base64 でエンコードされており、バイナリデータ(感染したエンドポイントのフィンガープリントや C2 への登録のために使用されるランダムバイトとシステムの予備情報)の圧縮コピーも含まれています。以下の画像は、そうしたセッション Cookie を生成するために使用される情報を示したものです。
Cookie の情報は、圧縮され base64 にエンコードされる前に、以下の表のように配置されます。
通信は通常の通信パターンに従います。今回の場合、下の画像のように、インプラントは「/global/favicon.png」という URL にリクエストを送信します。
リクエストは HTTP GET ですが、データとして 0x191a の 2 バイトを送信します。応答は常に同じで、5 バイトの 0x1a1a6e0429 となります。これは C2 の標準応答であり、インプラントに対する何らかの種類のアクションに対応しているわけではありません。
セッション Cookie が提供されていない場合、サーバーから 302 コードが返り、http[:]//micsoft[.]com にリダイレクトされます。そして今度はさらに 301 コードが返り、http[:]//wwwmicsoft[.]com にリダイレクトされます。公開時点では、リダイレクトは研究者の注意をそらすためのトリックとなっているようです。ドメインと、この C2 の作成者と、C2 を実行している攻撃者との間に、直接的な相関関係は見つかりませんでした。
このインプラントは、多数のリモートアクセス型トロイの木馬(RAT)機能で構成されています。いくつかの標準機能と専用のファイル管理モジュールなどが含まれます。
C2 が受信したさまざまなリクエストを処理するためのケース切り替え
インプラントは、C2 サーバーから受信したリクエストと付随するデータに基づいて、感染したエンドポイントで次の機能を実行できます。
インプラントのファイル管理機能には次のようなものがあります。
ファイルのコピー操作(完了)と移動操作(一部)
ELF 亜種は、Windows 向けの実行ファイルとほぼ同じ機能セットで構成されています。ただし、ELF 亜種には 2 つの重要な機能が欠けています。Chromium ベースのブラウザからログイン情報を収集する機能と、Wi-Fi のログイン情報を収集する機能です。
Windows バージョンと同様に、ELF 亜種も、エンドポイントから次のようなさまざまなシステム固有の情報を収集します。
どちらのバージョンにも、機能的に同等のファイル管理モジュールが含まれています。このモジュールは、感染したシステム上のファイルとディレクトリを管理するためだけに使用されます。
機能的に同等のファイル管理モジュールを含む、インプラントの EXE バージョンと ELF バージョン
調査の過程で、Talos は GitHub でホストされている Manjusaka の C2 サーバーバイナリのコピー(hxxps://github[.]com/YDHCUI/manjusaka)を発見しました。
感染したエンドポイントを監視および管理するほか、Windows および Linux 向けのペイロードを生成できます。生成されるペイロードは、前述した Rust インプラントです。
C2 サーバーと管理パネルは主に、Rust ベースのインプラント/ステージャの管理とコマンドの発行に使用される Gin Web フレームワーク
C2 サーバーのインプラント生成プロンプト
いくつかのオプションを入力して「生成」ボタンを押すと、以下の形式で C2 への GET リクエストが送信されます。
http://<C2_IP_ADDRESS>:<Port>/agent?c=<C2_IP_ADDRESS>:<PORT>&t=<EXTENDED_URL_for_C2>&k=<ENCRYPTION_KEY>&w=true
C2 サーバーは、リクエスト送信者用に構成された Rust ベースのインプラントを生成します。C2 は packr
C2 はダミーの Rust インプラントから成る「ボックス」(GoLang ベースの C2 バイナリ内の仮想フォルダ)を開きます。場所は「plugins/npc.exe」です。実行ファイルは、Rust インプラントのビルド済みバージョンです。C2 サーバーは、Web UI を介して入力された C2 情報に基づいてホットパッチをこの実行ファイルに適用します。
スケルトンの Rust インプラントには、C2 IP/ドメインのプレースホルダと、特殊文字「$」と「*」がそれぞれ 0x21 回繰り返された形式の拡張 URL が含まれています。
たとえばダミーインプラント内には、C2 IP/ドメインのプレースホルダが次のように 16 進数で記載されています。
24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
これは、次のような IP アドレスを持つ C2 に置き換えられます。
33 39 2E 31 30 34 2E 39 30 2E 34 35 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
こうして、先ほどの HTTP GET リクエストへの応答として、ホットパッチを適用したバイナリをダウンロードできるようになります。
今回の攻撃に関連して、不正ドキュメントが標的に配布され、感染したシステムで Cobalt Strike ビーコンが展開されたことも確認しています。
感染チェーンで使用された不正ドキュメントは、青海省海西モンゴル族チベット族自治州最大の都市の 1 つであるゴルムド市における新型コロナウイルスのパンデミックに関する報告と勧告を装ったものでした。具体的な内容は、新型コロナウイルスの感染例とその後の接触者追跡に関する報告です。
ゴルムド市における新型コロナウイルスの感染例の報告を装った不正ドキュメント
不正ドキュメントには VBA マクロが含まれています。このマクロは rundll32.exe を実行し、Metasploit シェルコード(ステージ 1)をプロセスに挿入して、次のステージ(ステージ 2)をメモリ内にダウンロードして実行します。
ステージ 1 シェルコードの接続先は、39[.]104[.]90[.]45/2WYz です。
ステージ 1 シェルコードがリモートロケーションから次のステージ(ステージ 2)をダウンロード
リモートロケーションからダウンロードされた次のステージのペイロードは、また別のシェルコードです。構成内容は次のとおりです。
メモリ内のステージ 3(Cobalt Strike ビーコン)を復号して MZ の先頭から実行するコード
続いて、前のステージで復号された Cobalt Strike ビーコンが MZ ファイルの先頭から実行されます。ビーコンは、現在のプロセスのメモリに自身を反射的にロードできます。
DLL エクスポートのアドレスを計算して呼び出すことにより、ビーコンが現在のプロセスに自身を反射的にロード
ビーコンの構成は次のとおりで、0x4D シングルバイトキーで XOR エンコードされています。
BeaconType – HTTPS
Port – 443
SleepTime – 60000
MaxGetSize – 1048576
Jitter – 0
MaxDNS – Not Found
PublicKey –
b'0\x81\x9f0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x81\x8d\x000\x81\x89\x02\x81\x81\x00\x95\xe2\xd1\xdd1N\x99\x13W%\xdd\x86\x1ep\xf7c\x12\x8f\xf3\xc3\x81\x93\xc7\n84\xa2^T\x13\x93\x8d6\xec\xb5V\x931\x01\xd2\x87o\xa1\xa8\x10\xea\x9f\x8c\xc2uY\x92\xa0z\x82d1m\x02\xa44\xdbc\xdf\xd7\x1d#2U\x1b\x158\xc8\x1dqX\x91\xe5\x9b@\x9a\xe2\xea\x0b\xd2\xcd\x9f\xae\xb1h\x08\x15|\xa3\x0cc\xde<\x17o|\x0c\x96\x878\xd2\xb4|\x86}\xa7H\x99\xd7\x8fc\xc8#\xe7W7\xec\x8fmx\xeb\xe3{\x02\x03\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
C2Server – 39[.]104[.]90[.]45,/IE9CompatViewList.xml
UserAgent – Not Found
HttpPostUri – /submit.php
HttpGet_Metadata – Not Found
HttpPost_Metadata – Not Found
SpawnTo – b’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00′
PipeName – Not Found
DNS_Idle – Not Found
DNS_Sleep – Not Found
SSH_Host – Not Found
SSH_Port – Not Found
SSH_Username – Not Found
SSH_Password_Plaintext – Not Found
SSH_Password_Pubkey – Not Found
HttpGet_Verb – GET
HttpPost_Verb – POST
HttpPostChunk – 0
Spawnto_x86 – %windir%\syswow64\rundll32.exe
Spawnto_x64 – %windir%\sysnative\rundll32.exe
CryptoScheme – 0
Proxy_Config – Not Found
Proxy_User – Not Found
Proxy_Password – Not Found
Proxy_Behavior – Use IE settings
Watermark – 999999
bStageCleanup – False
bCFGCaution – False
KillDate – 0
bProcInject_StartRWX – True
bProcInject_UseRWX – True
bProcInject_MinAllocSize – 0
ProcInject_PrependAppend_x86 – Empty
ProcInject_PrependAppend_x64 – Empty
ProcInject_Execute – CreateThread
SetThreadContext
CreateRemoteThread
RtlCreateUserThread
ProcInject_AllocationMethod – VirtualAllocEx
bUsesCookies – True
攻撃者の特定について考える前に、マルウェアの開発者と攻撃実行者を区別することが重要です。C2 バイナリは、すべての機能は揃っていないものの十分に機能する自己完結型の形で公開されています。つまり、誰でもダウンロードして、今回確認した攻撃で使用できたということです。
そのため、攻撃者を特定する手がかりになるものとして解釈し得るデータポイントをリストアップすることにしました。また、分析を行うようセキュリティコミュニティに要請し、攻撃者やフレームワークの背後にいる開発者の特定に役立つ可能性のあるデータポイントが他にもあれば、リストに追加してもらうようにしました。
今回の攻撃に関しては、攻撃者の特定につながる手がかりは多くありません。確信を持って公式に言えることは、ゴルムド市で新型コロナウイルスの感染例が確認されたことが不正ドキュメントで言及されていて、その詳細が時系列で記載されているという事実だけです。
Manjusaka の開発者の特定については、手がかりになるものがいくつかあります。
Manjusaka の攻撃フレームワークは誰でも入手できます。つまり、広く入手できる攻撃技術が、犯罪目的のマルウェアを使用する攻撃者と APT 攻撃者のどちらからも支持を集めていることになります。この新しい攻撃フレームワークにはインプラントに期待されるすべての機能が含まれていますが、最新のプログラミング言語で記述されていて、移植も可能です。フレームワークの開発者は、MacOSX のようなプラットフォームを簡単に攻撃対象に加えることができます。組み込みデバイスで実行されるため標的にされにくい Linux も例外ではありません。十分に機能するバージョンの C2 が入手できるようになったことで、攻撃者の間でこのフレームワークの使用が広まる可能性が高まっています。
簡単に入手できて、さまざまな攻撃者が悪用する可能性のあるこうしたツールやフレームワークに対し、警戒を怠らないようにする必要があります。リスク分析アプローチに基づいた多層防御戦略には最高の予防効果がありますが、優れたインシデント対応計画で常に補完する必要があります。インシデント対応計画は机上の演習でテストするだけでなく、攻撃者との実際の攻防で試されるたびに見直し改善しておくことが重要です。
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらから
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、
Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらから
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトをテストします。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org
この調査の IOC は、こちら
58a212f4c53185993a8667afa0091b1acf6ed5ca4ff8efa8ce7dae784c276927
8e7c4df8264d33e5dc9a9d739ae11a0ee6135f5a4a9e79c354121b69ea901ba6
54830a7c10e9f1f439b7650607659cdbc89d02088e1ab7dd3e2afb93f86d4915
8e9ecd282655f0afbdb6bd562832ae6db108166022eb43ede31c9d7aacbcc0d8
a8b8d237e71d4abe959aff4517863d9f570bba1646ec4e79209ec29dda64552f
3f3eb6fd0e844bc5dad38338b19b10851083d078feb2053ea3fe5e6651331bf2
0b03c0f3c137dacf8b093638b474f7e662f58fef37d82b835887aca2839f529b
fb5835f42d5611804aaa044150a20b13dcf595d91314ebef8cf6810407d85c64
955e9bbcdf1cb230c5f079a08995f510a3b96224545e04c1b1f9889d57dd33c1
https[://]39[.]104[.]90[.]45/2WYz
http[://]39[.]104[.]90[.]45/2WYz
http[://]39[.]104[.]90[.]45/IE9CompatViewList.xml
http[://]39[.]104[.]90[.]45/submit.php
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Mozilla/5.0 (Windows NT 8.0; WOW64; rv:58.0) Gecko/20120102 Firefox/58
Mozilla/5.0 (Windows NT 8.0; WOW64; rv:40.0) Gecko
39[.]104[.]90[.]45
本稿は 2022 年 08 月 02 日に Talos Group
のブログに投稿された「Manjusaka: A Chinese sibling of Sliver and Cobalt Strike 」の抄訳です。