Scanner un WordPress à la recherche de malware
Outils en ligne, plugins, inspection manuelle : voici comment scanner un WordPress infecté, laquelle choisir selon votre cas, et ce qu'aucun scanner ne voit.
« Scanner mon site » sonne comme une action unique, comme passer un antivirus sur un ordinateur. En réalité, il n’existe pas un seul scan WordPress, mais trois familles d’outils qui regardent des choses différentes, depuis des endroits différents. Un scanner externe voit ce que voit Google. Un plugin de sécurité fouille les fichiers du serveur. La vérification manuelle compare votre installation à une référence connue. Chacun a ses angles morts, et c’est précisément en les combinant qu’on obtient un diagnostic fiable. Voici comment scanner pour de bon, et pourquoi un scan « propre » ne prouve jamais qu’un site l’est.
Famille 1 : les scanners externes, ce que voit un visiteur
Ces outils chargent vos pages depuis l’extérieur, exactement comme le ferait un navigateur ou le robot de Google. Ils n’ont aucun accès à vos fichiers : ils analysent uniquement la sortie publique du site.
Les plus utiles :
- Sucuri SiteCheck : vous entrez l’URL, il charge le site et signale les redirections suspectes, le contenu injecté visible, le JavaScript malveillant et la présence sur des listes noires.
- VirusTotal : soumettez l’URL, il agrège le verdict de dizaines de moteurs antivirus et services de réputation.
- Google Safe Browsing : tapez
https://transparencyreport.google.com/safe-browsing/searchet entrez votre domaine pour savoir si Google considère votre site comme dangereux. C’est ce statut qui déclenche l’écran rouge d’avertissement dans Chrome.
Ce qu’ils détectent bien
Les scanners externes excellent sur tout ce qui est visible côté visiteur : une redirection vers un site de casino, un script injecté dans le <head>, une page truffée de spam, une alerte de blacklist. Si votre site renvoie ses visiteurs ailleurs ou affiche du contenu que vous n’avez jamais écrit, ils le repèrent vite.
Leur angle mort
Ils sont totalement aveugles aux fichiers du serveur. Une backdoor PHP planquée dans wp-content/uploads, un compte admin pirate, un code malveillant qui ne se déclenche que pour le robot de Google (cloaking) ou seulement à certaines heures : rien de tout ça n’apparaît à un scanner externe qui charge votre page d’accueil à un instant T. Un site peut afficher « aucune menace détectée » côté visiteur tout en étant profondément compromis sur le serveur.
Famille 2 : les plugins de scan, ce qui se passe sur le serveur
Là, on change de point de vue. Un plugin de sécurité s’installe dans WordPress et inspecte les fichiers depuis l’intérieur : il lit le disque, compare, cherche des motifs suspects.
Les références :
- Wordfence : compare les fichiers du cœur, des plugins et des thèmes à leurs versions officielles, et cherche des signatures de malwares connues.
- MalCare : scanne sur ses propres serveurs (pour ne pas alourdir le site) et repère du code malveillant que les scans à base de signatures ratent parfois.
- Le scanner Sucuri (l’extension, distincte de SiteCheck) : vérifie l’intégrité des fichiers et surveille les modifications.
Ce qu’ils détectent bien
Un plugin voit ce que l’externe ne voit jamais : un fichier du cœur modifié, un .php étranger dans uploads, une signature de backdoor connue, un changement récent inattendu. Pour une première passe sur le serveur sans accès SSH, c’est précieux. C’est souvent l’outil qui confirme une intuition quand vous cherchez à savoir si votre WordPress est piraté.
Leur angle mort
Le piège est structurel : le plugin tourne à l’intérieur du site infecté. Si le pirate contrôle déjà le serveur, il peut masquer ses fichiers au scanner, exclure ses propres chemins, ou désactiver discrètement l’extension. Et comme ces outils reposent largement sur des signatures, une backdoor obfusquée ou inédite passe sous le radar. Les faux positifs existent aussi : un plugin légitime qui utilise base64_decode pour des raisons valables peut être signalé à tort. Un scan plugin « propre » est rassurant, jamais une preuve.
Famille 3 : l’inspection manuelle, la vérification de référence
C’est l’approche la plus fiable, parce qu’elle ne cherche pas à reconnaître le mal : elle vérifie que le bien est intact. Le principe : comparer votre installation à une version connue comme propre, puis traquer ce qui dépasse.
Vérifier l’intégrité du cœur avec WP-CLI
Si vous avez un accès SSH et WP-CLI, une seule commande compare tous les fichiers du cœur WordPress à leurs sommes de contrôle officielles :
wp core verify-checksums
Tout fichier modifié, ajouté ou manquant dans le cœur remonte immédiatement. C’est la méthode la plus rapide pour savoir si le cœur de WordPress a été altéré, sans dépendre d’aucune base de signatures.
Repérer les fichiers récemment modifiés
Si vous connaissez la date approximative de l’intrusion, listez les fichiers PHP modifiés sur les quinze derniers jours :
find . -name '*.php' -mtime -15 -ls
Un fichier du cœur ou d’un plugin modifié récemment, alors que vous n’avez rien touché, est un signal fort.
Chercher les motifs de code malveillant
Le code de backdoor est presque toujours obfusqué. Quelques fonctions reviennent constamment et se cherchent en une commande :
grep -rEl "eval\(|base64_decode\(|gzinflate\(|str_rot13\(" wp-content/
eval( exécute une chaîne comme du code PHP, base64_decode( décode une charge utile cachée. Leur combinaison, sur un fichier sans commentaires ni en-tête, ne laisse guère de doute. Pour le détail des cachettes et des motifs, voyez notre guide pour trouver et supprimer une backdoor.
Son angle mort
L’inspection manuelle exige un accès serveur, du temps, et l’œil pour distinguer un vrai positif d’un faux. Surtout, elle reste faillible : un grep ne capture pas une obfuscation qu’il ne connaît pas, et une date de modification peut être falsifiée pour faire passer un fichier pour ancien.
Quel scan pour quel cas
Inutile de tout lancer à l’aveugle. Selon ce que vous constatez :
- Vos visiteurs sont redirigés, ou Google affiche une alerte : commencez par un scanner externe (Sucuri SiteCheck + statut Safe Browsing). C’est le plus rapide pour confirmer un problème visible.
- Tout semble normal en façade mais vous avez un doute (un fichier bizarre en FTP, un comportement étrange) : un plugin de scan côté serveur, puis une vérification des checksums.
- Vous voulez un verdict sérieux avant de nettoyer : la vérification manuelle du cœur (
wp core verify-checksums) est non négociable, car c’est la seule qui ne dépend d’aucune signature.
La limite que tous les scanners partagent
Voici la vérité que peu d’outils affichent clairement : un scan « propre » ne prouve pas qu’un site est propre.
Les scanners externes ne voient pas le serveur. Les plugins tournent dans le site infecté et reposent sur des signatures qu’une backdoor obfusquée ou inédite contourne. Même l’inspection manuelle ne capture que ce qu’elle sait chercher. Aucune des trois familles ne garantit, seule, qu’il ne reste rien.
Une backdoor bien faite est conçue exactement pour ça : passer les scans. Fragmentée sur plusieurs fichiers inoffensifs pris séparément, encodée d’une façon non standard, ou planquée dans la base de données plutôt que dans les fichiers, elle survit à un scanner qui cherche des signatures connues.
La conséquence pratique : ne vous fiez jamais à un seul outil. Combinez les trois angles. Un scan externe pour le côté visiteur, un scan serveur pour les fichiers, une vérification des checksums pour l’intégrité du cœur. Trois verdicts « rien à signaler » donnent une bien meilleure confiance qu’un seul. Et si le moindre signe persiste (du spam qui réapparaît, une redirection intermittente, des comptes inconnus), partez du principe que quelque chose a échappé au scan, pas que le site est sain.
FAQ
Un scan en ligne suffit-il à savoir si mon site est infecté ? Non. Un scanner externe ne voit que la sortie publique du site : redirections, contenu injecté, blacklist. Il est aveugle aux fichiers du serveur, donc à la plupart des backdoors. Il faut le compléter par un scan côté serveur et une vérification de l’intégrité du cœur.
Pourquoi mon plugin de sécurité ne trouve rien alors que le site est clairement piraté ? Parce que le plugin tourne à l’intérieur du site infecté et s’appuie sur des signatures connues. Un pirate qui contrôle le serveur peut masquer ses fichiers, et le code obfusqué ou inédit échappe aux signatures. Un scan plugin négatif n’est pas une preuve d’innocence.
Comment vérifier les fichiers du cœur WordPress moi-même ?
Avec un accès SSH et WP-CLI, la commande wp core verify-checksums compare tous les fichiers du cœur à leurs sommes de contrôle officielles et signale le moindre écart. C’est la vérification la plus fiable, car elle ne dépend d’aucune base de signatures.
Un scan « aucune menace détectée » veut-il dire que mon site est propre ? Pas nécessairement. Aucun scanner ne garantit l’absence totale de menace, surtout face à une backdoor obfusquée ou fragmentée. Si des symptômes persistent malgré un scan propre, considérez que quelque chose a été manqué et poussez l’inspection plus loin.
Chez WP-Detox, on ne se contente pas d’un scan : on croise les trois angles (externe, serveur, vérification de l’intégrité du cœur), précisément parce qu’aucun outil seul ne suffit. On cherche ce que les scanners automatiques ratent, on remplace les fichiers plutôt que de leur faire confiance, et on régénère tous les accès. Le scan est gratuit, le nettoyage prend environ 30 minutes, c’est 149 € tout compris, et remboursé si le site n’est pas propre. Pour la vue d’ensemble, commencez par le guide complet quand WordPress est piraté.