Cette boîte à outils Ghidra est une suite complète d'outils conçus pour rationaliser et automatiser diverses tâches associées à l'exécution de Ghidra en mode sans tête. Cette boîte à outils fournit une large gamme de scripts qui peuvent être exécutés à la fois dans et avec Ghidra, permettant aux utilisateurs d'effectuer des tâches telles que la recherche de vulnérabilités, les commentaires de pseudo-code avec ChatGPT et le reporting avec visualisation de données sur la base de code analysée. Il permet à l'utilisateur de charger et d'enregistrer son propre script et d'interagir avec l'API intégrée du script.
Automatisation du mode sans tête : la boîte à outils permet aux utilisateurs de lancer et d'exécuter de manière transparente Ghidra en mode sans tête, 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édéfinis qui peuvent être exécutés dans Ghidra. Ces scripts couvrent une variété de fonctionnalités, permettant aux utilisateurs d'effectuer diverses tâches d'analyse et de manipulation. Il permet aux utilisateurs de charger et d'enregistrer leurs propres scripts, offrant ainsi des options de flexibilité et de personnalisation adaptées à leurs besoins d'analyse spécifiques. Les utilisateurs peuvent facilement gérer et organiser leur collection de scripts.
Options de saisie 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.
Recherche de vulnérabilités avec reconnaissance de formes : exploitez les scripts de la boîte à outils pour identifier les vulnérabilités potentielles dans la base de code en cours d'analyse. Cela aide les chercheurs et les développeurs en sécurité à découvrir les faiblesses de sécurité et à y remédier de manière proactive.
Chasse aux vulnérabilités avec SemGrep : Grâce au chercheur en sécurité 0xdea et à l'ensemble de règles qu'il a créé, nous pouvons utiliser des règles simples et SemGrep pour détecter les vulnérabilités dans le pseudo-code C/C++ (leur github : https://github.com/0xdea/semgrep -règles)
Génération automatique de pseudo-code : générez automatiquement un pseudo-code dans le mode sans tête de Ghidra. Cette fonctionnalité aide à comprendre et à documenter la logique du code sans intervention manuelle.
Commentaire de pseudo-code avec ChatGPT : améliorez la lisibilité et la compréhension de la base de code en utilisant ChatGPT pour générer des commentaires de type humain pour les extraits de pseudo-code. Cette fonctionnalité aide à documenter et à expliquer la logique du code.
Rapports et visualisation des données : générez des rapports complets avec des visualisations pour résumer et présenter efficacement les résultats de l'analyse. La boîte à outils fournit des fonctionnalités de visualisation de données pour aider à identifier les modèles, les dépendances et les anomalies dans la base de code.
Avant d'utiliser ce projet, assurez-vous que les logiciels suivants sont installés :
Ghidra : vous pouvez télécharger Ghidra à partir du référentiel GitHub de la National Security Agency @ https://github.com/NationalSecurityAgency/ghidra
Java : assurez-vous que la version 17 ou supérieure du kit de développement Java (JDK) est installée. Vous pouvez le télécharger depuis le site Web d'OpenJDK @ https://openjdk.org/projects/jdk/17/
BinExport (OPTIONNEL) Suivez les instructions pour installer l'extension Ghidra https://github.com/google/binexport
SemGrep (OPTIONNEL) Suivez les instructions détaillées https://semgrep.dev/docs/getting-started/
Installez les pré-requis mentionnés ci-dessus.
Téléchargez la version Sekiryu directement depuis Github ou utilisez : pip install sekiryu
.
Pour utiliser le script, vous pouvez simplement l'exécuter sur un binaire avec les options que vous souhaitez exécuter.
sekiryu [-F FILE][OPTIONS]
Veuillez noter que réaliser une analyse binaire avec Ghidra (ou tout autre produit) est un processus relativement lent . Attendez-vous donc à ce que l'analyse binaire prenne plusieurs minutes en fonction des performances de l'hôte. Si vous exécutez Sekiryu sur une très grande application ou une grande quantité de fichiers binaires, soyez prêt à ATTENDRE
Retrouvez la démo sur www.bushido-sec.com
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
Pour l'utiliser l'utilisateur doit importer xmlrpc dans son script et appeler la fonction comme par exemple : proxy.send_data
send_data() - Permet à l'utilisateur d'envoyer des données au serveur. ("data" est un dictionnaire)
recv_data() - Permet à l'utilisateur de recevoir des données du serveur. ("data" est un dictionnaire)
request_GPT() - Permet à l'utilisateur d'envoyer des données de chaîne via l'API ChatGPT.
Les scripts sont enregistrés dans le dossier /modules/scripts/ vous pouvez simplement y copier votre script. Dans le fichier ghidra_pilot.py
vous pouvez trouver la fonction suivante qui est chargée d'exécuter un script ghidra sans tête :
def exec_headless(file, script): """ Exécuter l'analyse sans tête de ghidra """path = ghidra_path + 'analyzeHeadless'# Définition des variablestmp_folder = "/tmp/out"os.mkdir(tmp_folder) cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ fichier + ' '+ "-postscript "+ script +" -deleteProject"# Exécution de ghidra avec le fichier et le script spécifiés : p = subprocess.run([str(path + cmd)], shell=True, capture_output=True) os.rmdir(tmp_folder) sauf KeyError comme e : print(e) os.rmdir(tmp_folder)
L'utilisation est assez simple, vous pouvez créer votre propre script puis simplement ajouter une fonction dans ghidra_pilot.py
telle que :
def yourfunction(file): try: # Setting scriptscript = "modules/scripts/your_script.py"# Démarrez la fonction exec_headless dans un nouveau threadthread = threading.Thread(target=exec_headless, args=(file, script)) thread.start () thread.join() sauf exception comme e : print(str(e))
Le fichier cli.py
est responsable de l'interface de ligne de commande et vous permet d'ajouter un argument et une commande associés comme ceci :
Analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Votre message d'aide", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS : Cet outil est conçu pour être une boîte à outils permettant à l'utilisateur de sauvegarder et d'exécuter facilement son propre script, évidemment si vous pouvez contribuer à n'importe quel type de script (tout ce qui est intéressant sera approuvé !)
Optimisation : tout type d'optimisation est le bienvenu et sera presque automatiquement approuvé et déployé à chaque version. Certaines choses intéressantes pourraient être : améliorer les tâches parallèles, le nettoyage du code et l'amélioration globale.
Analyse des logiciels malveillants : c'est une partie importante que je ne connais pas. Tout analyste de logiciels malveillants désireux de contribuer peut suggérer une idée, un script ou même valider du code directement dans le projet.
Reporting : je ne suis pas un ingénieur en visualisation de données, si quelqu'un est prêt à améliorer/contribuer sur cette partie, ce sera très sympa.
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Pour plus d'informations sur Bushido Security, veuillez visiter notre site Web : https://www.bushido-sec.com/.