
Umfassendes Toolkit für Ghidra headless.
Dieses Projekt hat wirklich Spaß gemacht und war mein erstes "großes" Projekt! Es gibt jetzt bessere, intelligentere und stärkere Lösungen: https://github.com/LaurieWired/GhidraMCP
Bis dann, Space-Cowboy
Dieses Ghidra-Toolkit ist eine umfassende Sammlung von Werkzeugen, die dazu entwickelt wurden, verschiedene Aufgaben im Zusammenhang mit dem Ausführen von Ghidra im Headless-Modus zu optimieren und zu automatisieren. Das Toolkit bietet eine breite Palette von Skripten, die sowohl innerhalb als auch neben Ghidra ausgeführt werden können. Es ermöglicht Benutzern, Aufgaben wie Schwachstellensuche, Pseudocode-Kommentierung mit ChatGPT und Berichterstellung mit Datenvisualisierung für die analysierte Codebasis durchzuführen. Es erlaubt Benutzern, ihre eigenen Skripte zu laden und zu speichern und mit der integrierten API des Skripts zu interagieren.
Headless-Modus-Automatisierung: Das Toolkit ermöglicht es Benutzern, Ghidra nahtlos im Headless-Modus zu starten und auszuführen, was eine automatisierte und batch-verarbeitende Codeanalyse ermöglicht.
Skript-Repository/-Verwaltung: Das Toolkit enthält ein Repository vorgefertigter Skripte, die innerhalb von Ghidra ausgeführt werden können. Diese Skripte decken eine Vielzahl von Funktionen ab und ermöglichen es Benutzern, verschiedene Analyse- und Manipulationsaufgaben durchzuführen. Es erlaubt Benutzern, ihre eigenen Skripte zu laden und zu speichern, was Flexibilität und Anpassungsmöglichkeiten für ihre spezifischen Analyseanforderungen bietet. Benutzer können ihre Skriptsammlung einfach verwalten und organisieren.
Flexible Eingabeoptionen: Benutzer können das Toolkit nutzen, um einzelne Dateien oder ganze Ordner mit mehreren Dateien zu analysieren. Diese Flexibilität ermöglicht eine effiziente Analyse sowohl kleiner als auch großer Codebasen.
Bevor Sie dieses Projekt verwenden, stellen Sie sicher, dass Sie die folgende Software installiert haben:
pip install sekiryu.Um das Skript zu verwenden, können Sie es einfach gegen eine Binärdatei mit den gewünschten Optionen ausführen.
sekiryu [-F FILE][OPTIONS]Bitte beachten Sie, dass die Durchführung einer Binäranalyse mit Ghidra (oder einem anderen Produkt) ein relativ langsamer Prozess ist. Gehen Sie daher davon aus, dass die Binäranalyse je nach Host-Leistung mehrere Minuten dauern kann. Wenn Sie Sekiryu gegen eine sehr große Anwendung oder eine große Anzahl von Binärdateien ausführen, seien Sie darauf vorbereitet zu WARTEN
Das "server.py" ist im Grunde dazu gebaut, Skripten zu ermöglichen, mit Ghidra und untereinander sowie mit dem Host-System zu interagieren.
Ein Benutzer kann leicht sein eigenes Skript entwickeln, es laden und im Skript-Ordner speichern und die bekannten Funktionen der API nutzen, um mit Ghidra zu interagieren.
Um es zu nutzen, muss der Benutzer xmlrpc in sein Skript importieren und die Funktion aufrufen, zum Beispiel: proxy.send_data
Skripte werden im Ordner /modules/scripts/ gespeichert. Sie können Ihr Skript einfach dort hineinkopieren.
In der Datei ghidra_pilot.py finden Sie die folgende Funktion, die für die Ausführung eines Headless-Ghidra-Skripts verantwortlich ist:
def exec_headless(file, script):
"""
Execute the headless analysis of ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Setting variables
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Running ghidra with specified file and script
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)
Die Verwendung ist recht einfach: Sie können Ihr eigenes Skript erstellen und dann eine Funktion in der ghidra_pilot.py hinzufügen, wie zum Beispiel:
def yourfunction(file):
try:
# Setting script
script = "modules/scripts/your_script.py"
# Start the exec_headless function in a new thread
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
Die Datei cli.py ist für die Befehlszeilenschnittstelle zuständig und ermöglicht es Ihnen, Argumente und zugehörige Befehle wie folgt hinzuzufügen:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Your Help Message", action="store_true")
Das xmlrpc.server-Modul ist nicht sicher gegen böswillig konstruierte Daten. Wenn Sie nicht vertrauenswürdige oder nicht authentifizierte Daten parsen müssen, lesen Sie die XML-Sicherheitslücken.
Für weitere Informationen über Bushido Security besuchen Sie bitte unsere Website: https://www.bushido-sec.com/.