Dieses Ghidra-Toolkit ist eine umfassende Suite von Tools, die zur Optimierung und Automatisierung verschiedener Aufgaben im Zusammenhang mit der Ausführung von Ghidra im Headless-Modus entwickelt wurden. Dieses Toolkit bietet eine breite Palette von Skripten, die sowohl innerhalb als auch neben Ghidra ausgeführt werden können und es Benutzern ermöglichen, Aufgaben wie Schwachstellensuche, Pseudocode-Kommentierung mit ChatGPT und Berichterstellung mit Datenvisualisierung auf der analysierten Codebasis auszuführen. Es ermöglicht dem Benutzer, sein eigenes Skript zu laden und zu speichern und mit der integrierten API des Skripts zu interagieren.
Automatisierung des Headless-Modus : Das Toolkit ermöglicht es Benutzern, Ghidra nahtlos im Headless-Modus zu starten und auszuführen, was eine automatisierte Stapelverarbeitung von Codeanalyseaufgaben ermöglicht.
Skript-Repository/-Verwaltung : Das Toolkit enthält ein Repository mit vorgefertigten Skripten, die in Ghidra ausgeführt werden können. Diese Skripte decken eine Vielzahl von Funktionalitäten ab und ermöglichen Benutzern die Durchführung vielfältiger Analyse- und Manipulationsaufgaben. Es ermöglicht Benutzern das Laden und Speichern ihrer eigenen Skripte und bietet so Flexibilität und Anpassungsoptionen für ihre spezifischen Analyseanforderungen. 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.
Schwachstellensuche mit Mustererkennung : Nutzen Sie die Skripte des Toolkits, um potenzielle Schwachstellen innerhalb der zu analysierenden Codebasis zu identifizieren. Dies hilft Sicherheitsforschern und -entwicklern, Sicherheitslücken aufzudecken und diese proaktiv zu beheben.
Schwachstellensuche mit SemGrep : Dank des Sicherheitsforschers 0xdea und des von ihm erstellten Regelsatzes können wir einfache Regeln und SemGrep verwenden, um Schwachstellen im C/C++-Pseudocode zu erkennen (ihr Github: https://github.com/0xdea/semgrep -Regeln)
Automatische Pseudocode-Generierung : Generieren Sie automatisch Pseudocode im Headless-Modus von Ghidra. Diese Funktion hilft dabei, die Codelogik ohne manuelles Eingreifen zu verstehen und zu dokumentieren.
Pseudocode-Kommentare mit ChatGPT : Verbessern Sie die Lesbarkeit und das Verständnis der Codebasis, indem Sie ChatGPT verwenden, um menschenähnliche Kommentare für Pseudocode-Snippets zu generieren. Diese Funktion hilft bei der Dokumentation und Erläuterung der Codelogik.
Berichterstellung und Datenvisualisierung : Erstellen Sie umfassende Berichte mit Visualisierungen, um die Analyseergebnisse effektiv zusammenzufassen und zu präsentieren. Das Toolkit bietet Datenvisualisierungsfunktionen, die bei der Identifizierung von Mustern, Abhängigkeiten und Anomalien in der Codebasis helfen.
Stellen Sie vor der Verwendung dieses Projekts sicher, dass die folgende Software installiert ist:
Ghidra: Sie können Ghidra aus dem GitHub-Repository der National Security Agency unter https://github.com/NationalSecurityAgency/ghidra herunterladen
Java: Stellen Sie sicher, dass Sie Java Development Kit (JDK) Version 17 oder höher installiert haben. Sie können es von der OpenJDK-Website unter https://openjdk.org/projects/jdk/17/ herunterladen.
BinExport (OPTIONAL) Befolgen Sie die Anweisungen zur Installation der Ghidra-Erweiterung https://github.com/google/binexport
SemGrep (OPTIONAL) Befolgen Sie die Anweisungen unter https://semgrep.dev/docs/getting-started/
Installieren Sie die oben genannten Voraussetzungen.
Laden Sie die Sekiryu-Version direkt von Github herunter oder verwenden Sie: pip install sekiryu
.
Um das Skript zu verwenden, können Sie es einfach mit einer Binärdatei mit den Optionen ausführen, die Sie ausführen möchten.
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. Daher kann die Binäranalyse abhängig von der Leistung des Hosts mehrere Minuten dauern. Wenn Sie Sekiryu für eine sehr große Anwendung oder eine große Menge an Binärdateien ausführen, müssen Sie darauf warten, zu WARTEN
Eine Demo finden Sie auf www.bushido-sec.com
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
Um es zu verwenden, muss der Benutzer xmlrpc in sein Skript importieren und die Funktion aufrufen, zum Beispiel: proxy.send_data
send_data() – Ermöglicht dem Benutzer das Senden von Daten an den Server. („Daten“ ist ein Wörterbuch)
recv_data() – Ermöglicht dem Benutzer, Daten vom Server zu empfangen. („Daten“ ist ein Wörterbuch)
request_GPT() – Ermöglicht dem Benutzer das Senden von Zeichenfolgendaten über die ChatGPT-API.
Skripte werden im Ordner /modules/scripts/ gespeichert. Sie können Ihr Skript einfach dorthin kopieren. In der Datei ghidra_pilot.py
finden Sie die folgende Funktion, die für die Ausführung eines kopflosen Ghidra-Skripts verantwortlich ist:
def exec_headless(file, script): „““ Führen Sie die Headless-Analyse von Ghidra aus ' TMP_DIR -import'+ ' '+ Datei + ' '+ "-postscript "+ Skript +" -deleteProject"# Ghidra mit der angegebenen Datei und dem angegebenen Skript ausführen: p = subprocess.run([str(path + cmd)], shell=True, capture_output=True) os.rmdir(tmp_folder) außer KeyError as e: print(e) os.rmdir(tmp_folder)
Die Verwendung ist ziemlich einfach. Sie können Ihr eigenes Skript erstellen und dann einfach eine Funktion in ghidra_pilot.py
hinzufügen, wie zum Beispiel:
def yourfunction(file): try: # Setting scriptscript = "modules/scripts/your_script.py"# Starten Sie die exec_headless-Funktion in einem neuen Threadthread = threading.Thread(target=exec_headless, args=(file, script)) thread.start () thread.join() außer Ausnahme als e: print(str(e))
Die Datei cli.py
ist für die Befehlszeilenschnittstelle verantwortlich und ermöglicht das Hinzufügen von Argumenten und zugehörigen Befehlen wie folgt:
Analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Ihre Hilfenachricht", action="store_true")
Skripte/SCRIPTS/SCRIIIIIPTS : Dieses Tool ist als Toolkit konzipiert, mit dem Benutzer ganz einfach ihr eigenes Skript speichern und ausführen können, vorausgesetzt, Sie können an irgendeiner Art von Skript mitwirken (alles, was interessant ist, wird genehmigt!)
Optimierung : Jede Art von Optimierung ist willkommen und wird fast automatisch bei jeder Veröffentlichung genehmigt und bereitgestellt. Einige nette Dinge könnten sein: Verbesserung der parallelen Aufgaben, Codebereinigung und Gesamtverbesserung.
Malware-Analyse : Es ist ein großer Teil, mit dem ich nicht vertraut bin. Jeder Malware-Analyst, der bereit ist, einen Beitrag zu leisten, kann direkt im Projekt eine Idee vorschlagen, ein Skript erstellen oder sogar Code festschreiben.
Berichterstattung : Ich bin kein Datenvisualisierungsingenieur. Wenn jemand bereit ist, diesen Teil zu verbessern/beizutragen, wäre das sehr nett.
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Weitere Informationen zu Bushido Security finden Sie auf unserer Website: https://www.bushido-sec.com/.