Malwares ciblant les systèmes Microsoft Windows
Introduction
Ce chapitre est dédié au système d’exploitation de Microsoft : Windows. Historiquement, ce système d’exploitation est le plus ciblé, car le plus populaire. Il est également le plus utilisé dans le domaine professionnel, ce qui en fait une cible de choix dans les campagnes contre les sociétés. Une bonne connaissance de ce système d’exploitation est primordiale pour comprendre le fonctionnement d’un malware qui le cible.
Ce chapitre présente la collecte de données sur un système suspicieux afin d’identifier un potentiel malware. Grâce à ces données, l’analyse de la mémoire du système sera possible. Ce chapitre présentera également comment créer un laboratoire d’analyse pour finalement réaliser cette première analyse.
Collecte d’informations
Introduction
Avant d’analyser un malware, il est nécessaire de le trouver. Pour pouvoir l’identifier, il faut collecter diverses informations sur la machine potentiellement infectée. Pour une telle collecte, il est préférable de déconnecter le disque dur de la machine infectée pour le connecter sur une machine saine et travailler à partir de celle-ci. Il ne faut pas travailler sur la machine infectée, les malwares peuvent très bien altérer le fonctionnement de la machine et cacher des informations à l’analyste.
La collecte se fera directement sur le disque dur de la machine infectée. Sur ce disque dur, quatre éléments sont intéressants pour une analyse :
-
la base de registre (uniquement sous Windows)
-
les journaux d’événements
-
les fichiers exécutés au démarrage
-
le système de fichiers
Collecte et analyse de la base de registre
La base de registre est une base de données utilisée par Windows. Elle contient tous les paramètres de configuration du système d’exploitation. Elle prend la forme d’un arbre. Chaque branche contient un ou plusieurs noms, puis un type par nom et une valeur pour chaque nom. La configuration de nombreux outils se trouve dans la base de registre. Par exemple, la configuration du fond d’écran se trouve dans la branche HKEY_CURRENT_USER\Control Panel\Desktop. Elle a pour nom Wallpaper, elle est de type REG_SZ, et a pour valeur le chemin vers le fichier de fond d’écran.
Depuis Windows, elle peut être consultée via la commande regedit.exe.
La base de registre est stockée dans des fichiers. Ces fichiers sont accessibles sur le disque dur de la machine. Voici l’emplacement pour chaque base :
-
HKEY_USERS :
\Documents and Setting\User...
Image mémoire
Présentation
Lorsqu’un système d’exploitation est en fonctionnement, toutes les données qu’il traite sont stockées en mémoire. Il est possible de réaliser une image de l’état de la mémoire (appelé dump). Cette image peut ensuite être analysée. Contrairement à la collecte d’informations, la prise d’image mémoire doit se faire directement sur le système infecté en cours de fonctionnement.
Il y a de nombreux avantages à analyser la mémoire plutôt que la machine elle-même. Premièrement, il est très ardu de cacher un malware lors d’un dump mémoire. Quelques preuves de concept existent, notamment par l’utilisation des registres DRX, mais cela reste pour le moment anecdotique. Néanmoins, un dump mémoire est bien plus difficile à tromper qu’un système. Par exemple si un rootkit cachait l’existence d’un processus dans le gestionnaire de tâches, la mémoire utilisée par ce processus serait tout de même allouée et il serait donc visible dans l’image de celle-ci. L’autre avantage est que les binaires sont vus en cours de fonctionnement.
Si un binaire cachait des chaînes de caractères, comme le nom de domaine de son C&C, dans le cas d’une image mémoire il y aurait de fortes chances que ces chaînes soient en clair.
L’analyse de la mémoire est une méthode à mettre en œuvre en priorité dans l’analyses, de malware car le résultat est très impressionnant. Cette méthode permet de lister les processus, de lister les fichiers ouverts par un processus, de lister les connexions réseau, de faire des copies de la mémoire utilisée par un processus, de...
Fonctionnalités des malwares
1. Techniques pour rester persistant
Pour qu’un malware soit efficace, il faut qu’il puisse être persistant, c’est-à-dire exécuté à nouveau en cas de redémarrage de la machine infectée. Une piste pour trouver l’existence d’un malware est donc de comprendre les différents mécanismes que peut utiliser un malware pour démarrer avec le système d’exploitation. Il existe plusieurs manières de démarrer un processus avec le système d’exploitation Windows :
-
par la base de registre
-
par un fichier
-
par un service
-
par un driver
-
par des méthodes non conventionnelles
Il est donc important de consulter les documentations fournies par Microsoft pour contrôler chacun de ces points d’entrée en fonction de la version du système d’exploitation. Voici une liste non exhaustive de clés de registre et de fichiers qui permettent l’exécution de fichiers :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]
Voici un exemple de fichier permettant de démarrer un processus :
C:\boot.ini
Les services...
Création d’un laboratoire d’analyse
Introduction
Les malwares sont par nature dangereux pour les systèmes d’information. Les analystes doivent donc configurer un environnement afin de ne pas infecter leurs propres machines. Pour cela, les solutions de machines virtuelles sont très pratiques et simples à utiliser. En effet, si le malware est exécuté dans cet environnement cloisonné, l’infection ne pourra pas se propager à la machine de l’analyste, appelée machine hôte.
Cependant, il faut faire attention à certains points. Les solutions de virtualisation permettent de partager des disques ou des répertoires entre la machine hôte et les machines virtuelles. Ces fonctionnalités sont à proscrire ou à utiliser avec une très grande attention. Par exemple, dans le cas d’un ransomware chiffrant certains types de fichiers, si un répertoire de la machine hôte contenant ces types de fichier était partagé avec la machine virtuelle, les fichiers du répertoire seraient bien évidemment chiffrés lors de l’exécution de ce malware.
D’autres points sont également à contrôler. Pour éviter que leurs malwares ne soient trop facilement analysables, certains développeurs de malwares contrôlent si le malware s’exécute bien sur une machine physique et non sur une machine virtuelle. Il convient donc de configurer la machine virtuelle pour qu’elle ressemble autant que possible à une machine physique.
VirtualBox
VirtualBox est une solution de virtualisation libre développée par Oracle et disponible à l’adresse suivante : https://www.virtualbox.org/. Cet outil est très intéressant pour un analyste de malwares, car il est très simple d’utilisation...
Analyse du vecteur d’infection
1. Informations sur un fichier
Format d’un fichier
La première chose à faire avant d’analyser un sample est de savoir quel est le type de fichier à analyser. Le plus simple est d’utiliser la commande file suivie du fichier à analyser :
rootbsd@lab:~$ file fec60c1e5fbff580d5391bba5dfb161a
fec60c1e5fbff580d5391bba5dfb161a: PE32 executable (GUI) Intel
80386, for MS Windows
Cette commande utilise les en-têtes des fichiers pour déterminer leur type. Ces en-têtes sont appelés magic numbers. Par exemple, les fichiers exécutables Windows commencent par les deux lettres MZ, ainsi on peut reconnaître qu’un fichier est un exécutable Windows en comparant ses deux premiers octets avec cet en-tête MZ. Les en-têtes utilisés par la commande file sont disponibles dans un fichier inventaire généralement localisé dans /usr/share/misc/magic. Voici quelques exemples de magic numbers :
-
MZ : fichier au format exécutable Windows.
-
%PDF : fichier au format PDF.
-
GIF : fichier au format GIF.
-
CAFEBABE (en héxadecimal) : fichier contenant une classe Java.
-
PK : fichier au format ZIP.
YARA (https://plusvic.github.io/yara/) est un autre outil libre permettant d’identifier le format d’un fichier, mais aussi, dans le cas d’un fichier exécutable, de déduire le compilateur utilisé pour produire le binaire ou également de savoir si un packer connu a été utilisé.
Un packer est un programme permettant de modifier un binaire en le compressant ou en l’encodant, de manière à dissimuler son code machine original sans altérer son fonctionnement. Le but des packers est de rendre l’analyse plus compliquée, notamment en cachant les actions du programme...
Analyse dans le cas d’un binaire
Analyse de binaires développés en AutoIt
AutoIt est un langage de script. Les scripts AutoIt permettent d’automatiser des actions sous Windows. Ces scripts peuvent être compilés pour devenir des exécutables entièrement autonomes. L’avantage de ces binaires est qu’ils n’ont pas besoin d’utiliser un interpréteur AutoIt installé sur la machine où est exécuté le binaire.
Certains malwares sont développés avec AutoIt. Il est facile d’identifier les binaires compilés avec AutoIt, car le compilateur ajoute la chaîne de caractères « This is a compiled AutoIt Script. » :
rootbsd@lab:~$ hd ccdd2ad254467516e0dd737216953d6b
[...]
00083880 49 00 53 00 45 00 00 00 4e 00 55 00 4c 00 4c 00 | I.S.E...N.U.L.L.|
00083890 00 00 00 00 00 00 00 00 54 68 69 73 20 69 73 20 | ........This is |
000838a0 61 20 63 6f 6d 70 69 6c 65 64 20 41 75 74 6f 49 |a compiled AutoI |
000838b0 74 20 73 63 72 69 70 74 2e 20 41 56 20 72 65 73 |t script. AV res |
000838c0 65 61 72 63 68 65 72 73 20 70 6c 65 61 73 65 20 | earchers please |
000838d0 65 6d 61 69 6c 20 61 76 73 75 70 70 6f 72 74 40 |e-mail avsupport@|
000838e0 61 75 74 6f 69 74 73 63 72 69 70 74 2e 63 6f 6d | autoitscript.com|
000838f0 20 66 6f 72 20 73 75 70 70 6f 72 74 2e 00 00 00 | for support.... |
00083900 22 00 00 00 72 00 75 00 6e 00 61 00 73 00 00 00 |"...r.u.n.a.s... |
[...]
Il est possible de décompiler ce type de binaire et de lire les codes sources du script avant compilation. Exe2Aut permet de décompiler ces binaires, il est téléchargeable à...
Format PE
Introduction
Le format PE (Portable Executable) est le format des exécutables et des bibliothèques sous Windows. Ce format est utilisé par Microsoft depuis Windows 95.
Le format PE a une structure particulière. Il est important pour un analyste de malwares de comprendre cette structure. En effet, tous les malwares actuels jouent avec cette structure (via le packer par exemple). De plus, il est très utile de pouvoir reconnaître ce format.
Lors de l’analyse d’une image mémoire, il est possible de trouver des binaires ou des bibliothèques chargées en mémoire et donc de voir leurs PE.
Schéma du format PE
Le format PE peut être décrit par ce schéma :
En-tête MZ-DOS |
Segment DOS |
En-tête PE |
Table des sections |
Section 1 |
Section 2 |
Section N |
En-tête MZ-DOS
Cette partie permet à Windows de reconnaître le fichier comme un exécutable. Elle correspond à la structure suivante :
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
WORD e_magic; // Magic number
WORD e_cblp; // Bytes on last page of file
WORD e_cp; // Pages in file
WORD e_crlc; // Relocations
WORD e_cparhdr; //...
Suivre l’exécution d’un binaire
Introduction
Afin d’évaluer ce que fait un binaire lors de son exécution, il peut être intéressant de suivre son activité pendant cette exécution. Attention, il est fortement recommandé d’exécuter le binaire dans une machine virtuelle dont on a précédemment fait un snapshot afin de pouvoir restaurer la machine dans son état initial.
Microsoft propose par le biais de Sysinternals un outil permettant d’enregistrer l’activité d’un binaire pendant son exécution. Cet outil s’appelle Process Monitor. Il permet d’enregistrer l’activité au niveau de la base de registre, du système de fichiers et de la couche réseau. Process Monitor peut être téléchargé à l’adresse suivante : http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
En plus de Process Monitor pour surveiller l’activité d’un processus, il est également intéressant de faire des captures réseau complètes afin de voir si le binaire communique avec un serveur extérieur ou non. Et si des communications ont lieu, il est possible de les analyser afin de voir si le protocole utilisé est un protocole connu ou si le malware utilise son propre protocole.
Activité au niveau de la base de registre
Le lancement de Process Monitor se fait en exécutant simplement Procmon.exe. L’interface suivante apparaît :
Pour n’avoir que les informations concernant le binaire à analyser, il faut appliquer des filtres. Pour appliquer un filtre, cliquez sur Filter, puis choisissez Filter....
La fenêtre suivante s’ouvre :
Ensuite utilisez les menus déroulants pour filtrer sur le binaire à analyser. Vous pouvez filtrer...
Utilisation de Cuckoo Sandbox
Introduction
En analyse de malwares, les sandboxes (ou bacs à sable, en français) sont des environnements clos et isolés où sont exécutés les malwares. Ces outils enregistrent toutes les activités du sample soumis (activités dans la base de registre, fichiers créés, appels système exécutés...) et finalement génèrent des rapports.
Il existe une sandbox libre, appelée Cuckoo Sandbox. Elle est disponible à l’adresse suivante : http://www.cuckoosandbox.org/. Le principe de Cuckoo Sandbox est simple : elle utilise une machine virtuelle de VirtualBox dans laquelle un agent a été installé, elle démarre cette machine virtuelle, enregistre l’activité du malware, stocke les informations sur la machine hôte et finit par éteindre la machine virtuelle en restaurant un snapshot pour que la machine soit de nouveau propre et opérationnelle pour une nouvelle analyse.
Configuration
La configuration de Cuckoo Sandbox se fait au niveau du répertoire conf/ et principalement grâce au fichier cuckoo.conf.
Voici quelques variables importantes du fichier cuckoo.conf :
-
machinery : cette variable spécifie le type de virtualisation que Cuckoo Sandbox devra supporter. Par défaut, l’application supporte VirtualBox. Mais il est possible d’utiliser Xen ou encore KVM.
-
Ip et port : ces deux variables permettent de configurer le port et l’IP empruntés par les données qui circulent entre la machine virtuelle exécutant le fichier suspect et la machine physique.
-
Connection : cette variable permet de préciser où se trouve la base de données dans laquelle seront stockées les données.
Avant de lancer une première analyse, installez l’agent...
Résumé
Ce chapitre explique comment identifier un malware est d’en réaliser une première analyse. Nous nous sommes arrêtés à l’analyse du code binaire d’une application malveillante. Cette discipline, le reverse engineering, sera présentée dans le prochain chapitre. Elle nécessite de comprendre le code machine afin de comprendre ce que fait le code à analyser.
Le système d’exploitation Microsoft Windows est complexe. Cependant, plusieurs mécanismes utilisés par les malwares permettent de nous aider à les identifier. Une fois qu’ils sont identifiés, la phase d’analyse commence. Nous avons vu comment analyser les vecteurs d’infection les plus répandus et aussi comment analyser des malwares de manière manuelle, mais aussi de manière automatique. Une bonne connaissance de Windows est un réel plus et Internet regorge d’articles permettant de répondre aux questions que vous vous poserez un jour lors de l’analyse du comportement d’un malware.