Comment détecter et supprimer manuellement des malwares sur un site Web sous Linux?
Différents antivirus et anti-malwares peuvent vous aider à identifier des programmes malveillants tels que les web shells, backdoors, contenu de phishing, spam mailers ou d’autres.
Ces outils de détection et de protection, ont des ensembles de règles qui leur permettent d’identifier les fichiers contenant du code suspect, avec des signatures correspondant à celles utilisées par des scripts malveillants. Ils peuvent également identifier des fichiers avec des attributs suspects téléchargés par des pirates. Malheureusement, même si vous utilisez un scanner antivirus sur votre ordinateur ou site web, il est possible que des programmes malveillants échappent à cette identification. Cela signifie que les intrus ont toujours une « porte arrière » vers votre système et peuvent y retourner quand ils le souhaitent.
Les meilleurs offres d'hébergement WordPress sont chez ADK Media.
Découvrez les maintenant en cliquant ici!
Les scripts des pirates informatiques modernes diffèrent considérablement de ceux qui existaient il y a quatre ou cinq ans. Aujourd’hui, les développeurs de programmes malveillants combinent plusieurs techniques, telles que l’obscurcissement de code, cryptage, décomposition, ou le chargement externe. Ils utilisent de nombreuses méthodes pour contourner même le meilleur logiciel antivirus. Il y a donc toujours une chance que quelque chose reste sur le serveur une fois qu’ils sont partis. Cela peut sembler paranoïaque, mais vous ne pourrez probablement pas survivre dans la situation sécuritaire actuelle sans un certain degré de paranoïa saine de votre côté. Dans cet article, nous allons vous présenter une définition du malware, ce qu’il fait, ses types, et vous expliquer comment le supprimer manuellement.
1. Typologies des logiciels malveillants et malwares
1.1. Scripts de pirates
Très souvent, lors d’une attaque, plusieurs fichiers d’un certain type se téléchargent sur le système de la victime. Il peut s’agir de web shells (par exemple, c99.php), backdoors, de chargeurs de fichiers, de spams, de pages de phishing, de portes (pages Web créées pour la manipulation délibérée d’index des moteurs de recherche) ou de contenus de défacement (par exemple, le logo du pirate informatique qui s’affiche sur la page d’accueil ou un contenu obscene). Dans certains cas, vous pouvez simplement rechercher le nom du fichier suspect sur le Web pour savoir ce qu’il fait : les jeunes pirates, ceux qui s’amusent généralement à ré-utiliser des malwares trouvés sur le web, ne se soucient généralement pas de modifier les fichiers, de sorte qu’il apparaîtront probablement dans les résultats de recherche.
1.2. Injection de code malwares
Une injection de code est une méthode répandue de déploiement de malwares sur un système cible consiste à injecter un code malveillant sur le fichier .htaccess afin de créer des redirections non désirées. Des injections de script PHP ou Perl peuvent être utilisées pour créer des backdoors. Des scripts malveillants peuvent être injectés dans des fichiers .js (JavaScript) et .html statiques.
Très souvent, il peut s’agir d’une combinaison d’injection dans un fichier existant et de chargement d’un script de commande et de contrôle. Par exemple, un code malveillant peut s’injecté dans l’en-tête EXIF d’un fichier .jpg, et le code peut déclenché et exécuté par un autre fichier bénin chargé dans une autre partie du site.
1.3. Injection SQL
Les entrées de base de données sont une cible fréquente des attaques des hackers informatiques. Des injections de contenu HTML statiques sont possibles à l’aide de balises telles que <script> , <iframe> , <embed> ou <objet> .
De telles insertions de code non autorisées peuvent rediriger les visiteurs vers des sites liés mais non affiliés, intégrer des publicités dont le propriétaire du site ne profite pas, injecter des trojans ou espionner les utilisateurs et infecter leurs ordinateurs à l’aide d’attaques drive-by download. En outre, de nombreux CMS modernes (par exemple IPB, vBulletin, modx et autres) utilisent des template processors qui permettent l’exécution de code PHP, et les modèles eux-mêmes sont stockés dans la base de données. Cela donne aux attaquants la possibilité d’ajouter des backdoors et des webshells au modèle de site Web directement dans la base de données.
1.4. Injections de cache
En raison des paramètres non sécurisés d’un serveur de cache, par exemple, lors de l’utilisation de memcached, certaines injections peuvent être effectuées à la volée sur des données en cache. Dans certains cas, le spam peut être injecté dans les pages de sites Web sans réellement pirater le core d’un site Web.
1.5. Remplacement des composants du système
Si vous avez vérifié grâce aux antivirus et anti-malwares sans résultats, et que les redirections et scripts malveillants sont toujours actifs, les commandes qui suivent vous aideront pour trouver des solutions.
2. Le guide de la recherche manuelle des malwares
Nous vous livrons ci-après quelques commandes qui vous aiderons à faire des recherches orientées vers la détection de malwares sur votre système Linux.
Assurez-vous d’avoir une sauvegarde valide de toutes vos données avant d’effectuer toutes les étapes de nettoyage manuel sur votre environnement de production.
Cette commande vous aide à rechercher les fichiers modifiés la semaine précédente :
find. -name ‘.ph’ -mtime -7
Parfois, des attaquants changent les dates de modification des fichiers pour éviter toute détection. Dans ce cas, vous pouvez utiliser la commande suivante pour rechercher les fichiers .php et .phtml dont les attributs s’avère modifiés.
find. -name ‘.ph’ -ctime -7
Si vous devez rechercher des modifications de fichier au cours d’une période donnée, vous pouvez également utiliser cette commande de recherche
find . -name '.ph' -newermt 2019-01-25 ! -newermt 2019-01-30 -ls
Ne sous-estimez pas la commande grep. Cette dernière peut rechercher de manière récursive certains modèles dans les fichiers, en parcourant tous les dossiers et fichiers. Voici un exemple.
grep -ril 'example.com/google-analytics/jquery-1.6.5.min.js' *
Lorsque votre serveur Web est compromis, il faut vérifier les fichiers avec l’indicateur guid / suid, par sécurité.
find / -perm -4000 -o -perm -2000
Enfin, vous pouvez utiliser une commande comme celle-ci pour identifier les scripts PHP en cours d’exécution en arrière-plan et susceptibles d’avoir une incidence sur les performances du site Web.
lsof +r 1 -p ps axww | grep httpd | grep -v grep | awk '{ if(!str) { str=$1 } else { str=str","}} END{print str}' | grep vhosts | grep php
3. Analyse de code malveillant
Maintenant que nous savons comment rechercher des fichiers potentiellement malveillants et malwares, allons un peu plus loin et listons ce que nous recherchons exactement et où.
3.1. Vérifiez les répertoires upload, cache, tmp, backup, log et images.
Vous devez vérifier tous les répertoires utilisés pour le téléchargement de fichiers. Par exemple, avec Joomla, vous devez rechercher des fichiers .php dans le dossier ./images . Il y a de fortes chances que ce que vous y trouverez soit malveillant.
Pour WordPress, il vaut la peine de vérifier les répertoires wp-content/uploads , backup et les répertoires de cache des thèmes. Exemple :
find ./images -name '*.ph*'
3.2. Recherchez des fichiers avec des noms bizzares
Voici des exemples de noms de fichiers étranges à rechercher: php, fyi.php, n2fd2.php.
Vous devez également rechercher des modèles inhabituels dans les noms de fichiers. Par exemple:
- Noms de fichiers comprenant un mélange illisible de lettres, de chiffres et de symboles, par exemple, srrfwz.php, ath.php, kirill.php, b374k.php.php, tryag.php.
- Parce que de nombreux utilisateurs renomme les fichiers en ajoutant le chiffre « 1 », faites attention aux noms de fichiers normaux auxquels ont été rajoutés des numéros autres que 1 à des parties de fichiers, par exemple index9.php, WP3-login.php.
3.3. Recherchez des fichiers avec des extensions inhabituelles
Supposons que vous ayez un site Web basé sur le CMS WordPress. Les fichiers avec des extensions telles que .py, .rb, .pl, .cgi, .so, .c, .phtml ou .php3 seraient inhabituels pour ce type de sites Web. Si des scripts ou des fichiers avec ces extensions sont trouvés, ce sont probablement des fichiers avec du code malicieux.
3.4. Recherchez des fichiers avec des attributs non standard ou des dates de création.
Les fichiers avec des attributs modifiés sont suspects. Par exemple, si tous les fichiers .php chargés sur le serveur via FTP / SFTP ont l’attribut de fichier propriétaire défini sur « user » et que vous voyez également un certain nombre de fichiers dont l’attribut défini sur « www-data », il convient de vérifier ces derniers. Vérifiez également si la date de création du script est antérieure à la date de création du site Web. Vous pouvez utiliser les modèles de commande de la section précédente pour préparer vos propres commandes de recherche pour les accélérer ou de les optimiser.
3.5. Recherchez les doorways à l’aide d’un grand nombre de .html ou .php.
Si un répertoire contient quelques milliers de fichiers .php ou .html, il y a de fortes chances que ce soit un doorway ou page satellite. Vous pouvez utiliser la commande suivante pour rechercher les 50 répertoires avec le plus grand nombre de fichiers (si vous avez plusieurs comptes d’hébergement et fichiers sur le serveur, il est préférable d’utiliser cette commande dans le dossier / répertoire de base que vous souhaitez vérifier pour gagner du temps d’exécution):
find ./ -xdev -type d -print0 | while IFS= read -d '' dir; do echo "$(find "$dir" -maxdepth 1 -print0 | grep -zc .) $dir"; done | sort -rn | head -50
4. Les logs de serveur peuvent aider
- La relation dépendante entre la date et l’heure d’envoi d’un courrier électronique (informations détaillées dans le journal et l’en-tête du message) et les entrées access_log, aide à déterminer le mode d’envoi du courrier indésirable et à rechercher le script d’envoi sur le serveur.
- L’analyse FTP xferlog permet d’identifier quels fichiers téléchargés ou modifiés lors de l’attaque et par qui.
- Si votre serveur de messagerie et vos paramètres PHP sont correctement configurés, vous pouvez trouver le nom du script PHP de l’expéditeur et son chemin d’accès complet dans votre mail log ou dans l’en-tête complete du message. Cela aide à trouver et à éliminer rapidement la source des diffusions de courrier indésirable.
- Certains CMS et plugins modernes ont des techniques de défense plus avancées pour détecter de manière proactive les cyber-attaques. Leurs journaux peuvent indiquer s’il y a eu une attaque et si le CMS ou le plug-in a été capable de se protéger ou non.
- Les fichiers access_log et error_log vous permettent également de suivre les actions d’un pirate, si vous avez pu identifier les noms de script utilisés, l’adresse IP ou l’agent utilisateur HTTP (User-Agent). Vous pouvez également vérifier la requête POST le jour où l’attaque s’est produite. Souvent, ces vérifications vous permettent de déterminer quels fichiers malveillants téléchargés et lesquels étaient déjà présents avant l’attaque.
5. Contrôles d’intégrité
Il est beaucoup plus facile d’analyser les vecteurs d’attaque et de rechercher des scripts de programmes malveillants et de malwares sur des sites Web si on déjà adopté des mesures de sécurité. Les contrôles d’intégrité permettent d’identifier rapidement les modifications sur le système de fichiers et de détecter rapidement les activités malveillantes. Le moyen le plus simple et le plus efficace d’effectuer de telles vérifications consiste à utiliser des systèmes de contrôle de version tels que git, SVN ou CVS.
Chez ADK Media, vous disposez de cPanel qui intégre git parmi ses fonctionnalités. Par exemple, avec git, si vous configurez correctement le fichier .gitignore, le processus de vérification de l’intégrité se résume à l’exécution de deux commandes :
git status # check all changed files
git diff # find malicious code
Cela garantit que vous disposez d’une copie de sauvegarde de vos fichiers et vous permet de restaurer rapidement le site Web à un état antérieur. Les administrateurs de serveurs expérimentés peuvent également utiliser inotify, Tripwire, auditd et des outils similaires pour suivre l’accès et les modifications des fichiers et dossiers.
Si le site Web utilise des scripts personnalisés ou est construit avec des fichiers HTML statiques, vous pouvez utiliser la commande shell suivante pour créer un snapshot des fichiers actuellement stockés:
ls -lahR > original_file.txt
Si des malwares menacent, vous pouvez créer un autre snapshot puis le comparer à l’aide du logiciel de comparaison de votre choix, par exemple WinDiff, AraxisMerge Tool, BeyondCompare, la commande diff (sous Linux) ou même comparer des snapshots en ligne.
Comme nous avons cité au début de l’article, les logiciels de détection des malwares et les antivirus ne couvrent pas tous les risques potentiels auxquels votre site web fait face, pour cela il faut apprendre à chercher soi même et pouvoir scanner son système et le nettoyer.