🔍 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înes explode et base64_decode en clair
  • mpjy() : table de lookup de 27 chaînes encodées en base64, assemblées par fragments de 2 caractères pour contourner les scanners de signatures
  • fotr() : 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 :

  1. Redirection silencieuse : si la réponse commence par http, le visiteur est redirigé
  2. Injection de payload brut : si la réponse commence par ##, le contenu est affiché directement
  3. 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

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