STATICPLUGINによって実行される最新のPlugX亜種
2026年1月、IIJは標的型攻撃で使用されるマルウェアPlugXの亜種を新たに観測しました。分析を行った結果、今回観測したPlugX亜種はUNC6384と呼ばれる、サイバーエスピオナージを目的とした中国に関係するとされるAPTグループが関与している可能性があることが判明しました。UNC6384はAPTグループ Mustang Panda (TEMP.Hex) と強い繋がりを持つとされており、主に東南アジアの国々の政府機関 (および外交官などの関係者) を標的とした攻撃活動を実施していることが報告されています1。
この記事では、2026年1月に観測したPlugX亜種の実行フローや設定情報の構造などについて紹介します。
実行フロー
2026年1月に観測したPlugX亜種の実行フローは図1の通りです。
Browser_Updater.exe を実行すると、図2のようなWebブラウザのアップデート用ソフトウェアを模したウィンドウが表示されます。”Install” と “Cancel” というボタンがウィンドウ内に存在しますが、ボタンのクリックに関わらずEXEファイルが実行された時点で、攻撃者のサーバから悪意のあるMSIファイルがダウンロード・実行されてPlugX亜種に感染します。
Browser_Updater.exe (STATICPLUGIN)実装されている機能やUIが酷似していることから、我々はこのダウンローダ型のマルウェアが以前GTIG (Google Threat Intelligence Group) が報告したUNC6384が使用していたマルウェアSTATICPLUGINの最新版であると考えています。
Deception in Depth: PRC-Nexus Espionage Campaign Hijacks Web Traffic to Target Diplomats | Google Cloud Blog
https://cloud.google.com/blog/topics/threat-intelligence/prc-nexus-espionage-targets-diplomats?hl=en
なお、今回観測したSTATICPLUGINは中国企業 山西荣升源科贸有限公司 の証明書 (既に無効化済み) を用いてコード署名されていました。この企業の証明書は2025年9月にもValleyRATに関連するマルウェア 2 を署名するために使用されていたことが報告されており、更に記事執筆時点でコード署名が有効なファイルについても、その多くがVirusTotal上で悪性判定されています。
また、悪意のあるMSIファイルが設置されていたサーバ 45.251.243[.]210 は以前PlugXのC2サーバとして使用されていたことがHunt.ioの研究者によって報告されています。
Unmasking Adversary Infrastructure: How Certificates and Redirects Exposed Earth Baxia and PlugX Activity – Hunt.io
https://hunt.io/blog/unmasking-adversary-infrastructure-how-certificates-and-redirects-exposed-earth-baxia-and-plugx-activity
MSIファイルは [%LOCALAPPDATA]\pZhozR フォルダ下にPlugX亜種の実行に必要なファイル Avk.exe , Avk.dll , AVKTray.dat をドロップして Avk.exe を実行します。Avk.exe はG DATA CyberDefense AG社のアンチウィルス製品に含まれる正規の実行ファイルですが、DLL SideloadingによってPlugX亜種のローダ Avk.dll をロード・実行します。
Avk.dll はAPI Hashingによって NtCreateFile や NtReadFile などのネイティブAPI関数のアドレスを動的解決して、RtlRegisterWait 関数などを使用して AVKTray.dat に含まれるシェルコードをメモリ上で実行します。
シェルコードは自身にXORエンコードされた状態で含まれるPlugX亜種本体をデコードしてメモリ上で実行します。
設定情報の復号処理
初期化処理等を実施してから、PlugX亜種はC2サーバのアドレスなどが含まれる設定情報を復号します。設定情報はPlugX亜種本体の .data セクションに含まれています。今回観測したマルウェアは図7のような設定情報を有していました。
暗号化された設定情報の構造は以下の表に示す通り非常にシンプルです。
| オフセット | 説明 | 値 |
|---|---|---|
| 0x00 | RC4鍵の長さ (DWORD) | 6 |
| 0x04 | RC4鍵 (BYTE[12]) | VOphJokPpbbQ |
| 0x10 | RC4で暗号化されたデータ (BYTE[0x8A0]) | – |
RC4鍵は文字列 VOphJokPpbbQ の先頭から6文字目までなので VOphJo となります。この鍵を使用してオフセット0x10以降のデータを復号することで、図8のようなデータを入手できます。C2サーバのアドレス等が平文で確認できませんが、これは設定情報がエンコードされた状態でRC4暗号化されているためです。エンコード / デコード時に使用されるアルゴリズムについては次項で詳しく解説します。
なお、2025年12月までに観測されたPlugX亜種 3 は少し異なる復号処理を有していました。設定情報は今回解析したPlugX亜種と同様に .data セクションに含まれていますが、先頭の数値データを wsprintfA 関数を使用して文字列 (16進数表記) に変換して、それをRC4鍵として使用するよう実装されていました。
また、復号結果は図10のようなデータとなっており、C2サーバのアドレス等を平文で確認できる状態でした。
設定情報のデコード処理
先述した通り、2026年以降に観測されているPlugX亜種の設定情報はエンコードされた状態でRC4暗号化されています。マルウェア解析によって得られた情報をもとに、Pythonでデータのエンコード・デコード処理を実装したスクリプトが以下の通りです。
length = block_length * 2
key = config_head_value + block_length
for i in range(length):
key = (block_length + key) & 0xFF
dec_buffer[i] = enc_buffer[i] ^ keyCode language: Python (python)
config_head_value は設定情報の先頭の数値 (RC4鍵の長さ) であるため 6 です。block_length および enc_buffer は図11の通り設定情報に含まれています。なお、C2サーバに関連する情報は設定情報のオフセット0x6A0付近に存在します。
block_length および enc_buffer設定情報内で block_length は 0x12 とされていますが、C2サーバのアドレスのデコード処理時のみ、マルウェアのコード内で block_length から 5 を引いて使用するようになっていました。つまり、block_length は 0xD 、 enc_buffer は16進数表記で 462d48472161077bfc95c0afcec9b7e384fd24174731514b3565 です。
config_head_value = 6
block_length = 0xD
enc_buffer = bytes.fromhex('462d48472161077bfc95c0afcec9b7e384fd24174731514b3565')
dec_buffer = bytearray(len(enc_buffer))Code language: Python (python)
各変数に適切な値を格納した上で、先ほど示したエンコード・デコード処理を実装したスクリプトを実行すれば、C2サーバのアドレスを確認することができます。
print(dec_buffer.decode('utf-16-le'))
# fruitbrat[.]comCode language: Python (python)
設定情報内には通信先以外にもキャンペーン名と思われる文字列 arp や永続化 (Persistence) 用のフォルダパス %public%\GData などがエンコードされた状態で格納されていました。
なお、C2サーバ fruitbrat[.]com の実IPアドレスはCloudflareによって保護されているため不明ですが、IIJでは2026年2月にも異なる設定情報を持つPlugX亜種を観測していて4、そのC2サーバは 108.165.255[.]97:443 に設定されていました。 fruitbrat[.]com:443 と 108.165.255[.]97:443 の両方が記事執筆時点でアクセス可能であり、両サーバがGETリクエストに対して同じWebページをレスポンスとして返している (図12) ことから、fruitbrat[.]com の実IPアドレスは 108.165.255[.]97 である可能性があります。
さいごに
IIJではこの記事で取り上げたようなPlugX亜種を2025年にも大量に観測しています。2026年に入ってからも解析妨害のための改良等が行われていることから、今後もPlugX亜種はUNC6384などのAPTグループによる標的型攻撃で使用される可能性が高いと考えられます。
インシデントレスポンス等でPlugX亜種を解析しなければならなくなった際には、この記事で紹介した情報を役立てていただければ幸いです。
Appendix: IoCs
- ネットワーク
hxxp://45.251.243[.]210/iis.jpgfruitbrat[.]com:443108.165.255[.]97:443
- ファイル SHA256ハッシュ値
- 106f46375d8497d353c22c98f72ab15a9bb87beba4585d5a492fd11edc288b0b (
Browser_Updater.zip) - 22014e2d31197dddc2c451ed475aede3d21ca99784973bdcfd9c3a7d9aaa1999 (
Browser_Updater.exe) - 79af67ed343bc45b6a19e4836ebb83f1130243ff98f48465f9a7a807ba4bfa91 (
iis.jpg) - 4cd81d26289c4d8383a0ffa34397f0b03941554eac04f1b420269b831accf90e (
Avk.dll) - d4bc21e12360af2f2cb55872a90b62805150d498c452b2b1c6a05a806cbb3187 (
AVKTray.dat)
- 106f46375d8497d353c22c98f72ab15a9bb87beba4585d5a492fd11edc288b0b (
- ファイルパス
[%LOCALAPPDATA]\pZhozR\Avk.exe[%LOCALAPPDATA]\pZhozR\Avk.dll[%LOCALAPPDATA]\pZhozR\AVKTray.dat%public%\GData\Avk.exe%public%\GData\Avk.dll%public%\GData\AVKTray.dat
- 永続化 (Persistence) 用のレジストリキー
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\G Data
- Deception in Depth: PRC-Nexus Espionage Campaign Hijacks Web Traffic to Target Diplomats | Google Cloud Blog
https://cloud.google.com/blog/topics/threat-intelligence/prc-nexus-espionage-targets-diplomats?hl=en ↩︎ - SHA256: f9c4df5f5dafdb548fddf9e7e6f07cef8eca7930de7eba385e81dc072bc50113 ↩︎
- SHA256: a7161c9a7c54a47d27459655725d2ade242d0931d6272c75a36f07df45220b08 ↩︎
- SHA256: 4ee6bd5a5701853402a08640f531e1be937d0c1f497e3fc255c9ea3e943ecf42 ↩︎