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
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
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