Cisco Japan Blog

RainyDay、Turian、新たなPlugXの亜種によるDLL search order hijackingの悪用

2 min read



こんにちは、Cisco Talos の武田です。

以下の記事は、新たな PlugX の亜種を用いたキャンペーンについて取り上げて、執筆したものです。

 

この記事は、Cisco Talos の Security Research Enginner である Joey Chen と Takahiro Takeda によるブログ 「How RainyDay, Turian and a new PlugX variant abuse DLL search order hijacking」(2025/09/23) の翻訳です。

 

 

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

  • Cisco Talos は、2022 年以降に活動している新たなサイバースパイ活動を発見、このキャンペーンは、中央、南アジアの通信および製造業界を標的としており、新しい亜種のPlugXを配布しています。
  • 新しい PlugX の亜種が RainyDay および Turian と重複している点を 3 つ発見しました。
    1. DLL サイドローディングに同じ正規アプリケーションを悪用
    2. ペイロードの暗号化/復号化に Xor–RC4–RtlDecompressBuffer アルゴリズムを使用
    3. RC4 キーが共通
  • この PlugX 亜種に関連する設定は、標準的な PlugX の設定フォーマットとは大きく異なっており、代わりに RainyDay と同じ構造を採用しています。このことから、中程度の確信度をもって、このPlugX 亜種を Naikon に帰属できると評価しています。
  • これらのマルウェアファミリーは歴史的に Naikon や BackdoorDiplomacy に帰属したキャンペーンと関連付けられてきました。しかし、我々の分析により、両脅威グループの間に潜在的なつながりがあることを示す証拠が明らかになりました。これにより、両者が同一グループである、もしくは同じベンダーからツールを調達している可能性が示唆されます。

 

Overview

Cisco Talos は、中央、南アジアの通信および製造業界を標的とした進行中のキャンペーンを確認しました。収集した証拠の分析に基づき、このキャンペーンは 2010 年から活動している中国語を話すサイバー諜報の脅威アクター「Naikon」に帰属できると、中程度の確信度をもって評価しています。

これは、本キャンペーンで使用された PlugX の設定フォーマットや、この攻撃者が使用する過去のマルウェア「RainyDay」と非常によく似たマルウェア感染チェーンの分析に基づいています。

RainyDay に関する調査とハンティングの過程で、Talos は 2 つの重要な発見をしました。

第一に、複数の Turian や新たに確認された PlugX の亜種が、RainyDay と同じ正規の「Mobile Popup Application」を悪用して自身をメモリ上にロードしていたことが判明しました。

第二に、これら 3 つのマルウェアファミリーはいずれも、類似した Xor 復号関数を持つローダーを利用しているだけでなく、暗号化されたペイロードを復号する際に同一の RC4 キーを使用していることが確認されました。

今回のキャンペーンでは RainyDay や Turian に関連する活動は観測されませんでしたが、上記により Attribution に関する評価を行いました。

 

Attribution

Naikon

Naikon は、中国語を使用するサイバー諜報グループとして広く知られており、少なくとも 2010 年から活動しています。 この脅威グループは、主に東南アジア全域の政府、軍、そして民間組織を標的にし、

Aira-bodyNebulae、RainyDay といった複数のバックドアに加え、多数のカスタマイズされたハッキングツールを使用して、被害者のネットワーク環境に持続的に潜伏し、データを窃取しています。

特に、Symantec は、同グループが RainyDay を利用して複数のアジア諸国の通信事業者を標的とした長期的な諜報活動を行っており、その活動は 2020 年にまで遡ると報告しています。

 

BackdoorDiplomacy

BackdoorDiplomacy は、少なくとも 2017 年から活動しているサイバー諜報の脅威グループです。 このグループは主に、アフリカ、ヨーロッパ、中東、そしてアジアにおける外務省や通信事業者を標的としてきました。

彼らの主なツールは Turian であり、これは Quarian の改良版であると考えられています。ESET は、Turian と Backdoor.Whitebird.1 と呼ばれるバックドアのネットワーク暗号化手法に類似点があると指摘しています。

さらに Bitdefender は、Quarian、Turian、Whitebird が同一バックドアの異なるバージョンである可能性を示唆しています。Bitdefender はまた、2022 年 2 月に始まった中東の通信事業者に対する攻撃に関するブログも公開しています。

 

図 1は、Naikon と BackdoorDiplomacy をダイアモンドモデルを用いて、比較したものです。

 

図 1. ダイアモンドモデルによる NaikonとBackdoorDiplomacy の比較

 

Relations in recent campaigns

 

このキャンペーンで使用された DLL search order hijackingの悪用を調査する中で、Talos は RainyDay、Turian、そして PlugX の亜種が、いずれも同じ正規ソフトウェアを悪用して、ローダーを実行していたことを発見しました。

これらのマルウェアファミリーは一見すると異なる脅威グループ(Naikon と BackdoorDiplomacy)によって運用されているように見えますが、我々の分析では両者の間に潜在的なつながりを示唆する証拠を確認しました。

 

まず、Naikon と BackdoorDiplomacy が展開したキャンペーンには一貫した標的傾向が見られ、同様の国や産業が被害を受けていることから、両者の間に関連がある可能性が示唆されます。

両者はいずれも主に通信企業を標的としており、直近のキャンペーンでもこの傾向が続いています。我々が観測した最近のキャンペーンでは、Naikon がカザフスタンの通信企業を標的にしましたが、この国はウズベキスタンと国境を接しており、ウズベキスタンは以前 BackdoorDiplomacy の被害を受けた国のひとつです。

過去の報告によれば、この地域の国々を狙う傾向は BackdoorDiplomacy の歴史的な活動に合致します。さらに、Naikon と BackdoorDiplomacy の双方がインドを標的にした事例も観測されています。

 

さらに、両グループが使用する Loader やシェルコード構造には大きな類似点が見られ、Talos は RainyDay(Naikon)、PlugX(Naikon)、Turian(BackdoorDiplomacy)において、同一の RC4 キーや、XOR-RC4-RtlDecompressBuffer アルゴリズムがマルウェアのペイロードの復号に利用されていることを確認しました。

これらの重複点については次のセクションでさらに詳しく取り上げます。

Talos は、これら 3 つのマルウェアファミリーに関連する侵入活動のタイムライン(図2)を作成しました。このタイムラインは以下のデータを分析することで構築されたものです。

  • 我々が観測したキャンペーン
  • 第三者による報告
  • マルウェアのコンパイルタイムスタンプ
  • 感染中に生成されたキーストロークログ内のタイムスタンプ

 

図2. RainyDay、PlugXの新たな亜種 、Turianのタイムライン

 

NaikonとBackdoorDiplomacyの間に明確な関連性があると断定することはできませんが、標的の選定、暗号化/復号化のペイロード手法、暗号鍵の再利用、同一ベンダーが提供するツールの使用といった点で大きな重なりがあります。

これらの類似点は、このキャンペーンにおいて中国語話者のアクターとの中程度の信頼度の関連を示唆しています。

 

Malware Attack Flow

RainyDay、Turian、そして本キャンペーンで確認された新しい PlugX の亜種はいずれも DLL search order hijacking によって実行されます。

これら 3 種類のマルウェアには相違点があるものの、loader 自体の挙動は類似しています。

RainyDay、PlugX、Turian の loader は、正規の実行ファイルを悪用して読み込まれ、実行ファイルと同じディレクトリに置かれた暗号化されたシェルコードファイルを読み込み、データを復号してそれぞれのマルウェアを実行します。

復号された RainyDay および PlugX のペイロードはメモリ内に展開され、呼び出し元のプロセスにコードをインジェクトしてマルウェアを実行します。

一方、Turian は新たに正規のプロセス(wabmig.exe または explorer.exe)へコードをインジェクトし、マルウェアを実行します。実行後には、C2(コマンド & コントロール)を定義する Config データおよび「AntiVir」セクションを含む INI ファイルを読み込みます。

 

図 3. RainyDay malware flow

 

図 4. New PlugX variant malware flow

 

図 5. Turian malware flow

 

RainyDay, new PlugX variant and Turian loaders

これら 3 つの loader は、それぞれのマルウェア用に暗号化されたシェルコードを 実行したディレクトリから読み込み、復号し、実行するように設計されています。
ここでは RainyDay、PlugX、Turian 各ローダーの復号ルーチンを説明します。3 つのローダーには多くの共通コードが存在します。まず、GetModuleFileNameA API を使って実行ファイルのフルパスを取得します。

その後、マルウェア内にハードコードされたファイル名を用いて 実行したディレクトリからデータを読み込みます。

Talos が 2016 年に観測した最初の RainyDay loader は、データを暗号化していませんでした。しかし、その後のマルウェアでは、それぞれの loader に復号ルーチンが組み込まれるようになりました。

図 6 ~ 8 に示すように、RainyDay ローダーは 「rdmin.src」 から、PlugX ローダーは 「Mcsitesdvisor.afx」 から、Turian loader は 「winslivation.dat」 からデータを読み込み、それぞれ XOR 暗号を用いて復号します。復号されたシェルコードはメモリ内で展開され、CALL または JMP 命令を用いて実行されます。

 

図 6. RainyDay loader

 

図 7. PlugX loader

 

図 8. Turian loader

 

3 つのマルウェアローダーが復号するシェルコードのフォーマットは同一で、RC4 によって暗号化され、LZNT1 によって圧縮されたデータが含まれています。このデータを、展開、復号すると、最終的にメモリ上で実行されるコードが得られます。

このコードは、CALL または JMP 命令による制御の移行後、一部のケースでは、下図に示すような Control Flow Flattening  (CFF) が実装されていることを確認しています。

 

図 9. RainyDay と TurianによるCFFのコード(一部抜粋)

 

図 10 のとおり、Windows API を解決するために ROL25 ベースの加算型 API ハッシュ関数が使用されています。その後、コードは RC4 によって復号されます(図 11)。

復号後、コードは LZNT1 で圧縮されており、RtlDecompressBuffer API を呼び出して解凍し、それぞれ RainyDay、PlugX、または Turian の本体を展開します。

 

図 10. ROL25-based additive API ハッシュ関数

 

図 11. 復号処理 (RC4とRtlDecompressBuffer, LZNT1)

 

下の図 12 に示す通り、LZNT1 で解凍された DLL ファイルは、ファイルヘッダーが削除されています。 この例では、PE ヘッダーの位置を示す e_lfanew の値が異常に大きい 0x01240120 に設定されており、明らかに不正な値が挿入されていることを示しています。

 

図 12. LZNT1で復号された DLL ファイル(一部抜粋)

 

RC4 key used for malware decryption

図 13 は、3 種類の異なるマルウェアファミリーと、それぞれのサンプルで使用されている RC4 キーを示しています。RainyDay は「8f-2;g=3/c?1wf+c92rv.a」を RC4 キーとして使用しています。

この同じキーは PlugXとTurian でも使用されています。RainyDay の初期バージョンでは、この文字列はマルウェア自体ではなく通信の暗号化に使用されていました。

RainyDay で指定されているもう一つの RC4 キー「jfntv`1-m0vt801tyvqaf_)U89chasv」も PlugX で使用されています。以上から、RainyDay、PlugX、Turian の間で同じ RC4 キーが共有されていることが分かります。

また、攻撃者が複数のマルウェアファミリーを同時に運用していること、そして複数のマルウェアファミリー間で RC4 キーを共有していることから、これらの活動が同一または関係する攻撃グループによって行われていると推測できます。

 

図 13. マルウェアファミリー別の RC4 キー

 

PDB paths included in the loader

loader から複数の PDB パスが見つかっており、これらがそれぞれのファイルの役割を説明しています。

 

Turian loader:

 

C:\vc_code\No.3\3-2hao\3-2hao-211221\dlltoshellcode_and_shellcodeloader_211221\Resources\pc2msupp.pdb

C:\vc_code\code_test\26.icmpsh-master(tigong wangzhiban)\shellcodeloader_vs2008\Release\shellcodeloader_vs2008.pdb

 

Possible PlugX loader:

 

C:\Users\admin\Desktop\Desktop_bak\success_bai\MicrosoftEdgeUpdate.exe\shellcode_xor\dll-MicrosoftEdgeUpdate\Release\2-dll-MicrosoftEdgeUpdate.pdb

 

PDB 文字列の詳細な分析から、いくつかの重要な点が明らかになりました。
第一に、すべての loader にはシェルコード構造が含まれており、これは両方の間で一貫しており、メモリにインジェクトされています。
第二に、Turian ローダーの PDB パス (Bitdefender も言及)「No.3\3-2hao\3-2hao-211221」は、プロジェクト名、バージョン、そしてタイムスタンプを参照しているようであり、「211221」は 2021 年 12 月 21 日の日付を示している可能性があります。

 

さらに、別の Turian loader の PDB パスには「icmpsh-master」が含まれており、これは ICMP Shell (icmpsh) を指している可能性が高いです。icmpsh は隠密な C2 通信に利用されるよく知られたツールまたはマルウェア手法です。
また、PDB 文字列中の括弧内にある「(tigong wangzhiban)」という表記は中国語で「提供网页版(provide web version)」を意味しており、この icmpsh のバージョンがウェブベースで利用できるように改変されている可能性を示しています。

これはリモートサーバーやウェブベースの C2 インフラとやり取りするためのものと考えられます。

 

最後に、RainyDay ローダーの PDB パスは「MicrosoftEdgeUpdate」と関連する DLL を含むプロジェクトを指しています。
この DLL は悪意あるものである可能性があり、正規の MicrosoftEdgeUpdate.exe プロセスにインジェクションされるよう設計されていると考えられます。

 

図 14. 各loaderに含まれる PDB Path

 

RainyDay and new PlugX variant from same infection chain

 

このセクションでは、RainyDay の歴史と技術的詳細を解説します。
このマルウェアは 2021 年に Bitdefender によって最初に発見され、Kaspersky では FoundCore としています。両方の調査レポートの知見を組み合わせることで、RainyDay の主な特徴と挙動をまとめることができます。

  • 正規の DLL サイドローディングを利用してマルウェアを実行する。
  • ペイロードにはシェルコードが含まれており、最終ペイロードを抽出する役割を持つ。
  • ペイロードは XOR-RC4-RtlDecompressBuffer を用いて暗号化され、構成情報は単純な 1 バイト XOR キーで暗号化されている。
  • 特に重要なのは、構成情報に C2 サーバーアドレス、フォルダ名、サービスの説明、ミューテックス、レジストリキーのパスなどの重要な詳細が含まれている点である。

 

これらの情報から、Talos は複数の RainyDay の loader やペイロードを各種マルウェアリポジトリで発見しました。すべてのサンプルが RainyDay のシグネチャに一致していましたが、最終的なペイロードは実際には 2 つの異なるマルウェアファミリーに属していることが判明しました。

ひとつは既報の RainyDay 、もうひとつは悪名高い中国製リモートアクセス型トロイの木馬(RAT)である PlugX の新しい亜種です。

図 15 ~ 17 には、どちらも構成情報の復号処理コードを共有している異なるマルウェアファミリーが示されています。

 

図 15. RainyDay の設定ファイルを復号するコード (Bitdefenderによって確認されたケース)

 

図 16. 最も古いバージョンの Rainyday の設定ファイルを復号するコード

 

図 17. 今回観測した PlugX の亜種の設定ファイルを復号するコード

 

Older version of RainyDay backdoor

詳細な分析の結果、Talos は RainyDay の初期のバージョンを特定しました。コード構造は、他のセキュリティベンダーの公開資料で説明されている新しい亜種と密接に一致しています。

この初期のバージョンは、対象ホストの Windows バージョンと CPU アーキテクチャを判定するために、同じコードロジックを利用しています。

特筆すべきは、デバッグログが亜種の間で顕著な類似点を示している点です。図 18 に示されているように、攻撃者は RainyDay の機能を強化しただけでなく、デバッグログの出力も改良しています。この改良は、マルウェア開発者による個別関数のデバッグ効率を高める目的があると考えられます。

一方で、この初期のバージョンは Bitdefender の過去の報告で詳述された内容と非常に近く、主な相違点は C2 HTTP 通信機能およびファイル操作機能が存在しないことです。

 

図 18. 左: Bitdefender により報告された RainyDay 右 : Talos によって確認した初期バージョンの RainyDay

 

Talos は、この RainyDay が初期のバージョンであることを裏付ける 2 つの有力な証拠を新たに発見しました。
第一に、この亜種のローダーは 2018 年 2 月 27 日 12 時 32 分 40 秒 (UTC) にコンパイルされており、これまでに確認された中で最も古いサンプルです。
第二に、設定ファイルには 2016 年 12 月 28 日にタイムスタンプが含まれていました。

これらの情報に基づき、Talos は RainyDay が少なくとも 2016 年から活動していると高い確度で評価しています。

 

図 19. RainyDay の設定ファイル (初期バージョン)

 

Talos はまた、マルウェア内に埋め込まれた PDB 文字列パスを発見し、マルウェアの元のファイル名が明らかになりました。

 

C:\Users\Qs\Desktop\Workspace\1qaz\bin\core.pdb

 

ファイル名が同一であることから、この発見は初期の RainyDay と 2021 年の FoundCore との関連性をさらに強化するものとなります。

 

PlugX variant

Talos が特定したもう一つの最終ペイロードは、カスタマイズされた PlugX の亜種です。これは最近のキャンペーンにおいて、脅威アクターが、このマルウェア主要なバックドアとして使用していると私たちは考えています。

この PlugX 亜種自体は特に新しいものではなく、そのプラグイン機能も過去のレポートで既に文書化されていますが、重要な点で際立っています。それは、従来確認されていた PlugX の設定とは大きく異なる設定を持っているという点です。代わりに、この亜種は RainyDay と同じ設定構造を採用しています。

この特徴は、脅威アクターが PlugX のオリジナルのソースコードにアクセスできる可能性を強く示唆しています。これにより、彼らはこのような改変が可能になります。同時に、脅威アクターが PlugX の設定部分をさらに改変し、自らの好みに合う構造へと調整してくる可能性についても認識しておく必要があります。

 

図 20. PlugXの設定ファイル

 

Talos は、このキャンペーンで観測された PlugX の亜種が BackDoor.PlugX.38 をカスタマイズしたバージョンであると高い確信を持っています。

オリジナルの亜種と同様に、このマルウェアは SetUnhandledExceptionFilter 例外ハンドラを利用して、threads_container 内で例外を引き起こしたスレッド ID を特定し、その後に関連する文字列を生成します。

また、この亜種では改変が加えられており、XOR 演算を用いてこれらの文字列を暗号化する仕組みが導入されています。マルウェアが該当関数を実行すると、文字列はランタイム中に動的に復号されます。

 

図 21. Exception filter の設定

 

プロセスが整うと、 SeDebugPrivilege と SeTcbPrivilege を取得し、権限を昇格させます。

続いてメインルーチンを初期化し、設定で指定されたフォルダパスを特定して、感染チェーン用のファイルを当該フォルダにドロップします。マルウェアは DoImpUserProc スレッドを作成し、プラグインの操作を管理するか、OnlineMainDump という関数を実行します。

検出回避のため、攻撃者は SeDebugPrivilege および SeTcbPrivilege の文字列を改変した Tiny Encryption Algorithm (TEA) で暗号化して隠蔽します。

 

図 22. 権限昇格

 

PlugX が OnlineMainDump 関数を実行すると、まず自身のプロセスに対して高レベルのアクセス権を付与するため、権限昇格を試みます。その後、特定の 3 つのプラグイン KeylogDump, Nethood, PortMap を取得します。

続いて、BackDoor.PlugX.38 と同じ手法を用いて、悪意あるサービスを services.exe プロセス内に隠蔽します。これが完了すると OnlineNotifyDump スレッドが開始され、設定が再初期化されます。

最後にマルウェアは OlProcManager スレッドを用いて、現在のプロセスの枠組みの中でこれら 3 つのプラグインの実行を管理します。

 

図 23. PlugX Main 関数

 

すべての初期化手順が完了すると、マルウェアは C2 サーバーへの接続を繰り返し行うサイクルに入ります。接続手法自体は BackDoor.PlugX.38 と同一ですが、この亜種は通信に HTTPS プロトコル を特に使用しています。

さらに、この PlugX 内には 「VTCP 10.12.08」 というライブラリのバージョン名が埋め込まれていることを確認しました。VTCP ライブラリ はこれまでの解析でも PlugX に一般的に関連するコンポーネントであることが確認されており、この亜種が同一マルウェアファミリーに属することを裏付けています。

 

図 24. PlugXが使用するプロトコル

 

さらに、Talos は、解析したすべての PlugX のペイロードにキーロガーのプラグインを組み込んでいることを観測しました。キーロガーの機能やデータ書き込み形式は、過去の報告で記載されたものと一貫しています。

しかし、いくつかの顕著な違いがあります。ファイル名が変更され、ドロップ先のファイルパスも PlugX バックドアの現在の配置場所に合わせて調整されています。

これらの改変は、脅威アクターがこの特定の亜種にキーロガーをより適合させることを目的としていたことを示唆しています。

 

図 25. キーロガーのファイルパス

 

さらに、Talos は VirusTotal 上で発見された複数のキーロガーログファイルを基点として分析を行い、これらのファイルが 2022 年を通じて継続的に生成されていたことを示すタイムスタンプを確認しました。

特に注目すべき点として、あるログファイルは被害者環境内での持続性を示しており、2022 年後半から 2024 年 12 月までの活動を記録していました。これは、ほぼ 2 年間にわたる侵害が継続していたことを意味します。

 

Coverage

お客様がこの脅威を検知およびブロックする方法は以下の通りです。

 

 

Cisco Secure Endpoint (旧 AMP for Endpoints) は、本投稿で詳述したマルウェアの実行を防止するのに最適です。こちらから Secure Endpoint を無料でお試しいただけます。

 

Cisco Secure Email (旧 Cisco Email Security) は、脅威アクターがキャンペーンの一環として送信する悪意あるメールをブロックできます。こちらから Secure Email を無料でお試しいただけます。

 

Cisco Secure Firewall (旧 Next-Generation Firewall および Firepower NGFW) は、Threat Defense VirtualAdaptive Security ApplianceMeraki MX などのアプライアンスを通じて、本脅威に関連する悪意のある活動を検知できます。

 

Cisco Secure Network/Cloud Analytics (Stealthwatch / Stealthwatch Cloud) は、ネットワークトラフィックを自動的に分析し、接続されているすべてのデバイス上で発生する潜在的に不要なアクティビティをユーザーに通知します。

 

Cisco Secure Malware Analytics (Threat Grid) は、悪意あるバイナリを特定し、すべての Cisco Secure 製品に対して保護機能を組み込みます。

 

Cisco Secure Access は、ゼロトラストの原則に基づいて構築された、最新のクラウド提供型 Security Service Edge (SSE) です。Secure Access は、ユーザーがどこで働いていても、インターネット、クラウドサービス、またはプライベートアプリケーションへのシームレスで透過的かつ安全なアクセスを提供します。Cisco Secure Access の無料トライアルにご興味のある方は、Cisco のアカウント担当者または認定パートナーまでお問い合わせください。

 

Umbrella は Cisco のセキュアインターネットゲートウェイ (SIG) であり、ユーザーが社内ネットワーク内外のいずれにいても、悪意のあるドメイン、IP、URL への接続をブロックします。

 

Cisco Secure Web Appliance (旧 Web Security Appliance) は、潜在的に危険なサイトを自動的にブロックし、ユーザーがアクセスする前に不審なサイトを検査します。

 

お客様の特定の環境や脅威データに応じた追加の保護は、Firewall Management Center から利用できます。

 

Cisco Duo はユーザーに多要素認証を提供し、認可されたユーザーのみがネットワークへアクセスできるようにします。

 

オープンソースの Snort Subscriber Rule Set の利用者は、Snort.org で購入可能な最新のルールパックをダウンロードすることで、常に最新の状態を維持できます。

 

この脅威については、ClamAV による検出も提供されています。

  •  Win.Loader.RainyDay-10045411-0

 

Indicators of compromise (IOCs)

本投稿に関する IOCs はこちらからダウンロードできます。

Authors

Takahiro Takeda

Security Research Engineer

Talos, TI&I, Outreach team

コメントを書く