Être ingénieur analyste ou même chercheur en vulnérabilités et codes malveillants est un métier en lui-même, le but de l’article n’est donc pas d’expliquer ce métier en détail, mais de donner un point de vue global sur l’analyse de malwares dans le cadre d’une activité personnelle.

Je rappelle que « malware » signifie « logiciel malveillant » en français. On emploie également souvent le mot « virus informatique » par abus de langage. Un malware étant un logiciel malveillant de façon générale, il peut ainsi être un keylogger, un cheval de Troie, un rogue, un ransomware, un ver informatique…etc.

On a vu plusieurs fois que l’antivirus est très utile, mais qu’on ne peut pas se baser uniquement sur lui.

Lorsqu’on se fait infecter par un malware, on passe habituellement par l’une de ces options :

  • On formate le système infecté
  • On supprime le « virus »
  • On change ses mots de passe
  • On ne sait simplement pas quoi faire

Dans tous les cas, on espère surtout ne plus jamais revoir ce malware.

L’analyse de malwares fait l’inverse.

Le but ici est plutôt d’analyser ce qu’il s’est passé, de savoir comment un « virus » est arrivé là, de savoir s’il y en a d’autres et de savoir ce qu’il fait exactement.

On peut même aller plus loin, en essayant d’évaluer l’impact, le risque et même l’auteur du malware en question.

L’analyse de malwares se divise en deux parties : l’analyse statique et l’analyse dynamique. La plupart des analyses approfondies se basent sur un mix des deux façons.

Analyse statique d’un malware

L’analyse statique est une phase qui est fastidieuse et qui demande des connaissances techniques pointues. Typiquement, on va analyser le fonctionnement du malware « à la main » et cela prend beaucoup de temps. On simplifiera donc cela dans l’article en passant uniquement en revue les moyens les plus faciles et directs d’analyser statiquement un malware.

Nous allons ici analyser un cheval de Troie en ne connaissant pas son code source ni même ses fonctions précises.

Nous pouvons lancer une première analyse VirusTotal sur le fichier, dont voici le résultat :

analyse-malware-virustotal

Mauvaise nouvelle pour notre cher cheval de Troie, il est détecté par 28 antivirus sur les 56 utilisés. (On notera tout de même que la moitié des antivirus ne détectent donc pas ce cheval de Troie !)

Commençons par analyser les chaînes de caractères présentes dans ce malware.

Nous allons pour cela utiliser l’outil Strings de Microsoft qui nous permettra d’afficher toutes les chaînes de caractères lisibles dans notre malware.

Après avoir téléchargé le programme, on lance un invite de commandes :

touches Windows + R -> "cmd.exe" -> touche Entrée

On se place dans le dossier contenant le programme strings récemment téléchargé :

cd C:Usersvotrenomdossier_contenant_strings.exe

Et on utilise la commande :

strings.exe Stub.exe > resultat.txt

« Stub.exe » étant ici le cheval de Troie que j’utiliserai pour l’exemple, mais vous pouvez utiliser n’importe quel autre programme exécutable.

Toutes les chaînes de caractères que contient le programme sont à présent lisibles dans le fichier texte « resultat.txt » nouvellement crée dans le même dossier.

L’analyse de ce fichier demande habituellement des connaissances pointues en programmation et système, mais parfois c’est assez évident.

Voici un exemple de ce que l’on trouve :

analyse-chaines-malware

Le nom « Logger » ressemble à « Keylogger », et visiblement l’option keylogger du cheval de troie est confirmée, car il utilise des structures typiques qu’utilisent les keyloggers. À savoir « KBDLLHOOKSTRUCT » et « KBDLLHOOKSTRUCFlags ».

On continue dans notre analyse en observant d’autres chaînes de caractères dans notre fichier résultat :

analyse-chaines-malware2

Visiblement le malware cherche à soutirer des mots de passe de quelques navigateurs.

Un peu plus bas dans le fichier, nous tombons sur quelque chose d’encore plus direct :

analyse-chaines-malware3

« Uninstall », « Shutdown », « KillProcess », « OpenCD », « ReverseMouse » ou encore « fun », je pense que même en anglais, ces mots sont suffisamment parlant pour se rendre compte que le programme ne fait rien de bien sympathique pour celui qui l’exécute.

Vous pensez bien que tous les programmes malveillants ne se laissent pas si facilement observer. Pour tout vous dire, certains malwares comme celui que nous venons de voir sont programmés avec des langages qu’on appelle « managés ». Il s’agit par exemple de Visual Basic, C# et Java. Le code n’est pas compilé, mais transformé dans une version « intermédiaire ». Il est facile de retrouver le code source complet de ces programmes. Ce qui n’est pas le cas des autres programmes dont le code source n’est pas directement récupérable.

Lors de l’analyse statique de programmes non managés, on utilise beaucoup ce que l’on appelle un éditeur hexadécimal. Il s’agit d’un outil permettant de visualiser et de modifier un fichier exécutable.

L’idée est de comprendre ce que fait un programme dont on n’a pas le code source.

En somme, ça ressemble à cela :

editeurhexa

Il s’agit de XVI32 qui est un éditeur hexadécimal simple, mais dans le cadre de l’analyse statique de code malveillant, on utilise souvent un éditeur hexadécimal plus poussé, qui fait même office de débogueur interactif, il s’agit de IDA Pro :

Le but ici, même si il n’en a pas l’air, est de rendre plus facile la lecture du code à investiguer. L’utilisation de ce programme demande des connaissances avancées, on ne va donc pas s’attarder dessus.

Dans cette partie, nous avons réussi notre analyse de malware statique et compris un peu mieux ce que fait le malware étudié. Passons à l’analyse dynamique.

Analyse dynamique du malware

L’analyse dynamique consiste à exécuter directement le malware dans un environnement contrôlé et spécialement prévu à cet effet.

« L'analyse dynamique consiste à exécuter directement le malware dans un environnement contrôlé »Cliquez pour tweeterPartager sur FacebookPartager sur LinkedIn

L’idée est d’observer ce que fait le malware afin d’en tirer des conclusions. Bien que cela soit plus facile et rapide à faire que l’analyse statique, il faut noter qu’on peut potentiellement passer à côté de certaines fonctionnalités cachées du malware. On en reparlera plus tard.

Lors de cette analyse dynamique, on construit ce que l’on appelle un « laboratoire de test » contenant habituellement un système d’exploitation Windows qui va jouer le rôle de victime et une machine Linux comme « routeur » vers lequel on passe pour renvoyer le trafic sur Internet, au besoin.

On utilise souvent VMware, mais VirtualBox fait également l’affaire, et la deuxième partie de ce tutoriel montre comment installer une distribution Linux en tant que machine virtuelle.

Le système d’exploitation Windows en question est habituellement Windows XP avec la configuration suivante :

  • Internet Explorer non mis à jour
  • Adobe Flash Player non mis à jour
  • Case « Cacher les fichiers systèmes » non cochée dans les options des dossiers
  • Java non mis à jour
  • Connexion automatique
  • Pare-feu désactivé
  • Bloqueur de fenêtres publicitaires désactivé
  • Et d’autres configurations permettant aux malwares de s’exécuter correctement

En ayant donc la machine Windows vulnérable en place, on va utiliser divers outils nous permettant d’analyser ce que fait le malware une fois exécuté sur le système cobaye.

Les plus populaires sont les suivants :

  • RegShot : Permet de faire une « image » de la base de registre avant et après exécution d’un malware pour voir les clés de registre qu’il aura créées. On pourra par exemple découvrir si le malware essaye de s’ajouter au démarrage du système.
  • Capture-BAT : Projet initié par des chercheurs en sécurité informatique qui permet d’analyser le comportement du malware testé. On saura notamment les fichiers qu’exécute le malware mais aussi les processus qu’il peut créer.
  • LordPE : Outil qui va analyser ce que le malware fait du côté de la mémoire de l’ordinateur.
  • WireShark : Analyseur réseau permettant de détecter l’activité réseau d’un malware.

Pour nous faciliter la tâche, il existe déjà des environnements tout-en-un contenant ces outils ou en tout cas ce type d’outils afin de ne pas avoir à les installer manuellement.

Par exemple, le projet Cuckoo Sandbox permet de créer facilement son petit laboratoire avec Virtual Box. La documentation est visible à l’adresse suivante (et en anglais) :

https://cuckoo.readthedocs.org/en/latest/

Pour nous faciliter encore plus la tâche, il existe des services web gratuits qui ont déjà mis en place leur laboratoire. Ils vous permettent d’uploader un fichier afin d’obtenir un rapport sur son exécution.

Si vous souhaitez donc voir directement le résultat final, ou simplement connaître ce que fait un programme via l’analyse dynamique, voici deux services populaires que je recommande :

  • Anubis (EDIT: hors service)
  • Malwr

Exemple d’analyse de malware : https://malwr.com/analysis/MzhlNzNhN2RhMTdlNGIxMTk3NDU2ZmUyZGY4YWVlMmQ/

analyse de malwares avec malwr

Je cite :

« Identifié par au moins un antivirus comme malveillant »

« Contient des données chiffrées ou compressées »

« Vole des données privées depuis les navigateurs Internet »

« S’installe au démarrage de l’ordinateur »

Je pense qu’il est inutile de préciser que ce programme semble un poil malveillant 🙂

Conclusion sur l’analyse de malwares

Nous avons vu les bases de l’analyse de malwares et j’espère que ce tutoriel vous a plu.

En résumé, il y a deux types d’analyses, l’analyse statique où l’on cherche à comprendre le fonctionnement d’un malware sans l’exécuter, et l’analyse dynamique où l’on exécute le malware et l’on note ce qu’il fait durant son exécution avec des outils spécifiques.

Enfin, on a vu qu’il existe déjà des services web tout-en-un pour scanner les programmes que vous suspectez, et une fois que vous aurez commencé, vous ne vous en passerez plus !

AVERTISSEMENT :

Je me dois de prévenir qu’on joue ici potentiellement avec de vrais malwares et qu’une erreur de manipulation peut faire de gros dégâts.

Si vous débutez, je vous conseille d’utiliser les services en ligne que nous venons de voir, et de bien faire attention si vous souhaitez déployer votre propre labo.

Sachez que :

  • Certains malwares peuvent s’exécuter dès lors qu’ils sont scannés par un antivirus (si ce dernier possède une vulnérabilité critique)
  • Certains malwares détectent les machines virtuelles et modifient leur comportement en conséquence
  • Certains malwares ne s’exécutent qu’à une date précise
  • Certains malwares vont simplement crasher sur la machine de test mais fonctionner sur un autre système
  • etc…

Envie de devenir chercheur de codes malveillants ?

Il vous faudra apprendre et maîtriser plusieurs notions dont :

  • Le langage assembleur (représente le langage machine lisible pour un humain).
  • Le fonctionnement des systèmes d’exploitation.
  • Le Reverse Engineering (c’est l’étude d’un programme dont on ne connaît pas le code source).
  • Le fonctionnement des malwares.

Envie d’en savoir plus sans forcément devenir chercheur ?

Rejoignez le cours vidéo sur l’étude des malwares.

Articles similaires

Menu