Un plugin avancé alimenté par LLM pour l'assistance interactive en rétro-ingénierie dans Ghidra.
Description
GhidrAssist intègre les grands modèles de langage (LLM) dans Ghidra pour fournir une assistance intelligente pour l'exploration binaire et la rétro-ingénierie. Il prend en charge toute API compatible OpenAI v1, y compris les modèles locaux (Ollama, LM-Studio, Open-WebUI) et les fournisseurs cloud (OpenAI, Anthropic, Azure).
Fonctionnalités clés
Fonctionnalités principales :
Explication de code - Explique les fonctions et instructions à la fois en désassemblage et en pseudo-C décompilé
Panneau d'analyse de sécurité affichant le niveau de risque, le profil d'activité et l'utilisation de l'API
Résumés modifiables avec protection contre l'écrasement automatique
Chat interactif - Requêtes conversationnelles multi-tours avec historique persistant
Requêtes personnalisées - Requêtes directes au LLM avec contexte facultatif de la fonction/emplacement actuel
Système de connaissances Graph-RAG :
Graphe de connaissances sémantique - Représentation hiérarchique de l'analyse binaire
Hiérarchie sémantique à 5 niveaux : Déclaration → Bloc → Fonction → Module → Binaire
Les résumés pré-calculés par LLM permettent des requêtes rapides sans LLM
Persistance SQLite avec algorithmes de graphe JGraphT
Recherche en texte intégral (FTS5) sur les résumés et annotations de sécurité
Détection de communautés - Découverte automatique de modules via l'algorithme de Leiden
Regroupe les fonctions connexes en modules logiques
Structure de communauté hiérarchique avec résumés
Exploration visuelle du graphe avec profondeur configurable
Extraction de caractéristiques de sécurité - Analyse de sécurité complète
API réseau : sockets POSIX, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
API d'E/S fichier : POSIX, Windows, fonctions de la bibliothèque C
API de chiffrement : OpenSSL, Windows crypto, spécifiques à la plateforme
Motifs de chaînes : adresses IP, URL, domaines, chemins de fichiers, clés de registre
Classification du niveau de risque (FAIBLE/MOYEN/ÉLEVÉ) et profilage d'activité
Onglet Graphe sémantique - Interface de graphe de connaissances visuelle
Vue graphe avec exploration en profondeur N-sauts
Vue liste de toutes les fonctions indexées
Recherche sémantique dans les résumés
Ré-indexation et analyse de sécurité en un clic
Fonctionnalités avancées :
Contrôle de la réflexion/raisonnement étendu - Ajuster la profondeur de raisonnement du LLM pour équilibrer qualité et vitesse
Prise en charge d'OpenAI o1/o3/o4, Claude avec réflexion étendue, et modèles de raisonnement locaux
Assurez-vous que les chemins des bases de données RLHF et RAG sont appropriés pour votre environnement.
Pointez l'hôte API vers votre fournisseur d'API préféré et définissez la clé API.
(Facultatif) Dans l'onglet Options d'analyse, définissez le niveau d'effort de raisonnement (Aucun/Faible/Moyen/Élevé) pour les modèles prenant en charge la réflexion étendue.
Ouvrez GhidrAssist avec l'option GhidrAssist dans le menu Fenêtres et commencez à explorer.
Configuration du LLM
GhidrAssist fonctionne avec toute API compatible OpenAI v1. Les détails de configuration sont spécifiques au fournisseur - voici quelques ressources utiles :
Fournisseurs LLM locaux :
LM Studio - Hébergement local facile de modèles avec interface graphique
Ollama - Gestion locale de modèles en ligne de commande
Open-WebUI - Interface web pour les modèles locaux
Moyen : Profondeur de raisonnement équilibrée (~15-30s, coût modéré)
Élevé : Analyse de sécurité approfondie (~30-60s, coût x2, recommandé pour la recherche de vulnérabilités)
Remarque : Le mode agentique nécessite des modèles avec des capacités solides d'appel de fonctions et de raisonnement multi-étapes. Les modèles plus petits peuvent avoir des difficultés avec les investigations complexes. La réflexion étendue est facultative mais peut améliorer considérablement la qualité de l'analyse pour les tâches complexes de rétro-ingénierie.
Utilisation de GhidrAssistMCP pour l'analyse basée sur des outils
GhidrAssistMCP fournit des outils MCP qui permettent au LLM d'interagir directement avec les capacités d'analyse de Ghidra.
Ajoutez le serveur : http://127.0.0.1:8081 en tant que GhidrAssistMCP avec le type de transport SSE
Activer MCP dans les requêtes :
Dans l'onglet Requête personnalisée, cochez "Utiliser MCP"
Activez éventuellement "Agentique" pour le mode d'investigation autonome
Modes d'utilisation
Requêtes MCP classiques :
Activez la case à cocher "Utiliser MCP"
Posez des questions comme "Que fait la fonction actuelle ?"
Le LLM peut appeler des outils pour obtenir la décompilation, les références croisées, etc.
Mode agentique (recommandé) :
Activez les deux cases à cocher "Utiliser MCP" et "Agentique"
Posez des questions complexes comme "Trouver les vulnérabilités dans cette fonction" ou "Analyser le graphe d'appels"
L'agent ReAct va :
Proposer des étapes d'investigation sous forme de liste de tâches
Exécuter systématiquement des outils pour recueillir des informations
Suivre la progression et accumuler les résultats
Synthétiser une réponse complète avec des preuves
Exemples de requêtes :
"Quelles vulnérabilités de sécurité existent dans cette fonction ?"
"Tracer le flux de données de l'entrée utilisateur à cet appel"
"Trouver toutes les fonctions qui modifient la variable globale X"
"Analyser la gestion des erreurs dans la fonction actuelle"
Utilisation du graphe sémantique (Graph-RAG)
L'onglet Graphe sémantique fournit une interface de graphe de connaissances pour explorer les résultats d'analyse binaire sans nécessiter d'appels LLM pour chaque requête.
Pour commencer
Indexer le binaire :
Ouvrez l'onglet Graphe sémantique
Cliquez sur "Réindexer le binaire" pour extraire les relations structurelles
Cliquez sur "Analyse sémantique" pour générer des résumés LLM (nécessite une API)
La progression est affichée dans la barre d'état
Explorer le graphe :
Vue liste : Parcourir toutes les fonctions indexées avec leurs résumés et indicateurs de sécurité
Vue graphe : Visualiser les relations d'appel avec une profondeur N-sauts configurable
Vue recherche : Recherche en texte intégral dans les résumés et annotations de sécurité
Analyse de sécurité :
Cliquez sur "Analyse de sécurité" pour rechercher des fonctionnalités pertinentes pour la sécurité
Les résultats incluent : API réseau, E/S fichier, utilisation du chiffrement, motifs de chaînes
Les niveaux de risque (FAIBLE/MOYEN/ÉLEVÉ) sont attribués en fonction des fonctionnalités détectées
Intégration de l'onglet Explication
Lors de l'affichage d'une fonction dans l'onglet Explication :
Si la fonction est indexée, le résumé pré-calculé est affiché instantanément
Le panneau de sécurité affiche : le niveau de risque, le profil d'activité, les API utilisées
Cliquez sur "Modifier" pour modifier les résumés (protégés contre l'écrasement automatique)
Utilisez "Actualiser" pour régénérer le résumé avec le LLM
Avantages
Requêtes rapides : Les résumés pré-calculés éliminent la latence du LLM pour les requêtes répétées
Analyse hors ligne : Parcourir les données indexées sans connexion API
Focus sécurité : Détection automatique des motifs de code pertinents pour la sécurité
Découverte de modules : La détection de communautés regroupe automatiquement les fonctions connexes