ASEC
  • マルウェアの情報
  • AhnLab 検知
  • 総計
  • 対応ガイド
  • AhnLab
Posted By ATCP , 2025년 11월 20일

VPN ホームページで配布中の NKNShell マルウェア

AhnLab SEcurity intelligence Center(ASEC)は、韓国国内の VPN 会社のホームページにマルウェアがアップロードされていることを確認した。この攻撃は、マルウェアの配布方式や使用されたマルウェアなどの特徴から、2023年から韓国国内の VPN 会社を攻撃してマルウェアを配布していた攻撃者と同じ犯行と見られる。過去の事例において、攻撃者は最終的に SparkRAT、MeshAgent、Sliver のようなバックドアマルウェアをインストールし、感染システムを操作したが、最近、確認された攻撃事例でも類似した PDB パスを持つ MeshAgent が使用されている。今回、確認された攻撃事例は、過去とは異なり VPN 会社のホームページがその対象であり、過去の事例と同じく MeshAgent を使用することもあるが、NKNShell という名前のバックドアが新しく確認された。NKNShell は C&C サーバーとの通信時に NKN と MQTT というプロトコルを活用するのが特徴である。

  • 韓国国内の VPN インストーラーに含まれて拡散している SparkRAT
  • 韓国国内の VPN インストールから MeshAgent 感染へと続く攻撃事例の分析
  • 韓国国内のプログラム開発企業を通じて拡散している Sliver C2

 

1.マルウェアの配布

韓国国内の VPN 会社のホームページでは、2025年11月現在でもマルウェアがダウンロードされる。ホームページからダウンロードした圧縮ファイルの解凍と実行を行うと、正常な VPN インストールと同時に PowerChell を利用して PowerShell スクリプトをダウンロードし、実行する。PowerShell スクリプトは様々なマルウェアをインストールするが、最終的に NKNShell という名前のバックドアと MeshAgent、そして gs-netcat がある。ここでは、それぞれの流れに従ってマルウェアを分析する。

図1. 韓国国内 VPN ホームページでのダウンロード

 

2. マルウェア分析

2.1. 偽装インストーラー

図2. フローチャート

偽装インストーラーは Go 言語で作成されたマルウェアであり、NVIDIA に偽装した無効な証明書で署名されている。実行時、仮想マシンかどうかをチェックするが、このルーチンは GoDefender のコードを持ち来て使用した。[1] その後、PowerShell ダウンロードコマンドを引数に、自身を子プロセスに実行する。このコマンドによって実行された子プロセスは、ダウンロードアドレスから PowerChell をダウンロードし、メモリにロードして Base64 でエンコードされたコマンドを実行する。

参考に、PowerChell は C/C++ で開発された PowerShell コンソールであり、AMSI のようなセキュリティ機能を無効化する。すなわち、攻撃者は PowerChell を利用してコマンドを実行しても、AMSI を活用するセキュリティ製品を通じて検知を回避することができる。PowerChell を通じて実行されるコマンドは、外部から「sql-auto.ps1」スクリプトをダウンロードして実行する機能を担う。

 

2.2.  PowerShell Downloader スクリプト – 1 (sql-auto.ps1)

「sql-auto.ps1」スクリプトは、他のマルウェアをインストールする機能を担う Downloader である。後の事例でも取り上げるが、攻撃者は生成型 AI を利用してマルウェアを製作したものと見られるが、これは実行ファイル形式のマルウェアだけでなく、PowerShell スクリプトも同様である。

図3. AI で作成したものと推定されるコメント文字列

「sql-auto.ps1」は、機能が多様だが、コメントアウトされて動作しない部分も多数存在する。このスクリプトは、Windows Defender を無効化し、例外処理パスを登録し、BlackShell256 が開発した「Null-AMSI」スクリプトを実行して AMSI を回避しようと試みた。[2] 「sql-auto.ps1」の最も重要な機能は、外部から追加ペイロードをダウンロードすることである。ダウンロードするものは二つに分かれるが、一つは現在基準でコメントアウトされているが、SQLMap マルウェアをインストールすることであり、もう一つは、別の Downloader スクリプトである「install.ps1」をインストールすることである。

 

2.3. PowerShell Downloader スクリプト – 2 (install.ps1)

「install.ps1」スクリプトは、現在基準でコメントアウトされているが、「Invoke-NullAMSI」を利用して ETW(Event Tracing for Windows)を無効化する機能が含まれており、「Cleanup」という名前の WMI フィルターを登録して持続性を維持する。「Cleanup」フィルターは、内部に存在する実際の Downloader スクリプトを実行する機能を提供する。このようなプロセスが完了すると、以後マルウェアインジェクションの対象になるプロセスを終了し、そのスクリプトを直接実行する。

図4. 登録された WMI フィルターおよびコンシューマー

最終的に実行されるスクリプトは、15個の UAC Bypass 手法をサポートしているが、実際には使用されていない。サポートする機能は、それぞれ fodhelper.exe、slui.exe、silentcleaunp タスク、sdclt.exe、perfmon.exe、eventvwr.exe、compmgmtlauncher.exe、computerdefaults.exe、トークン操作、cmstp.exe 等、知られている UAC バイパス方式である。

スクリプトの実質的な機能は、ダウンロードであり、gs-netcat、MeshAgent、NKNShell バックドアのインストールを担う。参考に、NKNShell バックドアの場合、Microsoft Edge、メモ帳、計算機、ペイントのプロセスを実行してインジェクションする。

 

2.4. MeshAgent

MeshCentral は、オープンソースでありながら無料でリモートコントロールを提供する管理ツールである。MeshCentral が提供する MeshAgent は、コマンド実行やファイルダウンロードなどの各種システムコントロールコマンドだけでなく、VNC、RDP のようなリモートデスクトップ機能を提供する。攻撃者は、過去から MeshAgent を持続的に使用していることが特徴である。過去から攻撃に使用されてきた MeshAgent は、攻撃者が直接製作した形態であり、以下のような PDB 情報を持つ。

  • C:\Users\anfdh\Downloads\MeshAgent-master\MeshAgent-master\Release\MeshService64.pdb
  • C:\Users\anfdh\Downloads\MeshAgent-master (1)\MeshAgent-master\Release\MeshService64.pdb
  • C:\Users\anfdh\Downloads\MeshAgent-master (2)\MeshAgent-master\Release\MeshService64.pdb

「new-ms.ps1」スクリプトは、「%LOCALAPPDATA%\svchost\services.exe」パスに MeshAgent をダウンロードし、同じパスに「services.msh」設定ファイルをともに置いて、当該設定を使用するようにした。設定ファイルには以下のように C&C サーバーのアドレスが含まれている。

図5. C&C サーバーのアドレスが含まれている設定ファイル

 

2.5. gs-netcat

Global Socket のツールの一つである gs-netcat は、GSRN(Global Socket Relay Network)という中継網を利用して通信する。gs-netcat は netcat の GSRN バージョンであり、内部網に位置していても設定したパスワードを利用して通信が可能である。

「gsocks.ps1」スクリプトは、「file.zip」圧縮ファイルをダウンロードして「c:\windows\linux」パスに解凍するが、ここには「cached.exe」という名前で gs-netcat が含まれている。また「windows.sh」を作成し、「bash.exe」を利用してこれを実行するが、「windows.sh」には gs-netcat のパスワードが設定されている。攻撃者は、このパスワードを通じて外部から感染システムにアクセスすることができる。すなわち、「gsocks.ps1」スクリプトは gs-netcat を利用したリモートシェルをインストールする機能を担っている。

図6. gs-netcat インストールパスおよび実行スクリプト

参考に「bash.exe」を利用した「windows.sh」スクリプトの実行振る舞いは、「Windows Linux System」という名前のタスクに登録され持続性が維持される。このほかにも gs-netcat のパスワードを含んだシステムの基本情報は PowerShell コマンドを通じて C&C サーバー、すなわち攻撃者に伝達される。

図7. ログ送信ルーチン

 

2.6. NKNShell

“PX.exe” という名前でインストールされ実行されるマルウェアは、Go 言語で作成されたバックドアである。Go 言語の関数や「NKN Shell Client」などの文字列から、マルウェア製作者が NKNShell と名付けたことが分かる。NKN は New Kind of Network の略で、ブロックチェーンベースの P2P ネットワークプロトコルである。実際のマルウェアは C&C サーバーとの通信に NKN プロトコルだけでなく、MQTT(Message Queueing Telemetry Transport)というメッセージングプロトコルも使用する。

NKNShell の特徴の一つは、製作者が AI を活用して製作したものと推定されるという点である。過去の PowerShell スクリプトと同様に、マルウェアのバイナリ内部には韓国語のコメントが含まれており、使用されている絵文字を見れば製作者が生成型 AI を活用したものと見られる。

図8. バイナリに含まれているコメント文字列

 

A. C&C 通信

Go 言語で製作された NKNShell は C&C サーバーとの通信過程で NKN と MQTT プロトコルを使用し、これを利用してコマンドを受け取る。C&C サーバーとの通信にブロックチェーンベースの P2P ネットワークプロトコルである NKN を使用した事例は過去にも存在するが、代表的なものに NKAbuse や[3] オープンソースマルウェア NGLite がある。[4] マルウェアは、固有の ID、すなわち NKN アドレスを生成したあと、これを活用して Seed ノードに接続し、その後バイナリにハードコーディングされているアドレスの攻撃者に収集した情報を送信する。

図9. Seed ノードへのリクエストパケット

NKNShell は C&C サーバーとの通信過程で、メッセージングプロトコルである MQTT も一緒に活用する。まず、以下のような MQTT ブローカーに接続するが、感染システムの Client ID は NKN で使用したものと同じように使用される。参考に、接続過程で特定のトピックに Will メッセージ(LTW:Last Will & Testament)を一緒に送信する。また、NKN プロトコル方式のように感染システムで収集した情報を送信する。これにより、以降そのトピックを購読していた攻撃者は感染システムに関する情報を収集することができる。

  • MQTT ブローカーアドレス – 1:broker.emqx[.]io:1833
  • MQTT ブローカーアドレス – 2:broker.hivemq[.]com:1833
  • MQTT ブローカーアドレス – 3:broker.mqtt[.]cool:1833
  • MQTT ブローカーアドレス – 4:broker.mosquitto[.]org:1833

図10. MQTT ブローカー接続過程でのパケット

参考に、NKNShell は Client ID を活用して MD5 を計算し、その値を文字列とするトピックを購読するが、攻撃者もまた Will メッセージで伝達された Client ID を通じて感染システムがどの MD5 文字列を持つトピックを購読するのかを知ることができる。すなわち、攻撃者はそのトピックにメッセージをパブリッシュすることによって、コマンドを伝達することができるだろう。

項目 情報
 arch アーキテクチャ
cpuusage CPU 使用量
hostinfo コンピュータ名
isadmin 管理者権限の有無
lanip IP アドレス
mac MAC アドレス
num_cpu CPU コアの個数
os OS
osinfo OS 情報(Windows バージョン等)
pathinfo マルウェアパス
ram RAM 情報
username ユーザー名
version 1.0.7
wanip External IP

Table 1. 送信する情報リスト

 

B. 対応するコマンド

NKNShell は NKN、MQTT を通じて以下のようなコマンドを受け取る。ほとんどのバックドアが対応している情報収集、リモート操作と関連した一般的なコマンドに対応し、一部は実装されていない。

コマンド 機能
ps プロセスリストの照会
bof BOF (Beacon Object File) 実行
rem Rem Proxy
ping Ping
attack DDoS 攻撃コマンド(tcp、udp、http flood)
config 設定ファイルのダウンロード
command コマンド実行
sideload DLL サイドローディング
spawndll DLL メモリロード
file_list ファイルリストの照会
injection コードインジェクション
migration 実装されていない
clear_log イベント、レジストリ、Prepatch ログの削除
execution コマンド実行
disconnect 接続解除
execute_pe メモリ上での PE 実行
screenshot スクリーンショット
codesigning 実装されていない
steal_token トークン窃取
file_delete ファイル削除
file_upload ファイルアップロード
file_execute ファイル実行
clone_session クローンセッション
file_download ファイルのダウンロード
inject_process プロセスインジェクション
postmsf_cshrp 実装されていない
set_encryption メッセージの暗号化
execute_csharp アセンブリ実行
python Python スクリプトの実行
get_systeminfo アーキテクチャ、CPU、バージョン情報等、システム情報の収集
ps_session_exec PowerShell セッションの実行
execute_assembly アセンブリ実行
impersonate_user ユーザーの偽装
ps_session_start PowerShell セッションの開始
ps_session_stop PowerShell セッションの終了
execute_shellcode シェルコードの実行
enumerate_sessions セッション列挙
execute_powershell PowerShell 実行
hijack_codesigning コードサイニングに偽装
migrate_cobaltstrike 実装されていない
process_manipulation プロセス操作(inject_dll, memory_dump, hijack_token, kill, resume, suspend)
execute_charp_bypass 実装されていない
inject_system_process システムプロセスインジェクション
spoof_microsoft_signature 実装されていない

表2. NKNShell がサポートするコマンド

図11. MQTT プロトコルで ping コマンドを受信

 

C. アップデート

NKNShell は一般的なコマンドによってアップデートするのではなく、別のインフラを活用する。追加の C&C サーバーや、匿名ブログのテレグラフ(telegra[.]ph、te.legra[.]ph、graph[.]org)を活用することが特徴であり、定期的にアドレスのうち1つをランダムに選択し、後ろに URL を付け加えたアドレスに接続する。

そのアドレスに接続すると、以下のように攻撃者がアップロードした Base64 文字列が表示される。Base64 の復号化を行うと、アップデートするマルウェアのペイロード アドレスを確認することができる。

図12. テレグラフにアップロードされたアップデートアドレス

 

2.7. SQLMap マルウェア

分析時点では PowerShell スクリプトではコメントアウトされていたが、「main.exe」すなわち SQLMap マルウェアは、実際の攻撃で使用されることもあった。SQLMap は、引数で渡された特定のアドレスを対象に、Web アプリケーションに対する SQL インジェクションの脆弱性をチェックしてくれるオープンソースツールである。SQLMap マルウェアが実行されると、同じパスに「sqlmap-win64」フォルダーに SQLMap ツールを作成する。

図13. SQLMap マルウェアの実行ログ

以降、別の C&C サーバーからスキャン対象のアドレスを受け取るものと推定され、特定の MQTT トピックに対して持続的にメッセージをパブリッシュしていることから、スキャン結果をそのトピックに送信するものと見られる。

 

3. 結論

近年、Larva-24010 攻撃者が韓国の VPN 業界のホームページを通じてマルウェアを配布しており、それによりその VPN のホームページからインストーラーをダウンロードして実行するとマルウェアがインストールされる場合がある。Larva-24010 攻撃者は少なくとも2023年から韓国の VPN ユーザーを対象にマルウェアを配布しており、最終的に MeshAgent、gs-netcat、NKNShell のような様々なバックドアマルウェアをインストールする。これにより、攻撃者はその VPN がインストールされた感染システムを操作し、感染システムに保存されているユーザーの機密情報を窃取することができる。

 

MD5

0696da5b242023308ad45c50666b2b96
0dfea610a526b0d458e84c6cd604b2ab
21067f677b8ac8d843a56cd2c19356ff
2e9bf8bf256a0c60402e05d6f20c6e3d
60f153778e843fc04c6ab239ca650a89
URL

https[:]//camo[.]hach[.]chat/?proxyUrl=https[:]//dnot[.]sh/
https[:]//inspiring-monstera-5c3688[.]netlify[.]app/afsocks
https[:]//microsoft[.]devq[.]workers[.]dev/newms[.]exe
https[:]//openai-proxy[.]napdev[.]workers[.]dev/?url=https[:]//pub-fd29cd63fb8c4b7fb0c7d3fa893212b9[.]r2[.]dev/Protect[.]exe
https[:]//proxy[.]wingram[.]org/?proxyUrl=https[:]//microsoft[.]devq[.]workers[.]dev/newms[.]exe
FQDN

kttelecom[.]duckdns[.]org
spiffy-crepe-c667e8[.]netlify[.]app

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム 「AhnLab TIP」 サブスクリプションサービスを通して確認できる。

Categories: Uncategorized

Tagged as: backdoor, MeshAgent, PowerShell

有名 OTT サービスを騙ったフィッシングメールに注意
WSUS リモートコード実行脆弱性(CVE-2025-59287)を悪用した ShadowPad 攻撃事例の分析

Archives

  • Facebook
  • RSS Feed
follow us in feedly