En plus des classiques fichiers exécutables Windows (.exe ou .dll), les malwares se présentent sous d'autres formats divers. VBScript (Houdini), fichiers Office (droppers de Dridex ou divers types de ransomware), Python (convertis en PE avec py2exe), Java (histoire d’assurer l’interopérabilité entre systèmes), ELF, JScript (droppers Locky)… Ici, nous allons nous intéresser de près à un exemple de malware écrit en… Node.JS [1].
L’analyse d’un malware en Node.JS ne représente pas de difficulté majeure, si tant est qu’on sache où trouver les parties du code qui nous intéressent. Nous allons voir comment, en partant d’un dump de RAM d’un poste infecté, nous en venons à récupérer l'exécutable unpacké, sa configuration, et même son code. Avis aux lecteurs de cet article : voyez-y un journal de bord sur les moyens mis en œuvre, pour se doter d’une capacité opérationnelle contre un malware bien spécifique.
Pour tirer le plus de cet article, je vous recommande d’avoir sous le coude :
- un désassembleur : IDA (version gratuite), radare2, ou Hopper feront parfaitement l’affaire ;
- le sample correspondant au hash 73dbb120fd4935505019081a8e255505dddc6ff1c8c5abfd6e644549e62a5a4a ;
- l'outil strings.
L’analyse est faite à partir d’une capture mémoire d’un ordinateur infecté par 73dbb120fd4935505019081a8e255505dddc6ff1c8c5abfd6e644549e62a5a4a, une variante de...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] Site officiel de Node.JS : https://nodejs.org/
[2] V8 (moteur JavaScript) : https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)
[3] What does a zlib header look like ? https://stackoverflow.com/questions/9050260/what-does-a-zlib-header-look-like/9050274
[4] Repository MIASM : https://github.com/cea-sec/miasm
[5] Site officiel de Capstone Engine : http://www.capstone-engine.org/
[6] Protocul Buffers : https://fr.wikipedia.org/wiki/Protocol_Buffers