Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
astaroth-deobfuscator — Script python IDA pour désobfusquer la DLL injecteur Astaroth/Guildma | Kitploit
Outils/GitHubGitHub/dodo-sec/astaroth-deobfuscator
Analyse StatiqueRétro-ingénierieAnalyse de MalwareAnalyse de Binaires
GitHubdodo-sec/astaroth-deobfuscator

astaroth-deobfuscator

Script python IDA pour désobfusquer la DLL injecteur Astaroth/Guildma

Voir le dépôt
814il y a 3 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

astaroth-deobfuscator

Script Python d'IDA pour désobfusquer la DLL injecteur Astaroth/Guildma

En essayant d'analyser la DLL injecteur d'une récente campagne Astaroth/Guildma (grâce à ce journal du SANS ISC), je suis tombé sur une tentative d'obfuscation vraiment agaçante.

Une fonction (que j'ai nommée time_waster_3000 sur l'image ci-dessous) est appelée plus de 1 000 fois (!!!) dans toute la DLL. Cette fonction prend six chaînes codées en dur comme arguments, ainsi qu'un word aléatoire. La fonction elle-même est un dédale d'opérations arithmétiques qui ne servent à aucune fin pratique pour autant que je puisse en juger (si ce n'est à faire perdre du temps à un reverser). Voici à quoi ressemble DLLEntry avec ces agaçants appels en place :

Entrée de la DLL avant désobfuscation

Le but de ce script Python d'IDA est de masquer tous les blocs de code qui impliquent un appel à cette fonction parasite, ainsi que ses arguments. Voici à quoi ressemble DLLEntry après l'exécution du script :

Entrée de la DLL après désobfuscation

Considérations importantes

  • Le script fonctionne en trouvant un appel à la fonction de bourrage, représentée par call sub_CHANGEME dans le script. Par conséquent, vous devez la renommer dans le script avec le nom de fonction trouvé sur l'échantillon que vous traitez. Par exemple, changer idc.print_operand(x, 0) == 'sub_CHANGEME' en idc.print_operand(x, 0) == 'sub_431000'.

  • J'ai choisi d'itérer sur l'instruction call sub_CHANGEME plutôt que sur les pushs d'arguments. La raison est simple : les chaînes codées en dur sont présentes à plusieurs endroits dans le binaire ; par conséquent, lorsque j'ai essayé de rechercher par instructions push impliquant les offsets de ces chaînes, le script ne trouvait pas toutes les instances de ces données parasites.

  • Le script fonctionnait à l'origine en masquant chaque instance du passage d'arguments et de l'appel à la fonction de bourrage comme un bloc replié. Comme la fonction est appelée plusieurs fois d'affilée, cela entraînait d'énormes espaces vides dans la vue de désassemblage. Je l'ai mis à jour pour masquer les instances séquentielles de ce bourrage dans un seul bloc replié, ce qui améliore vraiment la lisibilité.

Télécharger l’outil