フィッシングメールで拡散されているリモートアクセス型トロイの木馬 XWormキャンペーン
提供: フォーティネットジャパン
本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「複数テーマのフィッシングメールを利用した新たなXWormキャンペーンの詳細分析」を再編集したものです。
米国時間2026年2月10日に掲載されたフォーティネットブログの抄訳です。
影響を受けるプラットフォーム :Microsoft Windows
影響を受けるユーザー :Windowsユーザー
影響 :被害者のコンピューターの完全なリモート操作
深刻度 :高
背景
FortiGuard Labsは最近、XWormの新しい亜種を配信するフィッシングキャンペーンを捕捉しました。
XWormは、2022年に初めて確認された多機能なリモートアクセス型トロイの木馬(RAT)で、Telegramベースのマーケットプレイス等を通じて現在も活発に拡散しています。一度展開されると、攻撃者は侵害されたWindowsシステムを完全にリモート操作できるようになります。
このキャンペーンでは、ソーシャルエンジニアリングを用いて受信者に悪意ある添付ファイルを開かせる複数のフィッシングメールが使用されています。以下の分析では、これらのフィッシング手法を詳細に説明し、添付されたExcelファイルがCVE-2018-0802を悪用して被害デバイスにHTAファイルをダウンロードし、実行する仕組みを示します。
HTAがPowerShellを起動し、PowerShellがファイルレス.NETモジュールをダウンロードしてメモリに直接ロードします。このモジュールは、プロセスホローイングを利用して、新しく作成されたMsbuild.exeプロセス内にXWormペイロードを注入して実行します。
本分析では、XWormの暗号化されたネットワークトラフィック、コマンド&コントロールプロトコル、制御コマンド、プラグインアーキテクチャについても解析します。
感染チェーン
感染チェーンは、標的となるユーザーに悪意あるExcelファイルを添付して送付するフィッシングメールから始まります。これらのEメールは、一般的なビジネス関連のテーマを使って、受信者に添付ファイルを開くよう誘導します。
図1は、本キャンペーンで観測された、最初のEメール配信からXWorm RATペイロードの実行までの感染チェーン全体の概要を示しています。
複数テーマのフィッシングメール
このXWormキャンペーンでは、複数の言語で書かれた複数のフィッシングメールのテーマが確認されました。図2に示すように、Eメールは以下のテーマに偽装されていました。
・受信者の確認を求める支払明細の請求
・確認依頼の発注書
・出荷関連の署名済み銀行書類
・その他のビジネス関連の連絡
すべてのフィッシングメールには、Excelのアドインファイル(.XLAM)が添付されており、受信者は添付ファイルを開いて詳細を確認するよう指示されます。
図2に示すように、こうしたEメールは件名に「virus detected」とマークされ、FortiMailサービスによってブロックされました。その結果、メッセージは最終的に受信者に配信されませんでした。
CVE-2018-0802を悪用する巧妙なExcelファイル
さらなる調査のために、添付されたExcelファイルのうち1つが選ばれました。
解析の結果、sheet1.xml内にautoLoad=trueが構成されたOLE(Object Linking and Embedding)オブジェクトが埋め込まれていることが判明しました。OLE オブジェクトの定義は、図3に示すように、sheet1.xml.relsファイルに示されています。
CVE-2018-0802は、Microsoft Equation Editor(EQNEDT32.EXE)におけるリモートコード実行の脆弱性であり、現在も積極的に悪用されています。
図4に示すように、埋め込まれたOLEオブジェクト(../embeddings/WEakS.Jh)には不正なデータが含まれています。Excelファイルを開くと、EQNEDT32.EXEはオブジェクトを解析し、脆弱性をトリガーして埋め込まれたシェルコードを実行します。.
シェルコードは実行時に埋め込まれたコードを復号し、それを実行してretrodayaengineering[.]icu/HGG.htaからHTAファイルをダウンロードし、%APPDATA%\VA5.htaとして保存します。
このダウンロードを実行するために、シェルコードはWinHttpOpen()、WinHttpConnect()、WinHttpOpenRequest()、WinHttpSendRequest()、WinHttpReceiveResponse()、WinHttpQueryDataAvailable()、WinHttpReadData()、WriteFile()を含む複数のWindows APIを呼び出します。
図5は、シェルコードがターゲットドメインでWinHttpConnect() APIを呼び出す方法を示しています。
ダウンロードしたHTAファイルを被害デバイス上で実行するために、シェルコードは図6に示すようにShellExecuteExW()を呼び出します。
HTAファイルの解析
HTAファイル(HTMLアプリケーション)は、HTMLとスクリプト言語(VBScriptやJScriptなど)を使用して実行可能アプリケーションを作成するMicrosoft Windowsプログラムです。
ダウンロードされたHTAファイルは難読化されており、正規のコードに大量のジャンクデータが紛れ込んでいます。
図7は、難読化を解除しクリーンアップしたHTAファイルを示しています。
ファイルの内容から、このHTAファイルはmshta.exeによってロードされるとJScriptコードを実行することがわかります。
apochromatic変数にはBase64エンコードされたPowerShellペイロードが含まれており、実行時にデコードされて実行されます。
解析に基づくと、PowerShellコードは以下のアクションを実行します。
1. 画像内に変換された.NETモジュールを隠したJPEGファイルをダウンロードします。画像ファイルのURLは、hxxps://res[.]cloudinary[.]com/dbjtzqp4q/image/upload/v1767455040/ optimized_MSI_lpsd9p.jpgです。
2. 画像からファイルレス.NETモジュールを抽出して復号し、ディスクに書き込まずにPowerShell.exeプロセスのメモリにロードします。Base64エンコードされた.NETモジュールは、画像ファイルに付加されたBaseStart-と-BaseEndの2つのキーワードの間に配置されています。
図8に示すように、埋め込みデータは実行時に抽出され、復号されます。
3. 次に、.NETモジュールのSoftware.Program.Main()メソッドを呼び出します。
メソッドに渡されるパラメータは以下のとおりです。
The parameters passed to the method are:
'=QHe05SY3d3L2VGZuIjcuQjMmdjNwMDM3EmZhJGZilDNmlDNxgjZxQzNlRWMjJ2
MtIWdw9yL6MHc0RHa','','C:\Users\Public\Downloads','Name_File','Msbuild','','Msbuild','',
'URL','C:\Users\Public\Downloads','Name_File','hta','1','','Task_Name','0','','',''
最初のパラメータは、URLから導出されたBase64エンコード文字列であり、.NETモジュールで復号されます。
ファイルレス.NETモジュールとプロセスホローイング
.NETモジュール(DLL)のアセンブリ名はMicrosoft.Win32.TaskSchedulerであり、正当なTaskScheduler関連システムモジュールを装い、被害者と研究者の双方を欺くためのものです。
同様の.NETモジュールは、以前の解析でも確認されており、Remcos、DrakCloud、Agent Teslaなど、複数のマルウェアファミリーで使用されています。
このキャンペーンでは、.NETモジュールがXWorm RATのダウンローダー兼ローダーとして機能します。
図9は、.NETモジュールのMain()メソッドをデバッガーで解析したものです。PowerShell.exeプロセスから渡されたパラメータリストは、図の下部に示されています。
前述したように、Main()メソッドに渡される最初のパラメータは、逆順のBase64エンコード文字列です。.NETモジュールはこれを復号してURLを復元し、コンテンツをダウンロードします。
復号されたURLは、
hxxps://pub-3bc1de741f8149f49bdbafa703067f24[.]r2[.]dev/wwa.txt
です。
図10に示すように、モジュールはファイルを取得するためにWebClient.DownloadString()メソッドを呼び出します。
wwa.txtファイルの内容は、図11の右側に示すように、別のBase64エンコードされた文字列で構成されています。
Base64文字列を復号すると、メモリ内のPEファイルが復元されます。解析によると、このPEファイルはXWorm RATペイロードです。
ペイロードはローカルファイルに書き込まれず、PowerShell.exeプロセスのメモリ内に残ります。
その後、.NETモジュールは、プロセスホローイングによって新しく作成されたMsbuild.exeプロセスにXWormペイロードを注入して実行します。図9に示すように、Msbuild.exeへのパスはパラメータとして指定されます。
プロセスホローイングを実行するために、図12に示すように、Msbuild.exeのフルパスとCREATE_SUSPENDED (0x00000004)フラグを指定してCreateProcessA()を呼び出し、サスペンド状態のMsbuild.exeプロセスを作成します。
次に.NETモジュールは、VirtualAllocEx()、WriteProcessMemory()、ReadProcessMemory()、GetThreadContext(), SetThreadContext()、ResumeThread()といった一連のWindows APIを呼び出し、XWormペイロードをMsbuild.exeプロセスに注入して実行します。
図13は、EQNEDT32.EXEからMsbuild.exeまで、キャンペーン全体がどのようにXWorm RATペイロードを注入して実行するかを説明するプロセスツリーを示しています。
XWormペイロードファイル
静的解析のために、XWormのペイロードが powershell.exe プロセスのメモリからダンプされました。
図14に示すように、このペイロードはMicrosoft .NET Frameworkでコンパイルされ、DeepSea Obfuscatorによって難読化された32ビット実行可能ファイル(EXE)です。
これは、Msbuild.exeを実行するターゲットプロセスとしてMsbuild.exeが選ばれた理由も説明しています。XWormは.NETベースのマルウェアであるため、.NETランタイム環境を必要とします。Msbuild.exeは.NETでコンパイルされた実行ファイルであり、起動時に必要なランタイム環境を初期化することで、XWorm RATを正常に実行可能にします。
XWorm RATのアセンブリ表示名のUD_XWormClient 7.2に基づき、このペイロードは2025年後半から2026年前半にリリースされたXWormバージョン7.2に対応します。
Msbuild.exe内で実行されると、XWorm RATは、C2サーバーのホストやポート、暗号キー、データの区切り文字など、いくつかの構成値を復号します。
図15は、XWorm RATペイロードのMain()メソッドを示しています。図の下部には、復号されたC2サーバーのドメイン(berlin101.com)とTCPポート(6000)が示されています。
パケットの解析
通信を保護するため、XWormはAESアルゴリズムを使ってネットワークトラフィックを暗号化します。図16は、暗号化されたXWorm RATネットワークパケットの例を示しています。
各暗号化パケットは、パケットサイズ(10進文字列)+AES暗号化データの構造に従っています。図16では、3つのパケットがそれぞれ272バイト、48バイト、16バイトのサイズで示されています。
XWorm RATがC2サーバーとの接続を確立すると、C2サーバーに自身を登録するための登録パケットを送信します。このパケットには、図17に示すように、被害マシンから収集された基本情報が含まれています。
登録パケットは、以下のように、クライアントコマンド「INFO」で始まります。
INFO<Xwormmm>DA0F826C51434A32DFEB<Xwormmm>win-10<Xwormmm>Windows 10 Pro 64bit<Xwormmm>XWorm V7.1<Xwormmm>24/06/2022<Xwormmm>False<Xwormmm>False<Xwormmm>False<Xwormmm>Intel Xeon E E-2434<Xwormmm>VirtualBox Graphics Adapter (WDDM)<Xwormmm>7.99 GB<Xwormmm>Windows Defender
このINFOコマンドのデータは<Xwormmm>で区切られ、以下の基本情報で構成されています。
・INFO(コマンド名)
・被害者ID
・被害者のユーザー名
・Windowsシステム情報
・XWorm RATのバージョン
・現在のプロセス(Msbuild.exe)の作成時刻
・XWorm RATがUSB感染拡散機能を有効にして動作しているかどうかを示す指標
・XWorm RATが管理者権限で実行されているかどうかを示す指標
・被害マシンにカメラデバイスがあるかどうか
・侵害デバイスのプロセッサ情報
・グラフィックカード情報
・合計RAM
・インストールされているアンチウイルス製品
以下は、C2サーバーから発行される制御コマンドの例です。すべての制御コマンドは同じ構造に従います。
Urlopen<Xwormmm>https://www.fortinet.com
この例では、Urlopen が制御コマンド名、https://www.fortinet.comがコマンドパラメータです。2つのフィールドは <Xwormmm>区切り文字で分離されています。コマンドが解析されると、XWorm RATは被害者のデフォルトのWebブラウザでWebサイトを開きます。
制御コマンドの中には複数のパラメータを含むものがあり、それらはすべて同じ区切り文字で分離されています。
XWormの制御コマンド
以下の表は、被害デバイスを制御するためにC2サーバーからXWorm RATに送信される制御コマンドの一覧です。
| C2コマンド | 説明 |
| pong | ハートビートパケット。 |
| re | XWorm RATを再起動する。 |
| CLOSE | XWorm RATを終了する。 |
| uninstall | 被害マシンからXWorm RATをアンインストールする。 |
| update | 新しいXWorm RATを更新して起動する。 |
| DW | 被害マシン上でファイル(PowerShellスクリプト、BATファイル、EXEなど)を転送し、実行する。 |
| FM | XWorm RATのメモリ内でファイルレスモジュールを実行する。 |
| LN | 指定されたリンクから実行可能ファイルをダウンロードして実行する。 |
| Urlopen | 被害者にデフォルトのWebブラウザでWebサイトを表示する。 |
| Urlhide | 被害マシンから見えないWebサイトにアクセスする。 |
| PCShutdown | 「shutdown.exe /f /s /t 0」を実行して、被害マシンをシャットダウンする。 |
| PCRestart | 「shutdown.exe /f /r /t 0」を実行して、被害マシンを再起動する。 |
| PCLogoff | 「shutdown.exe -L」を実行して、被害者のWindows上の現在のユーザーをログオフする。 |
| RunShell | 被害マシンでWindowsコマンドを実行する。 |
| StartDDos | 対象のサーバーへのDDoS攻撃を開始する。DDoS攻撃は新しく作成されたスレッドで実行される。対象のサーバーにPOST要求を継続的に送信する。 |
| StopDDos | 進行中のDDoS攻撃を阻止する。 |
| StartReport | 指定されたキーワードに合致するタイトルのプログラム情報をC2サーバーに報告する。この機能はスレッド内で実行される。 |
| StopReport | 報告を停止する。 |
| Xchat | 被害者とチャットを開始する。 |
| Hosts | 被害マシン上のhostsファイルの内容を読み取る。 |
| Shosts | 被害者のhostsファイルを上書きし、指定されたWebサイトをブロックまたはリダイレクトする。 |
| DDos | DDoS攻撃を準備する。 |
| plugin | XWorm RATで実行するプラグインモジュールをロードし、追加機能を提供する。 |
| savePlugin | 被害マシンにプラグインモジュールを転送し、システムレジストリに保存して実行する。 |
| RemovePlugins | システムレジストリからプラグインを削除する。 |
| OfflineGet | 被害システム上の%temp%\\Log.tmpファイルに保存されているオフラインのキーロガーデータを取得する。 |
| $Cap | 被害者のスクリーンショットを取得する。 |
XWormのプラグイン
前のセクションで説明した基本的な制御コマンドに加え、XWormはより複雑で拡張可能なプラグイン機能をサポートしています。
XWorm 7.2 Proは、その機能を拡張する50以上のプラグインを提供しています。これらのプラグインは、XWorm RAT が動的にロードして被害デバイス上で悪意あるタスクを実行できる.NET モジュール(DLLファイル)として実装されます。
このプラグインベースのアーキテクチャにより、必要に応じて追加のプラグインを開発 / 導入することで、XWormの機能を容易に拡張できます。
図18は、XWormプラグインがロードされた.NETデバッガーのスクリーンショットです。
C2サーバーにデータを送信する各プラグインモジュールは、独自の接続を確立し、収集したデータをサーバーに直接送信できます。その結果、プラグインは独自のコマンド名を使ってデータを送信します。
サーバー側の制御コマンドのplugin と savePlugin は、被害システム上でプラグインを転送し実行するために使用されます。
XWorm RAT は、savePluginコマンドパラメータから圧縮されたプラグインペイロードを抽出し、システムレジストリに保存します。図19に示すように、6つのプラグインペイロードがHKCU\SOFTWARE\{victim ID}レジストリサブキーの下に保存されました。
XWorm RATは、プラグインのSHA-256ハッシュをパラメータとするpluginコマンドを受け取ると、レジストリをチェックし、対応するプラグインがすでに存在するかどうかを判断します。存在する場合、XWorm RATはそれをロードして実行します。存在しない場合、クライアント側の sendPluginコマンドをSHA-256ハッシュとともにC2サーバーに送信し、プラグインを要求します。
以下はplugin制御コマンドの例です。
plugin<Xwormmm>8665BC1B33CBE6F5859CD6E362AF77738BA73A6E6D4B9974C16C8521D84C1892
XWormの機能
図20は、XWorm 7.2が提供する機能を攻撃者側から示しており、接続された被害者デバイスはすでに制御下にある状態です。
基本的な制御コマンドとプラグインに基づき、XWormは以下の機能を提供します。
システムの制御:
・侵害デバイスから詳細なシステム情報を取得する。
・入力デバイス(マウスとキーボード)を使って被害システムを遠隔制御し、画面を録画する。
・被害デバイス上でファイルを実行する(ディスク上にある実行可能ファイルや、リンク経由でダウンロードし起動された実行可能ファイルを含む)。
・侵害システム上のカメラ、マイク、オーディオデバイスを制御する。
・被害システム上でWebサイトを開く(表示 / 非表示)。
・Windowsレジストリ、タスクマネージャー、ファイアウォール、UAC、Windows Update、その他のシステムコンポーネントなどのシステムリソースへの被害者のアクセスを制限する。
・被害システム上でWindowsコマンドをリモートで実行する。
・被害デバイスから、認証情報、Cookie、自動入力データ、ログイントークン、プロダクトキー、Wi-Fiキーなどの機密データを収集する。
・ルートキット / ブートキット機能を実行する。
・侵害システム上のファイルシステムを管理する(ファイルやフォルダの作成、コピー、貼り付け、削除、切り取り、実行、暗号化、ロック、非表示、転送、指定したFTPサーバーへのアップロードを含む)。
・Windowsレジストリエディタで利用可能なすべての機能を実行する。
・TCP接続、実行中のプロセス、スタートアップ構成、システムサービス、クリップボードデータ、インストールされたプログラムを管理する。
・攻撃者がリモートでVB.NETコードを開発、コンパイル、実行できるVB.NET実行環境を提供する。
・被害デバイスから現在のユーザーのシャットダウン(電源オフ)、再起動、ログオフを実行する。
攻撃:
・被害デバイスを制御してDDoS攻撃を仕掛ける。
・侵害システムに対してランサムウェア攻撃を行う。
XWorm RATの管理:
・感染システム上で実行されているXWorm RATの再起動、終了、アンインストール、更新を行う。
その他の機能:
・特定のキーワードに一致するアプリケーションウィンドウの存在を報告する(被害者がYouTubeを視聴しているかどうかを検知するなど)。
・攻撃者と被害者の間でのテキストや音声のチャットを有効にする。
・詳細なシステムパフォーマンス情報を表示する。
・被害デバイス上で指定されたWebサイトをブロックするため、システムホストのファイルを変更する。
・被害者のキーストロークログを収集する(オフラインとオンラインの両方のキーロギングデータを含む)。
・被害者にシステムメッセージを表示する。
・リバースプロキシ、ボットキラー、隠しブラウザ、隠しVNC、Windows Defenderの無効化などの追加機能をサポートする。
以下の画像は、被害デバイスから収集された機密データの例です。
まとめ
本分析では、CVE-2018-0802を利用する悪意あるExcel添付ファイルを介してXWormリモートアクセス型トロイの木馬(RAT)を配信するフィッシングキャンペーンについて調査しています。感染チェーンは、難読化されたHTAファイルを利用してJScriptとPowerShellコードを実行します。ファイルレス.NETモジュールがpowershell.exeプロセスで実行され、プロセスホローイングによってMsbuild.exeにXWormペイロードをダウンロードして展開します。
実行されると、XWormはAESで暗号化されたパケットを使用して、コマンド&コントロール(C2)サーバーとの暗号化通信を確立します。本分析では、暗号化データパケットとコマンドパケットの両方の構造を検証しています。
XWormは、広範な制御コマンドとモジュール型プラグインアーキテクチャをサポートし、データ窃盗、システム制御、ランサムウェア、DDoS機能などの高度な機能を有効にします。これらの機能は、XWormが成熟し高度にモジュール化された脅威であることを示しています。
フォーティネットのソリューション
フォーティネットのお客様は、FortiGuardのアンチスパム、Webフィルタリング、IPS、アンチウイルスサービスによって、このキャンペーンから以下のように保護されます。
この悪意あるキャンペーンに関連するURLは、FortiGuard Webフィルタリングサービスにより悪意あるWebサイトとして識別されます。
FortiMailはこのフィッシングメールを「virus detected」として認識します。さらに、フォーティネットのFortiMail、Webフィルタリング、アンチウイルスソリューションに組み込まれたFortiSandboxのリアルタイムのアンチフィッシングにより、既知および未知のフィッシングの試行からの高度な保護が可能です。
FortiGuardアンチウイルスサービスは、Excelドキュメント、ダウンロードされたHTAファイルおよび画像ファイル、ファイルレスのXWormペイロードを以下のAVシグネチャで検知します。
MSOffice/CVE_2017_11882.C!exploit
Data/JpgMalware.B!tr
JS/XWorm.140B!tr.dldr
MSIL/XWorm.2CF6!tr
Fortinet FortiGate、FortiMail、FortiClient、FortiEDRはFortiGuardアンチウイルスサービスをサポートしており、FortiGuardアンチウイルスエンジンは各ソリューションに組み込まれています。その結果、これらの製品をご利用のお客様は、すでに最新の保護を受けています。
FortiOSおよびFortiMailのFortiGuard CDR(コンテンツ無害化)サービスは、CVE-2017-11882の脆弱性を悪用するExcelドキュメントに埋め込まれたOLEオブジェクトを無害化できます。
新たな脅威に関する最新情報を入手するには、こちらから登録して、アラートを受け取ることができます。
また、無料のNSE 1 – 情報セキュリティ意識向上を受講することをお勧めします。これはインターネットの脅威に関するトレーニングであり、エンドユーザーはフィッシング攻撃を識別して自らを保護する方法を学習できます。
FortiPhishフィッシングシミュレーションサービスは、フォーティネットのセキュリティ意識向上トレーニングサービスと連携し、実際のフィッシングシナリオを使用して、一般的なソーシャルエンジニアリングの手口に対する従業員のトレーニングとテストを行います。特に注意力が散漫になっている状況や緊急時に、不審なコンテンツを認識し対応するユーザーが能力を向上させることで、これらのサービスはフィッシングやマルウェア攻撃が成功するリスクの低減に役立ちます。
このようなサイバーセキュリティの脅威の影響を受けていることが疑われる場合は、グローバルFortiGuardインシデントレスポンスチームにお問い合わせください。
URL:
hxxps://retrodayaengineering[.]icu/HGG.hta
hxxps://res[.]cloudinary[.]com/dbjtzqp4q/image/upload/v1767455040/optimized_MSI_lpsd9p.jpg
hxxp://pub-3bc1de741f8149f49bdbafa703067f24[.]r2[.]dev/wwa.txt
C2 サーバー:
berlin101[.]com:6000
関連するSHA-256の例
[SNEV_VEND_026011406440.xlam]
EE663D016894D44C69B1FDC9D2A5BE02F028A56FC22B694FF7C1DACB2BBBCC6D
[optimized_MSI_lpsd9p.jpg]
3F4C3C16F63FB90D1FD64B031D8A9803035F3CB18332E198850896881FB42FE5
[HGG.hta / VA5.hta]
FD9BA9E6BD4886EDC1123D4074D0EAC363DF61162364530B1303390AA621140B
[XWorm RAT payload]
EACD8E95EAD3FFE2C225768EF6F85672C4BFDF61655ED697B97F598203EF2CF6






















