
CERT Kaiju è un'estensione del framework di analisi binaria per la suite di reverse engineering software Ghidra. Questo repository è un "mirror" – per favore, apri ticket, segnalazioni di bug o pull request nella repository upstream su @CERTCC: https://github.com/certcc/kaiju
CERT Kaiju è una raccolta di strumenti di analisi binaria per Ghidra.
Si tratta di un'implementazione Ghidra/Java di alcune funzionalità del CERT Pharos Binary Analysis Framework, in particolare degli strumenti di hashing delle funzioni e analisi malware, ma si prevede che nel tempo crescerà con nuovi strumenti e capacità.
Trattandosi di un nuovo sforzo, questa implementazione non ha ancora la piena parità di funzionalità con l'implementazione C++ originale basata su ROSE; tuttavia, il passaggio a Java e Ghidra ha effettivamente abilitato alcune nuove funzionalità non disponibili nel framework originale – in particolare, una migliore gestione delle architetture non x86. Poiché è in corso un significativo ri-architettamento del framework e degli strumenti, e il passaggio a Java e Ghidra abilita capacità diverse rispetto all'implementazione C++, si è deciso di utilizzare un nuovo marchio in modo che ci sia meno confusione tra le implementazioni quando si discutono i diversi strumenti e capacità.
La nostra intenzione per il prossimo futuro è di mantenere sia il framework Pharos originale che Kaiju, fianco a fianco, poiché entrambi possono fornire funzionalità e capacità uniche.
AVVERTENZA: Essendo un prototipo, possono sorgere molti problemi durante la valutazione degli hash delle funzioni creati da questo plugin. Ad esempio, a differenza dell'implementazione Pharos, il modulo di hashing delle funzioni di Kaiju creerà hash per funzioni molto piccole (ad esempio, quelle con una singola istruzione come RET, causando molte più collisioni indesiderate). Di conseguenza, i risultati analitici possono variare tra questo plugin e Pharos fn2hash.
Sono disponibili pacchetti Kaiju precompilati. È sufficiente scaricare il file ZIP corrispondente alla versione di Ghidra in uso e installare secondo le istruzioni seguenti. Si consiglia di installare tramite l'interfaccia grafica di Ghidra, ma è anche possibile decomprimere manualmente il file nella directory appropriata per l'installazione.
CERT Kaiju richiede le seguenti dipendenze runtime:
Z3 è fornito precompilato come parte dei pacchetti precompilati, oppure è possibile compilare Z3 autonomamente o utilizzare il pacchetto della propria distribuzione Linux.
Avviare Ghidra e, dalla finestra iniziale, selezionare dal menu:
File > Install Extension. Fare clic sul segno più nella parte superiore della
finestra delle estensioni, navigare e selezionare il file .zip nel browser
dei file e premere OK. L'estensione verrà installata e una casella di spunta
sarà segnata accanto al nome dell'estensione nella finestra
per informarvi che è installata e pronta.
L'interfaccia chiederà di riavviare Ghidra per iniziare a utilizzare l'estensione. Basta riavviare, e poi le funzionalità extra di Kaiju saranno disponibili per l'uso interattivo o negli script.
Alcune funzionalità potrebbero richiedere l'attivazione dei plugin Kaiju. Per farlo,
aprire il Code Browser, quindi navigare al menu File > Configure.
Nella finestra che appare, fare clic sul collegamento Configure sotto
l'icona della categoria "CERT Kaiju". Un pop-up mostrerà tutti i plugin Kaiju
disponibili pubblicamente rilasciati. Selezionare i plugin
che si desidera attivare, quindi premere OK. Si avrà ora accesso alle
funzionalità interattive dei plugin.
Se un plugin non è immediatamente visibile dopo l'attivazione, è possibile
trovarlo sotto il menu Window nel Code Browser.
Versioni sperimentali "alpha" di futuri strumenti potrebbero essere disponibili nella categoria "Experimental" se si desidera testarli. Tuttavia questi plugin sono decisamente sperimentali e non supportati e non raccomandati per l'uso in produzione. Accogliamo comunque con favore i feedback precoci!
Le estensioni di Ghidra come Kaiju possono anche essere installate manualmente decomprimendo il contenuto dell'estensione nella directory appropriata della propria installazione di Ghidra. Per maggiori informazioni, consultare La Guida all'Installazione di Ghidra.
È anche possibile compilare l'estensione Kaiju direttamente dal codice sorgente.
Vedere il file INSTALL.md incluso nella directory principale del sorgente Kaiju.
Gli strumenti di Kaiju possono essere utilizzati sia in modo grafico interattivo, sia tramite una modalità "headless" più adatta per lavori batch. Alcuni strumenti potrebbero essere disponibili solo per uso grafico o headless, a seconda della natura dello strumento.
Kaiju crea un'interfaccia grafica interattiva (GUI) all'interno di Ghidra utilizzando Java Swing e l'architettura dei plugin di Ghidra.
La maggior parte degli strumenti di Kaiju sono in realtà plugin di Analisi che vengono eseguiti automaticamente
quando viene scelta l'opzione "Auto Analysis", sia all'importazione di
un nuovo eseguibile da disassemblare, sia scegliendo direttamente
Analysis > Auto Analyze... dalla finestra del code browser. Si vedranno
diversi plugin di Analisi CERT selezionati per impostazione predefinita nello strumento Auto Analyze,
ma è possibile abilitare/disabilitare qualsiasi plugin a piacere.
Gli strumenti di Analisi devono essere eseguiti prima che funzionino i vari strumenti GUI, tuttavia. In alcuni casi limite, può essere utile eseguire l' Auto Analysis due volte per garantire che tutti i metadati siano prodotti per creare una corretta partizione e informazioni di disassemblaggio, che a loro volta possono influenzare i risultati dell'hashing.
Gli Analizzatori vengono eseguiti automaticamente durante la fase di analisi di Ghidra e includono:
Gli strumenti GUI includono:
Kaiju > GhiHorn per accedere a questo strumento dal CodeBrowser di Ghidra.
È anche possibile avviare il plugin premendo CTRL-G.Window > CERT Kaiju Function Hash Viewer dal menu per iniziare
con questo strumento se non è già visibile. Apparirà una nuova finestra
che mostra una tabella di hash e altri dati. I pulsanti nella parte superiore
della finestra possono aggiornare la tabella o esportare i dati in un file o
in una firma YARA. Questa finestra può anche essere ancorata al principale
Ghidra CodeBrowser per un uso più facile insieme ad altri plugin.
Una documentazione di utilizzo più estesa può essere trovata nel
menu Help > Contents di Ghidra quando si utilizza lo strumento.Kaiju > OOAnalyzer Importer dal menu per iniziare
con questo strumento. Una semplice finestra di dialogo popup vi chiederà di
individuare il file JSON che si desidera importare.
Una documentazione di utilizzo più estesa può essere trovata nel
menu di Ghidra quando si utilizza lo strumento.Ghidra supporta anche una modalità "headless" che consente di eseguire gli strumenti in alcune circostanze senza l'uso della GUI interattiva. Questi comandi possono quindi essere utilizzati per scripting e lavori "batch" su grandi numeri di file.
Gli strumenti headless si basano in gran parte sulla funzionalità GhidraScript di Ghidra.
Gli strumenti headless includono:
È incluso un semplice script shell di avvio chiamato kaijuRun per eseguire
questi comandi headless per scenari semplici, come l'output degli
hash delle funzioni per ogni funzione in un singolo eseguibile.
Supponendo che la variabile GHIDRA_INSTALL_DIR sia impostata, si potrebbe
ad esempio eseguire lo script di avvio su un singolo eseguibile come segue:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Questo comando produrrà i risultati in un file con nome automatico come
example.exe.Hashes.csv.
L'aiuto di base per lo script kaijuRun è disponibile eseguendo:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Consultare il file docs/HeadlessKaiju.md nel repository
per maggiori informazioni sull'uso di questa modalità e
dello script di lancio kaijuRun.
Sono disponibili documentazione e aiuto più completi, in uno di due formati.
Consultare la directory docs/ per la documentazione in formato Markdown
e l'aiuto per tutti gli strumenti e i componenti Kaiju. Questi documenti
sono facili da mantenere e modificare e da leggere anche dalla riga di comando.
In alternativa, è possibile trovare la stessa documentazione nel sistema di
aiuto integrato di Ghidra. Per accedere a questi documenti di aiuto,
dal menu di Ghidra, andare su Help > Contents
e quindi selezionare CERT Kaiju dalla navigazione ad albero sul
lato sinistro della finestra di aiuto.
Si noti che la documentazione di Ghidra Help è esattamente lo stesso
contenuto dei file Markdown nella directory docs/;
grazie a un plugin gradle nell'albero, gradle analizzerà automaticamente
il Markdown e lo esporterà in HTML di Ghidra durante il processo
di build. Ciò consente una manutenzione ancora più semplice (aggiornare i documenti in
un solo posto, non due) e mantiene i due in sincronia.
Tutta la nuova documentazione dovrebbe essere aggiunta alla directory docs/.
Questo software è concesso in licenza con una licenza semplificata di tipo BSD
dal Software Engineering Institute della Carnegie Mellon University.
Si prega di trovare i dettagli completi di questa licenza, nonché i termini di licenza
delle dipendenze utilizzate in questo progetto, nel file LICENSE.md
nella radice di questo repository.
Il logo di CERT Kaiju è basato su un'opera d'arte creata da Cameron Spahn, originariamente rilasciata secondo i termini della Licenza Creative Commons Attribution-Share Alike 4.0 International.
Help > Contents