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:
Proxy LiteLLM (Gateway Multi-Fornitore):
- LiteLLM - API unificata per oltre 100 fornitori di LLM
- Supporta AWS Bedrock, Google Vertex AI, Azure e molti altri
- Seleziona "LiteLLM" come tipo di fornitore nelle impostazioni di GhidrAssist
- Rilevamento automatico della famiglia di modelli per una corretta formattazione dei messaggi
Modelli Consigliati
Per Modalità Agente (richiede forte ragionamento e uso di strumenti):
- Cloud: GPT-5.1, Claude Sonnet 4.5
- Locale: GPT-OSS, Llama 3.3 70B, DeepSeek-R1 70B, Qwen2.5 72B
Modelli con Supporto per Pensiero/Ragionamento Esteso:
- OpenAI: o1-preview, o1-mini, o3-mini, o4-mini, gpt-5 (usa il parametro
reasoning_effort)
- Anthropic: Claude Sonnet 4.5, Claude Opus 4.5, Claude Haiku 4.5, Claude Opus 4.1/4, Claude Sonnet 4 (usa il parametro
thinking.budget_tokens)
- Locale: openai/gpt-oss-20b tramite Ollama/LMStudio (supporta livelli di sforzo)
Linee Guida per lo Sforzo di Ragionamento:
- Basso: Analisi rapida, token di pensiero minimi (~5-10s, costo inferiore)
- Medio: Profondità di ragionamento bilanciata (~15-30s, costo moderato)
- Alto: Analisi di sicurezza approfondita (~30-60s, costo 2x, consigliato per la caccia alle vulnerabilità)
Nota: La modalità agente richiede modelli con forti capacità di chiamata di funzioni e ragionamento multi-step. I modelli più piccoli potrebbero avere difficoltà con indagini complesse. Il pensiero esteso è opzionale ma può migliorare significativamente la qualità dell'analisi per compiti complessi di reverse engineering.
Utilizzo di GhidrAssistMCP per Analisi Basata su Strumenti
GhidrAssistMCP fornisce strumenti MCP che consentono al LLM di interagire direttamente con le capacità di analisi di Ghidra.
Configurazione
-
Avvia il Server MCP
-
Configura GhidrAssist:
- Apri Strumenti → Impostazioni GhidrAssist → scheda Server MCP
- Aggiungi server:
http://127.0.0.1:8081 come GhidrAssistMCP con tipo di trasporto SSE
-
Abilita MCP nelle query:
- Nella scheda Query Personalizzata, spunta "Usa MCP"
- Opzionalmente abilita "Agente" per la modalità di indagine autonoma
Modalità di Utilizzo
Query MCP Regolari:
- Abilita la casella "Usa MCP"
- Fai domande come "Cosa fa la funzione corrente?"
- Il LLM può chiamare strumenti per ottenere decompilazione, riferimenti incrociati, ecc.
Modalità Agente (Consigliata):
- Abilita entrambe le caselle "Usa MCP" e "Agente"
- Fai domande complesse come "Trova vulnerabilità in questa funzione" o "Analizza il grafo delle chiamate"
- L'agente ReAct:
- Propone passaggi di indagine come un elenco di cose da fare
- Esegue sistematicamente gli strumenti per raccogliere informazioni
- Tiene traccia dei progressi e accumula i risultati
- Sintetizza una risposta completa con prove
Query di Esempio:
- "Quali vulnerabilità di sicurezza esistono in questa funzione?"
- "Traccia il flusso dei dati dall'input utente a questa chiamata"
- "Trova tutte le funzioni che modificano la variabile globale X"
- "Analizza la gestione degli errori nella funzione corrente"
Utilizzo del Grafo Semantico (Graph-RAG)
La scheda Grafo Semantico fornisce un'interfaccia a grafo della conoscenza per esplorare i risultati dell'analisi binaria senza richiedere chiamate LLM per ogni query.
Per Iniziare
-
Indicizza il Binario:
- Apri la scheda Grafo Semantico
- Clicca "ReIndicizza Binario" per estrarre le relazioni strutturali
- Clicca "Analisi Semantica" per generare riepiloghi LLM (richiede API)
- L'avanzamento è mostrato nella barra di stato
-
Esplora il Grafo:
- Vista Elenco: Sfoglia tutte le funzioni indicizzate con riepiloghi e flag di sicurezza
- Vista Grafo: Visualizza le relazioni di chiamata con profondità N-hop configurabile
- Vista Ricerca: Ricerca full-text tra riepiloghi e annotazioni di sicurezza
-
Analisi di Sicurezza:
- Clicca "Analisi di Sicurezza" per scansionare le funzionalità rilevanti per la sicurezza
- I risultati includono: API di rete, I/O file, uso crittografico, pattern di stringhe
- I livelli di rischio (BASSO/MEDIO/ALTO) vengono assegnati in base alle funzionalità rilevate
Integrazione con la Scheda Spiegazione
Quando visualizzi una funzione nella scheda Spiegazione:
- Se la funzione è indicizzata, il riepilogo pre-calcolato viene mostrato istantaneamente
- Il pannello di sicurezza mostra: livello di rischio, profilo di attività, API utilizzate
- Clicca "Modifica" per modificare i riepiloghi (protetti da sovrascrittura automatica)
- Usa "Aggiorna" per rigenerare il riepilogo con il LLM
Vantaggi
- Query Veloci: I riepiloghi pre-calcolati eliminano la latenza del LLM per query ripetute
- Analisi Offline: Sfoglia i dati indicizzati senza connettività API
- Focus sulla Sicurezza: Rilevamento automatico di pattern di codice rilevanti per la sicurezza
- Scoperta di Moduli: Il rilevamento di comunità raggruppa automaticamente le funzioni correlate
Homepage
https://symgraph.ai
Versione Minima
Questo plugin richiede la seguente versione minima di Ghidra:
Licenza
Questo plugin è rilasciato sotto licenza MIT.