Actualités > TechniqueDétecter un programme malveillant sous WindowsCette page vise à aider l’utilisateur ou l’administrateur système à reconnaître l’exécution de programmes malveillants sur un poste compromis lorsque l’antivirus ne fonctionne plus ou que les résultats de ce dernier se révèlent insuffisants. Les outils présentés dans cet article se veulent simples afin d’identifier, voire éliminer, une menace de premier niveau sur un système Windows. Nota Bene Les copies d’écran sont limitées en largeur au cadre de l’article. Pour les voir dans leur format normal, cliquez dessus. A retenir
Il est rappelé qu’en cas de découverte d’une réelle intrusion (action manifestement différente d’un programme autoreproducteur comme un ver) ou de fichiers pénalement répréhensibles (pédopornographie par exemple), il est convient de faire appel sans délai aux services spécialisés et d’adopter les bons premiers réflexes. IntroductionQue l’on soit utilisateur ou responsable informatique, il devient de plus en plus courant d’être méfiant vis-à-vis d’une infection potentielle de l’un de ses postes par un programme malveillant (encore appelé malware). Le nombre grandissant de vecteurs de transport de ces derniers (site web, courrier électronique, réseau peer-to-peer, etc.) nécessite de vérifier régulièrement l’état d’intégrité d’un poste, ou d’un échantillon de poste, exposé. Le vecteur d’infection par le navigateur Internet est de plus en plus privilégié par les attaquants : un serveur web (complice ou à son insu) héberge un contenu malveillant pouvant se propager sur le poste via le navigateur. Les messages électroniques restent également encore largement utilisés comme mode de propagation : les attaquants privilégient l’utilisation d’un lien vers un site web hébergeant le contenu malveillant. Les serveurs sont fonctionnellement moins affectés par ce type de menace : les administrateurs ou les exploitants ne naviguent pas sur Internet depuis un serveur, si tel est le cas seulement vers des sites d’éditeur reconnus. La navigation ou la consultation de message électronique sont réservées au poste de travail, qui devient de ce fait la cible quasiment exclusive des programmes malveillants. C’est pourquoi, cet article se limitera au cas d’un poste de travail sous Windows XP ou Vista. Par ailleurs, les méthodes et outils employés sont rapidement réalisables par une personne ayant des connaissances techniques courantes. Cette page ne se veut pas trop technique ou exhaustive sur les modifications faites sur le système. La démarche proposée peut-être réalisée de manière semi-automatisable (à l’aide de script) notamment si l’étude doit être menée sur plusieurs dizaines ou centaines de postes de travail. L’identification de programmes malveillants s’arrête généralement aux résultats de l’antivirus, ce qui peut être une première étape vers la détection et l’éradication d’un malware, mais qui s’avère parfois longue et incomplète. Il est possible de faire appel à des services spécialisés ayant des connaissances juridiques et techniques avancées comme les CERT ou les sociétés de conseil en sécurité. Si cette solution est plutôt fortement recommandée dans le cas d’intrusion constatée, elle demeure excessive lorsqu’il s’agit d’une infection par un malware largement répandue ou dans un cadre familial. L’objectif de cette page est de fournir quelques commandes ainsi que quelques critères de décision simples et faciles pour permettre au service informatique ou à un informaticien d’identifier et d’éliminer un malware. Évidemment, les méthodes présentées ne remplaceront pas l’appel à des services spécialisés (cités précédemment) ayant les moyens de détecter un comportement malveillant et de réparer le système. De même, une solution fiable et radicale consiste à réinstaller le poste à partir du cédérom d’installation ou d’un clone. Toutefois, dans de nombreux cas, on peut apporter une réponse satisfaisante sans faire appel à un service spécialisé ou à la réinstallation du poste. Enfin, en recherchant, même de manière superficielle, à identifier un malware, il est possible aussi d’apprendre de nombreuses fonctionnalités sur le système d’exploitation Windows et parfois même de localiser des problèmes de performances insoupçonnés comme un programme lancé de manière inopinée ou la consommation inutile de ressources, etc. Première analyse de l’extérieurDans la plupart des cas, les malwares tenteront de se propager et de communiquer par le réseau interne, par courrier électronique ou en essayant de joindre un serveur complice sur Internet. En dehors du cas du réseau interne plus délicat, les communications vers Internet laissent des traces sur les serveurs et dispositifs réseau. Il faut néanmoins avoir configuré ces équipements pour journaliser les événements utiles et avoir les procédures adéquates de surveillance des journaux. Le premier réflexe est donc de vérifier les accès suspects au serveur mandataire (ou proxy). Par « suspect », on entend, par exemple, un accès Internet aux heures non ouvrées depuis un poste de travail inoccupé ou des tentatives d’accès répétitives (parfois infructueuses) vers des sites inconnus. De même, les statistiques d’envoi de courriers électroniques permettent d’identifier un poste de travail infecté dont le vecteur de propagation est le service de messagerie. Enfin, il est toujours souhaitable de trier (à l’aide d’un sniffer) les flux transitant sur les réseaux des postes de travail ; ne serait-ce que pour des questions de performance et de cohérence du réseau. Symptômes de compromissionLes malwares ont des niveaux de furtivité différents. Cet article ne vous permettra pas de détecter les malwares utilisant les dernières techniques de rootkit (une réinstallation sera alors le remède le plus simple). Toutefois, dans la plupart des cas, des éléments simples vont trahir leur présence : un paramètre mal configuré, des hypothèses d’exécution trop restrictives (par exemple, le programme s’exécute avec les privilèges d’un utilisateur sans droits d’administration). Comme n’importe quel programme, le malware n’est pas toujours correctement implémenté et les actions qu’il réalise sont détectables, ce que nous allons utiliser.
La capture précédente montre une boite de dialogue pouvant apparaître au démarrage d’un poste compromis. Elle indique ici un programme malveillant (loa.exe) échouant lors de l’écriture d’un fichier dans le répertoire Avant de commencer les opérations techniques, les questions suivantes peuvent être posées à l’utilisateur du poste suspecté et même réemployées dans le cadre de séances de sensibilisation.
Vecteurs de contaminationDans la plus part des cas, un programme malveillant sera installé à l’aide d’une vulnérabilité sur le poste (une mise à jour absente, un mot de passe peu complexe, une configuration trop permissive, etc.) ou plus généralement à cause de la confiance trop importante accordée par les utilisateurs à la pièce jointe d’un message électronique ou d’un fichier téléchargé sur Internet (fichier au nom attrayant, nom de l’expéditeur falsifié, le fameux « clic » de trop). Ainsi, on rencontre généralement les scénarios de contaminations suivants :
Boite à outilsIl est recommandé de stocker l’ensemble de ses outils sur une clé USB et de l’insérer dans le poste de travail à évaluer. Le nom des outils pourra être renommé pour éviter les attaques, de plus en plus fréquentes, contre ces derniers : par exemple, les programmes malveillants peuvent détecter l’utilisation du programme Process Explorer (explicité plus loin) et avoir un comportement différent lorsqu’il est lancé. Ensuite, il est préconisé de débrancher le poste de travail du réseau durant la manipulation et de désactiver l’antivirus éventuellement installé (pour ne pas interférer avec l’analyse). Les droits d’administration locale sont nécessaires pour exécuter la plupart des programmes. La présence d’un programme suspect et la complexité des opérations réalisées font que tous les outils présentés dans ce document sont susceptibles d’altérer la fonction du poste de travail voire de provoquer un redémarrage inopiné de ce dernier. Une sauvegarde des données les plus précieuses pourra être réalisée avant le début de l’analyse (en vérifiant a posteriori qu’aucun fichier infecté n’a été copié). Par ailleurs, il est à noter que les sources de ces outils ne sont pas toujours disponibles. Il est recommandé de télécharger les programmes depuis le site original du programme et en aucun cas depuis un réseau peer-to-peer. La plupart des outils peuvent se retrouver sur le site http://live.sysinternals.com/. Il est d’ores et déjà possible de télécharger :
Recherche sur InternetInternet est sans aucun doute l’aide la plus précieuse pour identifier les fichiers suspects. C’est pourquoi dans la suite de ce document, il sera plusieurs fois fait référence à des recherches sur Internet, notamment celles réalisées sur des moteurs de recherche. Le poste en cours d’analyse doit être normalement débranché d’Internet : on pourra utiliser un autre poste pour réaliser les recherches afin d’éviter de reconnecter le poste ce qui pourrait entraîner une réaction du malware. En effet, ces derniers renvoient à des analyses passées ou des commentaires de sites spécialisés (dont les éditeurs d’antivirus). Si un fichier (.exe, .reg, .bat), une bibliothèque (.dll) ou un driver (.sys) apparaît comme une ressource suspecte, la recherche sur Internet permet de confronter cette ressource à un ensemble de documents et d’analyses déjà réalisées. Les moteurs de recherche usuels (comme Exalead ou Google) peuvent être un bon moyen de départ.
On constate que la plupart des recherches renvoient vers des analyses réalisées par des éditeurs d’antivirus. Il existe des sites spécialisés dans l’identification de programmes malveillants. On compte tout d’abord les sites passifs (type encyclopédie). Le contenu est parfois très détaillé : il apporte une aide précieuse pour localiser et éliminer un programme malveillant. Parmi ces sites, on retrouve les grands éditeurs d’antivirus :
Dans le cas où la recherche sur Internet ne permet pas de lever le doute sur un programme suspect, il est possible d’utiliser des moteurs d’analyse dynamiques. Le programme suspect est chargé sur le site, puis analysé par une vingtaine d’antivirus à jour. Le site donne le résultat de chaque antivirus au fur et à mesure de l’avancement de l’analyse virale : certains antivirus sont configurés pour être plus sensibles que d’autres, il convient de supprimer les fausses alertes manifestes (ou faux positif). Enfin, il arrive que, le programme ayant déjà été analysé auparavant, le rapport soit immédiat. Il faudra être vigilant à la date de dernière analyse, car les bases de signature ont été mises à jour depuis.
Les sites Virus Scan, Virus Total et Vir-Scan fournissent un tel service. Important : Il est préconisé d’utiliser ces sites avec discernement. Par exemple, un document Word confidentiel ou un programme payant ne doivent pas être chargés sur ces sites. Vérifier le noyau WindowsLe noyau est l’élément le plus important du système d’exploitation. Il est, par exemple, responsable du maintien de la liste des programmes en cours d’exécution (comme celle affichée par le gestionnaire des tâches de Windows). Ainsi, lorsqu’un programme malveillant arrive à compromettre le noyau, il peut dissimuler des informations comme un programme en cours d’exécution. Les programmes d’analyse ont donc une confiance implicite dans les appels au noyau encore appelés appels systèmes. Il n’existe pas de méthodes fiables à 100% pour détecter la compromission du noyau, mais certaines d’entre elles permettent de détecter une majorité de programmes malveillants. Le site ANTIROOKIT énumère un grand nombre de produits pour lutter contre les rootkits ainsi que les points de téléchargement. L’outil Rootkit Revealer identifie les fichiers ou les clés de la base de registre qui auraient été cachés par un rootkit. Toutefois, l’analyse est longue et l’interprétation des résultats parfois délicate. La capture suivante montre le résultat de l’outil RootkitRevealer.
Il est possible de déterminer les fichiers cachés par un programme malveillant « Hidden from Windows API ». Toutefois, RootkitRevealer ne permet pas d’identifier la cause de cette modification. C’est pourquoi, on pourra préférer l’outil Rootkit Unhooker (dont le développeur est maintenant employé de Microsoft) plus complet et plus rapide à utiliser. La capture d’écran suivante montre l’outil l’écran principal de Rootkit Unhooker. Dans chacun des onglets SSDT (qui correspond à la table des appels systèmes Windows), Shadow SSDT, Processes et Drivers, on retrouve des informations comme le nom du fichier associé et une indication de suspicion (s’il a été modifié « hooked » ou caché « hidden »). Lorsqu’une telle indication est présente, il convient de mener une petite enquête comme décrit précédemment (moteur de recherche et encyclopédie).
Par exemple, sur la capture précédente, on constate que plusieurs éléments de la SSDT ont été modifiés par les modules cmdguard.sys et sptd.sys. Une recherche montre que ces modules sont légitimes et installés respectivement par le pare feu Comodo Firewall et le lecteur cédérom virtuel Daemon Tools.
La précédente capture montre l’onglet « Processes ». On constate qu’un processus evil.exe a été caché car il est marqué comme « Hidden from Windows API ». Que se soit ici dans l’onglet « Processes » ou « Drivers », on sera particulièrement vigilant au chemin de l’exécutable utilisé, notamment si le chemin pointe vers un répertoire temporaire ou du cache Internet Explorer de l’utilisateur, ce comportement est inhabituel, là aussi une recherche s’impose. Dans la capture précédente, le chemin d’exécution du processus evil.exe est le répertoire temporaire d’Internet Explorer. Dans le cas d’une modification du noyau, l’outil permet de remettre en état les éléments modifiés « Unhook ». D’autres outils antirootkit sont d’un usage équivalent. Vérifier les programmes lancés en mémoireUne fois que le noyau a été vérifié, les programmes lancés en mémoire vont être analysés. La majorité des programmes malveillants oublient ou évitent d’afficher certaines informations sur leur contenu comme pourrait le faire un programme légitime. On retrouve par exemple : L’analyse va consister à étudier l’ensemble de ces informations à l’aide de l’outil Process Explorer de Sysinternals. Il s’agit d’un « super-taskmanager », il va permettre de lister les processus, mais aussi de donner les caractéristiques précises de chacun d’entre eux : caractéristiques (taille, éditeur, chemin d’exécution, etc.), bibliothèques dynamiques (ou DLL) utilisées, port réseau ouvert, etc. Il faut tout d’abord sélectionner les informations dont on veut disposer ; dans le menu « View / Select Columns », on retiendra : Description, Company Name, Verified Signer, Command Line et Version. La capture suivante décrit la manipulation. La capture suivante montre Process Explorer ainsi configuré.
L’analyse va consister à reprendre les critères définis précédemment pour rechercher les programmes suspicieux. Il faut tout d’abord retirer de l’analyse les programmes signés numériquement par un éditeur reconnu par Microsoft. Process Explorer permet de trier via la colonne « Verified Signer » la validité des signatures numériques. Les programmes considérés comme correctement signés (marqués Verified) peuvent être écartés de l’étude. Il est possible d’être plus précis et de consulter l’autorité de certification à l’aide des propriétés du programme dans l’explorateur de fichiers (onglet « Signature Numérique »). La capture suivante montre la validité de la signature du programme Firefox.
Dans les versions récentes de Windows, de nombreux programmes doivent être lancés avec une signature valide ce qui en facilite l’étude. Dans la capture suivante, le programme msmsn.exe ne possède pas de signature.
La colonne « Command Line » permet d’afficher le chemin d’exécution du programme. Si ce dernier est situé dans un répertoire temporaire (fichiers temporaires d’Internet Explorer, clé USB, etc.), le programme peut être considéré comme suspect. Généralement, les programmes sont lancés depuis c :\Program Files ou c :\Windows\system32. Là aussi le programme msmsn.exe est lancé depuis le répertoire temporaire de l’utilisateur : les soupçons se confirment. Enfin, les programmes malveillants possèdent rarement une icône et les renseignements complémentaires comme les champs « Company name » et « Description » renseignés. Ces indications permettent là aussi d’affiner la liste précédente. Process Explorer affiche sur un fond violet les programmes « packés », c’est-à-dire dont la structure a été modifiée par souci d’optimisation ou de camouflage : ce dernier point permet définitivement de suspecter le programme msmsn.exe. Une recherche sur Internet prouve le caractère malveillant de ce programme. Cas des servicesPour mieux se dissimuler, les malwares peuvent se lancer à partir d’un autre programme comme :
Remarques : Windows possède des fonctions intégrées permettant de lister les services et les drivers installés. La commande « sc query » permet de réaliser cette opération. Cas de l’injection DLLL’injection DLL est une méthode ancienne permettant d’ajouter une bibliothèque à celles d’un programme. Process Explorer permet de lister les bibliothèques d’un programme en cours d’exécution et éventuellement de détecter l’utilisation d’une bibliothèque non sollicitée. Les captures suivantes montrent la configuration de l’affichage pour lister les bibliothèques d’un programme (ici le programme Apache Monitor).
Suppression des programmesAu terme de cette étude mémoire, si la machine est compromise, le chemin d’accès du malware doit être soigneusement noté. Il est possible de tuer un programme en mémoire, mais cette action est souvent inefficace : ce dernier va se relancer automatiquement, interdire sa fermeture ou, pire, lancer une action en réponse à la tentative de suppression (déni de service par exemple). Le plus simple est de supprimer le fichier du malware du disque dur. Ainsi, au redémarrage suivant, la plupart des malwares ne pourront plus se lancer (sauf s’il y a une copie ailleurs sur le disque, ce dont nous parlerons après). Néanmoins, Windows verrouille les fichiers des programmes en cours d’exécution, rendant impossible leur suppression. Il existe des outils pour passer outre cette protection comme, par exemple Unlocker. Si un tel outil ne fonctionne pas, il existe une méthode plus générale, consistant à démarrer le poste de travail sur un cédérom où se trouve une distribution Linux récente (qui offre la possibilité de supprimer un fichier d’un système de fichiers NTFS). Programmes lancés au démarrageAfin d’être persistant, les malwares vont généralement paramétrer le système pour se lancer automatiquement à chaque démarrage du poste. Les fichiers précédemment identifiés avec l’outil Process Explorer donnent souvent une première piste sur les programmes exécutés au démarrage. On utilise ici l’outil Autoruns de Microsoft pour énumérer l’ensemble des programmes ou bibliothèques exécutés automatiquement au démarrage du système Windows. Cet outil distingue les programmes lancés automatiquement pour tous les utilisateurs et ceux lancés automatiquement par utilisateur. La capture suivante montre le programme Autoruns. Les programmes lancés au démarrage sont classés par type (ils correspondent à une localisation de la base de registre). Seules les localisations les plus couramment utilisées seront étudiées par la suite : Logon, Internet Explorer, Services, Drivers et AppInit. Avant de procéder à l’étude des résultats du programme Autoruns, il convient d’activer là aussi le contrôle de la signature numérique : dans le menu « Options », il suffit de cocher les paramètres « Verifiy Code Signature » et « Hide Microsoft Signed Entries ». Ces options évitent de surcharger l’affichage en supprimant les configurations par défaut de Microsoft.
L’onglet « Logon » contient l’ensemble des programmes exécutés à l’ouverture de la session utilisateur. De manière analogue à l’étude menée avec Process Explorer, on vérifiera les programmes :
Internet est encore une fois d’une très grande utilité pour déterminer si un programme est suspect ou non. Autoruns intègre d’ailleurs nativement une fonction de recherche en ligne : elle se situe dans le menu Entry puis la commande « Search Online ». Les programmes lancés à l’ouverture de session dépendent de l’utilisateur. Il est recommandé de réaliser une recherche pour chaque utilisateur en modifiant le paramètre « User » du menu principal. Il est possible alors de décocher le programme suspect afin qu’il ne soit plus automatiquement lancé au démarrage. Attention : certains programmes malveillants surveillent leur capacité à démarrer automatiquement. Dans ce cas, Autoruns ne pourra pas les supprimer de la base de registre. Il convient alors de supprimer le fichier soit par un outil de type Unlocker, soit en démarrant le poste de travail sur un autre système d’exploitation. De même, une fois le nettoyage réalisé, il est recommandé de ne pas éteindre de manière classique le poste de travail (menu Démarrer) mais de redémarrer « violemment » le poste de travail : cette mesure évite la procédure classique d’extinction et qu’un malware s’ajoute dans la liste des programmes lancés au dernier moment précédent le redémarrage. L’outil NoMyfault permet de créer un redémarrage logiciel immédiat de Windows. Le programme Explorer possède des extensions sous forme de bibliothèques. Certains programmes malveillants utilisent cette fonctionnalité pour se charger comme une extension de Explorer. Il convient donc de vérifier, dans l’onglet Explorer du programme Autorun, le chemin d’accès des bibliothèques utilisées. Internet Explorer possède lui aussi des extensions appelées BHO (Browser Helper Objects) lancées automatiquement lorsque le client navigue sur Internet. Il convient d’appliquer les mêmes vérifications. La plupart des programmes malveillants utilisent les services pour se lancer automatiquement avec un maximum de privilèges. La méthodologie à appliquer est identique à ce qui a été fait précédemment. Néanmoins, il faut être particulièrement vigilant à ne pas désactiver un service nécessaire au bon fonctionnement du poste de travail et à valider la désactivation des services un à un. Enfin, l’utilisation de drivers malveillants est la méthode privilégiée des rootkits noyau. Si l’étude menée au début n’a pas permis de déceler la présence d’un rootkit, Autoruns devrait confirmer ici l’absence de tels programmes. Vérifier l’activité réseauLa présence d’un malware se caractérise aussi par des activités non contrôlées sur le réseau. Par exemple, on peut imaginer un programme envoyant sur un serveur situé sur Internet le contenu des données du disque par le port 80 du service Internet. Si aucun programme n’est exécuté et si le poste est « au repos » (pas d’activité de l’utilisateur), aucune connexion réseau ne doit être réalisée en direction d’Internet (ou le proxy du réseau). Le programme Tcpview de Microsoft permet d’énumérer les connexions réseau. On distingue 3 types de connexions :
Automatiser les tâchesIl existe des versions en ligne de commande (cli) des outils autoruns, tcpview respectivement autorunsc et tcpvcon. A l’aide des pstools, il est possible d’exécuter à distance ces programmes et certaines tâches d’investigation (pslist pour lister les processus, psservice pour lister les services, etc.). Ceci permet d’automatiser une recherche ciblée sur un grand nombre de postes et éventuellement d’automatiser cette analyse et de l’exécuter selon un cycle régulier. ConclusionUne fois l’ensemble des programmes malveillants détectés et les fichiers supprimés, il convient de lancer l’antivirus pour un nettoyage final. Ce dernier va pouvoir analyser le reste et éventuellement fonctionner plus efficacement (ie. se mettre à jour, réaliser une recherche en profondeur, etc.). Après avoir traité l’incident, il est important de tirer les leçons de l’infection. Quel a été le vecteur de propagation et de contamination ? Un correctif manquant ? Un mot de passe trop simple ou un manque de sensibilisation de l’utilisateur ? Dans ce dernier cas, il est recommandé de rappeler les bonnes pratiques, par de (courtes) séances de sensibilisation, des affiches à la cafétéria ou des messages électroniques, voir par des messages apparaissant sur l’écran de veille. Au niveau des équipements de sortie, une configuration adéquate renforcera les mécanismes de défense en profondeur. Parmi les bonnes pratiques régulièrement préconisées, il faut installer un proxy pour se donner la capacité d’observer et de couper un flux suspect. En complément, une authentification des utilisateurs et un filtrage par « User-Agent » éviteront les connexions anonymes et automatiques. Une version de cet article, rédigé par un inspecteur du bureau "inspections" de l’ANSSI (Arnaud PILON), a été publiée dans le magazine "MISC". |