Lorsqu'on pense que son site est virusé, il est assez malaisé de déterminer si c'est bien le cas : il existe en effet fort peu de logiciels permettant de scanner son site web à la recherche d'éventuels intrus.

aeSecure QuickScan est un outil gratuit qui va scanner votre site, comme le ferait un logiciel anti-virus. Il va analyser le contenu des fichiers à la recherche de signatures càd de mots clefs, d'appels de fonctions qui pourraient être la marque d'un code vérolé. Ainsi, le mot "FilesMan" ou "c99shell" qui sont présents dans certains trojans, "viagra", "cialis" ou "vuiton" qui sont des mots utilisé par faire du Black Hat SEO. aeSecure QuickScan cherchera aussi p.ex. des appels de fonctions comme "gzinflate(base64_decode())".

Le scanner dispose ainsi d'une base de données de signatures et soumettra vos fichiers à celles-ci.

À la fin du scan, une liste de fichiers potentiellement suspects sera affiché et vous aurez alors le loisir de l'analyser pour déterminer si votre site est effectivement virusé.

Démo

  1. Démo d'aeSecure QuickScan

N'hésitez pas à l'utiliser pour comprendre comment fonctionne l'outil.

Le mode démo étant activé, certaines fonctionnalités sont désactivées comme p.ex. l'affichage du code source d'un fichier suspect. Ces limitations ne seront bien évidemment pas d'application si vous installez le script sur votre propre serveur.

Téléchargement, installation et mode d'emploi succinct

  1. Télécharger aeSecure QuickScan (veillez à utiliser PHP 5,3 au minimum)
  1. Cliquez sur le lien ci-dessus pour télécharger le fichier aesecure_quickscan.zip et sauvez-le sur votre ordinateur,
  2. Décompressez le fichier zip et récupérez le fichier php ainsi que les fichiers json et placez-là à la racine de votre site web (local ou de production)
  3. Éxécutez votre navigateur web et rendez-vous à l'adresse http://votresite/aesecure_quickscan.php (si dossier principal, ou, p.ex., http://votresite/images/aesecure_quickscan.php si vous l'avez copié dans le dossier /images),
  4. Une fois dans l'interface du scanner, cliquez, dans l'ordre, sur les boutons "1. Nettoyer", puis "2. Obtenir" et, enfin, "3. Scan le site". Notez que selon l'importance de votre site, le processus va prendre un certain temps,
  5. Lorsque vous n'aurez plus besoin du script, cliquez sur le bouton "4. Supprimer ce script du serveur" pour que le script "s'auto-supprime" et que personne ne puisse l'utiliser à nouveau.

Lire le mode d'emploi complet si vous désirez avoir le maximum d'information sur la manière d'utiliser le scanner.

Remarques:

  1. aeSecure QuickScan lance l'analyse à partir du dossier où il se trouve. Si vous ne souhaitez scanner que le dossier /images de votre site, copiez donc aesecure_quickscan.php dans ce dossier-là ou ...
  2. Sinon, vous pourriez activer le mode EXPERT qui permettrait alors de définir le dossier à analyser, immédiatement depuis l'interface.

Mode d'emploi complet

Le fonctionnement d'aeSecure QuickScan est relativement simple :

L'écran de démarrage reprend quatre boutons dont seul le premier et le dernier sont actifs au démarrage :

  1. 1. Nettoyer les dossiers cache et temp (actif)
  2. 2. Obtention de la liste des fichiers (inactif au démarrage)
  3. 3. Scanner le site (inactif au démarrage)
  4. 4. Supprimer ce script du serveur (actif)

Certains boutons sont inactifs afin de vous guider dans l'utilisation de l'interface.

La première action à faire est de nettoyer les dossiers cache et temporaire de votre site. QuickScan va ainsi nettoyer les fichiers présents dans les dossiers (si existant) /administrator/cache, /aesecure/cache, /aesecure/tmp, /cache et /tmp. Cette opération a pour but de réduire la taille de votre site en y supprimant les fichiers inutiles.

Après avoir cliqué sur ce bouton "1. Nettoyer" le bouton "2. Obtention de la liste" sera alors activé. Ce bouton va permettre au scanner de dresser la cartographie de votre site en conservant en mémoire la liste des noms de fichiers du site. Cette opération prenant plusieurs secondes, aeSecure QuickScan va conserver dans une variable, en mémoire cette liste : l'obtention de la liste est donc une opération qu'il faut faire qu'une seule fois. Pour cette raison, le bouton "2. Obtention de la liste" sera désactivé lorsque vous l'aurez exécuté ; puisque devenu inutile.

Quand la liste est obtenue, le bouton "3. Scanner le site" sera alors activé. Ce bouton va effectivement lancer le scan du site, analyser chaque fichier en cherchant dans le code source du fichier (même si c'est un fichier binaire comme une image p.ex.) et chercher la présence des différents "patterns" présent dans la base de données des signatures.

Le scan est une opération longue et lorsque votre site comporte plusieurs milliers de fichiers, ce scan peut être trop long : votre serveur web pourrait générer un timeout et stopper l'exécution du script.

Pour répondre à ce problème, aeSecure QuickScan va vous proposer de scanner votre site par "blocs" de 1.250 fichiers à la fois. Lorsque vous cliquerez sur un bouton, ce bouton-là recevra un fond vert et le scan débutera. Vous pourrez suivre son évolution grâce à une barre de progression.

Lorsque le scan est terminé, les résultats seront affichés à l'écran et le bouton restera avec son fond vert pour que vous sachiez de quel "bloc" il s'agit. Lorsque l'analyse de ce bloc-là sera achevée, il vous suffira de cliquer sur le deuxième bouton et ainsi de suite.

Remarque :

  1. Vous pourriez donc avoir plusieurs boutons pour démarrer le scan càd le bouton "3. Scanner le site" et, un bouton par "bloc" de 1.250 fichiers. Vous pouvez décider de lancer le scan du site dans son intégralité (bouton "3. Scanner le site") ou de le faire bloc par bloc.
  2. Si le nombre de fichiers sur votre site est inférieur à 1.250, vous n'aurez que le seul bouton "3. Scanner le site".

optimisation du scan

Au démarrage d'aeSecure QuickScan, une détection du CMS utilisé sera effectuée. Si le CMS est supporté (c'est le cas de toutes les versions de Joomla!® et de Wordpress ainsi que d'un grand nombre de versions de CakePHP, Drupal, Magento et Prestashop), QuickScan va télécharger un fichier nommée aesecure_quickscan_CMS.json. Ce fichier sera automatiquement sauvegardé dans le même dossier que le script.

Le fichier JSON reprend des codes dit "de hachage" càd l'empreinte numérique des fichiers natifs de Joomla!® ou WP. Par exemple, le code 016745b4601e36fb0b34fc8cda37201d présent dans le fichier JSON pour la version 2.5.27 de Joomla!® correspond à la signature d'un fichier ayant été téléchargé depuis la version officielle. Ce code a été généré grâce à la fonction md5_file() de PHP. Le résultat est un code tel que 016745b4601e36fb0b34fc8cda37201d pour, par exemple, le fichier /libraries/joomla/session/session.php. Dès l'instant où un seul caractère du fichier est altéré, le code de hachage est différent.

aeSecure QuickScan, grâce à ce fichier JSON, connait donc la version officielle des fichiers du CMS qui devraient se trouver sur votre site. Si le code de hachage du fichier présent sur votre site est strictement le même que la version officielle ; le fichier est donc totalement sain puisque d'origine. Dès lors que le code de hachage est différent, c'est donc que "quelque chose" a été modifié dans le fichier et ce "quelque chose" sera alors analysé par aeSecure QuickScan.

Cette optimisation permet de réduire très fortement le temps requis pour analyser un site mais, et surtout, permet de réduire le nombre de faux positifs.

Remarque : en supprimant le script, le fichier aesecure_quickscan_CMS.json est également supprimé.

Faux positifs

Un exemple pour comprendre ce qu'est un faux positif : les attaques de type Pharma hack càd les techniques qui permettent de polluer votre site avec des liens vers des produits pour vendre des petites pilules bleues ou autres produits du même genre, p.ex. des pilules de cialis (médicament pour traiter de la dysfonction érectile chez l'homme).

Le mot "cialis" est donc "suspect", s'il se trouve sur votre site, peut-être ce dernier promeut des médicaments pharmaceutiques à l'insu de votre plein gré.

La base de données des signatures d'aeSecure QuickScan reprend ce mot-là : si le scan détecte un fichier où "cialis" se trouve, le fichier sera détecté comme "suspect" et sera affiché dans les résultats du scan (type de menace : warning (attention)).

Et que se passe-t-il si une page HTML de votre site mentionne le mot socialisme ? Elle sera mentionnée comme suspecte ! C'est cela un faux positif. Une alerte émise par un logiciel d'analyse et qui doit être validée par un humain avant une éventuelle prise d'action.

C'est exactement pour cette raison que TOUS les résultats mentionnés par aeSecure QuickScan sont potentiellement des faux positifs et qu'il vous incombe de lire et comprendre le code source mis en évidence par le scanner pour, ensuite, prendre une action.

Analyse des résultats

Lorsque l'analyse est terminée, aeSecure QuickScan va afficher un compte-rendu mentionnant le nombre de fichiers ayant été scannés ; ceux qui ont été ignorés (grâce à la fonction d'optimisation du scan), le nombre de fichiers détectés comme potentiellement dangereux ainsi que le nombre de fichiers qui auraient été ignorés car soit trop volumineux ou pour lesquels le scanneur n'avait aucun droit d'accès (chmod trop restrictif).

La liste des fichiers suspects est affichée à la suite du compte-rendu.

Pour chaque fichier, vous aurez différentes informations :

  1. Son nom complet (masqué sur la capture d'écran ci-dessous pour des raisons de confidentialité) et quelques informations comme la taille du fichier.
  2. Le type de risque encouru (Danger, Attention, Information) et un texte explicatif.
  3. La signature trouvée (base64_decode dans l'exemple ci-dessous).
  4. La position, dans le fichier, où se trouve ce mot (position 1.534 dans l'exemple ci-dessous : en utilisant un éditeur tel que Notepad++, vous pourriez afficher l'offset 1.534 (touches CTRL-G) pour immédiatement vous positionner sur ce mot).
  5. Le contexte càd la portion de code où apparaît la signature détectée. Le contexte est une fonctionnalité qui affiche les 100 caractères du fichier qui précède la signature et les 100 qui suivent immédiatement celle-ci. Ainsi, visuellement, il est bien plus aisé de lire cette portion de code pour comprendre s'il s'agit d'un faux positif ou d'une réelle menace.
  6. A la droite, vous trouverez un petit "x" en rouge qui permet de masquer ce fichier ainsi qu'un code tel que 32482a49d409be59c3649c6c7c1ed9bf qui n'est rien d'autre que l'empreinte numérique du fichier (généré grâce à la fonction php md5_file()).

Chaque signature sera testée : il est très probable qu'un même fichier apparaisse donc plusieurs fois dans les résultats. Plus ce fichier contient des signatures, plus ce fichier est suspect.

En cliquant sur le "x" se trouvant à la droite du nom du fichier, vous masquerez tous les résultats pour ce fichier-là.

Remarque : Le 'x' ne signifie pas 'Supprimer le fichier' mais bien 'Masquer les résultats' pour ce fichier-là.

Afin de simplifier la lecture du fichier, outre la notion de contexte décrite ci-dessus, aeSecure QuickScan propose également un bouton "Voir le contenu du fichier" qui permet alors d'ouvrir un nouvel onglet dans votre navigateur et de voir l'intégralité du code source du fichier.

Remarque : le code source est affiché et non exécuté. S'il s'agit d'un fichier php p.ex., le script n'est pas exécuté ; seul son code source est lu et affiché avec un rendu-html ce qui permet d'afficher un code malsain sans danger.

Envoi par mail pour analyse

La version 1.1.1 d'aeSecure QuickScan introduit la fonctionnalité d'envoi par email : en dessous de chaque fichier, vous trouverez une icône "enveloppe". En cliquant sur ce bouton, le fichier sera ajouté à une liste d'envoi; visible sur la partie de gauche de votre écran. Vous pourrez ainsi soumettre plusieurs fichiers pour être analysé par le développeur d'aeSecure.

Une fois votre liste complète, cliquez sur le bouton d'envoi du mail. Un mail sera généré avec une archive zip qui va contenir chaque fichier repris et sera envoyé à aeSecure.

Selon ses disponibilités, le développeur scannera ces fichiers-là et vous donnera une confirmation si vos fichiers sont vérolés ou pas.

Attention! N'envoyez aucun fichier contenant des données confidentielles.

Liste blanche

Lorsque vous effectuerez un scan de votre site, vous trouverez des faux-positifs. Afin de ne plus les voir s'afficher lors d'un prochain scan, cliquez sur le bouton représenté par un coeur : "Marquer ce fichier comme sain".

La suppression du fichier aesecure_quickscan.whitelist.json permettra de réinitialiser la liste blanche.

NB: Les fichiers de votre CMS; si ce dernier est supporté, sont d'office considérés comme sain. Voir optimisation.

Mode Expert

aeSecure QuickScan, par défaut, s'exécute en mode "normal". Un mode expert existe toutefois et, pour l'activer, vous pouvez soit changer une valeur dans le fichier aesecure_quickscan.php, soit, plus simple, utilisez le bouton "Menu" qui apparait dans le coin supérieur gauche de l'écran. Ce bouton va permettre de faire glisser de gauche à droite un panneau de configuration permettant d'activer un grand nombre d'options.

Le bouton "Menu" fera apparaître un panneau tel que celui-ci (version 1.0):

A quoi sert ce mode ?

Ce mode expert permet d'activer les fonctionnalités avancées comme par exemple rendre possible le choix du dossier à analyser :

Par défaut, aeSecure QuickScan va traiter le site web depuis le dossier dans lequel il se trouve placé : si vous avez sauvé le fichier aesecure_quickscan.php à la racine de votre site web, QuickScan va donc scanner tout votre site web. Si vous aviez placé le fichier dans le dossier /images, seul ce dossier et ses sous-dossiers seront scanné. La localisation du script va donc définir ce qui sera analysé.

Grâce au mode expert, vous pouvez parfaitement sauver le script à la racine de votre site et venir modifier le dossier à analyser (par défaut initialisé à la racine du site) et ajouter le nom d'un dossier (/images p.ex.). Vous pouvez même préciser le chemin vers un autre site, hébergé sur le même serveur, pour autant que la sécurité en place au niveau de votre site le permette (càd, entre autre, si la clause open_basedir du fichier php.ini n'a pas été précisée).

Le mode expert permet aussi d'afficher un bouton "Supprimer ce fichier" pour, si vous cliquez sur ce dernier, supprimer le fichier du serveur web.

Une demande de confirmation, en JavaScript, attirera votre attention sur l'action que vous êtes en train de prendre et, si vous confirmez votre choix, le fichier sera définitivement supprimé. Comprenez bien que cette action est dangereuse et pourrait avoir un impact sur votre site qui, par exemple, pourrait ne plus du tout fonctionner.

Un exemple : votre site utilise un CMS tel que Joomla!® qui, comme vous le savez, utilise le fichier index.php de votre template pour l'affichage de toutes les pages du site (frontend). Le fichier index.php du template aurait été hacké pour inclure un fichier "virus.php". Votre index.php contiendrait alors une ligne telle que "require_once('virus.php');". Si vous supprimez le fichier virus.php, votre index.php n'arrivera donc plus à inclure ce fichier et votre site montrera une page blanche (erreur fatale). Si vous supprimez un fichier depuis aeSecure QuickScan c'est donc "à vos risques et périls".

Activation

Simplement : en cliquant sur le bouton "Menu" apparaissant en haut à gauche de l'écran. Ce bouton va permettre de faire glisser de gauche à droite un panneau de configuration permettant d'activer un grand nombre d'options.

En modifiant le fichier source : aeSecure QuickScan, par défaut, s'exécute en mode "normal". Un mode expert existe toutefois et, pour l'activer, il faut changer une valeur dans le fichier aesecure_quickscan.php.

Avec un éditeur de texte tel que Notepad++, éditez le fichier et repérez, au début du fichier, la ligne qui initialise la constante "EXPERT" ; comme ci-dessous illustré :

Précautionneusement, adapter la valeur false en true. Ne modifiez rien d'autre sous peine que le script ne fonctionne plus.

Avant de sauver le fichier, vérifiez et adaptez si nécessaire l'encodage du fichier afin qu'il soit bien paramétré sur UTF-8 without BOM.

Ce type d'encodage est requis afin que le script soit sauvé au format Unix et puisse continuer à afficher correctement les caractères accentués présent dans les chaînes de traduction.

Limitations d'usage

  1. L'auteur du script décline toute responsabilité en cas de mauvais usage du script ou d'actions prises par le webmaster suite aux résultats mentionnés,
  2. Le scan est superficiel et en aucun cas exhaustif; seul un nombre limité de signatures est recherché alors que les possibilités de hack sont très nombreuses, les pirates inventant toujours plusieurs de techniques de camouflage et cela nécessite donc un outil plus puissant (voir https://www.aesecure.com/fr/telechargement.html#services),
  3. Si le script détecte la présence de certaines signatures (p.ex. "base64_decode"), cela n'implique pas que votre site ait été hacké. En effet, comme expliqué ci-dessus, le nombre de "faux positifs" est important et il faut avoir du discernement et de l'expérience pour identifier les piratages des scripts légitimes,
  4. Les résultats retournés doivent TOUJOURS être correctement compris avant de prendre une quelconque action, demandez de l'aide sur un forum p.ex. si vous doutez.

Suppression du script

Lorsque votre analyse est terminée, cliquez sur le bouton "4. Supprimer ce script du serveur" de telle manière que le script "s'autodétruise" et ne puisse pas être utilisé par quelqu'un d'autre p.ex.

Le fichier aesecure_quickscan.php sera supprimé de votre serveur ainsi que les fichiers aesecure_quickscan_CMS.json et aesecure_quickscan.whintelist.json si ces derniers avaient été créé par le script.

Votre site est hacké, je peux le nettoyer

Si vous le souhaitez, je peux nettoyer et protéger votre site. J'ai en effet également développé un scanner de virus bien plus évolué que la version QuickScan proposée ici.

Mon scanner reprend une base de données de signatures plus conséquente et en évolution constante et il ne s'appuie pas seulement sur le contenu des fichiers pour détecter la présence de virus mais, p.ex., également sur l'endroit où il se trouve (exemple : un script php se trouvant dans le dossier /images sera détecté comme suspect).

L'analyse est bien plus évoluée, le nombre de résultats détectés peut s'approcher du millier de cas suspects que j'analyse alors un par un afin, entre autre, de continuellement mettre à jour ma base de données de signatures.

Une fois les virus détectés, j'en supprime la présence sur votre site afin de retrouver un site sain. Ceci fait, j'installe une version Premium+ de mon logiciel aeSecure afin de prévenir toute nouvelle attaque. Installation que je configure tant pour accroître votre sécurité qu'améliorer le temps d'affichage de votre site ce qui aura un impact positif sur votre référencement et le confort de vos utilisateurs.

Finalement, je vous envoie un rapport de nettoyage et d'installation de plusieurs pages pour expliciter ce que j'ai fait, la liste exhaustive des virus trouvé et je vous donne quantité de conseils pour vous éviter de revivre cette situation (afin que vous puissiez aussi mieux sécuriser vos autres sites p.ex.).

N'hésitez pas à me contacter : Nettoyage de site après hacking

Le faire vous-même

Si l'analyse des résultats démontre que votre site a été hacké et si vous souhaitez tenter de le nettoyer par vous-même, je vous invite à lire le très long article "Votre site a été hacké, que faire ?".   

Vous y trouverez un très grand nombre d'informations relatives visant, entre autre, la partie recherche des virus et comment s'en prémunir par la suite.

FAQs

Si vous rencontrez un problème technique lors de l'utilisation d'aeSecure QuickScan; si ce problème n'est pas repertorié ici, n'hésitez pas à me contacter.

Activez le mode DEBUG

Lorsqu'une erreur se produit, il peut être intéressant d'activer le mode de debugging d'aeSecure QuickScan afin de permettre au script d'afficher des messages d'erreurs plus précis.  Pour cela veuillez éditer le script en éditant le fichier aesecure_quickscan.php (voir le mode Expert) et en modifiant la valeur de la constante "DEBUG" et y indiquer la valeur "true" à la place de "false".  

Ceci fait, sauvez le fichier modifié et relancez le script depuis votre navigateur.  aeSecure QuickScan affichera le texte"Debug Mode Enabled" en haut à gauche.   Relancez les manipulations qui avaient provoquées une erreur et cette fois, vous aurez plus d'informations.

Dans l'exemple ci-dessus, on peut comprendre que l'origine du problème est un souci de mémoire et, dans ce cas, la solution serait d'augmenter la valeur de la mémoire autorisée pour le script : comme vous l'avez fait, retournez dans le script, en mode édition, et modifier la valeur de la constante "MEMORY_LIMIT".  Si cette valeur était de 128M, essayez la valeur 256M.   Notez que cette valeur maximale dépend de votre hébergeur et que ce dernier a pû vous limiter à une valeur inférieure à cette que vous avez essayez.  

Erreur 500 – Internal server error

Afin de pouvoir comprendre ce qui a provoqué une erreur serveur, il faudrait pouvoir analyser le log des erreurs de votre site.

Selon votre hébergeur, soit vous avez un accès au log des erreurs depuis votre panneau de contrôle (cpanel) soit vous avez un accès spécifique vers un dossier FTP où vous pourrez trouver ce log. Veuillez s'il vous plaît tenter de trouver la localisation de ce fichier et de l'ouvrir afin de prendre connaissance des dernières lignes du fichier.

Vous devriez y trouver des lignes qui mentionnent le nom de fichier aesecure_quickscan.php avec une explication du problème ayant été rencontré par le serveur. N'hésitez pas à me les communiquer pour que je puisse vous aider.

PS: l'erreur pourrait être provoquée par un timeout; vous pourriez donc tenter de réduire le nombre de fichiers à analyser à, p.ex., 1.000 fichiers à la fois. Pour arriver à ce résultat, il faut éditer le fichier aesecure_quickscan.php (voir le mode EXPERTci-dessus). La constante à modifier se nomme MAXFILESBYCYCLE, par défaut initialisée à 1250. Précisez une valeur moindre. Attention à ne pas mettre un séparateur de milliers : encodez le chiffre 1000 et non le texte "1.000".

Erreur 504 – Gateway Time-out

Lorsque votre site contient un grand nombre de fichiers et/ou si votre hébergeur est lent voire configurer pour autoriser une durée d'exécution d'un script très courte, vous pourriez rencontrer une erreur 504 à l'exécution d'aeSecure QuickScan.

Cette erreur arrive p.ex. sur mon hébergeur lorsque je scanne un site ayant plus de 10.000 fichiers, le scan en ligne pouvant en effet durer plus de 60 secondes.

Pour cette raison, aeSecure QuickScan propose de scanner son site par "bloc" de 1.250 fichiers à la fois ; le but étant de rendre plus véloce l'exécution du script et donc d'éviter une erreur de timeout.

Si, malgré cela, vous continuez à avoir une erreur 504, vous pourriez analyser votre site par bloc, p.ex., de 1.000 fichiers à la fois. Pour arriver à ce résultat, il faut éditer le fichier aesecure_quickscan.php (voir le mode EXPERTci-dessus). La constante à modifier se nomme MAXFILESBYCYCLE, par défaut initialisée à 1250. Précisez une valeur moindre. Attention à ne pas mettre un séparateur de milliers : encodez le chiffre 1000 et non le texte "1.000".

Parse error: syntax error, unexpected T_STATIC

Si vous recevez une erreur du type "Parse error"; il y a une très forte probabilité que vous ayiez une ancienne version de PHP à l'oeuvre sur votre serveur web. Veuillez s'il vous plaît utiliser au minimum PHP 5.3.

Si vous ne savez pas comment faire pour changer de version de PHP, veuillez consulter cette documentation : changer de version de PHP.

Back to top