LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

Facebook X Instagram
テクニカルレポート | 

MetaRATを利用した日本組織を狙った攻撃キャンペーン

ラックのサイバー救急センターは、2025年4月、中国を拠点とする攻撃者グループがIvanti Connect Secure(ICS)の脆弱性を足がかりに、複数のPlugX亜種を用いた攻撃キャンペーンを展開していたことを確認しました。このキャンペーンは日本の海運・運送会社およびその子会社を標的としており、新たなPlugX亜種である「MetaRAT」と「Talisman PlugX」が使用されていました。

本稿では、キャンペーンの全体像に加え、MetaRATおよびTalismanの機能詳細、背後にいるとみられる攻撃者グループについて解説します。さらに、今後の対応策として、MetaRATに対する検知および対策の手法も紹介します。

なお、本稿の内容は、2025年9月24日から26日に開催されたセキュリティカンファレンスVirus Bulletin Conference 2025(VB2025)および2025年12月3日、4日に開催されたThreat Analyst Summit(TAS'25)にて、「Unmasking MetaRAT: A New PlugX Variant in China-Linked APT Operation」というタイトルで発表した内容に加筆したものです。

攻撃キャンペーン概要

図1は攻撃キャンペーンの全体像を示しています。攻撃者グループは、初期侵入手段として標的組織のICSに存在する脆弱性(CVE-2024-21893およびCVE-2024-21887)を悪用し、対象機器にマルウェアを設置しました。その後、設置したマルウェアを用いて組織内ネットワークの横展開を図るため、偵察活動および認証情報の収集を行いました。攻撃者は取得したActive Directoryの特権アカウントの認証情報を使い、組織内の複数サーバへ横展開し、PlugXの亜種を配置して攻撃活動を継続しました。

攻撃キャンペーン概要
図1 攻撃キャンペーン概要

攻撃者による初期侵入について、標的のICSで以下の2つの痕跡が確認されており、CVE‑2024‑21893およびCVE‑2024‑21887が侵入の原因と考えられます。

(1)クリティカルエラーログ

図2に示すとおり、初期侵入が行われたと推定される時刻付近に、ICSがCVE-2024-21893の悪用に関連する不正なSAMLペイロードを処理した際に生成されるクリティカルエラーログ「ERR31093」が短時間に大量に記録されていました。

クリティカルエラーログの例
図2 クリティカルエラーログの例

(2)不審ファイルの作成

Ivanti社が提供するIntegrity Checker Tool(ICT)を実行した結果、図3に示すファイルが検出されました。これらのファイル名は、Mandiant社が報告しているLITTLELAMB、WOOLTEA、PITSOCK、PITFUELといったマルウェアで使用されるものと一致します。

ICT実行後に検出されたファイル
図3 ICT実行後に検出されたファイル

これらの痕跡は、Mandiant社が2024年2月に報告※1したCVE-2024-21893およびCVE-2024-21887を悪用した攻撃内容と類似しており、これら2つの脆弱性が初期侵入の原因であると言えそうです。

ここまで、今回の攻撃キャンペーンにおける初期侵入の過程でICSに残された痕跡について解説してきました。以降では、組織内サーバに展開されたマルウェア(PlugXの亜種)について紹介します。

※1 Cutting Edge, Part 3: Investigating Ivanti Connect Secure VPN Exploitation and Persistence Attempts | Google Cloud Blog

PlugXの概要

PlugXはプラグインベースのアーキテクチャを採用した、最もよく知られたリモートアクセス型トロイの木馬(RAT)の1つで、2008年に初めて報告されました。2012年以降、多数の亜種が確認されており、中国を拠点とする攻撃者グループ(Calypso、Mustang Panda、APT10、APT41、Sanyo、LuoYuなど)によって広く利用されています。後継マルウェアと考えられるShadowPadやRatelS※2の登場後も、PlugXは進化を続け、現在に至るまで攻撃活動に活発に使用されています。こうした状況の中で、私たちは2025年のインシデント対応の過程において、PlugXの亜種であるMetaRATとTalismanの2つを確認しました。

※2 新たなモジュール型マルウェア「RatelS」に見るPlugXの面影

PlugXの変遷
図4 PlugXの変遷

MetaRAT

MetaRATは、本攻撃キャンペーンで特定されたPlugXの新しい亜種です。私たちの調査の結果、この亜種は少なくとも2022年から存在していることが判明しましたが、これまで当該亜種を指す名前がなかったことから「MetaRAT」と呼称しています。これまでの調査により、動作に多少の差異があるサンプルをいくつか確認していますが、本章では本攻撃キャンペーンで見つかったMetaRATを主に解説します。

MataRATの実行フロー

図5は、MetaRATの実行フローです。昨今のAPTマルウェアと同様に、MetaRATもDLLサイドローディングテクニックを用いて起動します。最初に実行されるローダ「mytilus3.dll」は、暗号化されたシェルコードが含まれるファイル「materoll」を読み込み、復号した上でシェルコードを実行します。シェルコードに制御が移ると、コードに内包された暗号化データをさらに復号し、MetaRATを展開します。このようにしてMetaRATが動作を開始します。

MetaRATの実行フロー
図5 MetaRATの実行フロー

なお、本攻撃キャンペーンとは関係ないものの、MetaRATのローダには実行ファイル形式(EXE形式)のものも確認しており、この場合はファイルの読み込みを行わず、自身のリソースセクション内のデータを復号しようとします。

MetaRATローダ

MetaRATローダは、暗号化ペイロードを読み込み、復号した上でメモリ上にMetaRATを展開するマルウェアです。本攻撃キャンペーンで使用されたローダ「mytilus3.dll」は、Visual C++で書かれた32bitのDLLファイルです。

このローダの動作は非常にシンプルです。最初に暗号化されたファイル「materoll」を読み込み、図6に示すように0xA6とのXORで復号します。なお、最初のXORに続いて実行される別のXORループは無意味なものであり、このXOR処理を行うと最終的に元の値に戻ります。復号後のバイナリはシェルコードであり、ローダは制御を復号したシェルコードへ移します。

MetaRATローダによる暗号化ペイロードのXORとシェルコードの呼び出し
図6 MetaRATローダによる暗号化ペイロードのXORとシェルコードの呼び出し

ここで命名について補足します。「MetaRAT」という名前は、VirusTotalから発見された別のMetaRATローダのデバッグ情報に由来します。図7は、別の「mytilus3.dll」に含まれるデバッグ情報です。PDBパスに「MetaRAT」という文字列が含まれることがわかります。

VirusTotalで発見された他のMetaRATローダのデバッグ情報
図7 VirusTotalで発見された他のMetaRATローダのデバッグ情報

シェルコード

MetaRATローダによって実行されるシェルコードは、MetaRATをメモリに展開・実行するための準備を行います。

AES鍵の展開とアンチデバッグ

最初にシェルコードは、この後の復号処理に使用する鍵をスタック上に展開します。ただし、シェルコードにはアンチデバッグの処理が2つあり、デバッグを検知した場合は鍵を破壊します(図8)。最初のアンチデバッグ処理では、PEB構造体のBeingDebuggedメンバを確認し、次のアンチデバッグ処理ではrdtsc命令を用いて、ある処理を行った際のタイムスタンプカウンタ(TSC)の差を確認します。

鍵の展開とデバッグ検知時の鍵の書き換え
図8 鍵の展開とデバッグ検知時の鍵の書き換え

API Hashing

シェルコードはAPI Hashingテクニックを用いて、実行に必要なWindows APIのアドレスを取得します。この際ror7AddHash32アルゴリズムを使用してハッシュ値の算出を行います。図9は、シェルコード内にハードコードされたハッシュ値と、取得対象のWindows APIの関数を表しています。この手法は、シェルコード以降に実行されるMetaRAT本体でも使用されます。

シェルコードに含まれるハッシュ値と対応するWindows API
図9 シェルコードに含まれるハッシュ値と対応するWindows API

ペイロードの復号と展開

その後、シェルコードは、シェルコードの後方に配置されているペイロードの復号を行います。ペイロードはAES-256-ECBで暗号化されており、復号するとLZNT1で圧縮された状態のMetaRATを得ることができます。なお、本攻撃キャンペーンのシェルコードはAESを使用していましたが、2022年頃のサンプルでは代わりにRC4を使用していたことを確認しています。図10に示す通り、AESによる復号が終わると、シェルコードは圧縮済みのMetaRATを展開するためにRtlDecompressBuffer関数を呼び出します。

AES復号および展開処理
図10 AES復号および展開処理

図11に、メモリ上に展開されたMetaRATのペイロードを示します。注目すべきは、反射型のローディングを行うにあたって一般的に必要となる値が異常な値になっているという点です。例えば、NTヘッダをみると、NumberOfSectionsやAddressOfEntrypoint、SizeOfImageなどの値が大きく、正しくないことがわかります。NumberOfSectionsについていえば、下部Sectionヘッダをみると4つのセクションが存在することがわかることから、0x9FF1ではなく0x4がセットされているべきです。

復号および展開直後のMetaRATのPEファイルヘッダ
図11 復号および展開直後のMetaRATのPEファイルヘッダ

ここで、シェルコードの反射型ローディングのコードを図12に示します。このコードから前述の異常な値から元の値を算出していることがわかります。例えば、e_lfanewについてはセットされた値(0xAF20300)から0xAF201F0を引いて0x110を算出しています。同様に、NumberOfSectionsも0x9FF1から0x9FEDを引いて0x4を算出しており、その値でセクションに関する処理を行っています。このように、メモリに展開されているMetaRATのPEファイルヘッダは不完全であり、値を参照する際に修正していることがわかります。これらの値はシェルコードごとに異なっており、一定ではありません。

反射型ローディングにおける値の算出処理
図12 反射型ローディングにおける値の算出処理

エクスポート関数の呼び出し

最後にシェルコードは、展開したMetaRATのエクスポート関数を呼び出します。図13からはMetaRATのエクスポート関数「winentry」の文字列を確認できます。このエクスポート関数名についても固定ではなく、これまでに分析したサンプルからは「asentry」や「windows」などの文字列の使用が確認されています。

エクスポート関数の呼び出し処理
図13 エクスポート関数の呼び出し処理

MetaRAT

MetaRATは、C/C++言語で書かれたPlugXの亜種です。このRATは、システム情報の収集やコマンド実行などのC2コマンドをサポートしており、これまでのPlugXと同様、キーロガーやポートマッピングなどのプラグインも使用可能です。また、MetaRATの永続化は、設定データ内のパラメータに応じてRunキー登録またはサービス登録で行われます。痕跡の具体例に関しては、後述の「攻撃痕跡の確認方法と検出」をご参照ください。

一般的なPlugXと比べ、MetaRATは文字列の難読化方法や設定データの構造、設定データの暗号化方法、C2コマンド、プラグインのコマンドなどが異なっています。以降では、これらの詳細を解説します。

表層的な特徴

MetaRATは32bitのDLL形式であり、エクスポート関数「winentry」が先述のシェルコードによって呼ばれることで動作します。当該ファイルのエクスポートディレクトリテーブルを確認すると、MetaRATには元のDLLファイル名と考えられる文字列「Shellcode.dll」が含まれていることがわかります(図14上)。「Shellcode.dll」という名前は他のMetaRATのサンプルにおいても共通してみられる特徴です。また、デバッグ情報を確認すると、タイムスタンプを含んでいることがわかります(図14下)。なお、私たちが調査したすべてのサンプルには、デバッグ情報のタイムスタンプもしくはエクスポートディレクトリテーブルのタイムスタンプのいずれかが含まれていました。

DLLのファイル名とデバッグに関するタイムスタンプ(上:Export Directory Table/下:Debug Directory)
図14 DLLのファイル名とデバッグに関するタイムスタンプ(上:Export Directory Table/下:Debug Directory)

文字列の難読化

MetaRATの文字列は、TEA暗号またはSUB+XOR+ADD(減算と排他的論理和と加算)のいずれかを用いて難読化されています。前者は21個の文字列を難読化しており、後者は24個の文字列を難読化していました。

文字列の難読化解除処理(TEAアルゴリズム) 文字列の難読化解除処理(SUB+XOR+ADD)
図15 文字列の難読化解除処理(上:TEAアルゴリズム/下:SUB+XOR+ADD)

なお、MetaRATには難読化されていない文字列も一部存在しています。例えば、暗号化ペイロードが格納されているファイル名「materoll」やMetaRATローダのファイル名「mytilus3.dll」、プラグインが使用するファイル名「VniFile.hlp」、レジストリキー名「matesdata」などは難読化されていません。推測ですが、ファイル名のように頻繁に変更する必要のある文字列についてはあえて難読化していない可能性が考えられます。

難読化されていない文字列の例
図16 難読化されていない文字列の例

設定データ

MetaRATの設定データは、SUB+XOR(減算と排他的論理和)でエンコードされた状態で、通常dataセクションに格納されています。図17にデコードを行う際のコードを示します。MetaRATは、最初に設定データの先頭8バイトを確認し、固定値と一致した場合はテスト用の設定データをセットします。一致しない場合はSUB+XOR演算でデコードします。設定データのサイズは、図中のFor文から読み取れる通り、0x1BFAバイトです。

設定データのデコード箇所
図17 設定データのデコード箇所

次に、設定データの具体例を図18に示します。この図からは、インストール先や永続化時のサービス名、サービスの説明、ミューテックス、C2通信先情報(C2タイプ、ポート、C2通信先)などの情報が設定データに含まれていることが確認できます。これらのうち、C2通信時のプロトコルを表すC2タイプは、TCP(0)、UDP(2)、HTTP(0x20)、HTTPS(0x40)、ICMP(0x80)のいずれかを設定できるようになっており、MetaRAT特有の値が採用されています。

設定データの例
図18 設定データの例

デモモード

興味深い点として、MetaRATの設定ファイルにはデモに関するフラグが存在します。この値を設定すると、MetaRATは図19に示すメッセージボックスを3秒間だけ表示します。このような機能は古いPlugXにも見られますが、従来と比べ文字列が若干異なっています。PlugXが「THIS IS A DEMO VERSION!!!」であるのに対し、MetaRATは「This Is A Demo!!!」です。

デモに関するコードと表示されるメッセージボックス
図19 デモに関するコードと表示されるメッセージボックス

C2通信

MetaRATは、TCP、UDP、HTTP、HTTPS、ICMPのいずれかを使用してC2サーバと通信することができます。図20はHTTPSのC2通信の例です。本攻撃キャンペーンの実際の設定データにおいても、攻撃者グループはHTTPSを使用していました。

通信の特徴として、次の3点が挙げられます。

  • リクエストURIとして「16進数+.jsまたは.cssまたは.less」に使用する
  • HTTPヘッダに独自の値「Cookie-Yaga」もしくは「Cookie-Nguy」を付与する
  • User-Agentに「Mozilla/5.0 (Compatible; MSIE 9.0; Windows NT 10.0)」の固定フォーマットを使用する
C2通信例
図20 C2通信例

また、POSTメソッドにおいて送受信されるボディデータは、次に示すデータ構造(http_body_data)です。このうち、headerメンバはAES-256-ECBで暗号化され、dataメンバはgzipで圧縮された後AES-256-ECBで暗号化されます。gzipとAESを使用する点もMetaRATの特徴の1つです。

struct packet_hdr {
   DWORD hard_coded_value; // 0x20221201
   DWORD command_id;
   DWORD data_len;
   DWORD errc;
};
struct http_body_data {
    DWORD first_byte_key_of_AES;
    packet_hdr header;
    BYTE data[];
};

C2コマンド

MetaRATに実装されているコマンドは次の通りです。これらのうち、0x1から0xAまでは一般的なPlugXにおいて既に確認されていますが、その他(0xB、0xC、0x2008、0x3023)についてはMetaRAT特有の実装です。

表1 C2コマンド
コマンドID 説明
0x1 システム情報を収集して送信する
0x2 C2コマンドの再リクエストを行う
0x3 プラグインの操作を行う
0x4 C2コネクションをリセットする
0x5 MetaRATをアンインストールする
0x6 現在の設定データを送信する
0x7 設定データを更新する
0x8 不明(インジェクションプロセスに関する情報を送信する可能性があります)
0x9 or 0xA 不明(このコマンドを受信後に特定領域を初期化します)
0xB 受信データをファイル「metawins.slp」に保存する
(C2通信のスリープ処理に関連した処理と考えられます)
0xC ファイル「metawins.slp」のデータを送信する
0x2008 MetaRATのプロセスを再起動する
0x3023 任意のコマンドを実行する

プラグイン

表2は、MetaRATに埋め込まれたプラグインの一覧です。本攻撃キャンペーンで確認できたプラグインは、キーロガー機能を提供するKeylogDumpプラグインと、ポートマッピング機能を提供するPortMapプラグインの2つです。

いずれのプラグインにおいても、タイムスタンプと考えられる値は従来のPlugXやその亜種で確認されている値でしたが、PortMapプラグインに関しては新しいコマンドが実装されていました。このプラグインは、これまでC2サーバからのデータを特定のIPアドレスへ送信するだけの機能しか持ちませんでしたが、新しいコマンドの実装により逆方向の通信もできるようになっています。

表2 プラグイン
プラグイン名 タイムスタンプ コマンドID 説明
KeylogDump 0x20120324 0xE000 キーログファイル「VniFile.hlp」を送信する
PortMap 0x20120325 0x2000B000 指定されたホストとのTCPコネクションを確立し、
C2サーバとホスト間のトンネルコネクションを開始する
(これは、元のPortMapプラグインのコマンド0xB000に相当します)
0xF001 ポートを開放する
(受信開始には別途0xF005のコマンドが必要となります)
0xF005 開放したポートによるデータの受信を開始する
(受信したデータはC2サーバへ送信されます)
0xF006 or 0xF007 開放したポートを閉じる
0x3000F004 開放したポートを介してデータをクライアントへ中継する

MetaRATの変遷

本攻撃キャンペーンで使用されたMetaRATをもとに類似マルウェアを調査したところ、当該亜種は少なくとも2022年には存在するということがわかりました。MetaRATの系統と考えられるマルウェアは3つに大別でき、MetaRATに含まれるコンパイルもしくはデバッグのタイムスタンプ情報で整理すると、その変遷は図21のようになります。

MetaRATの変遷
図21 MetaRATの変遷

まず、2022年時点におけるMetaRATは、元のPlugXと比べて大きな差異はないマルウェアでした。相違点としては、設定データサイズが0x24FCバイトであった点、設定データの復号にシンプルな1バイトのXORを使用している点、文字列の難読化としてTEAまたはSUB+ADD+XORを使用する点などに留まります。この亜種はCisco社からもPlugXの亜種として報告※3されています。

2023年には、本攻撃キャンペーンで使用されたMetaRATが出現し、前述した機能や特徴が実装されました。2022年のMetaRATと比較すると、設定データサイズの変更や難読化の強化、C2コマンドの拡充など大きく変更されており、積極的に開発されたことが窺えます。その後、2025年におけるMetaRATについては大きな変更は見られないものの、DLL形式からEXE形式に変えたローダの使用を確認しており、今後も開発が進む可能性が予想できます。

※3 How RainyDay, Turian and a new PlugX variant abuse DLL search order hijacking

Talisman

Talismanは、2022年3月にTrellix社が報告※4したPlugXの亜種です。MetaRATと同様に、DLLサイドローディングを悪用して実行されます。

※4 PlugX: A Talisman to Behold

Talismanの実行フロー

図22はTalismanの実行フローを示しています。Talismanローダが読み込むファイル名が「w32.sob」である点を除けば、利用されているファイル名を含めてMetaRATの実行フローと同様です。

Talismanの実行フロー
図22 Talismanの実行フロー

Talismanローダとシェルコード

Talismanローダ「mytilus3.dll」は、カレントディレクトリからTalismanを実行するシェルコードを含む暗号化ペイロードを読み込み、シェルコードを復号した後に実行するローダ型マルウェアです。

このマルウェアは、正規アプリケーションの実行に伴って読み込まれ、DLLのエントリポイントであるDLLMain関数が呼び出されます。続いて、同一ディレクトリ内にあるペイロードファイル「ws32.sob」を読み込み、XOR演算および減算(SUB)演算を用いてペイロードを復号し、復号したシェルコードを実行します(図23)。

Talismanローダによるペイロードの読み込み
図23 Talismanローダによるペイロードの読み込み

図24は、Talismanローダによって復号されたシェルコードの一部です。シェルコード内には、暗号化されたTalismanの設定データおよび圧縮・暗号化されたTalismanが含まれており、図25に示す特徴的な定数やシフト演算、XOR演算を用いてデータを復号します。復号したTalismanのコードはLZNT1形式で圧縮されているため、RtlDecompressBuffer関数を使用して展開します。この展開後のデータがPE形式のTalismanです。

復号されたシェルコードの一部
図24 復号されたシェルコードの一部
復号ルーチンおよびRtlDecompressBuffer APIを呼び出すコード
図25 復号ルーチンおよびRtlDecompressBuffer APIを呼び出すコード

最後に、図26に示すように、当該データのPEヘッダ先頭部をTalisman固有のシグネチャ値(0xCF455089)に書き換え、特定の正規プロセスへコードをインジェクションしてTalismanを実行させます。

Talismanカスタムの作成コード
図26 Talismanカスタムヘッダの作成コード

Talisman

Talismanは、Microsoft Visual C/C++で実装されたPlugXの亜種です。このマルウェアには、コマンド実行、ファイル操作、キーロギングなどに対応する10種類以上のプラグインが含まれており、TCP、UDP、HTTP、HTTPS、ICMPなど複数の通信プロトコルをサポートしています。また、Talismanは、中国を拠点とする複数の攻撃者グループの間で共有・利用されています。

今回確認したTalismanについては、設定ファイル内のC2サーバ、Mutex名、キャンペーンIDなどの設定値は異なるものの、機能面や暗号化方式はTrellix社が報告している検体と概ね同様です。そのため、詳細な機能の説明については、Trellix社の報告※5をご参照ください。

※5 PlugX: A Talisman to Behold

一方、Talismanの解析過程で、2025年1月にカスタムヘッダに含まれるMagic Valueが従来と異なるTalismanの亜種を確認しました(図27)。Magic Valueは従来の「0xCF455089」から「0xAC310065」に変更されており、この値はヘッダの先頭ではなく、先頭から4バイトのオフセット位置に格納されていました。

ヘッダの比較(上:Talisman/下:Talisman亜種)
図27 ヘッダの比較(上:Talisman/下:Talisman亜種)

なお、その他の特徴については、設定ファイルのサイズ(0x1924)、暗号化アルゴリズム、ハードコードされたプラグイン、固定キー(0x20161127)などに変更は確認されませんでした。推測の域を出ませんが、この変更は、セキュリティ製品による検出を回避するための変更である可能性が考えられます。

Magic Valueをチェックするためのコードの比較(上:Talisman/下:Talisman亜種)
図28 Magic Valueをチェックするためのコードの比較(上:Talisman/下:Talisman亜種)

PlugX亜種の比較

まとめとして、PlugX亜種の特徴的な機能の違いを表3に整理しました。

PlugXとMetaRATの間には、機能面でいくつかの差異が確認できます。MetaRATは、Talismanなどの他亜種と比べて独自コードの実装箇所が多く、異なる文字列の難読化処理や設定ファイルの暗号化方式を採用しています。また、今回のキャンペーンのMetaRATと2022年のMetaRATを比較すると、新しいバージョンではC2コマンドが拡張され、機能が強化されています。

また、興味深い点の1つとして、TalismanとMetaRATの文字列の難読化処理は、いずれも「SUB+XOR+ADD」の順で、SUBに0x3D、XORに0xB2、ADDに0x5Fという同一の定数を用いていました。

表3 PlugX亜種の比較
一般的なPlugX Talisman
(本キャンペーン)
MetaRAT
(2022年サンプル)
MetaRAT
(本キャンペーン)
Magic Value GULP 0xCF455089 None None
設定ファイルサイズ 0x150C 0x1924 0x24FC 0x1BFA
固定キー 0x20126666 0x20161127 0x20210206 0x20221201
コンパイルタイム(UTC) Jun 26, 2024 Mar 24, 2022 Jun 28, 2022 Mar 11, 2023
文字列難読化 なし SUB+XOR+ADD TEA or SUB+XOR+ADD TEA or SUB+XOR+ADD
設定データ暗号化 Well-known PlugXアルゴリズム Well-known PlugXアルゴリズム XOR SUB+XOR
通信データ暗号化 同上 同上 AES-256-ECB AES-256-ECB
C2通信プロトコル TCP, HTTP, UDP or ICMP TCP, HTTP, UDP, ICMP or HTTPS TCP, HTTP or UDP TCP, HTTP, UDP, ICMP or HTTPS
カスタムC2コマンド なし なし 2コマンド(0xB, and 0x2008) 4コマンド(0xB, 0xC, 0x2008, and 0x3023)

攻撃者グループの考察

MetaRATを利用する攻撃者グループについて考察します。今回の攻撃キャンペーンでは、攻撃者がMetaRATに加えてTalismanも併用していたことを確認しました。本事案の調査を進める中で、表4に示すとおり、MetaRATローダおよびTalismanローダに含まれるPDBファイルパスが類似する検体を確認しました。これらの共通点は、同一の攻撃者がMetaRATとTalismanを併用している可能性を示唆する根拠の1つと考えられます。

表4 MetaRATローダおよびTalismanローダのPDBファイルパス
Filename Timestamp
(UTC)
Payload Name Malware Family PDB Path
mytilus3.dll 2023-05-22 03:06:55 materoll MetaRAT E:¥Code¥MetaRAT¥MetaRAT¥Client¥Resources¥DllHijack.pdb
mytilus3.dll 2023-08-06 10:37:42 materoll MetaRAT D:¥Project¥MetaRAT¥MetaRAT¥Client¥Resources¥DllHijack.pdb
mytilus3.dll 2025-04-21 08:25:24 materoll MetaRAT C:¥Users¥sysadminDEV¥Desktop¥ReControl¥2-M¥M¥M-miansha¥K-DllHijack-免杀¥bin¥mytilus3.pdb
mytilus3.dll 2025-05-24 06:24:47 ws32.sob Talisman C:¥Users¥sysadminDEV¥Desktop¥ReControl¥1-K¥K1¥K-maker¥K-DllHijack-免杀¥bin¥mytilus3.pdb

そこでまずは、Talismanを用いる攻撃者グループに着目します。図29は、Talismanが使用された攻撃キャンペーンに関する公開レポートを時系列で整理したものです。

Talismanは、前述のとおり2022年3月にTrellix社が命名したPlugXの亜種であり、このマルウェアはRecorded Future社が2021年に報告した中国の攻撃者グループRedFoxtrotに紐づく可能性が指摘されています。また、同時期にDr.Web社は、中国の攻撃者グループCalypsoがカザフスタンの通信事業者に対してTalismanを使用していたことを報告しています。さらに、2024年にはPositive Technologies社がロシアの政府機関や企業を標的とした攻撃で本マルウェアが用いられたと報告しています。

これらの報告から、TalismanはRedFoxtrot、Space Pirates、Calypsoなど複数の中国を拠点とする攻撃者グループによって使用されていることが示唆されます。

Talismanが用いられた攻撃キャンペーンに関連するタイムライン
図29 Talismanが用いられた攻撃キャンペーンに関連するタイムライン

図30はTalismanを利用する3つの攻撃者グループの特徴を簡潔に整理したものです。これらのグループは2015年前後に活動を開始し、政府機関や通信事業者を主な標的としています。また、各グループの標的対象国に着目すると、いずれのグループも中央・南アジアを中心に攻撃を展開していることが確認できます。

Taslismanを利用する攻撃者グループ
図30 Taslismanを利用する攻撃者グループ

攻撃者グループとマルウェアの関係性

次に、攻撃者グループとMetaRATの関連性について考えます。図31はMetaRATの通信先を示したものです。黄色の線が示すように、MetaRATのC2インフラは2022年頃にCalypsoが使用していたC2インフラと一部重複していることが確認できます。さらに、青色の線に着目すると、MetaRATの通信先は2024年頃にSpace Piratesが使用したと報告されているC2インフラとも重複していることがわかります。これらを踏まえると、Talismanを利用するグループのうち、少なくともSpace PiratesとCalypsoの2グループがTalismanとMetaRATを併用している可能性が示唆されます。しかしながら、今回の攻撃キャンペーンに関しては、C2インフラから特定の攻撃者グループとの明確な関連性は確認できませんでした。

攻撃者グループとMetaRATのC2インフラの関係
図31 攻撃者グループとMetaRATのC2インフラの関係

一方で、MetaRATの解析を進める中で、MetaRATを内包するシェルコードと類似した特徴を持つ別のマルウェア、RainyDay※6およびTurian※7の存在を確認しました。図32は、MetaRAT(2022年サンプル)、RainyDay、Turianの各ペイロードを内包するシェルコードを比較したものです。これら3つのシェルコードはいずれも、橙枠で示した同一のRC4鍵を用いて各ペイロードを復号し、その後LZNT1で展開します。複数のマルウェアファミリーが類似したシェルコードを用い、同一の暗号鍵およびアルゴリズムにより各ペイロードを復号・展開している事実は、同一のマルウェア開発者の関与、もしくはソースコードの共有が行われている可能性を示唆するものです。なお、TurianサンプルにはControl Flow Flattening(CFF)が施されているため、図中では一部のコードを省略しています。

※6 RainyDayは、ファイル操作、シェルコマンドの実行、プロセス操作、スクリーンキャプチャなどの機能を備えたRATであり、C2通信にTCPおよびHTTPプロトコルを使用します。

※7 Turianは、ファイル操作、シェルコマンドの実行、プロセス操作などの機能を備えたRATであり、C2通信にSSLトラフィックを偽装した通信を利用します。

シェルコードの比較(RainyDay)
シェルコードの比較(Turian)
シェルコードの比較(MetaRAT)
図32 シェルコードの比較(左:RainyDay/中央:Turian/右:MetaRAT)
図32 シェルコードの比較(上:RainyDay/中央:Turian/下:MetaRAT)

最後に、ここまでの分析結果を踏まえ、攻撃者グループとマルウェアの関連性を整理します。

今回の攻撃キャンペーンでは、図33の赤枠で示すように、MetaRATとともにTalismanの使用が確認されています。また、MetaRATを内包するシェルコードに着目してみると、同様のシェルコードを用いるRainyDayおよびTurianは、攻撃者グループ「Naikon」および「BackdoorDiplomacy」によって使用されています(図34)。

攻撃者グループとマルウェアの関連性
図33 攻撃者グループとマルウェアの関連性
RainyDayまたはTurianを利用する攻撃者グループ
図34 RainyDayまたはTurianを利用する攻撃者グループ

さらに、MetaRATとRainyDayで使用されている文字列やコードの一部に類似点が見られることから、2つのマルウェアは同一の開発者が関与している、あるいはソースコードが共有されている可能性が考えられます。図35は、類似コードの一例であるタイムスタンピング(timestomping)機能の実装を比較したものです。いずれのマルウェアも、SYSTEMTIME構造体のwYear、wHour、wMinuteメンバなどに設定する値の生成処理が類似しています。

タイムスタンピング機能の実装コードの比較(RainyDay)
タイムスタンピング機能の実装コードの比較(MetaRAT)
図35 タイムスタンピング機能の実装コードの比較(左:RainyDay/右:MetaRAT)
図35 タイムスタンピング機能の実装コードの比較(上:RainyDay/下:MetaRAT)

MetaRATとの関連については複数のマルウェアや攻撃者グループの関与が考えられます。一方で、本キャンペーンで確認できたマルウェアはMetaRATとTalismanのみであり、NaikonやBackdoorDiplomacyとの明確な関連性は確認されていません。

以上を踏まえ、本攻撃キャンペーンには中程度の確度でSpace PiratesまたはCalypsoの関与が考えられ、標的およびツールセットの類似性に基づきRedFoxtrotの関与の可能性も示唆されます。

攻撃痕跡の確認方法と検出

今回紹介したMetaRATは、Windowsサービスの悪用や自動起動用レジストリキーの登録、キーログファイルの作成などの痕跡を残します。これらの有無や内容を確認することで、攻撃の有無や影響範囲を調査することが可能です。以下に、その確認方法の一例を紹介します。あわせて、MetaRATを検出するためのSuricata/Snort、Splunk、Sigma、Yaraのルールも記載しています。

永続化方法の確認

図36および図37に示すような、自動起動用のレジストリキー「matesile」またはWindowsサービス「sihosts」が作成されるため、これらの有無を確認します。これらの永続化設定は、MetaRATの設定ファイルによって異なります。なお、設定ファイルによっては、このマルウェアはペイロード「materoll」をレジストリに保存する場合もあります(図38)。

自動起動用のレジストリキー
図36 自動起動用のレジストリキー
Windowsサービス
図37 Windowsサービス
MetaRATペイロード(HKCU¥SOFTWARE¥Microsoft¥matesdata)
図38 MetaRATペイロード(HKCU¥SOFTWARE¥Microsoft¥matesdata)

キーログファイルまたは設定ファイルの確認

KeylogDumpプラグインにより、「%ALLUSERSPROFILE%¥mates¥」配下に「VniFile.hlp」という名前のキーログファイルが作成されるため、当該ファイルの有無を確認します(図39)。図40は、作成されたキーログファイルの一例です。また、設定ファイル「ZBAYOBAcN」も同じディレクトリに作成されます。この設定ファイルはgzip形式で圧縮されており、ファイル名はMetaRATの設定ファイルによって異なります。

キーログファイルおよび設定ファイルの作成例
図39 キーログファイルおよび設定ファイルの作成例
キーログファイル例(デコード済)
図40 キーログファイル例(デコード済)

ルールによる検出

以下、それぞれの製品に対応するルールを利用することで、MetaRATのC2通信や挙動を検出することが可能です。詳細はAppendixを参照ください。

  • Suricata/Snortルール
  • Splunk SPLクエリ
  • Sigmaルール
  • Yaraルール

まとめ

今回は、日本の組織を標的としたMetaRATの攻撃キャンペーンについて紹介しました。MetaRATはPlugXをベースとしたモジュール型RATであり、Talismanなど他のPlugX亜種と比較して、いくつかの独自コードの実装が確認されています。一方で、RainyDayで使用される文字列やコードの一部には、MetaRATとの共通点が見られます。MetaRATは、中国を拠点とするSpace PiratesやCalypsoなどの複数の攻撃者グループによって共有・利用されており、本事案においてもこれらのグループの関与が考えられます。

今回の攻撃キャンペーンでは機密情報の窃取痕跡は確認できず、認証情報の収集に焦点を当てていた可能性が高いと考えられます。これは、攻撃者が将来的に必要に応じて標的組織へ再侵入するための準備行為であった可能性を示唆します。組織は、日々のセキュリティ運用およびインシデント対応プロセスを強化するとともに、脆弱性の放置や不適切なアカウント管理など、攻撃の起点となり得る要因を継続的に排除することが重要です。さらに、EDRによるエンドポイント監視やネットワーク機器による通信の制御・監視など、多層的なセキュリティ対策を講じることも不可欠です。

私たちは今後も、MetaRATおよび当該マルウェアを利用する攻撃者グループについて継続的に調査を行い、その結果を広く情報提供してまいります。ぜひご活用いただければ幸いです。

松本 拓馬、石川 芳浩

Appendix

Suricata/Snortルール

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"MetaRAT C2 traffic detection"; content:"GET"; content:"Cookie-Yaga:"; content:"Cookie-Nguy:"; content:"User-Agent: Mozilla/5.0 (Compatible|3B| MSIE 9.0|3B| Windows NT 10.0)"; sid:1000010; rev:2;)

※ 本番システムに導入する前に、適切なテストとチューニングを行うことを推奨します。

Splunkルール

index=main "Mozilla/5.0 (Compatible; MSIE 9.0; Windows NT 10.0)" AND (".css" OR ".js" OR ".less")
| regex uri_path="/([0-9A-F]{12})¥.(less|js|css)"

※ 本番システムに導入する前に、適切なテストとチューニングを行うことを推奨します。

Sigmaルール

title: Suspicious DLL-Sideloading of MetaRAT
status: Experimental
description: Detects the DLL-Sideloading of MetaRAT
date: 09/04/2025
logsource:
   category: image_load
   product: windows
detection:
    selection_1:
        Image|endswith: 'C:¥ProgramData¥mates¥mcinsupd.exe'
        ImageLoaded|endswith: 'C:¥ProgramData¥mates¥mytilus3.dll'
    condition: selection_1
falsepositives:
   - Unknown
level: high
MetaRATによるDLLサイドローディングの悪用
title: KeyLog File Creation of MetaRAT
status: Experimental
description: Detects the KeyLog File Creation of MetaRAT
date: 09/04/2025
logsource:
   category: file_event
   product: windows
detection:
    selection_1:
        TargetFilename|endswith: '¥VniFile.hlp'
    selection_2:
        Image|contains: 
            - '¥mcinsupd.exe'
    condition: selection_1 and selection_2
falsepositives:
   - Unknown
level: high
MetaRATによるキーログファイルの作成

※ 本番システムに導入する前に、適切なテストとチューニングを行うことを推奨します。

Yaraルール

rule MetaRAT_body {
meta:
	description = "MetaRAT malware"
	author = "LAC Co., Ltd."
  strings:
    $str1 = "AVCListenModeSocket" ascii
    $str2 = "metawins.slp" wide
    $str3 = "Cookie-Yaga" ascii
    $str4 = "Cookie-Nguy" ascii
    $str5 = "materoll" ascii
  condition:
    (3 of ($str*)) and filesize < 300KB
}
MetaRAT
rule MetaRAT_Loader {
meta:
	description = "MetaRAT Loader malware"
	author = "LAC Co., Ltd."
  strings:
    $str1 = "¥¥MetaRAT¥¥MetaRAT¥¥Client" ascii
    $str2 = "¥¥sysadminDEV¥¥Desktop¥¥ReControl" ascii
    $code1 = {80 34 ?? A6 [1-6] 3B C? 72 F? BA 12 00 00 00}
  condition:
    uint16(0) == 0x5A4D and ($str1 or $str2) or ($code1)
} }
MetaRATローダ

※ 本番システムに導入する前に、適切なテストとチューニングを行うことを推奨します。

Diamond Model

MetaRATを用いた本攻撃キャンペーンをダイヤモンドモデルで整理し、分析したものです。

MetaRATを用いた本攻撃キャンペーンをダイヤモンドモデルで整理し、分析したもの

IOC(Indicator Of Compromised)

Indicator Type Context
8f50f434fa776cd11869d1e43858ac6d480d176b7c0dddc09b71d40b20a4aa46 SHA-256 MetaRAT Loader
c6124a3ca27299ef1b4d053782b11fe9fe4e215cac3cbd47d09a06e2ca6dde0c SHA-256 MetaRAT Loader
6ad67d7f76986359865667bdd51ba267f6bd7e560270512074448dd7b088bcb7 SHA-256 MetaRAT Loader
00dbc8a4b3121af5a19504a9d969e36e709556420a6117eb3533f1d2a8100fd9 SHA-256 MetaRAT Loader
aec2d0cbd2f195bf35e55019a29f0d6109451eb85dc7941b73e3b562b065a11c SHA-256 MetaRAT Loader
fd87149d6b8fdcad5d84ba4a3ca52e1cef8f0c54cafca6dbbb5d156f313d79dd SHA-256 MetaRAT Payload
fd6b1ca0f26e54fa9c97ea15c834e58ffb71798df38071ad00b14f19d6a4126c SHA-256 MetaRAT Payload
c91595edd1c9a0a2c1168e3bfa532e4a7dbb6b1380afd80ba445b728622798a4 SHA-256 MetaRAT Payload
c90460e820a8c5874d5412032b7db719cb8ea34ae8e48e4ab934a4096a09612b SHA-256 MetaRAT Payload
a92ed5f831c99bb84208ef7d7c733e0183a79de40f9d3b3be54744951f0a1391 SHA-256 MetaRAT Payload
0ec83d1deb6065cac8ba8f849cdf5672da7313ec2e860a7d71bb7e397e661394 SHA-256 MetaRAT Payload
7b028a9bd2bc0c306ab6561cf702406f5925fc073f9d0d2d9408ceccd6907743 SHA-256 MetaRAT Payload
aba6f7611291433983ba9c65654b04745a050530329d3ad329cc859c1ce12c44 SHA-256 MetaRAT
d3ec33ae5c8ce2ac5eb0c96c6d6dc1d5ca610bacaa9de85d1e4bfe1d60923970 SHA-256 MetaRAT
ae0f29727920882781d31d982c0b5ad71d83f1dd9cebd41e1e5e444c1e6d7854 SHA-256 Talisman Loader
78c3eb67fdc59fd09cba6388d6e31c428ed3c227f04b9cd739e8c36a8f1a182e SHA-256 Talisman Payload
367ad2eaa851ae17a4b75d92ec712d889fa85c0f2a51b9d5c5e08ae84fa7514d SHA-256 Talisman Payload
88bf17cb9f126c9c5a78a2a29138ee1cdaab3ec141115f45a1f345bb6679d57d SHA-256 Talisman Variant Loader
df5b319cc7e1f4a6389a02b7942b5db68ca55eaeb7ad8d7b78f0ab6671496d66 SHA-256 Talisman Variant Payload
doodle01[.]space C2 MetaRAT
piao.mil.onmypc[.]net C2 MetaRAT
117.254.105[.]200 C2 MetaRAT
45.114.192[.]137 C2 MetaRAT
103.9.14[.]218 C2 MetaRAT
newsinfom[.]org C2 MetaRAT
23.254.225[.]184 C2 MetaRAT
103.136.45[.]108 C2 MetaRAT
103.172.10[.]165 C2 MetaRAT
117.239.199[.]202 C2 MetaRAT
mailserver.kozow[.]com C2 MetaRAT
turky[.]info C2 Talisman
220.130.204[.]242 C2 Talisman
nord.ocry[.]com C2 Talisman
112.213.125[.]75 C2 Talisman Variant

この記事は役に立ちましたか?

はい いいえ

page top