
The Web Exploit Detector est une application Node.js utilisée pour détecter d'éventuelles infections, du code malveillant et des fichiers suspects dans les environnements d'hébergement web.

Web Exploit Detector est une application Node.js (et un module NPM) utilisée pour détecter d'éventuelles infections, du code malveillant et des fichiers suspects dans des environnements d'hébergement web. Cette application est destinée à être exécutée sur des serveurs web hébergeant un ou plusieurs sites web. L'exécution de l'application génère une liste de fichiers potentiellement infectés, accompagnée d'une description de l'infection et de références à des ressources en ligne qui y sont liées.
Depuis la version 1.1.0, l'application comprend également des utilitaires pour générer et comparer des instantanés d'une structure de répertoires, permettant aux utilisateurs de voir si des fichiers ont été modifiés, ajoutés ou supprimés.
L'application est hébergée ici sur GitHub afin que d'autres puissent en bénéficier, tout en permettant à d'autres de contribuer leurs propres règles de détection.
La façon la plus simple d'installer Web Exploit Detector est en tant que module NPM global : -
npm install -g web_exploit_detector
Si vous utilisez Linux ou un autre système d'exploitation basé sur Unix, vous devrez peut-être exécuter cette commande en tant que root (par ex. sudo npm install -g web_exploit_detector).
Le module doit être mis à jour régulièrement pour s'assurer que toutes les dernières règles de détection sont présentes. L'exécution de la commande ci-dessus télécharge toujours la dernière version stable (testée). Pour mettre à jour une version déjà installée, exécutez simplement la commande suivante : -
npm update -g web_exploit_detector
Encore une fois, vous devrez peut-être utiliser la commande sudo comme ci-dessus.
Vous pouvez également cloner le dépôt Git et exécuter le script directement comme suit : -
git clone https://github.com/polaris64/web_exploit_detectorcd web_exploit_detectornpm installSi vous avez installé Web Exploit Detector en tant que module NPM (voir ci-dessus), l'exécution du scanneur est aussi simple que d'exécuter la commande suivante en passant le chemin vers votre webroot (emplacement de vos fichiers de site web) : -
wed-scanner --webroot=/var/www/html
D'autres options de ligne de commande sont disponibles, exécutez simplement wed-scanner --help pour voir un message d'aide les décrivant.
Exécuter le script de cette manière produit une sortie lisible par l'homme dans la console. C'est très utile lorsqu'on exécute le script avec cron par exemple, car la sortie peut être envoyée par e-mail à chaque exécution du script.
Le script prend également en charge l'écriture des résultats dans un format JSON plus facile à traiter par la machine. Pour activer cette sortie, voir l'argument de ligne de commande --output.
Appelez simplement le script via node et passez le chemin vers votre webroot comme suit : -
node index.js --webroot=/var/www/html
Web Exploit Detector est également fourni avec deux utilitaires pour aider à identifier les fichiers qui pourraient avoir changé de manière inattendue. Une attaque réussie sur un site implique généralement la suppression de fichiers, l'ajout de nouveaux fichiers ou la modification de fichiers existants d'une manière ou d'une autre.
Un instantané (tel qu'utilisé par ces utilitaires) est un fichier JSON qui liste tous les fichiers ainsi qu'une description de leur contenu au moment de la création de l'instantané. Si un instantané a été généré le lundi, par exemple, et que le site a été attaqué le mardi, alors exécuter une comparaison entre cet instantané et les fichiers actuels du site par la suite montrera qu'un ou plusieurs fichiers ont été ajoutés, supprimés ou modifiés. L'objectif de ces utilitaires est donc de permettre la création de ces instantanés et d'effectuer les comparaisons lorsque cela est nécessaire.
L'instantané stocke chaque chemin de fichier avec un hachage SHA-256 du contenu du fichier. Un hachage, ou digest, est un petit résumé d'un message, qui dans ce cas est le contenu du fichier. Si le contenu du fichier change, même de manière très légère, le hachage deviendra complètement différent. Cela offre un bon moyen de détecter toute modification du contenu des fichiers.
Les deux utilitaires suivants sont également installés dans le cadre de Web Exploit Detector : -
wed-generate-snapshot : cet utilitaire permet de générer un instantané pour tous les fichiers (récursivement) dans un répertoire spécifié par "--webroot". L'instantané sera sauvegardé dans un fichier spécifié dans l'option "--output".wed-compare-snapshot : une fois qu'un instantané a été généré, il peut être comparé au contenu actuel du même répertoire. L'instantané à vérifier est spécifié à l'aide de l'option "--snapshot". Le répertoire de base à vérifier est stocké dans l'instantané, mais si le répertoire de base a changé depuis la génération de l'instantané, l'option --webroot peut être utilisée.Les instantanés peuvent être générés aussi souvent que nécessaire, mais en règle générale, ils devraient être générés chaque fois qu'un site est dans un état propre (non infecté) et chaque fois qu'un changement légitime a été effectué. Pour les sites basés sur un CMS comme WordPress, les instantanés doivent être créés régulièrement car les nouveaux téléversements feront passer le nouvel état par rapport à l'instantané stocké. Pour les sites dont les fichiers ne devraient jamais changer, un seul instantané peut être généré puis utilisé indéfiniment pour s'assurer que rien ne change effectivement.
Le script src/web-exploit-detector.js est un module ES6 qui exporte l'ensemble des règles sous le nom rules ainsi qu'un certain nombre de fonctions : -
executeTests(settings) : exécute le vérificateur d'exploit basé sur l'objet settings passé. Pour l'utilisation, veuillez consulter le script index.js.formatResult(result) : prend un seul result de test du tableau retourné par executeTests() et génère une chaîne de résultats prête à être affichée pour ce test.getFileList(path) : retourne un tableau de fichiers à partir du path de base en utilisant readDirRecursive().processRulesOnFile(file, rules) : traite toutes les règles du tableau rules sur un seul file (chemin sous forme de chaîne).readDirRecursive(path) : fonction récursive qui retourne une Promesse qui sera résolue avec un tableau de tous les fichiers dans path et ses sous-répertoires.Le script src/cli.js est une interface en ligne de commande (CLI) simple pour ce module, utilisée par le script wed-scanner, donc la lecture de ce script montre une façon d'utiliser ce module.
Le projet utilise Babel pour compiler les modules ES6 dans "src" en modules JavaScript simples dans "lib". Si vous utilisez une version plus ancienne de Node.js, les modules peuvent être require()'d depuis le répertoire "lib" à la place.