How to Use Ghidra to Reverse Engineer Malware | Varonis (2024)

Les professionnels de la cybersécurité ont à leur disposition de nombreux outils gratuits d’analyse des malwares. Ghidra a fait son apparition il y a quelques années et il a du succès: il s’agit d’un outil gratuit qui permet de désassembler les malwares.

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

Mais beaucoup d’utilisateurs qui ne connaissent pas ce type d’outil ont souvent du mal à apprendre comment se servir de Ghidra. Pas de panique, comme toujours, je suis là pour vous aider!

Dans cet article, vous allez découvrir Ghidra, apprendre comment l’installer et obtenir des conseils utiles qui vous aideront à utiliser cet outil pour l’analyse des malwares.

Si vous êtes novice en matière de rétro-ingénierie des malwares jusqu’à l’analyse du code d’assemblage, je vous recommande de lire les articles que j’ai rassemblés ci-dessous. Ils vous donneront des connaissances solides qui feront de vous un expert en malwares:

  • Qu’est-ce que x64dbg et comment l’utiliser
  • Comment dépacker un malware avec x64dbg
  • Mémoire de la pile: présentation
  • Comment analyser un malware avec x64dbg

Qu’est-ce que Ghidra?

Ghidra est un outil de rétro-ingénierie développé par la NSA, lancé en 2019. Il s’est avéré particulièrement populaire auprès des analystes de malwares, car il s’agit d’un outil de désassemblage. Grâce à lui, les analystes de malwares peuvent inspecter le fonctionnement d’un échantillon de malware sans l’exécuter, un avantage très utile qui leur permet de parcourir le code et de déterminer ses effets.

La différence entre Ghidra et un outil comme x64dbg, c’est que ce dernier est un débogueur. En d’autres termes, il exécute réellement le malware pendant l’observation et l’analyse du code. Ainsi, si vous trouvez une fonction intéressante dans x64dbg, qui chiffre tous les fichiers par exemple, l’outil l’exécute et chiffre tous les fichiers de la machine utilisée pour l’analyse du malware.

Un outil de désassemblage comme Ghidra n’exécute pas le code, il cartographie le code d’assemblage du malware et permet à l’utilisateur de parcourir le code dans tous les sens sans affecter le système de fichiers de l’appareil utilisé pour l’analyse. Cela fait de Ghidra un outil idéal pour identifier et cartographier les fonctions susceptibles d’intéresser les analystes de malwares.

Avertissem*nt: Ghidra doit être utilisé dans une sandbox, par exemple une machine virtuelle conçue pour l’analyse des malwares. N’essayez en aucun cas d’analyser des malwares avec cet outil sur votre système d’exploitation hôte.

Comment installer Ghidra

Pour installer Ghidra sous Windows, accédez au site Web officiel de Ghidra. La page suivante s’affiche:

How to Use Ghidra to Reverse Engineer Malware | Varonis (1)

Cliquez sur le bouton «Download from Github», ce qui vous redirigera vers la page Github de Ghidra, où vous pourrez télécharger la version la plus récente du logiciel.

How to Use Ghidra to Reverse Engineer Malware | Varonis (2)

Téléchargez le fichier zip et extrayez-en le contenu à l’emplacement de votre choix. Une fois l’opération effectuée, vous devez disposer des fichiers suivants:

How to Use Ghidra to Reverse Engineer Malware | Varonis (3)

Pour lancer Ghidra, double-cliquez sur le fichier batch Windows nommé «ghidraRun». Le message d’erreur suivant peut s’afficher:

How to Use Ghidra to Reverse Engineer Malware | Varonis (4)

Dans ce cas, suivez les étapes de ma vidéo pour résoudre rapidement le problème.

Une fois le logiciel ouvert, les fenêtres suivantes s’affichent: la fenêtre «Active Project» et la fenêtre «Tip of the Day». Vous pouvez fermer cette dernière sans trop vous attarder.

How to Use Ghidra to Reverse Engineer Malware | Varonis (5)

Pour commencer à utiliser Ghidra pour analyser un échantillon, vous devez d’abord créer un projet qui sera utilisé pour le stocker ainsi que tous les fichiers générés par Ghidra.

Pour commencer, sélectionnez «File», puis «New Project».

How to Use Ghidra to Reverse Engineer Malware | Varonis (6)

Indiquez si vous souhaitez partager le projet ou non. Dans cet exemple, je vais choisir «Non-Shared Project» pour ne pas le partager, puis je vais cliquer sur «Next».

How to Use Ghidra to Reverse Engineer Malware | Varonis (7)

Nommez le projet, en utilisant par exemple le nom de l’échantillon de malware analysé, et cliquez sur «Finish». Dans cet exemple, j’ai nommé mon projet «Varonis Demo».

How to Use Ghidra to Reverse Engineer Malware | Varonis (8)

Notre nouveau projet est prêt et nous pouvons y déposer des échantillons de malware pour les analyser.

How to Use Ghidra to Reverse Engineer Malware | Varonis (9)

Dans l’image ci-dessus, nous pouvons voir un fichier ajouté au projet nommé «remcos.exe». Ghidra nous indique qu’il a identifié le fichier comme un fichier PE Windows 32bits.

Cliquez sur OK et Ghidra commencera l’importation du fichier. La barre d’état suivante s’affiche:

How to Use Ghidra to Reverse Engineer Malware | Varonis (10)

Une fois le fichier importé dans Ghidra, une fenêtre contenant des informations sur ce dernier s’affiche.

How to Use Ghidra to Reverse Engineer Malware | Varonis (11)

Sélectionnez «OK», puis double-cliquez sur le nom du malware importé ou appuyez sur l’icône de dragon pour ouvrir l’éditeur de code.

L’invite suivante s’affiche. Elle vous indique que Ghidra n’a pas encore analysé le fichier et vous demande si vous souhaitez le faire maintenant. Sélectionnez «Yes».

How to Use Ghidra to Reverse Engineer Malware | Varonis (12)

Une fenêtre relative aux options d’analyse apparaît. Dans cette dernière, sélectionnez l’option mise en surbrillance: «WindowsPE x86 Propagate External Parameters». Cette option est utile pour analyser une fonction importée, car les paramètres de la fonction qui seront poussés sur la pile seront répertoriés dans l’outil.

How to Use Ghidra to Reverse Engineer Malware | Varonis (13)

Sélectionnez «Analyze», et Ghidra commencera à analyser le fichier. La barre d’état dans le coin inférieur droit de Ghidra affichera la progression de l’analyse.

How to Use Ghidra to Reverse Engineer Malware | Varonis (14)

Une fois l'analyse terminée, vous pouvez commencer la rétro-ingénierie de l’échantillon de malware dans Ghidra.

Rétro-ingénierie avec Ghidra

Dans Ghidra, lorsque vous ouvrez un malware importé et analysé par l’outil, un certain nombre de fenêtres s’affiche.

Fenêtres principales de Ghidra

Dans le coin supérieur gauche, une fenêtre présente les sections du malware: il s’agit de la section «Program Trees». Si vous avez déjà utilisé un outil comme PeStudio, cela devrait vous sembler familier.

How to Use Ghidra to Reverse Engineer Malware | Varonis (15)

La section «Symbol Tree» est très utile: elle contient les importations, les exportations et les fonctions que le malware utilise pour exécuter ses activités malveillantes.

How to Use Ghidra to Reverse Engineer Malware | Varonis (16)

Dans la branche «Imports», vous pouvez voir les fichiers de bibliothèque importés par le malware. Si vous cliquez sur un fichier DLL, les fonctions associées à cette bibliothèque s’affichent.

How to Use Ghidra to Reverse Engineer Malware | Varonis (17)

En examinant les importations, il est possible d’identifier toutes les fonctions intéressantes utilisées par le malware, ce qui est très utile pour les analystes. Nous pouvons double-cliquer sur ces importations pour voir si elles sont utilisées par le malware et essayer de comprendre quelle action il peut exécuter sur un hôte compromis.

Il en va de même avec l’onglet Exports, qui permet de voir quelles fonctionnalités ont été exportées par le programme. Toutefois, il n’y a pas d’exportations dans le malware de cette démo.

La section «Symbol Tree» contient toutes les fonctions écrites par l’auteur du malware. Lorsque Ghidra importe et analyse ce dernier, il tente d’attribuer un nom à certaines fonctions sur la base de l’analyse automatisée qu’il a effectuée. Dans l’image ci-dessous, l’une des fonctions est nommée «CreateToolhelp32Snapshot». Il s’agit du nom d’une fonction importée utilisée pour énumérer les processus en cours d’exécution sur un appareil. Ghidra a donc repéré l’utilisation de l’importation dans cette fonction et l’a nommée en conséquence.

How to Use Ghidra to Reverse Engineer Malware | Varonis (18)

Nous pouvons également voir que certaines fonctions suivent une convention de dénomination générique qui commence par le préfixe «FUN_», suivi d’une série de chiffres. Il s’agit de fonctions qui n’ont pas été définies par Ghidra et qui sont nommées «FUN_» pour «function». On leur attribue une valeur numérique hexadécimale qui représente l’emplacement de la fonction dans le code binaire.

Il existe également une liste « entry », qui représente le point d’entrée du malware. Si vous double-cliquez dessus, la fenêtre « Listing » principale de Ghidra est actualisée et affiche le code d’assemblage au point d’entrée du malware.

How to Use Ghidra to Reverse Engineer Malware | Varonis (19)

Si les informations de l’image ci-dessus ne vous sont pas familières, consultez les ressources répertoriées au début de cet article pour en savoir plus.

Dans l’image ci-dessus, nous pouvons voir les instructions d’assemblage et les informations poussées sur la pile, ainsi que les différents appels effectués. Ces informations nous donnent une idée des effets du malware, avec un accent sur les appels à des API intéressantes, répertoriées dans la fenêtre «Symbol Tree» de Ghidra.

Si vous cliquez sur «entry», la fenêtre «Decompile» est mise à jour et contient maintenant des données. Cette fenêtre indique où Ghidra a tenté de convertir le code d’assemblage de la fenêtre «Listing» en C. L’analyste peut ainsi voir à quoi ressemblait le code de l’auteur et contribuer à l’analyse du malware.

How to Use Ghidra to Reverse Engineer Malware | Varonis (20)

Diagramme des fonctions

Une autre vue qui facilite l’analyse du malware est le diagramme des fonctions, qui peut être utilisé en sélectionnant l’icône «Display Function Graph» dans la barre d’outils de Ghidra.

How to Use Ghidra to Reverse Engineer Malware | Varonis (21)

Cette action ouvre une représentation graphique de la fonction affichée dans la fenêtre «Listing».

How to Use Ghidra to Reverse Engineer Malware | Varonis (22)

Un zoom sur le diagramme permet à l’analyste de voir plus clairement quelles décisions sont prises par le malware et le flux qu’il suit en fonction de certaines conditions.

How to Use Ghidra to Reverse Engineer Malware | Varonis (23)

Dans l’image ci-dessus, j’ai mis en surbrillance l’endroit où j’ai identifié que la fonction appelle «GetStartupInfoA», ce qui m’indique que cette fonction récupère les informations de démarrage de l’appareil compromis.

Un double-clic sur une fonction appelée dans le diagramme redirige l’utilisateur vers cette dernière et met la vue à jour pour montrer la fonction sélectionnée.

Rechercher des chaînes

Si vous cliquez sur l’option «Windows» de la barre d’outils et que vous sélectionnez «Defined Strings», Ghidra affiche la liste des chaînes de l’exécutable.

How to Use Ghidra to Reverse Engineer Malware | Varonis (24)

Cette option est pratique, car les malwares contiennent souvent des chaînes pouvant indiquer les effets du malware une fois l’hôte compromis. Lorsque cette option est sélectionnée, la fenêtre suivante s’affiche:

How to Use Ghidra to Reverse Engineer Malware | Varonis (25)

Ici, nous pouvons voir que le malware peut créer une certaine persistance, car l’emplacement de registre «Software\\Microsoft\\Windows\CurrentVersion\Run» figure dans la liste: un mécanisme de persistance courant pour les malwares.

J’aimerais récupérer l’un des fichiers de la liste, «install.bat», qui pourrait m’intéresser d’après l’analyse du malware. En double-cliquant sur l’une de ces chaînes, vous accédez à leur emplacement dans le fichier binaire. Les vues «Listing», «Decompile» et «Function Graph» peuvent toutes être utilisées pour étudier plus en détail l’emplacement de ces chaînes et l’utilisation que fait le malware de ces données.

Dans l’image ci-dessous, j’ai double-cliqué sur «install.bat». La fenêtre «Listing» affiche désormais l’emplacement de cette chaîne dans le fichier binaire.

How to Use Ghidra to Reverse Engineer Malware | Varonis (26)

Dans l’image ci-dessus, nous pouvons également voir la chaîne «XREF[1]» et le nom de la fonction. Ghidra indique à l’utilisateur qu’il a croisé la chaîne «install.bat» et affiche le nom de la fonction dans laquelle elle se trouve.

En double-cliquant sur le nom de la fonction, celle-ci apparaît dans la fenêtre «Listing» de Ghidra, ainsi que l’emplacement de la chaîne «install.bat».

Pour les besoins de la démonstration, supposons que j’ai analysé cette fonction et que j’ai découvert que le fichier install.bat est créé sur le disque et que lorsqu’il est exécuté, il génère une clé d’exécution qui lance le malware à chaque démarrage de l’hôte compromis. Au vu de l’image ci-dessus, il y a peu de chance que je me souvienne du nom de la fonction « FUN_00040560d ». Donc, pour m’aider dans mon analyse, je vais la renommer.

Pour ce faire, cliquons sur la fonction avec le bouton droit de la souris et sélectionnons «Edit Function».

How to Use Ghidra to Reverse Engineer Malware | Varonis (27)

La fenêtre suivante s’ouvre:

How to Use Ghidra to Reverse Engineer Malware | Varonis (28)

Utilisez le champ «Function Name» pour donner un nom plus simple à mémoriser à la fonction.

How to Use Ghidra to Reverse Engineer Malware | Varonis (29)

Cela est très utile, car le nom de cette fonction est modifié dans l’ensemble du projet Ghidra, comme nous pouvons le voir dans la section «Symbol Tree», sous la branche «Functions»:

How to Use Ghidra to Reverse Engineer Malware | Varonis (30)

Conclusion

Ghidra est un logiciel pratique à avoir dans son arsenal d’outils d’analyse de malwares. Nous espérons que cet article vous a donné un bon aperçu de la manière dont il peut être utilisé pour approfondir l’étude du fonctionnement d’un échantillon de malware spécifique. N’oubliez pas qu’en utilisant un outil comme Ghidra, il peut être très long de commencer l’analyse ligne de code par ligne de code à partir du point d’entrée.

Utilisez plutôt certaines des fonctionnalités présentées dans cet article, et examinez les fonctions importées par le malware. Quelles sont les importations intéressantes, certaines sont-elles utilisées pour se connecter à Internet ou chiffrer des données? Si c’est le cas, déterminez où ces importations sont utilisées dans le malware, et voyez si vous pouvez en identifier les effets. Vous pouvez procéder de la même façon avec les chaînes intéressantes, repérer leur emplacement dans le malware et déterminer ce que le programme fait avec ces données.

En suivant ce principe, vous pourrez enquêter sur les informations vraiment pertinentes plutôt que de vous noyer dans le code d’assemblage.


Vous souhaitez en savoir plus sur la façon dont Varonis peut vous aider à améliorer la posture de sécurité de votre entreprise? Découvrez comment notre solution peut vous aider à lutter contre les menaces internes et garantir la protection des données de votre entreprise.

How to Use Ghidra to Reverse Engineer Malware | Varonis (2024)
Top Articles
Latest Posts
Article information

Author: Arielle Torp

Last Updated:

Views: 6464

Rating: 4 / 5 (41 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Arielle Torp

Birthday: 1997-09-20

Address: 87313 Erdman Vista, North Dustinborough, WA 37563

Phone: +97216742823598

Job: Central Technology Officer

Hobby: Taekwondo, Macrame, Foreign language learning, Kite flying, Cooking, Skiing, Computer programming

Introduction: My name is Arielle Torp, I am a comfortable, kind, zealous, lovely, jolly, colorful, adventurous person who loves writing and wants to share my knowledge and understanding with you.