🔍 Contexte

Publié le 27 mars 2026 sur le blog personnel d’Abdullah Islam, cet article constitue une analyse technique approfondie d’une campagne attribuée au groupe APT Mustang Panda (lié à la Chine), ciblant des entités gouvernementales, diplomatiques et des ONG. L’échantillon analysé a été observé pour la première fois le 17 mars 2026.

🎯 Vecteur d’infection initial

La chaîne d’infection débute par un fichier ZIP de spear-phishing nommé Energy_Infrastructure_Situation_Note_Tehran_Province_2026.zip, suggérant un ciblage lié à l’infrastructure énergétique iranienne. Un fichier LNK malveillant déclenche silencieusement un script PowerShell en fenêtre cachée (-w H).

⚙️ Chaîne d’infection en 7 étapes

  1. LNK → exécution PowerShell cachée
  2. PowerShell → lecture du ZIP en bytes bruts, extraction d’un sous-ensemble à offset fixe (795), écriture obfusquée (wRi+tEAl+L+bYt+Es)
  3. Dépôt de 3 fichiers dans %LocalAppData%\1HFJAOT7-21WC-0KRF-50GV-JW8KN1HPZC9K\ : ErsChk.exe (légitime), Eraser.dll (malveillant), Eraser.dat (shellcode chiffré)
  4. DLL side-loading : ErsChk.exe charge Eraser.dll et appelle l’export eraserInit
  5. Exécution en mémoire via abus de RtlRegisterWait (thread pool callback)
  6. Persistance établie
  7. Communication C2 HTTPS sur port 443 avec entrées redondantes

🛠️ Techniques d’évasion et d’obfuscation

  • Résolution dynamique d’API par parcours du PEB et hachage DJB2 modifié (seed 0x1505, formule hash = char + 0x21 * hash)
  • Aplatissement du flux de contrôle (control-flow flattening) avec machine à états et code parasite
  • Chiffrement de configuration : RC4 (clé oQmKndOskb, 10 octets) suivi d’un XOR rotatif
  • Loader réflectif avec hachage ROL-13 pour résolution d’imports
  • Neutralisation des gestionnaires d’exceptions (SetUnhandledExceptionFilter)
  • PDF leurre embarqué dans la section overlay du DLL final
  • Exécution conditionnelle selon les arguments de ligne de commande (GetCommandLineW, CommandLineToArgvW)

📡 Infrastructure C2

La configuration extraite révèle une communication HTTPS sur le port 443 avec plusieurs entrées C2 redondantes pour assurer la résilience. La configuration est stockée dans la section .data et déchiffrée via RC4 puis XOR.

📄 Type d’article

Il s’agit d’une analyse technique (writeup de malware) dont le but principal est de documenter en détail la chaîne d’infection, les mécanismes d’évasion et les indicateurs de compromission associés à cette variante de PlugX utilisée par Mustang Panda.

🧠 TTPs et IOCs détectés

Acteurs de menace

  • Mustang Panda (state-sponsored)

TTP

  • T1566.001 — Phishing: Spearphishing Attachment (Initial Access)
  • T1059.001 — Command and Scripting Interpreter: PowerShell (Execution)
  • T1574.002 — Hijack Execution Flow: DLL Side-Loading (Defense Evasion)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1055 — Process Injection (Defense Evasion)
  • T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
  • T1620 — Reflective Code Loading (Defense Evasion)
  • T1106 — Native API (Execution)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1573 — Encrypted Channel (Command and Control)
  • T1036 — Masquerading (Defense Evasion)
  • T1547 — Boot or Logon Autostart Execution (Persistence)
  • T1497.003 — Virtualization/Sandbox Evasion: Time Based Evasion (Defense Evasion)
  • T1027.007 — Obfuscated Files or Information: Dynamic API Resolution (Defense Evasion)

IOC

  • SHA256 : de13e4b4368fbe8030622f747aed107d5f6c5fec6e11c31060821a12ed2d6ccd
  • SHA1 : 0252819a4960c56c28b3f3b27bf91218ffed223a
  • MD5 : 06fcc2a56de5acdf1ca1847c79cca9e9
  • Fichiers : Energy_Infrastructure_Situation_Note_Tehran_Province_2026.zip
  • Fichiers : ErsChk.exe
  • Fichiers : Eraser.dll
  • Fichiers : Eraser.dat
  • Fichiers : ErsChk.exe
  • Chemins : %LocalAppData%\1HFJAOT7-21WC-0KRF-50GV-JW8KN1HPZC9K\ErsChk.exe
  • Chemins : %LocalAppData%\npbhwucj.lv

Malware / Outils

  • PlugX (rat)
  • Eraser.dll (loader)
  • Eraser.dat (other)

🔗 Source originale : https://0x3obad.github.io/posts/plugx-writeup/