Inside Out - Blog CyberSécurité Blog   /  

Qu’est-ce que x64dbg et comment l’utiliser

Qu’est-ce que x64dbg et comment l’utiliser | Varonis

x64dbg est un débogueur open source pour Windows souvent utilisé pour analyser des malwares. Un débogueur permet de suivre l’exécution du code étape par étape et permet ainsi de visualiser exactement ce qu’il fait. Les débogueurs sont essentiels pour éliminer les bugs, mais ils permettent aussi d’effectuer une ingénierie inverse des malwares. Cet article est le premier d’une série de 4 publications consacrées à cet outil :

  • Partie 1 : Qu’est-ce que x64dbg et comment l’utiliser
  • Partie 2 : Comment dépacker un malware avec x64dbg
  • Partie 3 : Mémoire de la pile : présentation
  • Partie 4 : Tutoriel d’utilisation de x64dbg

Présentation de x64dbg

À la différence du programmeur qui a accès à son propre code source lors du débogage, les analystes de malwares travaillent généralement sur du code assembleur compilé (par exemple un fichier Windows .exe ou .dll). L’assembleur est un langage de programmation bas niveau, conçu pour une architecture informatique spécifique, par exemple l’architecture 64 bits, qui a donné son nom à x64dbg. Cet outil existe également pour l’architecture 32 bits sous le nom de x32dbg. Il est rare qu’un analyste commence son étude d’un malware avec un débogueur. Dans un premier temps, ils effectuent plutôt une analyse statique et peuvent même exécuter le malware dans une machine virtuelle à l’aide d’outils d’analyse comportementale pour tenter de comprendre ses activités. Un débogueur peut être utilisé dans un deuxième temps pour dépacker le malware, puis analyser son fonctionnement précis, un processus nommé ingénierie inverse.

Comment installer x64dbg

3 étapes d’installation de l’outil d’analyse de malwares x64dbg L’outil peut être téléchargé depuis un site officiel, https://x64dbg.com/, et son installation est très simple.

  • Attention : n’essayez pas d’analyser un malware sans avoir mis en place un environnement virtualisé sécurisé. x64dbg ne doit pas être installé sur votre machine hôte pour analyser des malwares.

Téléchargez la dernière version, disponible au format ZIP sur la page téléchargement du site. Le contenu de l’archive peut être extrait dans le dossier de votre choix. Les fichiers binaires sont autonomes et permettent de lancer le logiciel directement, sans passer par des étapes d’installation. Comme nous l’avons mentionné précédemment, il existe deux versions de l’outil : un pour les fichiers binaires 64 bits, l’autre pour les fichiers binaires 32 bits. Une troisième option est proposée, la version x96 (32+64). Elle simplifie le choix de l’utilisateur en lui permettant de faire glisser un malware sur son icône et en lançant automatiquement la bonne version du débogueur après avoir vérifié l’architecture.

À quoi servent les différentes fenêtres ?

capture d’écran de x64dbg  Lorsque vous ouvrez un malware dans x64dbg, l’interface du logiciel peut vous paraître excessivement complexe au premier abord. Il comporte 6 zones principales : 5 fenêtres et la barre d’outils principale, illustrée ci-dessous.

Barre d’outils principale de x64dbg

capture d’écran de la barre d’outils principale de x64dbg  La partie supérieure de la fenêtre indique le nom du fichier en cours d’analyse (267.exe), l’ID du processus alloué par le système d’exploitation et le module en cours d’analyse (nous expliquerons l’intérêt des modules dans un prochain article). Les icônes de la barre d’outils sont essentielles pour explorer le code assembleur du malware. Les plus intéressantes pour un débutant sont illustrées dans l’image ci-dessous. capture d’écran des icônes de la barre d’outils principale de x64dbg Les premières icônes parlent d’elles-mêmes :

  • L’icône de dossier permet d’ouvrir un fichier à analyser.
  • La flèche circulaire permet de revenir au début du programme.
  • L’icône d’arrêt stoppe le programme s’il est en cours d’exécution dans x64dbg.
  • L’icône de flèche lance l’exécution du programme.
  • L’icône de pause met en pause le programme.

Les icônes souvent utilisées pour l’analyse d’un malware sont les deux dernières. La première est une flèche pointant vers le bas et sous laquelle figure un petit cercle. Il s’agit du bouton Step Into. L’icône suivante correspond au bouton Step Over. Les malwares sont composés de nombreuses fonctions écrites ou importées par leurs auteurs. Pour analyser une fonction donnée, l’analyste doit donc y accéder (bouton Step Into) pour en visualiser le code assembleur. De la même façon, une fonction qui ne l’intéresse pas peut être passée (bouton Step Over). Ne vous inquiétez pas si ces notions ne vous paraissent pas encore claires. Nous y reviendrons en détail dans un prochain article. La ligne d’onglets en bas de l’image renferme diverses vues et données visant à faciliter l’analyse. capture d’écran d’une ligne d’onglets au bas de x64dbg Les onglets clés sont les suivants :

  • CPU : affiche le code assembleur de haut en bascapture d’écran du code assembleur dans x64dbg
  • Graphique : affiche une vue graphique permettant à l’utilisateur de visualiser quelle fonction est appelée par une autre. Il s’agit d’une fonction similaire à celle proposée pour d’autres outils tels que IDAPro et Ghidra.capture d’écran d’un diagramme dans x64dbg
  • Points d’arrêt : il est possible de rechercher des instructions ou chaînes susceptibles de vous intéresser et d’y placer des points d’intérêt. x64dbg permet alors d’exécuter le programme jusqu’à ces points d’intérêt pour faciliter l’analyse. L’image ci-dessous présente des points d’arrêt définis pour les fonctions Windows « CreateDirectoryW » et « WriteFile »capture d’écran des points d’arrêt dans x64dbg.
  • Sections mémoire : cette rubrique indique quelles données sont stockées en mémoire et les adresses de ces données. Dans l’exemple ci-dessous, la section « .text » du malware en cours d’analyse se situe à l’adresse « 00F21000 ». La colonne « Protection » indique également si cette zone de la mémoire est accessible pour exécution (E), lecture (R) ou écriture (W). Cette information vous sera utile lorsque j’expliquerai comment utiliser la carte de la mémoire pour dépacker un malware.capture d’écran d’une carte de la mémoire dans x64dbg
  • Pile d’appels : cette section est utile lorsqu’un point d’arrêt a été défini sur une fonction spécifique de Windows. Dans une des images précédentes, le point d’arrêt était défini sur « CreateDirectoryW ». Ainsi, chaque fois que le malware commençait à créer un répertoire sur l’appareil compromis, ce point d’arrêt se déclenchait et x64dbg s’arrêtait sur cette fonction. À l’aide de la pile d’appels, je peux voir quel code écrit par l’auteur du malware appelle la fonction « CreateDirectoryW ».

capture d’écran d’une pile d’appels dans x64dbg

Fenêtre principale de x64dbg

capture d’écran de la fenêtre principale de x64dbg La fenêtre principale de x64dbg reprend le contenu de l’onglet sélectionné. Par défaut, il s’agit de l’onglet CPU, qui contient les instructions en langage assembleur. La première colonne contient l’EIP, à savoir le pointeur de l’instruction. Il indique tout simplement quelle partie du code sera exécutée ensuite. La deuxième colonne contient les adresses du fichier binaire dans lesquelles se trouvent les instructions. Dans l’exemple ci-dessus, l’EIP pointe vers l’adresse « 0138CD97 ». La troisième colonne correspond à la représentation hexadécimale de l’instruction figurant dans la quatrième colonne. La quatrième colonne, justement, indique l’endroit où sont situées les instructions en langage assembleur. Dans l’exemple ci-dessus, l’EIP pointe vers l’instruction devant s’exécuter ensuite, « push ebp ». La cinquième colonne renferme des données renseignées par x64dbg ou des notes saisies par l’analyste. Dans l’exemple ci-dessus, nous pouvons voir que « 0138CD97 » est le point d’entrée du malware, ce qui signifie qu’il s’agit du début du code du malware et du début de la fonction principale. C’est la troisième colonne, celle qui contient les instructions en langage assembleur, qui est probablement la plus importante, car ce sont ces données qu’un analyste utilise pour comprendre l’activité du malware. Quelques instructions fréquentes :

  • PUSH : envoie une valeur sur la pile
  • POP : retire une valeur de la pile
  • CALL : exécute une fonction
  • RET : renvoie la valeur d’une fonction terminée
  • JMP : accède à une adresse
  • CMP : compare deux valeurs
  • MOV : déplace des données
  • ADD : ajoute une valeur
  • SUB : soustrait une valeur

Fenêtre de x64dbg relative aux registres

capture d’écran d’une fenêtre x64dbg relative aux registres La fenêtre suivante contient des informations en lien avec les registres. Les registres permettent à un programme de stocker des données auxquelles ils peuvent par la suite facilement faire référence pour les réutiliser. Certains d’entre eux ont des utilisations spécifiques.

  • EAX : addition, multiplication et renvoi de valeurs
  • EBX : registre générique utilisé pour diverses opérations
  • ECX : compteur
  • EDX : registre générique utilisé pour diverses opérations
  • EBP : référencement d’argument et de variables locales
  • ESP : pointage vers le dernier argument de la pile
  • ESI/EDI : instructions de transfert de mémoire

L’EIP n’est pas un registre, mais un pointeur d’instruction qui pointe vers l’instruction en cours dans x64dbg. Ce champ contient l’adresse de l’instruction.

Fenêtre de x64dbg liée à la mémoire de la pile

capture d’écran d’une fenêtre x64dbg relative à la mémoire de la pile La troisième fenêtre contient les paramètres envoyés sur la pile. Ce point sera couvert en détail dans un article approfondi sur le fonctionnement de la mémoire de la pile.

Fenêtre de x64dbg contenant la pile et les données

capture d’écran d’une fenêtre x64dbg contenant la pile et les données La quatrième fenêtre contient la pile et les données envoyées sur la pile, ainsi que les adresses mémoires auxquelles elles sont mappées. Ce point sera lui aussi couvert en détail dans un prochain article.

Fenêtre de x64dbg contenant les données de vidage

capture d’écran d’une fenêtre x64dbg contenant des données de vidage La sixième et dernière fenêtre contient les données de vidage. Cette fenêtre permet à l’utilisateur de visualiser les données stockées dans un registre ou résidant à une certaine adresse. Tout ceci peut faire beaucoup au premier abord, mais cet article devrait vous aider à bien comprendre ce qu’est x64dbg et à l’utiliser. Dans les prochains articles, j’expliquerai la méthodologie que j’utilise pour effectuer l’ingénierie inverse d’un malware, ce qu’est la mémoire de la pile et comment x64dbg l’utilise, et je présenterai de manière pratique avec quelques malwares comment effectuer l’ingénierie inverse. Pour toute information concernant les bonnes pratiques à suivre pour se prémunir des malwares, sachez que Varonis propose des essais et didacticiels gratuits pour DatAlert, un outil de détection des menaces basé sur l’analyse comportementale qui tire parti de l’apprentissage automatique pour identifier les menaces présentes dans votre environnement.

Nous sommes Varonis.

Depuis 2005, nous protégeons les données les plus précieuses du monde des mains de vos ennemis grâce à notre plateforme de sécurité des données, leader sur le marché.

Comment fonctionne Varonis ?