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

Présentation de x64dbg et marche à suivre pour l’utiliser dans le cadre de l’analyse d’un malware. Cet article est le premier d’une série de 4 centrés sur x64dbg.
Neil Fox
6 minute de lecture
Dernière mise à jour 12 octobre 2023

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

Découvrez vos points faibles et renforcez votre résilience : Effectuez un Test de Préparation à la Ransomware Gratuit

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.

Que dois-je faire maintenant ?

Vous trouverez ci-dessous trois solutions pour poursuivre vos efforts visant à réduire les risques liés aux données dans votre entreprise:

1

Planifiez une démonstration avec nous pour voir Varonis en action. Nous personnaliserons la session en fonction des besoins de votre organisation en matière de sécurité des données et répondrons à vos questions.

2

Consultez un exemple de notre évaluation des risques liés aux données et découvrez les risques qui pourraient subsister dans votre environnement. Cette évaluation est gratuite et vous montre clairement comment procéder à une remédiation automatisée.

3

Suivez-nous sur LinkedIn, YouTube et X (Twitter) for pour obtenir des informations sur tous les aspects de la sécurité des données, y compris la DSPM, la détection des menaces, la sécurité de l’IA et plus encore.

Essayez Varonis gratuitement.

Obtenez un rapport détaillé sur les risques liés aux données basé sur les données de votre entreprise.
Se déploie en quelques minutes.

Keep reading

Varonis tackles hundreds of use cases, making it the ultimate platform to stop data breaches and ensure compliance.

comment-dépacker-un-malware-avec-x64dbg
Comment dépacker un malware avec x64dbg
Cet article explique comment utiliser x64dbg pour procéder à l’ingénierie inverse d’un malware. Continuez votre lecture pour en savoir plus !
mémoire-de-la-pile-:-présentation-(partie-3)
Mémoire de la pile : présentation (partie 3)
Présentation de la mémoire de la pile, description de son architecture et comment l’utiliser pour effectuer une rétro-ingénierie d’un malware à l’aide de x64dbg.
la-chaîne-cybercriminelle-en-8-étapes
La chaîne cybercriminelle en 8 étapes
Comme dans tout bon vieux « casse », il y a plusieurs phases dans le déroulement d’une cyberattaque. Lockheed Martin a dérivé le concept de la chaîne criminelle d’un modèle...
comment-utiliser-ghidra-pour-la-rétro-ingénierie-des-malwares
Comment utiliser Ghidra pour la rétro-ingénierie des malwares
Une présentation de l’outil d’analyse des malwares Ghidra. Cet article explique comment installer et utiliser l’interface Ghidra.