🔍 Contexte
Article publié le 16 avril 2026 par Puja Srivastava sur le blog Sucuri. Il s’agit d’une analyse technique issue d’une investigation de nettoyage de malware sur un site Joomla compromis, dont le propriétaire signalait l’apparition de liens produits suspects sans rapport avec son activité.
🧩 Mécanisme d’infection
Les attaquants ont injecté un bloc de code PHP fortement obfusqué en tête du fichier index.php du site Joomla. Le code est structuré en quatre fonctions PHP :
wffn(): décodeur bootstrap évitant les chaînesexplodeetbase64_decodeen clairmpjy(): table de lookup de 27 chaînes encodées en base64, assemblées par fragments de 2 caractères pour contourner les scanners de signaturesfotr(): moteur de cloaking qui construit l’URL C2, récupère les instructions et décide du contenu à servir (redirection, injection brute, faux contenu SEO)joog(): requêteur HTTP et exfiltrateur de données d’environnement serveur ($_SERVER)
🎯 Comportement du malware
Le script agit comme un remote loader : il ne stocke pas le spam localement mais contacte des serveurs C2 pour recevoir des instructions dynamiques. Trois modes de réponse sont implémentés :
- Redirection silencieuse : si la réponse commence par
http, le visiteur est redirigé - Injection de payload brut : si la réponse commence par
##, le contenu est affiché directement - Faux contenu SEO : si la réponse dépasse 90 caractères et contient du XML ou HTML, le contenu est servi aux crawlers de moteurs de recherche
🌐 Infrastructure C2
| Domaine | Rôle |
|---|---|
cdn.erpsaz.com |
C2 primaire (/admin.php) |
cdn.saholerp.com |
C2 de fallback (si le primaire retourne vide) |
lashowroom.com |
Domaine leurre, décodé en mémoire mais jamais appelé |
💥 Impact
- Apparition de liens produits non liés sur le site compromis
- Manipulation du référencement (SEO poisoning) via injection de sitemaps XML et pages HTML frauduleuses aux bots
- Redirection des visiteurs réels vers des destinations contrôlées par l’attaquant
- Exfiltration de données d’environnement serveur
- Contrôle dynamique du comportement du site sans modification locale des fichiers
🛠️ Remédiation appliquée
Suppression du code malveillant dans index.php, vérification de l’absence de backdoors supplémentaires, réinitialisation des identifiants administrateur, vérification d’intégrité complète des fichiers.
📄 Type d’article
Analyse technique détaillée publiée par Sucuri, visant à documenter le fonctionnement interne d’un loader PHP obfusqué ciblant Joomla et à fournir des IoC exploitables.
🧠 TTPs et IOCs détectés
TTP
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1027.010 — Command Obfuscation (Defense Evasion)
- T1105 — Ingress Tool Transfer (Command and Control)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
- T1102 — Web Service (Command and Control)
- T1036 — Masquerading (Defense Evasion)
- T1565.001 — Stored Data Manipulation (Impact)
- T1190 — Exploit Public-Facing Application (Initial Access)
- T1082 — System Information Discovery (Discovery)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
IOC
- Domaines :
cdn.erpsaz.com— VT · URLhaus · ThreatFox - Domaines :
cdn.saholerp.com— VT · URLhaus · ThreatFox - Domaines :
lashowroom.com— VT · URLhaus · ThreatFox - URLs :
http://cdn.erpsaz.com/admin.php— URLhaus - Chemins :
/index.php
Malware / Outils
- PHP SEO Spam Injector / Remote Loader (loader)
- PHP Backdoor (obfusqué, fonctions wffn/mpjy/fotr/joog) (backdoor)
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ blog.sucuri.net — source non référencée (0pts)
- ✅ 10133 chars — texte complet (fulltext extrait) (15pts)
- ✅ 5 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ 0/4 IOCs confirmés externellement (0pts)
- ✅ 10 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://blog.sucuri.net/2026/04/joomla-seo-spam-injector-obfuscated-php-backdoor-hijacking-site-visitors.html