GhidrAssist
Autore: Jason Tang
Un plugin avanzato basato su LLM per l'assistenza interattiva al reverse engineering in Ghidra.
Descrizione
GhidrAssist integra i Large Language Models (LLM) in Ghidra per fornire assistenza intelligente nell'esplorazione binaria e nel reverse engineering. Supporta qualsiasi API compatibile con OpenAI v1, inclusi modelli locali (Ollama, LM-Studio, Open-WebUI) e fornitori cloud (OpenAI, Anthropic, Azure).
Caratteristiche Principali
Funzionalità Principali:
- Spiegazione del Codice - Spiega funzioni e istruzioni sia in disassembly che in pseudo-C decompilato
- Pannello di analisi della sicurezza con livello di rischio, profilo di attività e utilizzo API
- Riepiloghi modificabili con protezione dalla sovrascrittura automatica
- Chat Interattiva - Query conversazionali multi-turno con cronologia persistente
- Query Personalizzate - Query dirette al LLM con contesto opzionale dalla funzione/posizione corrente
Sistema di Conoscenza Graph-RAG:
- Grafo della Conoscenza Semantico - Rappresentazione gerarchica dell'analisi binaria
- Gerarchia semantica a 5 livelli: Istruzione → Blocco → Funzione → Modulo → Binario
- Riepiloghi LLM pre-calcolati per query veloci senza LLM
- Persistenza SQLite con algoritmi di grafo JGraphT
- Ricerca full-text (FTS5) su riepiloghi e annotazioni di sicurezza
- Rilevamento Comunità - Scoperta automatica di moduli tramite algoritmo di Leiden
- Raggruppa funzioni correlate in moduli logici
- Struttura di comunità gerarchica con riepiloghi
- Esplorazione visiva del grafo con profondità configurabile
- Estrazione Caratteristiche di Sicurezza - Analisi di sicurezza completa
- API di rete: socket POSIX, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- API I/O file: POSIX, Windows, funzioni libreria C
- API crittografiche: OpenSSL, crittografia Windows, specifiche per piattaforma
- Pattern di stringhe: indirizzi IP, URL, domini, percorsi file, chiavi di registro
- Classificazione del livello di rischio (BASSO/MEDIO/ALTO) e profilazione delle attività
- Scheda Grafo Semantico - Interfaccia visiva del grafo della conoscenza
- Vista grafo con esplorazione a profondità N-hop
- Vista elenco di tutte le funzioni indicizzate
- Ricerca semantica tra i riepiloghi
- Re-indicizzazione e analisi di sicurezza con un clic
Capacità Avanzate:
- Controllo del Pensiero/Ragionamento Esteso - Regola la profondità di ragionamento del LLM per bilanciare qualità e velocità
- Supporto per OpenAI o1/o3/o4, Claude con ragionamento esteso e modelli di ragionamento locali
- Livelli di sforzo configurabili: Basso (veloce), Medio (bilanciato), Alto (approfondito)
- Persistenza per programma - binari diversi possono utilizzare livelli di ragionamento diversi
- Implementazione indipendente dal fornitore (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- Modalità Agente ReAct - Indagine autonoma utilizzando ragionamento strutturato (Pensa-Agisci-Osserva)
- Il LLM propone passaggi di indagine basati sulla tua query
- Esecuzione sistematica degli strumenti con monitoraggio dei progressi tramite elenchi di cose da fare
- Conservazione della cronologia delle iterazioni che mostra tutti i passaggi dell'indagine
- Sintesi finale con risposta completa e risultati chiave
- Metriche accurate (iterazioni, chiamate strumenti, durata)
- Integrazione MCP - Client del Model Context Protocol per analisi basata su strumenti
- Funziona con GhidrAssistMCP per strumenti specifici di Ghidra
- Chiamata di strumenti conversazionale con esecuzione automatica delle funzioni
- Supporto per trasporto SSE (Server-Sent Events)
- Chiamata di Funzioni - Il LLM può navigare autonomamente i binari e modificare l'analisi
- Rinominare funzioni e variabili
- Navigare verso indirizzi e riferimenti incrociati
- Eseguire comandi di Ghidra
- Scheda Azioni - Proporre e applicare miglioramenti di analisi in blocco
- Rilevamento di vulnerabilità di sicurezza
- Analisi della qualità del codice
- Suggerimenti automatizzati di refactoring
- RAG (Generazione Aumentata da Recupero) - Migliorare le query con documenti contestuali
- Aggiungere documentazione personalizzata, note di exploit, riferimenti all'architettura
- Ricerca full-text basata su Lucene
- Iniezione di contesto nelle query
- Generazione di Dataset RLHF - Raccogliere feedback per la messa a punto del modello
Architettura
Il plugin utilizza un'architettura modulare orientata ai servizi:
Servizi Principali:
- Modalità di Query: Query regolari, query potenziate con MCP o indagine completamente agentica
- Orchestratore ReAct: Gestisce cicli di indagine autonomi con monitoraggio delle cose da fare e accumulo dei risultati
- Gestore di Chiamate Strumentali Conversazionali: Gestisce sessioni di chiamata strumentale multi-turno
- MCPToolManager: Interfaccia con server MCP esterni per strumenti specializzati
Backend Graph-RAG:
- BinaryKnowledgeGraph: Archiviazione ibrida SQLite + JGraphT per conoscenza semantica
- GraphRAGEngine: Motore di query senza LLM che utilizza riepiloghi pre-calcolati
- SemanticExtractor: Riepilogo delle funzioni basato su LLM con elaborazione batch
- SecurityFeatureExtractor: Analisi statica per API di rete, I/O file e crittografia
- CommunityDetector: Implementazione dell'algoritmo di Leiden per la scoperta di moduli
Livello Dati:
- AnalysisDB: Database SQLite per cronologia chat, feedback RLHF e grafi di conoscenza
- SchemaMigrationRunner: Migrazioni di database versionate per aggiornamenti trasparenti
- RAGEngine: Ricerca documentale basata su Lucene per iniezione di contesto personalizzato
Componenti UI:
- Interfaccia a schede: Spiegazione, Query, Azioni, Grafo Semantico, Gestione RAG, Server MCP
- Orchestrazione dei servizi tramite TabController
Tabella di Marcia Futura:
- Messa a punto del modello utilizzando il dataset RLHF raccolto
- Ulteriori integrazioni di strumenti MCP
- Capacità agentiche migliorate, collaborazione multi-agente
- Ricerca per similarità basata su embedding
Screenshot
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
Avvio Rapido
- Se necessario, copia l'archivio ZIP della release binaria nella directory Ghidra_Install/Extensions/Ghidra.
- Avvia Ghidra -> File -> Installa Estensione -> Abilita GhidrAssist.
- Carica un binario e avvia il CodeBrowser.
- CodeBrowser -> File -> Configura -> Varie -> Abilita GhidrAssist.
- CodeBrowser -> Finestra -> GhidraAssistPlugin.
- Assicurati che i percorsi del database RLHF e RAG siano appropriati per il tuo ambiente.
- Punta l'host API al tuo fornitore API preferito e imposta la chiave API.
- (Opzionale) Nella scheda Opzioni di Analisi, imposta il livello di Sforzo di Ragionamento (Nessuno/Basso/Medio/Alto) per i modelli che supportano il pensiero esteso.
- Apri GhidrAssist tramite l'opzione GhidrAssist nel menu Finestre e inizia ad esplorare.
Configurazione LLM
GhidrAssist funziona con qualsiasi API compatibile con OpenAI v1. I dettagli di configurazione sono specifici del fornitore - ecco alcune risorse utili:
Fornitori LLM Locali:
- LM Studio - Hosting di modelli locali semplice con GUI
- Ollama - Gestione di modelli locali da riga di comando
- Open-WebUI - Interfaccia web per modelli locali
Fornitori Cloud: