新たなXLoader感染チェーンが確認されました。この攻撃は、認証情報を盗むマルウェアを、埋め込み型のLuaJITインタープリター内に隠します。
さらに、共有セクションインジェクションによって、マルウェアを別のWindowsプロセスへ移します。キャンペーンはビジネス関連のメールを誘い文句に使い、Agent Tesla、Remcos、XWormも配布していました。
感染チェーンの起点は、注文や支払いを装ったメールです。あるギリシャ語のメールは、件名を「RE:」で始め、やり取りが続いているかのように見せかけています。
このメールは受信者に注文番号001828の確認を求めるもので、宛先は「undisclosed-recipients」になっています。スロベニア語版や、見積依頼を装った亜種も確認されました。
いずれのメールにもRARアーカイブが添付されています。中身は注文書ではなく、難読化されたJScriptファイル1つです。
このスクリプトはWindows Script Hostで実行されます。まず自身のZone.Identifierストリームを空にしようと試み、Webマーク(mark-of-the-web)を消去します。
続いて、埋め込まれた2つのBase64データをMicrosoft.XMLDOMでデコードし、ADODB.Streamを使ってユーザーのDocumentsフォルダーに書き出します。
書き出されるのは、EHFTUOMQDRXVTJSF.exeという名前のx86版LuaJIT互換実行ファイルと、FSJTVXRDQMOUTFHEという拡張子のないLuaファイルです。この段階でダウンロードは発生しません。スクリプトはインタープリターを非表示で起動し、終了を待たずに処理を進めます。
ローダーはLuaJITのFFIを使ってWindows APIを呼び出します。コンソールを隠し、自プロセス内の防御機能を弱体化させようとします。
あるルーチンは、CLRメモリ内のAmsiScanBufferとAmsiInitializeの文字列をゼロクリアします。別のルーチンは、EtwEventWriteやNtTraceEventを含むntdllの12個のエクスポートを、RET命令とそれに続くNOPで上書きします。

Morphisecは、これらはあくまで攻撃者の意図を示すものだと強調しています。研究者は、実際のホスト上でパッチ適用が成功した事例は確認していません。
条件付きの永続化ブランチは、.muiマーカーファイルをきっかけに動作します。10分ごとにVBSランチャーを実行するスケジュールタスクを作成できます。ただし、初回実行時の経路ではこのマーカーが作られません。そのため研究者は、これを確認済みの挙動ではなく、備わっている機能として扱っています。
Morphisecの観測によると、ローダーは次に、「|K」で始まる382,982バイトのリテラルをデコードします。置換処理をかけ、文字列を反転し、独自のBase64デコードとローテーションを実行します。その結果得られたパック済みPE32を、LuaJITのメモリ上にマッピングします。
XLoaderマルウェアの攻撃手口
マッパーはCreateRemoteThreadを呼び出しますが、引数にはGetCurrentProcess()を渡します。このため、スレッドはLuaJIT自身の内部で動作します。
パック済みPEには、エントロピーが約7.9937ビット/バイトという高エントロピーの.textセクションが1つだけあり、インポートテーブルはありません。このPEはPEBをたどってntdllを見つけ、NtAllocateVirtualMemoryを解決して、0x45031バイトの実行可能メモリを確保します。

次に、0x43400バイトの領域をRC4で復号します。さらに、0x47BBバイトのブロック15個に対して2回目のRC4処理を行い、ブロックごとに暗号を再初期化します。その後パッカーは、同じスレッド上でXLoaderのコアを呼び出します。
コアは、ラッパーの実行中だけインジェクターを復号します。ラッパーは0x656バイトの本体を復号して実行し、実行後に再び暗号化します。このため、スキャナーが見つけられる平文がメモリ上にほとんど残りません。
インジェクターはステージを複製し、x86のターゲットを選びます。実行中のプロセスを見つけるか、中断状態のSysWOW64ホストを起動します。
候補となるホストは12種類で、cleanmgr.exe、clip.exe、TSTheme.exe、getmac.exe、UserAccountControlSettings.exe、proquota.exe、SearchProtocolHost.exe、mobsync.exe、mshta.exe、ftp.exe、fsutil.exe、find.exeです。
インジェクターは、1つの共有セクションを両方のプロセスにマッピングします。続いて、ターゲットスレッドのコンテキストを設定し、マッピングされたブートストラップのremote_view + 0xC9C1から実行が始まるようにします。

複製したコードはローカルビュー経由でコピーされ、その後スレッドが再開されます。この方法では、多くの検知が監視しているWriteProcessMemoryやリモートスレッド作成を使いません。
ターゲットの元のイメージはマッピングされたまま残ります。そのためMorphisecは、この手法をプロセスハロウイングではなく、スレッドコンテキストのリダイレクトを伴う共有セクションインジェクションに分類しています。
これによりXLoaderのコードは、HTTP GETコマンドの実行、Windows Vaultの列挙、Cookieレコードの準備を行えるようになります。
Morphisecは以前にも、Luaベースのローダーを追跡してきました。2025年のキャンペーンでは、lua51.dllと小型のローダーを使い、難読化したスクリプトを学生やゲームエンジンに対して実行していました。
別のローダーであるGuLoaderも、XLoaderやRemcosなどのマルウェアファミリーを配布しています。また、Morphisecは、Agent Teslaの感染チェーンでも、よく似たセクションマッピングとスレッド再開の手法を確認しています。
防御側は、RAR形式で届くスクリプトファイルをブロックし、wscript.exeがDocumentsフォルダーから実行ファイルを起動する動きを監視すべきです。
あわせて、中断状態で起動する想定外のSysWOW64ユーティリティや、無関係なプロセス間の共有セクションマッピングについても、アラートを設定する必要があります。Morphisecは、同社の「Automated Moving Target Defense」が、この種のメモリ内実行を阻止するよう設計されていると説明しています。
侵害指標(IOC)
| 指標 | 種別 | 内容 |
| Παραγγελία 00182`8.rar | ファイル名 | 取得した2通のEMLの両方に添付 |
| Παραγγελία 00182`8.JS | ファイル名 | RARに含まれる唯一のファイル |
| %MyDocuments%\EHFTUOMQDRXVTJSF.exe | ファイルパス | ドロップされたLuaJITホスト |
| %MyDocuments%\FSJTVXRDQMOUTFHE | ファイルパス | ドロップされた拡張子なしのLuaローダー |
| %MyDocuments%\EHFTUOMQDRXVTJSF.mui | ファイルパス | 条件付き永続化のマーカー |
注: IPアドレスとドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(例: [.])しています。無害化の解除は、MISP、VirusTotal、自社のSIEMなど、管理された脅威インテリジェンス基盤の中だけで行ってください。
MTTRを21分短縮し、被害が出る前にサイバー脅威を阻止します。ANYRUNのSandboxをSOCに統合しましょう。
AuditSecurity
翻訳元: https://gbhackers.com/xloader-malware-attack/