AhnLab SEcurity intelligence Center (ASEC) は Proxyjacking 攻撃をモニタリングしており、韓国で確認された配布事例および IoC を随時公開している。Proxyware を配布している攻撃者グループ「Larva-25012」は、最近 Notepad++ を装ったマルウェアを使用しているほか、Proxyware をエクスプローラープロセスにインジェクションしたり、Python を活用したりするなど、検知回避のための手法を変化させている。
Proxyjacking 攻撃とは、ユーザーの同意なく Proxyware をインストールし、感染システムのインターネット帯域の一部を外部に共有させることで攻撃者が収益を得る攻撃手法である。Proxyware とは、インストールされたシステムの利用可能なインターネット帯域の一部を外部に提供するプログラムであり、このプログラムをインストールするユーザーは帯域を提供する代わりに一定の報酬を受け取る仕組みとなっている。もし攻撃者がユーザーの同意なく Proxyware を密かにインストールした場合、感染システムは意図せずネットワーク帯域を搾取され、その収益は攻撃者に帰属する。これは Cryptojacking 攻撃と類似しており、Proxyware の代わりに仮想通貨マイナーをインストールし、感染システムのリソースを用いて仮想通貨を採掘する点が相違点である。
1. 過去の攻撃事例
Larva-25012は少なくとも2024年から活動しており、DigitalPulse [1] をはじめ、Honeygain、Infaticaなど、複数の Proxyware をインストールしている。主に、YouTube 動画を無料でダウンロードできると称する Web サイトの広告を通じて Proxyware のインストーラーを配布しており [2] [3] [4]、このほか、クラックやキージェンなどの違法ソフトウェア配布ページを装った Web サイトの広告ページからもマルウェアを配布している。[5]
攻撃者は、AutoClicker、FastCleanPlus、WinMemoryCleaner、SteamCleaner などの正規ソフトウェアを装ったインストーラーを配布し、これを通じてダウンローダー型マルウェアである DPLoader をインストールする。タスクスケジューラに登録されて常駐実行される DPLoader は、C&C サーバーからコマンドをダウンロードして実行する。これまでに確認された PowerShell スクリプトはいずれも Proxyware をインストールする機能を備えているが、攻撃者の判断により他種のマルウェアをインストールすることも可能である。
2. マルウェアの配布
最新の攻撃事例では、攻撃者はクラックなどの違法ソフトウェアのダウンロードページを装った Web サイトの広告ページを通じてマルウェアを配布している。

[図 1] マルウェア配布ページ
広告ページを経由してダウンロードされるファイルは、従来と同様に GitHub 上にアップロードされている。初期の攻撃では「Setup.msi」という名前の MSI 形式インストーラーが使用されていたが、最近の配布事例では「Setup.zip」という圧縮ファイル内にマルウェアが含まれている。

[図 2] GitHub にアップロードされた偽装マルウェア
3. 悪意のあるインストーラー
3.1. Setup.msi
「Setup.msi」を介して配布されるタイプは、過去の事例とは異なり、.NET ではなく C++ で開発された DLL 形式のマルウェアである。当該マルウェアは、「Notepad Update Scheduler」という名前のタスクスケジューラに登録され、Rundll32.exe によって実行される。

[図 3] インストールされた悪性 DLL を実行するタスクスケジューラへの登録
正規にインストールされた Notepad++ とともに実行されるこの DLL は、「AggregatorHost.exe」プロセスにシェルコードをインジェクションして動作する。このシェルコードには内部に PowerShell スクリプトを生成するドロッパーが含まれている。なお、従来のような多数の分析妨害技術は確認されておらず、追加の妨害手法は用いられていない。

[図 4] PowerShell 生成ルーチン
PowerShell スクリプトは、従来と同様に Node.js をインストールし、2つの難読化された JavaScript マルウェア、すなわち DPLoader をランダムなフォルダー名および GUID 形式のファイル名で生成する。これらは「UNBScheduler」および「UNPScheduler」という名前のタスクスケジューラに登録される。また、例外パスの追加、セキュリティ通知の無効化、マルウェア報告機能の無効化など、Windows Defender のポリシーを変更することで検知回避を図る。

[図 5] タスクスケジューラに登録された JavaScript マルウェア
3.2. Setup.zip
「Setup.zip」を介して配布されるタイプでは、圧縮ファイル内に正規の Notepad++ インストーラー「Setup.exe」とローダー型マルウェア「TextShaping.dll」が含まれている。ユーザーが「Setup.exe」を実行すると、DLL サイドローディング手法により悪性 DLL がロードされ実行される。「TextShaping.dll」は、内部に暗号化されたシェルコードを保存しており、実行時にこれを復号化して実行する。さらに、そのシェルコードは内部に含まれるドロッパーを復号化し、メモリ上で実行する。

[図 6] Setup.zip 内部のマルウェア

[図 7] ローダー型マルウェアおよび復号化されたドロッパー
ドロッパーが生成する「tmp.ps1」は、Python 公式サイトから Python インストーラーをダウンロードしてインストールし、Python で作成された DPLoader をインストールする。さらに、GUID 形式のランダムな名前を持つ VBS ランチャを生成するが、これは Python を用いて DPLoader を実行する役割を担う。最後に、「Notepad Update Scheduler」というタスクスケジューラに VBS ランチャを登録し、DPLoader が継続的に実行されるようにする。
| Type | Path |
|---|---|
| Python | “%LOCALAPPDATA%\Notepad\Notepad\[GUID]\” 경로 내부 |
| Launcher | %LOCALAPPDATA%\Notepad\Notepad\[GUID]\[GUID].vbs |
| DPLoader | %LOCALAPPDATA%\Notepad\Notepad\[GUID]\[GUID] |
[表 1] マルウェアのインストールパス
4. DPLoader
4.1. JavaScript バージョン
難読化された JavaScript マルウェアは、以下の情報を C&C サーバーに送信し、応答として受信したコマンドを実行する。このタイプは初めて確認された時点から現在に至るまで、ほぼ同一の構造が使用されており、本ブログでは分類のため DPLoader と呼称する。
| 項目 | データ |
|---|---|
| os_type | “Windows_NT” |
| os_name | “win32” |
| os_release | OS バージョン |
| os_version | OS タイプ |
| os_hostname | コンピューター名 |
| os_arch | OS アーキテクチャ |
| machine_id | Machine ID |
| agent_version | Agent バージョン (“2.0.0-js”) |
| session_id | Session ID |
| publisher_id | ランダムな数字 (JavaScript マルウェア実行時に使用される引数) |
[表 2] 転送データ

[図 8] 応答として受信した PowerShell コマンド
4.2. Python バージョン
Python バージョンの DPLoader は、JavaScript バージョンと比較して難読化が施されておらず、機能も簡素化されている。C&C サーバーへの情報送信およびコマンドの取得には「/d」URL が使用され、エラー報告目的には「/e」URL が使用される。

[図 9] DPLoader の主要ルーチン
| 項目 | データ |
|---|---|
| agent_version | Agent バージョン (“1.0.0-py”) |
| machine_id | Machine ID (GUID) |
| os_name | “win32” |
| os_version | OS タイプ |
| publisher_id | “8101” |
[表 3] 転送データ
5. Proxyware
5.1. Infatica
「UNBScheduler」タスクに登録された DPLoader は、過去の事例と同様に Infatica Proxyware をインストールする。インストールを担当する PowerShell は、従来のように「LAN Network Status」という名前で「CleanZilo.exe」を登録して同一パス上の「infatica_agent.dll」をロードする方式ではなく、「Microsoft Anti-Malware Tool」という名前のタスクとして「MicrosoftAntiMalwareTool.exe」を登録する方式に変更されている。このほか、Windows Defender を無効化したり、過去に使用されていた「FastCleanPlus」などのタスクを無効化したりした後、別の C&C サーバーに結果を報告する。
5.2. DigitalPulse
「UNPScheduler」タスクに登録された DPLoader は DigitalPulse Proxyware をインストールする。ダウンロードされた PowerShell スクリプトは、「SyncTaskUpdatescheduler」という名前のタスクを作成し、Rundll32 を用いて取得した「syncupdates.dll」を実行する。なお、「syncupdates.dll」も、前述の Notepad++ を装ったマルウェアの DLL と同様にエクスポート関数名が「start」であり、シェルコードをインジェクションする機能を有する。相違点としては、今回は「explorer.exe」プロセスにインジェクションする点である。

[図 10] インジェクションルーチン
最終的にエクスプローラープロセスにインジェクションされて動作するのは、難読化された DigitalPulse Proxyware である。DigitalPulse は Go 言語で作成されており、感染システムの基本情報を収集・送信した後、Proxyware としての機能を実行する。

[図 11] 既存タイプと難読化された DigitalPulse Proxyware の比較
Python バージョンの DPLoader も同様に PowerShell コマンドをダウンロードして実行し、DigitalPulse Proxyware を取得・インストールする。ダウンロードされたマルウェアは「%LOCALAPPDATA%\Microsoft\Microsoft Windows Pluton[GUID]\MicrosoftWindowsPlutonTaskScheduler.dll」パスに生成され、「MicrosoftWindowsPlutonTaskScheduler」というタスクスケジューラに登録され、Rundll32.exe を介して実行される。当該マルウェアもインジェクターとして機能し、エクスプローラープロセスに DigitalPulse Proxyware をインジェクションする。

[図 12] ダウンロードされた PowerShell コマンド
6. 結論
最近、違法ソフトウェアのクラック配布ページを通じて、さまざまな Proxyware が拡散している。Proxyware 型マルウェアは、システムのリソースを利用して収益を得る点で仮想通貨マイナーと類似しており、近年は韓国の多数のシステムが攻撃対象となっている。
ユーザーは、公式サイト以外の広告やポップアップなど、信頼性の低い Web サイトやファイル共有サイトから実行ファイルをインストールする行為に十分注意する必要がある。また、すでに感染が疑われるシステムについては V3 製品をインストールし、追加のマルウェア感染を防止することが求められる。
Categories: マルウェア