偽の配送書類に仕込まれた遠隔操作ツールによる攻撃を発見

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「偽の配送書類を使ってRemcosを配布する新たなキャンペーン」を再編集したものです。

影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー    :Windowsユーザー
影響            :被害者のコンピュータを完全に遠隔操作する
深刻度           :高

背景

FortiGuard Labsは、実環境で活動している新たなフィッシング攻撃を発見しました。この攻撃ではRemcosの新たな亜種が配布されています。Remcosは、システムリソース管理、リモート調査、ネットワーク管理、Remcosエージェント管理などを含む多様な機能を備えた軽量の商用リモートアクセスツール(RAT)です。

私はこの悪意のある攻撃の詳細な調査を実施しました。本分析では、フィッシングメールが攻撃をどのように開始するか、添付されたWord文書がRTFファイルをどのようにしてダウンロードするか、攻撃で悪用されるRTFファイル内の脆弱性、VBScriptおよびPowerShellコード、ファイルレス.NETモジュールがどのように読み込まれてPowerShellプロセス内で実行されるか、そしてファイルレスRemcosエージェントがどのようにダウンロードされてプロセスホローイングを使って読み込まれるかを明らかにします。

また、Remcos亜種の内部構成ブロック、パケット構造、および6つのカテゴリに分類される諸機能について、具体例を交えて詳しく解説します。

感染チェーン

図1は、新たなRemcos亜種がどのように配布されて被害者のマシンにインストールされるかを示した感染チェーンの図です。

図1:Remcos亜種の感染チェーン

捕捉されたフィッシングメール

図2の捕捉されたフィッシングメールは、ベトナムの海運会社からのメッセージを装っており、添付のWordファイルを開いて更新された配送書類を確認するよう受信者に促しています。

図2:フィッシングメールの内容

本画像のメールにFortiMailサービスによる「virus detected(ウイルス検知)」フラグが付いている点に注意してください。実際には、当該メールはFortiMailによってブロックされて隔離され、受信者に配信されることなく、攻撃は阻止されました。

Word文書の分析

添付されたWord文書の内部構造を調べた結果、図3に示すように、オンラインattachedTemplate オプションがsettings.xml.relsファイルに含まれていることがわかりました。

図3:settings.xml.relsファイル内のattachedTemplate定義

テンプレートファイルのURLは「Target」属性で指定されています(hxxps://go-shorty[.]killcod3[.]com/OkkxCrq)。
本URLは、最終的にファイルの完全なURLにリダイレクトされる短縮URLサービスです。

偽の配送書類がMicrosoft Wordで開かれると、Wordがオンラインテンプレートを自動的にダウンロードして現在のWord文書に読み込みます。

図4:Wordファイルが悪意のあるRTF文書をダウンロードします。

図4を見ると、WordファイルはRTF文書「w.doc」をダウンロードする前に2つのURL短縮サービスを通過しています。

該当するURLは以下の3つです。

hxxps://go-shorty[.]killcod3[.]com/OkkxCrq
hxxps://tnvs[.]de/e4gUVc
hxxp://66[.]179[.]94[.]117/157/w/w.doc

CVE-2017-11882の悪用

オンラインテンプレートファイルは、細工された不正な形式の数式データを含むRTFファイル(w.doc)です。これは、Microsoft数式エディター(EQNEDT32.EXE)の既知のリモートコード実行(RCE)脆弱性CVE-2017-11882を引き起こします。

図5:ダウンロードされたRTFの難読化解除後の画面。

WordはダウンロードされたRTFファイル(w.doc)をリモートテンプレートとして扱い、自動的に読み込みます。数式エディターが数式データ(先頭にコントロールキーワード 「\bin」が付いている)を解析すると脆弱性が引き起こされ、不正な形式の数式データに埋め込まれたシェルコードが実行されます。

図6:VBScriptファイルをダウンロードするシェルコード

シェルコードの主な機能は、復号されたURLからVBScriptファイルをダウンロードすることです。図6では、EQNEDT32.EXEプロセス内で実行されるシェルコードが URLDownloadToFileW() を呼び出してVBScriptファイルをダウンロードしようとしています。図6の下部では、復号されたURLである
hxxp://66[.]179.94.117/157/fsf090g90dfg090asdfxcv0sdf09sdf90200002f0sf0df09f0s9f0sdf0sf00ds.vbe と、ローカルファイルのフルパスである
%AppData%\90g90dfg090asdfxcv0sdf09sdf90200002f0sf0df09f0s9f0sdf0sf00d.vbs が赤い線で囲まれています。このシェルコードは最後にShellExecuteW() APIを呼び出して、ダウンロードしたVBScriptファイルを実行します。

VBScriptファイルとPowerShellコードの分析

VBScriptファイルは軽く難読化されており、Base64でエンコードされたPowerShellコードが格納されています。

VBScriptコードのスニペットを以下に示します。

Dim millilitres, panzer, undulant, prostrates, sawhorse
Set millilitres = GetObject("winmgmts:root\cimv2")
Set panzer = millilitres.Get("Win32_ProcessStartup").SpawnInstance_
panzer.ShowWindow = 0
Set undulant = millilitres.Get("Win32_Process")
prostrates = 0
sawhorse = undulant.Create(microliths(crummier), banie, panzer, prostrates)
wscript.quit(1)


PowerShellコードはアセンブルされて以下のコマンドラインになり、変数「crummier」に格納されます。

powershell -NoProfile -WindowStyle Hidden -Command {Base64-decoded PowerShell code}


VBScriptコードは次に、コマンドラインを実行するためにWMIオブジェクトを作成します。

図7では、Base64でエンコードされた文字列が左側に表示され、Base64でデコードされたPowerShellコードが右側に表示されています。

図7:Base64でデコードされたPowerShellコード

PowerShellコードは、変換されて通常の画像ファイル(実際にJPEGデータが格納されているoptimized_MSI.png)に埋め込まれた.NETモジュール(.NET DLL)をダウンロードします。Base64エンコードされた.NETモジュールはこのようにPNGファイルに付加されて、マーカー BaseStart-と-BaseEndで囲まれます。

図7に示すように、このコードはデコード後に [Reflection.Assembly]::Load() メソッドを呼び出して.NETモジュールをPowerShellのプロセスに読み込み、多数のパラメータを指定して.NETモジュールのVAI()メソッドを呼び出します。画像ファイルのバイナリ構造を図8に示します。

図8:画像ファイル内に隠されたBase64エンコードされた.NETモジュール

.NETモジュール

.NETモジュール(DLL)のアセンブリ名はMicrosoft.Win32.TaskSchedulerですが、これは被害者とリサーチャーの両方を欺くためにTaskSchedulerに関連する正規のシステムモジュールを装った名前です。

以前の分析でも同様の.NETモジュールが観測されており、DrakCloudAgent Teslaなど複数のマルウェアで使用されています。

私の分析では、この.NETモジュールはRemcosエージェントのローダーとしてだけでなく、永続化インストーラーとしても働きます。

図9:PowerShellプロセス内で呼び出されるVAI()メソッド

図9では、PowerShellプロセスから呼び出されたVAI()がデバッガーに表示されています。画面の下部には、このメソッドに渡されるパラメータが表示されています。

1. 永続化

本ケースでは flagStartupTask パラメータの値が1に設定されているため、.NETモジュールは侵害されたコンピュータ上で永続性を確立するために、Windowsタスクスケジューラでスケジュールされたタスク( "5V3EBWmhxc")を作成します。

.NETモジュールはTaskServiceオブジェクトを作成してそのメソッドを呼び出し、トリガー条件、実行アクション、および反復間隔を設定します。その後、taskService.RootFolder.RegisterTaskDefinition()メソッドを呼び出して新たにスケジュールされたタスクを登録します。図10では作成されたスケジュールタスクを示しています。

図10:作成されたタスク5V3EBWmhxcがWindowsタスクスケジューラに表示されています。

このタスクのアクションは、1分ごとに以下のコマンドラインを実行することです。

wscript.exe C:\Users\Public\Downloads\eOTJ0Dniy5.vbs


ファイルは、感染チェーンの初期にダウンロードされた
%AppData%\90g90dfg090asdfxcv0sdf09sdf90200002f0sf0df09f0s9f0sdf0sf00d.vbsと同じファイルです。これは、スケジュールされたタスクが作成される前に.NETモジュールによってコピーされたものです。

2. Remcosペイロードローダー

VAI()メソッドへの最初のパラメータは、逆順でBase64エンコードされた文字列です。.NETモジュールはこの文字列をデコードしてURL(hxxps://idliya[.]com/arquivo_20251130221101.txt.)を取得します。

.NETモジュールは当該ファイルをダウンロードしてメモリ内に保持します。このファイルにはRemcosエージェントのペイロードが格納されており、ペイロードは2段階で難読化されています(Base64エンコードした後、エンコードされた文字列を逆転させます)。図11の下部に、メモリ内のBase64デコードされたRemcosペイロードが表示されています。

図11:PowerShellプロセスのメモリ内にあるBase64デコードされたRemcosペイロード

.NETモジュールは次に、プロセスホローイングを使って新たに作成したcolorcpl.exeプロセス内にRemcosペイロードを展開します。ターゲットとなるプロセスは、VAI()メソッドへのパラメータとして指定されます。図12は、PowerShellプロセス内での実行中に.NETモジュールによってcolorcpl.exeが作成されたことを示しています。

図12:PowerShellによって作成された新たなcolorcpl.exeプロセス

colorcpl.exeプロセス内でRemcosペイロードのエントリポイント関数が呼び出されると、侵害されたコンピュータ上でRemcosエージェントがアクティブになります。

Remcosのペイロードファイル

Remcosのペイロードファイルは攻撃の全段階を通じてファイルレスのままですが、PowerShellプロセスのメモリからダンプすることができます。図13に示すように、このペイロードはMicrosoft Visual C++でコンパイルされた32ビット実行ファイル(EXE)であり、パッカーによる保護は施されていません。

図13:PE分析ツールでダンプされて表示されたRemcosペイロード

静的分析によると、このRemcos亜種は2025年9月10日にリリースされたバージョン7.0.4 Proです。バージョン情報はペイロードファイル内で以下のように定義されています。

.rdata:00469814        a704Pro         db '7.0.4 Pro',0

Remcosの構成ブロック

どのRemcosエージェントでも、SETTINGSという名前の実行ファイルのリソースセクションに暗号化された構成ブロックが格納されています。図14は、復号および解凍された構成データを示しています。

図14:復号されたSETTINGSデータ

構成項目は|…|(16進文字列: \x7C\x1E \x1E \x1F\x7C)で区切られています。本亜種には57の構成値が含まれています。これらの構成値は、被害者のデバイス上でRemcosエージェントがどのように振る舞うかを制御するために使用されます。

構成ブロックには、 216.9.224.26:51010:1. と指定されたC2サーバーの情報が含まれています。これは、IPアドレス、TCPポート、およびTLSが有効 (1) か無効 (0).

構成ブロックでは、Remcosエージェント名とレジスタキー / ミューテックス名も、それぞれ RemoteHost および Rmc-LCCCTQ, として定義されています。

さらに、構成ブロックには、スクリーンロギング、キーロギング、カメラおよびマイクによる録画 / 録音、機密データ収集などの機能を自動的に有効化 / 無効化するフラグも多数含まれています。

最後に、構成ブロックの末尾に表示されている複数の証明書関連の値(公開鍵を含む)は、TLSプロトコルを使ったC2サーバーとの通信に使用されます。

Remcosのパケット

Remcosは、C2サーバーとの接続を確立すると、侵害されたコンピュータから収集した基本情報を格納した図15のような最初のパケットを送信します。

ここでは、パケットの形式をわかりやすく解説するために、制御されたローカル環境内でC2サーバーとのプレーンテキストパケットを使った通信を再現しました。

図15:C2サーバーに送信される最初のパケットのパケット構造

このパケットは、パケットマジック値 0xff0424, で始まり、その後にパケットサイズ 0x250、コマンドID 0x4b, an、およびコマンドデータ(TLSが有効になっている場合は暗号化される)が続きます。

すべてのパケットが、以下のような同じ汎用パケット構造に従います。

packet magic | packet size | command ID | command data


この 0x4b コマンドのデータは以下の値で構成されています。

・Remcosエージェント名
・被害者のコンピュータ名 + ユーザー名
・被害者の地理的位置
・OSのバージョン
・物理メモリサイズ
・プロセッサ情報
・Remcosエージェントのバージョン
・Remcosエージェントを実行しているプロセスのフルパス
・アクティブなアプリケーションのタイトル
・Remcosエージェントのタイプ
・レジストリキー名
・Remcosエージェントのインストール日時
・C2サーバーのIPアドレス
・システムとエージェントに関する追加のメタデータ

コマンドデータ内の値は、図15のようにそれぞれ|…|(16進文字列 |…| (hex str \x7C\x1E\x1E\x1F\x7C))で区切られます。

図16はC2サーバー上のRemcos Control Centerインタフェースを示しており、0x4bコマンドデータから抽出された値のほとんどが、スクリーンロギングのリアルタイム出力とともに表示されています。

図16:C2サーバー上のRemcos Control Centerインタフェース

Remcosの機能

このRemcos亜種は、侵害されたコンピュータをリモート管理するために、以下の6つのカテゴリの機能を提供しています。これらの機能をサポートするために、Remcosは合計211のコマンドIDを実装します。

System(システム):

Remcosが本カテゴリで提供している機能は、Screen Capture、File Manager、File Search、Process Manager、Service Manager、Windows Manager、Registry Editor、Installed Programs、Run System Command、Command Line、Remote Scripting、Clipboard Manager、Set Wallpaper、Power Managerです。

攻撃者はこれらの機能を使って被害者のコンピュータシステムリソースを完全に管理 / 制御できます。図17は、C2サーバー上にあるリモートレジストリエディターのインタフェースの一例です。攻撃者はこのインタフェースを使ってレジストリキーおよび値を表示 / 変更することができます。

図17:リモートレジストリエディター

Surveillance(調査):

本カテゴリの目的は被害者の活動を監視することです。攻撃者はCamera、Microphone、Keylogger、ScreenLogger、Browser History、Password Recovery、Cookie Recovery、Activity Notificationなどの機能を利用できます。

図18は、スクリーンロギングパケットの一例です。C2サーバーが送信したコマンド0x10 を受けて、Remcosエージェントが被害者の画面をキャプチャしてJPEGファイルに保存し、その画像ファイルをC2サーバーに送り返しています。

図18:スクリーンロガーパケット

Network(ネットワーク):

Remcosはネットワーク関連の機能として、Network Monitor、Proxy、Downloader、DNS Redirection、Open Webpage、IP Infoなどを提供しています。Remcosは、ネットワークリソースを使ってプロセスのステータス(LISTENING、ESTABLISHED)をリモート表示することができます。

また、侵害されたシステム上にダイレクトまたはリバースOCKS5プロキシを設定することもできます。RemcosエージェントはDownloaderを使用して、追加の実行ファイルをダウンロードして実行することができます。被害者のデフォルトWebブラウザで、指定したWebページを強制的に開かせることもできます。

さらに、DNS Redirection機能を使って被害者がWebサイトにアクセスできないようにブロックすることもできます。図19は、被害者のコンピュータからテスト用のWebサイト(e.g., www.test.com)をブロックする方法を示しています。Remcosはそのために被害者のコンピュータ上のhostsファイルを実際に改変します。

図19:被害者のコンピュータでWebサイトをブロックするよう設定されています。

Comms(コミュニケーション):

本カテゴリには、Chat、MessageBox、およびAudio Player機能が含まれます。これらの機能は、被害者と攻撃者の間での双方向コミュニケーションを提供します。図20は、C2サーバーでChat機能が使用されている様子を示しています。

図20:被害者とのリモートチャット

Extra(特別):

Extraカテゴリには、DLL Loader、Logins Cleaner、およびExtra Functions機能が含まれます。これらの機能は、リモートで所定のDLLを読み込んで実行し、侵害されたコンピュータに保存された認証情報、ブラウザ履歴、およびCookieをクリアする能力によって攻撃者をサポートします。被害者のマウスやキーボード、モニター、CDドライブ、Windowsタスクバー、および[スタート]ボタンを制御することもできます。

Remcos:

本カテゴリの機能はRemcosエージェントを管理します。Rename、Elevate to Admin、Elevate to System、Ping、Reconnection、Restart、Show、Update、Close、Uninstallがあります。

これらのコマンドIDとそれに対応する機能の全容は、Remcos RATに関する過去の分析で詳しく説明しているため、本記事では割愛します。コマンドIDの詳細については上記リンクより過去の分析をご参照ください。

結論

本分析では、Remcos RATのファイルレス亜種を配布する、新たに観測されたフィッシングキャンペーンについて解説しました。感染チェーンは、ベトナムの海運会社を装い悪意のあるWord文書を開くように被害者を促すフィッシングメールから始まります。この文書はその後リモートRTFファイルを取得し、脆弱性を悪用し、VBScriptおよびPowerShellコードを実行して、Remcosペイロードのローダーおよび永続化メカニズムとして働く.NETモジュールをメモリ内に読み込みます。

Remcosペイロード(バージョン7.0.4 Pro)がローカルファイルに書き込まれることはありません。ペイロードはメモリ内にダウンロードされ、プロセスホローイングを使って正規のシステムプロセスに注入されます。ペイロードの暗号化された構成ブロックを調べた結果、C2サーバーの詳細、フィーチャーフラグ、およびセキュアな通信のために使用されるTLS関連の証明書が明らかになりました。

本分析では、Remcosの機能をシステム管理、調査、ネットワーキング、コミュニケーション、エージェント管理など6つのカテゴリに分類しています。攻撃者はこれらの機能を使用して、侵害されたシステムを完全にリモート制御することができます。

フォーティネットのソリューション

フォーティネットのお客様は、FortiGuardのアンチスパム、Webフィルタリング、IPS、アンチウイルスサービスによって、本キャンペーンからすでに保護されています。

本キャンペーンに関連するURLは、FortiGuard Webフィルタリングサービスにより「悪意のあるWebサイト」として識別されています。

FortiMailは、フィッシングメールを「検知されたウイルス」として識別します。さらに、FortiMail、Webフィルタリング、アンチウイルスの各ソリューションに組み込まれたFortiSandboxのリアルタイムアンチフィッシングが、既知および未知のフィッシング攻撃に対する高度な防御を実現します。

FortiGuardアンチウイルスサービスは以下のアンチウィルスシグネチャを使用して、Word文書、RTFファイル、ファイルレスRemcosのペイロードファイルを検知します。

 XML/Agent.EDC!tr.dldr
 MSOffice/CVE_2017_11882.DMP!exploit
 W32/Rescoms.B!tr

Fortinet FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしており、これらの各ソリューションにはFortiGuardアンチウイルスエンジンが含まれています。したがって、これらの製品をお使いのお客様は、すでに脅威から保護されています。

新たに発生する脅威の最新情報を入手するには、アウトブレークアラートにご登録ください。今後のアラート情報を随時お届けします。

読者の皆様には、フォーティネットが無償で提供するNSEトレーニングNSE 1 – 情報セキュリティ意識向上の受講もお勧めしています。このトレーニングにはインターネットの脅威に関する情報が含まれ、エンドユーザー様は各種のフィッシング攻撃を識別して自らを保護する方法を学習できます。

FortiPhishフィッシングシミュレーションサービスフォーティネットのセキュリティ意識向上トレーニングサービスでは、日常で起こりうるフィッシングシナリオを使用して、従業員が一般的なソーシャルエンジニアリング戦術に対処できるようにトレーニング / テストします。これらのサービスは、特に、注意散漫になりやすい状況や緊急性の高い場面において、ユーザーが不審なコンテンツを認識して対応する能力を向上させることで、フィッシングおよびマルウェア攻撃の成功リスクを低減します。

組織がRemcos RATやその他のサイバーセキュリティ攻撃を受けていると思われる場合は、フォーティネットのグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

IOC(Indicators of Compromise:侵害指標)

URL:
hxxp://66[.]179[.]94[.]117/157/w/w.doc
hxxp://66[.]179[.]94[.]117/157/fsf090g90dfg090asdfxcv0sdf09sdf90200002f0sf0df09f0s9f0sdf0sf00ds.vbe
hxxps://idliya[.]com/assets/optimized_MSI.png
hxxps://idliya[.]com/arquivo_20251130221101.txt

関連するサンプルSHA-256:
[BL DRAFT ITL13746259.docx]
7798059D678BCA13EEEEBB44A8DB3588E4AA287701AEDE94B094B18F33B58F84

[w.doc]
A35DD25CD31E4A7CCA528DBFFF37B5CDBB4076AAC28B83FD4DA397027402BADD

[fsf090g90dfg090asdfxcv0sdf09sdf90200002f0sf0df09f0s9f0sdf0sf00ds.vbe]
E915CE8F7271902FA7D270717A5C08E57014528F19C92266F7B192793D40972F

[Remcos payload]
94CA3BEEB0DFD3F02FE14DE2E6FB0D26E29BEB426AEE911422B08465AFBD2FAA
 

■関連サイト