
Kit complet pour Ghidra headless.
Ce projet était vraiment amusant et mon premier « gros » projet ! Des solutions meilleures, plus intelligentes et plus robustes existent désormais : https://github.com/LaurieWired/GhidraMCP
À plus, space-cowboy
Cette boîte à outils Ghidra est une suite complète d’outils conçue pour rationaliser et automatiser diverses tâches liées à l’exécution de Ghidra en mode Headless. Cette boîte à outils fournit une large gamme de scripts pouvant être exécutés à la fois à l’intérieur et à côté de Ghidra, permettant aux utilisateurs d’effectuer des tâches telles que la recherche de vulnérabilités, le commentaire de pseudo-code avec ChatGPT et la génération de rapports avec visualisation des données sur la base de code analysée. Elle permet à l’utilisateur de charger et d’enregistrer ses propres scripts et d’interagir avec l’API intégrée du script.
Automatisation du mode Headless : La boîte à outils permet aux utilisateurs de lancer et d’exécuter Ghidra en mode Headless de manière transparente, permettant un traitement automatisé et par lots des tâches d’analyse de code.
Référentiel / Gestion de scripts : La boîte à outils comprend un référentiel de scripts préconstruits pouvant être exécutés dans Ghidra. Ces scripts couvrent diverses fonctionnalités, permettant aux utilisateurs d’effectuer des tâches d’analyse et de manipulation variées. Elle permet aux utilisateurs de charger et d’enregistrer leurs propres scripts, offrant ainsi flexibilité et options de personnalisation pour leurs besoins d’analyse spécifiques. Les utilisateurs peuvent facilement gérer et organiser leur collection de scripts.
Options d’entrée flexibles : Les utilisateurs peuvent utiliser la boîte à outils pour analyser des fichiers individuels ou des dossiers entiers contenant plusieurs fichiers. Cette flexibilité permet une analyse efficace des bases de code à petite et à grande échelle.
Avant d’utiliser ce projet, assurez-vous d’avoir installé les logiciels suivants :
pip install sekiryu.Pour utiliser le script, vous pouvez simplement l’exécuter contre un binaire avec les options que vous souhaitez exécuter.
sekiryu [-F FICHIER][OPTIONS]Veuillez noter que l’analyse d’un binaire avec Ghidra (ou tout autre produit) est un processus relativement lent. Par conséquent, attendez-vous à ce que l’analyse du binaire prenne plusieurs minutes en fonction des performances de l’hôte. Si vous exécutez Sekiryu sur une très grande application ou un grand nombre de fichiers binaires, préparez-vous à ATTENDRE
Le fichier « server.py » est essentiellement conçu pour permettre aux scripts d’interagir entre eux et avec le système hôte via Ghidra.
Un utilisateur peut facilement développer son propre script, le charger et le sauvegarder dans le dossier des scripts, et utiliser les fonctions
connues de l’API pour interagir avec Ghidra.
Pour l’utiliser, l’utilisateur doit importer xmlrpc dans son script et appeler la fonction comme par exemple : proxy.send_data
Les scripts sont sauvegardés dans le dossier /modules/scripts/ ; vous pouvez simplement copier votre script ici.
Dans le fichier ghidra_pilot.py, vous trouverez la fonction suivante qui est responsable de l’exécution d’un script Ghidra headless :
def exec_headless(file, script):
"""
Exécute l’analyse headless de ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Définition des variables
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Exécution de ghidra avec le fichier et le script spécifiés
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
L’utilisation est assez simple : vous pouvez créer votre propre script puis ajouter une fonction dans ghidra_pilot.py comme ceci :
def votre_fonction(fichier):
try:
# Définition du script
script = "modules/scripts/votre_script.py"
# Démarrage de la fonction exec_headless dans un nouveau thread
thread = threading.Thread(target=exec_headless, args=(fichier, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
Le fichier cli.py est responsable de l’interface en ligne de commande et vous permet d’ajouter des arguments et des commandes associées comme ceci :
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Votre message d’aide", action="store_true")
Le module xmlrpc.server n’est pas sécurisé contre les données malicieusement construites. Si vous devez analyser
des données non fiables ou non authentifiées, consultez les vulnérabilités XML.
Pour plus d’informations sur Bushido Security, veuillez visiter notre site web : https://www.bushido-sec.com/.