
Automatisiertes Binär-Schwachstellenanalyse-Tool, das ausführbare Dateien über Ghidra dekompiliert, Pseudo-C-Code mit Semgrep scannt und Ergebnisse mithilfe von GPT-3.5-Turbo validiert, um Fehlalarme zu reduzieren.
Ein intelligentes automatisiertes Binär-Schwachstellenanalyse-Tool
Demo:

Callisto ist ein intelligentes, automatisiertes Tool zur Analyse von Binär-Schwachstellen. Sein Zweck ist es, eine bereitgestellte Binärdatei autonom zu dekompilieren und den Pseudocode-Ausgabe zu durchlaufen, um nach potenziellen Sicherheitsschwachstellen in diesem Pseudocode zu suchen. Ghidras Headless-Decompiler steuert den Teil der Binärdekompilierung und -analyse. Die Pseudocode-Analyse wird zunächst vom Semgrep SAST-Tool durchgeführt und dann an GPT-3.5-Turbo zur Validierung der Semgrep-Ergebnisse sowie zur potenziellen Identifizierung zusätzlicher Schwachstellen übergeben.
Der beabsichtigte Zweck dieses Tools ist die Unterstützung bei der Binäranalyse und der Entdeckung von Zero-Day-Schwachstellen. Die Ausgabe soll dem Forscher helfen, potenzielle interessante Bereiche oder verletzliche Komponenten in der Binärdatei zu identifizieren, die dann mit dynamischen Tests zur Validierung und Ausnutzung weiterverfolgt werden können. Es wird sicherlich nicht alles erfassen, aber die doppelte Validierung mit Semgrep zu GPT-3.5 zielt darauf ab, Fehlalarme zu reduzieren und eine tiefere Analyse des Programms zu ermöglichen.
Für diejenigen, die das Tool nur als schnellen Headless-Decompiler nutzen möchten, enthält die erstellte output.c-Datei den gesamten extrahierten Pseudocode aus der Binärdatei. Dieser kann in Ihre eigenen SAST-Tools eingefügt oder manuell analysiert werden.
Ich bin Marco Ivaldi @0xdea zu großem Dank verpflichtet für seine öffentlich veröffentlichten benutzerdefinierten Semgrep-C-Regeln sowie für seine Idee, die Schwachstellenerkennung mit Semgrep und Pseudocode-Ausgaben von Decompilern zu automatisieren. Weitere Informationen zu seiner Forschung finden Sie hier:
Anforderungen:
pip install semgreppip install -r requirements.txtconfig.txt-Datei festgelegt ist.Ausführung:
python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>
-ai => Aktiviert die OpenAI GPT-3.5-Turbo-Analyse. Erfordert das Einfügen eines gültigen OpenAI-API-Schlüssels in die config.txt-Datei.-o => Definiert eine Ausgabedatei, falls Sie die Ausgabe speichern möchten.-ai und -o sind optionale Parameter.-all führt alle Funktionen durch die OpenAI-Analyse aus, unabhängig von etwaigen Semgrep-Ergebnissen. Diese Flagge setzt die vorherige -ai-Flagge voraus.python callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtBeispiel für Programmausgabe:
