
Toolkit completo per Ghidra headless.
Questo progetto è stato davvero divertente ed è stato il mio primo "grande" progetto! Ora esistono soluzioni migliori, più intelligenti e più robuste: https://github.com/LaurieWired/GhidraMCP
Ci vediamo, space-cowboy
Questo Ghidra Toolkit è una suite completa di strumenti progettata per semplificare e automatizzare varie attività associate all'esecuzione di Ghidra in modalità headless. Questo toolkit fornisce un'ampia gamma di script che possono essere eseguiti sia all'interno che insieme a Ghidra, consentendo agli utenti di svolgere attività come la caccia alle vulnerabilità, il commento di pseudo-codice con ChatGPT e la generazione di report con visualizzazione dei dati sul codebase analizzato. Permette all'utente di caricare e salvare i propri script e di interagire con l'API integrata dello script.
Automazione della modalità headless: Il toolkit consente agli utenti di avviare ed eseguire Ghidra in modalità headless senza problemi, permettendo l'elaborazione automatizzata e in batch delle attività di analisi del codice.
Repository/Gestione script: Il toolkit include un repository di script predefiniti che possono essere eseguiti all'interno di Ghidra. Questi script coprono una varietà di funzionalità, consentendo agli utenti di eseguire diverse attività di analisi e manipolazione. Permette agli utenti di caricare e salvare i propri script, offrendo flessibilità e opzioni di personalizzazione per le loro specifiche esigenze di analisi. Gli utenti possono facilmente gestire e organizzare la propria collezione di script.
Opzioni di input flessibili: Gli utenti possono utilizzare il toolkit per analizzare singoli file o intere cartelle contenenti più file. Questa flessibilità consente un'analisi efficiente sia di codebase su piccola scala che su larga scala.
Prima di utilizzare questo progetto, assicurati di avere installato il seguente software:
pip install sekiryu.Per utilizzare lo script, puoi semplicemente eseguirlo su un binario con le opzioni che desideri eseguire.
sekiryu [-F FILE][OPZIONI]Tieni presente che eseguire un'analisi binaria con Ghidra (o qualsiasi altro prodotto) è un processo relativamente lento. Pertanto, attendi che l'analisi binaria richieda diversi minuti a seconda delle prestazioni dell'host. Se esegui Sekiryu su un'applicazione molto grande o su una grande quantità di file binari, preparati ad ASPETTARE
Il "server.py" è fondamentalmente costruito per permettere agli script di interagire tra loro e con il sistema host.
Un utente può facilmente sviluppare il proprio script, caricarlo e salvarlo nella cartella degli script e utilizzare le funzioni
note dell'API per interagire con Ghidra.
Per utilizzarlo, l'utente deve importare xmlrpc nel proprio script e chiamare la funzione come ad esempio: proxy.send_data
Gli script sono salvati nella cartella /modules/scripts/; puoi semplicemente copiare lì il tuo script.
Nel file ghidra_pilot.py puoi trovare la seguente funzione che è responsabile dell'esecuzione di uno script ghidra headless:
def exec_headless(file, script):
"""
Esegue l'analisi headless di ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Impostazione variabili
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Esecuzione di ghidra con file e script specificati
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
L'uso è abbastanza semplice, puoi creare il tuo script e poi aggiungere una funzione in ghidra_pilot.py come:
def yourfunction(file):
try:
# Impostazione script
script = "modules/scripts/your_script.py"
# Avvia la funzione exec_headless in un nuovo thread
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
Il file cli.py è responsabile dell'interfaccia a riga di comando e ti permette di aggiungere argomenti e comandi associati in questo modo:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Il tuo messaggio di aiuto", action="store_true")
Il modulo xmlrpc.server non è sicuro contro dati costruiti in modo malintenzionato. Se hai bisogno di analizzare
dati non affidabili o non autenticati, consulta le vulnerabilità XML.
Per maggiori informazioni su Bushido Security, visita il nostro sito web: https://www.bushido-sec.com/.