Besoin d'aide ?

Si vous êtes un utilisateur Premium Premium, venez poser votre question dans le forum privé.


Votre site a été hacké, que faire ?

Votre site s'est fait hacker; votre page d'accueil a été remplacée; vous avez reçu un email de votre hébergeur vous signalant que votre site envoie des spams et a été bloqué; ... que faire ?

La première chose à faire : ne pas paniquer ! Avec calme, analysez le problème : devez-vous nettoyer le site ou est-ce que restaurer une ancienne archive; saine; serait suffisant ?

Nettoyer le site

Restaurer une archive saine

Vous avez un backup sain et testé n'est-ce pas ?

Si vous disposez d'une archive saine et que votre site n'est pas vraiment dynamique (peu de nouveau contenu, aucun nouvel utilisateur, aucune vente, ...); vous pourriez sans problème restaurer une archive saine. Dans ce cas, afin d'éradiquer tous les fichiers corrompus et étranger, il est recommandé de supprimer tous les fichiers de son site web (par FTP) puis de restaurer votre backup.

Ainsi, vous repartirez d'une situation saine ... mais faillible : le hackeur a déjà réussi à passer une fois, il réussira encore. Il vous faut analyser le fichier de log de votre hébergeur pour comprendre où se trouve la faille afin de la colmater (une extension vulnérable ?, des droits d'accès trop permissifs ? ...).

Vous auriez donc à nouveau un site propre; il convient maintenant de le protéger.

Premières actions

  1. Copiez tous les fichiers de votre site piraté en local (sur votre ordinateur) et copier également les fichiers de logs qui sont mis à votre disposition par votre hébergeur
  2. Restaurez votre site depuis un backup, sain, que vous aviez effecté avant que le site ne soit hacké
  3. Activez le mode maintenance de aeSecure afin de bloquer toutes connexions vers votre site hormis la vôtre (le mode maintenance de aeSecure n'autorise les accès qu'à votre seule adresse IP)
  4. Scannez votre site local à la recherche de fichiers malsains : n'ayant rien à faire sur votre site ou des fichiers légitimes mais ayant été altérés. Analysez aussi les logfiles pour déterminer comment le hackeur a pénétré votre site
  5. Une fois la menace identifiée, supprimez les fichiers qui sont étrangers au bon fonctionnement du site et remettez une version propre des fichiers (p.ex. si vous utilisez un CMS, récupérez le CMS et écrasez les fichiers de votre site par les nouveaux; sains). Avant de les supprimer, notez leur nom et date de création quelque part; cela vous sera utile pour trouver de plus amples informations par la suite
  6. Faites une sauvegarde de votre site nettoyé et restaurez-le sur votre site de production
  7. Désactivez le mode maintenance de aeSecure et rétablir l'accès à votre site

Identifier les fichiers malsains

La partie la plus difficile, sans nul doute : rechercher le ou les fichiers malsains.

Heureusement, aeSecure met à votre disposition un outil gratuit de scan : aeSecure Quick Scan.  Il s'agit d'un script php qu'il faut placer à la racine de votre site web et qui va scanner tous vos fichiers à la recherche de preuves de hack. 

Vous pourriez aussi utiliser :

  1. Si votre site est toujours online, vous pouvez utiliser des outils tels que Sucuri SiteCheck ou myJoomla.com afin d'identifier la menace.  Comprennez bien toutefois les limitations de ces outils : ils analysent le code HTML retourné par votre site; ils sont incapables de trouver des scripts php tels que des chevaux de troie mais utile pour mettre en évidence du "Black hat SEO"
  2. L'outil "Fichiers ayant été modifiés récemment" d'aeSecure (disponible dans le menu Outils, pour les utilisateurs Premium) permet de détecter quels sont les fichiers qui ont été modifiés (ou créés) les xxx derniers jours
  3. Si vous disposez d'une archive saine, vous pouvez également comparer les deux dossiers : le site malsain et sa copie saine. Pour cela, sous Windows, un outil tel que WinMerge permet de faire ce travail. L'objectif étant de voir si un fichier se trouve dans le dossier malsain et pas dans le dossier sain et, d'autre part, voir si un même fichier a été altéré
  4. Si vous avez récupéré une version de votre site sur votre poste local, que ce dernier est une machine Windows et que vous savez quoi chercher (un bout de code, deux ou trois mots, ...), optez pour FileSearchy qui est un utilitaire très rapide de recherche de patterns dans des fichiers textes

Si votre site est sous Joomla!®

  1. Il ne doit pas y avoir de fichier index.html dans le dossier racine de votre site ni dans le dossier /administrator.   Si vous en trouvez un; supprimez-le.
  2. Il ne doit pas non plus y avoir un fichier nommé index.php dans le dossier /templates du site.  Ici aussi, si vous en trouvez un; supprimez-le.
  3. Une majorité des attaques se font en incluant du code php malveillant soit le fichier /index.php (à la racine du site) soit /templates/votre_template/index.php.  La solution la plus simple étant de restaurer ces fichiers : réinstaller un Joomla!® (voir point 4 ci-dessous) et réinstaller votre template.
  4. Lorsque le code malveillant se trouve dans un fichier natif de Joomla!® ayant été hacké; la solution la plus simple : réinstaller Joomla!®.  Pour cela, récupèrez la dernière version de Joomla!®; décompressez le fichier sur votre disque dur et envoyez tous ces fichiers sur votre site distant grâce à votre client FTP.  Attention: n'envoyez pas le dossier /installation.  Si c'est déjà fait; supprimez-le du site distant.   Ce faisant, vous avez remis un Joomla!® sain.
  5. A ce stade votre Joomla!® est sain; si le malware est toujours présent, rendez-vous dans les dossiers suivants :
    1. /images : comme son nom l'indique, ne doit contenir que des images (fichiers .gif, .jpg, .jpeg, .png, ...).   Ce dossier ainsi que ses sous-dossiers ne devraient jamais contenir du code .php.  Il est recommandé d'avoir un .htaccess dans /images pour interdire l'exécution de code php.
    2. /media : nativement, ce dossier ne contient qu'un fichier nommé index.html.   Peut-être y trouverez-vous un fichier .htaccess et c'est tout.   Si vous y trouvez des fichiers ayant l'extension .php, ce n'est à priori pas normal. Il faudrait éditer ces fichiers et voir s'ils contiennent du code malveillant.    Le dossier /media va contenir un certain nombre de sous-dossiers.  A priori ici encore, aucun code php ne devrait s'y trouver (notez qu'il pourrait y en avoir; c'est vraiment rare mais certains développeurs utilisent du code php pour générer du css).  Il est recommandé d'avoir un .htaccess dans /medias pour interdire l'exécution de code php.
    3. /tmp : ce dossier peut être vidé de son contenu à l'exception des fichiers index.html et .htaccess.  Tout le reste doit être supprimé.

Si votre site est dynamique

Si votre site est dynamique et utilise une base de données (c'est le cas de tous les CMS) :

  1. Connectez-vous grâce à votre interface phpMyAdmin sur votre base de données, repérez le préfixe de vos tables (p.ex. "jos_") repérez la table qui contient p.ex. la liste des articles de votre site (jos_content sous Joomla!®). Finalement, repérez le(s) champ(s) où sont stockés les textes. Et, ceci fait, exécutez un query tel que ci-dessous.  Le but étant de retrouver les articles où il y aurait des iframe, des balises noscript ou des instructions css "display".   La liste que vous obtiendrez n'est pas forcément synonyme de contenu malicieux; ces articles pourraient être légitime; soyez donc vigilant et analysez plus en détail la liste et son contenu
    SELECT * FROM jos_content tbl WHERE (tbl.fulltext LIKE "%<iframe%") or (tbl.introtext LIKE "%<iframe%")
    UNION
    SELECT * FROM jos_content tbl WHERE (tbl.fulltext LIKE "%<noscript%") or (tbl.introtext LIKE "%<noscript%")
    UNION
    SELECT * FROM jos_content tbl WHERE (tbl.fulltext LIKE "%display:%") or (tbl.introtext LIKE "%display:%");

Je le nettoie pour vous ?

Si vous le souhaitez, n'hésitez pas à me contacter pour que je vous aide à retrouver un site sain. Consultez la page des prestations pour plus d'informations.

J'ai en effet développé un scanner perfectionné qui analyse les fichiers sur votre site à la recherche d'empreintes spécifiques mais aussi des fichiers suspects sur base de leur nom, localisation, etc.   Je nettoie votre site et vous le retrouvez expurgé des virus qui s'y trouvaient; j'installe et configure aeSecure Premium+ pour parer à de nouvelles attaques.

Votre site est à nouveau sain

Encore quelques points restent à vérifier : 

  1. Consultez la table de vos utilisateurs et très précisement la liste des administrateurs / super administrateurs : il arrive que le hackeur se soit créé un compte admin => supprimez-le !
  2. Vérifiez la liste des extensions installées (composants, modules et plugins); s'y trouve-t-il un intrus càd une extension qui aurait pû être installée sans votre accord ?  Si oui, désinstallez l'extension (pas seulement dépubliez mais bien une suppression).
  3. Il est temps de changer vos mots de passe : celui de votre CMS, celui de votre compte FTP, celui de votre accès base de données, ...

 Votre site étant maintenant réputé sain, prenez une sauvegarde de celui-ci; téléchargez la sauvegarde et tester une restauration locale pour garantir que tout est parfait. 

Protéger le site pour le futur

Lorsque vous êtes parvenu à restaurer un site sain, ne perdez pas de vue que vous avez restauré votre site d'avant le hacking : la faille est toujours présente !!!

Analysez les logfiles à la recherche de lignes suspectes. Si vous avez trouvé des fichiers malsains et que vous avez noté la date de création / modification des fichiers, recherchez dans le logfile les lignes qui correspondent à ce moment précis.

Une fois la menace évacuée; protégez davantage votre site. Si ce n'est pas encore fait, installez des logiciels de protection tel aeSecure.

Si votre site est sous Joomla!®, je vous recommande d'installer Eyesite qui est un composant Joomla disponible gratuitement et qui permet de scanner tous les fichiers de votre site à un moment T.   Ensuite, en scannant à nouveau votre site à un moment T+1, Eyesite va identifier chaque fichier ayant été modifié càd les nouveaux fichiers (potentiellement un malware), ceux dont le contenu à changer (sans pouvoir comparer le contenu puisqu'il se base seulement sur un CRC) ou ceux ayant été supprimé.   Ce faisant, vous avez la liste immédiate des changements.   Un plugin payant est disponible et qui vous envoie un email à chaque modification.

Ceci fait, prenez les mesures de protection qui s'imposent : avez-vous identifié comment les hackeurs ont pénétré votre site; l'ont-il fait par le biais d'un composant, d'un template, ... installé mais que vous n'utilisez plus ? Si oui, supprimez-le : désinstallez-le sans délai.

Le hacking a été rendu possible par un composant qui n'est plus à jour; mettez-le à jour.

Quand vous êtes arrivé au bout de vos possibilités d'analyse des fichiers logs; prenez connaissance du document "La sécurité et Joomla!®" (la majeure partie est applicable pour d'autres CMS que Joomla!®). Vous trouverez dans cette présentation des conseils en tout genre pour définir votre stratégie de mot de passe, pour sécuriser votre installation de FileZilla, pour cacher un maximum d'informations à un potentiel hackeur, pour accroître la sécurité de votre site (.htaccess et php.ini), ... et quantité d'autres conseils que vous devriez faire vôtre un maximum.

Il est maintenant temps d'apprendre à sécuriser votre site, à adopter les bonnes stratégies de défense mais aussi d'utilisation de votre site web, d'outils tel que votre client FTP, ...   Je vous suggère de prendre connaissance de la présentation, continuellement mise-à-jour, "La sécurité et Joomla!®"

  1. aeSecure Quick Scan
  2. Téléchargement d'aeSecure
  3. Sucuri SiteCheck
  4. WinMerge
  5. FileSearchy

Si vous lisez l'Anglais, voici un excellent article de Sucuri qui explique comment un simple et inoffensif plugin peut être détourné par des pirates : http://blog.sucuri.net/2014/04/joomla-plugin-constructor-backdoor.html. Cet exemple montre combien il est difficile de retrouver les fichiers "suspects" sur son site. Seule une comparaison entre deux situations (l'une présumée saine) peut mettre en évidence les fichiers qui ont été ajoutés ou modifiés sur votre site.

Back to top