Selon un billet de blog technique signé « Kirk » (28 février 2026), une campagne active détourne archive.org comme plateforme de distribution en dissimulant des injecteurs .NET dans des images JPEG 4K via stéganographie, afin de livrer en parallèle les RATs Remcos 7.1.0 Pro et AsyncRAT 1.0.7.

— Contexte et technique de stéganographie 🧪 — Les images (3840x2160) contiennent un bloc base64 de DLL .NET placé après le marqueur EOF JPEG (FF D9) à l’offset 1 390 750, encadré par des marqueurs qui ont évolué de BaseStart/-BaseEnd (24 fév.) à IN-/==-in1 (25–28 fév.). Un dropper PowerShell télécharge l’image (WebClient.DownloadData), extrait le bloc par regex, puis charge l’assembly en mémoire ([Reflection.Assembly]::Load). Les DLL injectées se font passer pour Microsoft.Win32.TaskScheduler.dll et embarquent l’injecteur Mandark (RunPE), avec un durcissement croissant (ConfuserEx, ressources chiffrées, RSA-1024, obfuscation).

— Kill chain 1 : Remcos v7.1.0 Pro 🚩 — Un dropper JavaScript (CopilotDrivers.js) lance PowerShell caché, récupère l’image stego sur archive.org (format IN/==‑in1), charge la DLL (1,2 Mo), puis télécharge un second étage depuis msidownloads.duckdns.org avant un process hollowing dans MSBuild. Le C2 Remcos est systemcopilotdrivers.ydns.eu:3001 (botnet « Tar1 »). Le keylogger s’active en mode hors-ligne (écritures dans logs.dat sous %AppData%/Copilotdrivers) malgré un flag statique à faux.

— Kill chain 2 : AsyncRAT v1.0.7 — et variante 2b 🎯 — Un autre dropper (WMIEventLogs.js) suit la même chaîne, avec un second étage « vm.txt » et une DLL de 1,5 Mo, menant à AsyncRAT 1.0.7 vers securityhealthservice.ydns.eu:1000 (botnet « Oct Respaldo », clé AES fournie). Le mode « Install » est désactivé ; un intervalle de 1 min ré-exécute la séquence. Une variante (2b) télécharge l’image stego depuis hostphpwindowsapps.ydns.eu:8011 (46.246.80.9), utilise le chargement réflexif d’assembly, active une tâche planifiée et dépose le binaire sous C:\Users\Public\Downloads.

— Infrastructure et mise en scène — Le serveur de staging (Apache/2.4.58 Win64 + PHP 8.1.25) et les C2 écoutent sur 181.206.158.190 (Colombia Movil/Tigo, AS27831). Les fichiers de second étage (« Copi.txt » et « vm.txt ») font précisément 97 280 octets de zéros (Last-Modified 24 janv. 2026), tandis que les RATs s’exécutent depuis la charge stego initiale ; le second étage sert d’itération de réinfection (60 s). Avant exécution, un fichier .ps1 de test sonde le mode Constrained Language/AppLocker.

— IOCs et TTPs —

  • IOC réseau/C2 et staging:
    • systemcopilotdrivers.ydns.eu:3001 (Remcos C2)
    • securityhealthservice.ydns.eu:1000 (AsyncRAT C2)
    • msidownloads.duckdns.org → 181.206.158.190 (HTTP/80)
    • hostphpwindowsapps.ydns.eu:8011 → 46.246.80.9
    • IP centrale: 181.206.158.190 (ports 80/1000/3001)
  • URLs observées (exemples):
  • Hashes (échantillons):
    • Stego DLLs: 1cf18ef…b45d4d; 4b62c…efd16; 9005de…8697a; 124e12…ca29b
    • Droppers: eae6a4…40cf (CopilotDrivers.js); 9a7153…286c (WMIEventLogs.js); ef3642…25d5 (WMIEventLogs.js alt)
  • TTPs:
    • Stéganographie JPEG (bloc base64 après EOF, marqueurs BaseStart/-BaseEnd puis IN-/==-in1)
    • PowerShell + WebClient.DownloadData + regex + Reflection.Assembly.Load (chargement en mémoire)
    • Process hollowing dans MSBuild via Mandark (CreateProcess suspended, ZwUnmapViewOfSection, VirtualAllocEx, WriteProcessMemory, Set/ResumeThread)
    • Chargement réflexif, tâche planifiée (variante 2b), boucle de ré-exécution 60 s
    • Détournement de archive.org, YDNS (.ydns.eu), DuckDNS, comptes Gmail pour l’upload quotidien

Cet article est une analyse de menace approfondie et un reverse-engineering de la chaîne d’infection, visant à documenter l’abus d’archive.org, l’injecteur .NET Mandark et l’infrastructure partagée des opérateurs.

🧠 TTPs et IOCs détectés

TTP

[‘Stéganographie JPEG (bloc base64 après EOF, marqueurs BaseStart/-BaseEnd puis IN-/==-in1)’, ‘PowerShell + WebClient.DownloadData + regex + Reflection.Assembly.Load (chargement en mémoire)’, ‘Process hollowing dans MSBuild via Mandark (CreateProcess suspended, ZwUnmapViewOfSection, VirtualAllocEx, WriteProcessMemory, Set/ResumeThread)’, ‘Chargement réflexif’, ‘Tâche planifiée (variante 2b)’, ‘Boucle de ré-exécution 60 s’, ‘Détournement de archive.org, YDNS (.ydns.eu), DuckDNS, comptes Gmail pour l’upload quotidien’]

IOC

{’network’: [‘systemcopilotdrivers.ydns.eu:3001’, ‘securityhealthservice.ydns.eu:1000’, ‘msidownloads.duckdns.org’, ‘hostphpwindowsapps.ydns.eu:8011’, ‘181.206.158.190’, ‘46.246.80.9’], ‘urls’: [‘http://archive.org/download/optimized_msi_20260226_1507/optimized_MSI.png’, ‘http://archive.org/download/optimized_msi_20260227_1420/optimized_MSI.png’, ‘http://msidownloads.duckdns.org/Nueva%20carpeta/Copi.txt’, ‘http://msidownloads.duckdns.org/Nueva%20carpeta/vm.txt’], ‘hashes’: [‘1cf18ef…b45d4d’, ‘4b62c…efd16’, ‘9005de…8697a’, ‘124e12…ca29b’, ’eae6a4…40cf’, ‘9a7153…286c’, ’ef3642…25d5’]}


🔗 Source originale : https://www.derp.ca/research/archive-org-stego-campaign/