Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
LCSAJdump — Ein ML-gestützter graphbasierter Multi-Architektur-Ansatz zur Erkennung von ROP-Gadgets | Kitploit
Tools/GitHubGitHub/chris1sflaggin/lcsajdump
Statische AnalyseExploitationReverse EngineeringShellcodeBinäranalyseMaschinelles LernenPapers & ForschungLernen & BildungPayload-Entwicklung
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Ein ML-gestützter graphbasierter Multi-Architektur-Ansatz zur Erkennung von ROP-Gadgets

272vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigenWebseite

LCSAJdump Logo

LCSAJdump

PyPI Downloads

Universelles Graph-basiertes Framework für automatisierte Gadget-Erkennung

Status License: MIT



LCSAJdump ist ein statisches Analyse-Framework zur Erkennung von Return-Oriented-Programming (ROP)- und Jump-Oriented-Programming (JOP)-Gadgets. Im Gegensatz zu herkömmlichen Scannern ist LCSAJdump architekturunabhängig und verwendet einen graphbasierten Ansatz, um Schwachstellen aufzudecken, die für lineare Tools unsichtbar bleiben.


Warum LCSAJdump?

Gängige ROP-Scanner verwenden einen linearen "Sliding-Window"-Ansatz über die ausführbaren Bytes der Binärdatei. Diese Methode übersieht systematisch Schatten-Gadgets: Ausführungsketten, die nicht zusammenhängende Speicherblöcke durchqueren, die durch unbedingte Sprünge oder bedingte Verzweigungen verbunden sind.

LCSAJdump überwindet diese Einschränkung, indem es den Kontrollflussgraphen (CFG) mittels LCSAJ (Linear Code Sequence and Jump)-Analyse rekonstruiert. Durch die Modellierung der Binärdatei als gerichteten Graphen von Basisblöcken identifiziert das Tool:

  1. Zusammenhängende Gadgets: Standardmäßige lineare Sequenzen, die mit einer Kontrollflusstranfer enden.
  2. Schatten-Gadgets (nicht zusammenhängend): Komplexe Ketten, die "bad bytes" (z. B. Nullbytes) umgehen, indem sie Anweisungen nutzen, die über lineares Scannen sonst nicht erreichbar wären.

Hauptmerkmale

  • Multi-Architektur-Unterstützung: Native Unterstützung für RISC‑V (64GC), x86‑64 und ARM64, einfach erweiterbar auf andere Architekturen über modulare Profile.
  • Graphbasierte Analyse: Segmentiert den .text-Abschnitt in LCSAJ-Basisblöcke und rekonstruiert Flussbeziehungen durch einen eigens erstellten Rückwärts-Kontrollflussgraphen (leichtgewichtige Adjazenzdarstellung, keine schwergewichtige Graph-Abhängigkeit).
  • Rainbow BFS Algorithmus: Proprietäre Rückwärts-Breitensuche, ausgehend von Kontrollflusssenken. Verfügt jetzt über einen O(1) Early-Drop-Uniqueness-Filter und Hard-Cap-Instruktionslimits, um Zustandsexplosion zu verhindern und ultraschnelle Analysen selbst bei dichten CISC-Binärdateien zu gewährleisten.
  • Lazy Graph Build: Die Graphenkonstruktion behält nur Knoten bei, die innerhalb von --depth Sprüngen von Gadget-Enden erreichbar sind, was Speicher und Build-Zeit bei großen Binärdateien (z. B. libc) drastisch reduziert, während identische Ergebnisse erzielt werden.
  • Zweistufige Ranking-Engine: Kombiniert eine hyperschnelle Heuristik-Baseline (Bayes-optimiert über Optuna) mit einem Deep-Learning LightGBM ML-Modell, das die Gadget-Qualität anhand struktureller und semantischer Merkmale verfeinert.
  • Inferenz ohne Mehraufwand: Das ML-Modell ist nativ integriert und läuft standardmäßig, verarbeitet Zehntausende von Knoten in Sekunden. Es fungiert als hochwirksamer Filter, der verrauschte Sprünge ablehnt und saubere, gut kontrollierbare Gadget-Ketten zurückgibt. Gehostet auf Hugging Face.
  • Pruning-Parameter: Konfigurierbarer "Darkness"-Faktor, um Analysetiefe und Leistung auszubalancieren und Endlosschleifen in zyklischen Graphen zu verhindern.

Unterstützte Architekturen

(siehe Benchmarks).

LCSAJdump ist als universelles Werkzeug konzipiert. Derzeit unterstützt:

  • RISC‑V 64‑Bit (RV64GC): Volle Unterstützung für komprimierte 16‑Bit-Befehle.
  • x86‑64: Behandelt überlappende Anweisungen variabler Länge. Navigiert sicher durch dichte Graphen ohne Speicherexplosion.
  • ARM64: Behandelt 32‑Bit-Befehle und filtert aufgeblähte Gadgets durch strenge heuristische Strafen tiefgehend aus.
  • Andere Architekturen: Können einfach durch Definition neuer Profile in config.py implementiert werden.

Installation

Via pip (Empfohlen)

root@kitploit:~
pip install lcsajdump

Aus dem Quellcode (Entwicklung)

root@kitploit:~
git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt


Verwendung

LCSAJdump bietet eine leistungsstarke CLI für präzise Binäranalysen:

Standardanalyse (Standard RISC‑V):

root@kitploit:~
python LCSAJdump.py <path_to_binary>

Erweiterte Analyse (Architektur und Ausgabedatei angeben):

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <path_to_binary>

Export als JSON mit Bad-Char-Filter:

root@kitploit:~
lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <path_to_binary>

Hinweis: Verwenden Sie -o nach --json, um JSON in eine Datei zu speichern. Ohne --json speichert -o als Klartext.

Klartextausgabe speichern:

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <path_to_binary>

Alle ausführbaren Abschnitte analysieren:

root@kitploit:~
lcsajdump --all-exec -d 25 -k 10 -l 30 <path_to_binary>

Streng algorithmisches Ranking erzwingen (ML umgehen):

root@kitploit:~
lcsajdump --algo <path_to_binary>

CLI-Optionen



Genauigkeit & Benchmarks

LCSAJdump wird durch eine rigorose, schrittweise validierte Testsuite im Verzeichnis benchmarkTests/ untermauert.

Durch 14 große Iterationen semantischer Feature-Engineering hat das hybride Modell gelernt, Gadgets anhand tatsächlicher Speichernebenwirkungen (extrahiert durch angr-symbolische Ausführung) zu unterscheiden, anstatt rein syntaktischer Heuristiken.

Bewertet mit gruppenbewusster 5‑facher Kreuzvalidierung (Testbinärdateien wurden während des Trainings nie gesehen) erreicht der Ranker NDCG@1 = 0,914 ± 0,047 und NDCG@10 = 0,922 ± 0,052 – das bedeutet, dass die nützlichsten Gadgets durchgängig an der Spitze der Ausgabe platziert werden. Die zweistufige Engine priorisiert erfolgreich saubere Stack-Popping-Sequenzen und ret2csu-ähnliche Aufrufe, während sie stark abstürzende, festoffsetierte Sprünge bestraft, die traditionelle statische Scanner in die Irre führen.


Entwickler- & ML-Leitfaden

Das Repository ist so strukturiert, dass es sowohl Endbenutzer als auch ML-Forscher unterstützt.

  • Produktions-Engine: Die Kern-CLI integriert nahtlos die Inferenz-Engine mit Modellen, die auf Hugging Face gehostet werden – kein manuelles Laden von Modellen erforderlich.
  • ML-Pipeline: Das Verzeichnis lcsajdump/ml_study/ enthält die vollständige Pipeline, die zum Trainieren der Modelle verwendet wurde:
    • build_dataset.py: Extrahiert strukturelle und semantische Merkmale aus einem Korpus von CTF-Binärdateien.
    • train_model.py: Trainiert das LightGBM LambdaRank-Modell und gibt die .pkl-Modelle aus.
    • kfold_cv.py: Validiert den Datensatz mittels K‑Fold-Kreuzvalidierung.

Mitwirken (Offen für Forks!)

Das Framework ist offen für neue Implementierungen. So fügen Sie eine neue Architektur hinzu:

  1. Forken Sie das Repository.
  2. Öffnen Sie lcsajdump/core/config.py.
  3. Fügen Sie ein neues Profil zum ARCH_PROFILES-Dictionary hinzu, indem Sie Sprung-Mnemonics, Rücksprung-Mnemonics und Register für die gewünschte Architektur (z. B. x86_64) definieren.
  4. Reichen Sie einen Pull Request ein.

Lizenz

Dieses Projekt wird unter der MIT-Lizenz veröffentlicht. Weitere Informationen finden Sie in der Datei LICENSE.


Projektlink

Besuchen Sie die Projektwebseite: LCSAJdump-Webseite


Erstellt von Chris1sflaggin als Forschungsprojekt zur automatisierten Gadget-Erkennung.
Tool herunterladen
FlagTypStandardBeschreibung
-a, --archTEXTautoZielarchitektur (auto, riscv64, x86_64, arm64). Automatisch aus ELF-Header erkannt.
-d, --depthINTEGER20Maximale Suchtiefe in LCSAJ-Blöcken. Steuert die Kettenlänge.
-k, --darknessINTEGER5Pruning-Schwellenwert — max. Besuche pro Knoten. Höher = mehr Gadgets, langsamerer Scan.
-l, --limitINTEGER10Maximale Anzahl der anzuzeigenden Gadgets in der Ausgabe.
-s, --min-scoreINTEGER0Mindestheuristikwert, den ein Gadget für die Anzeige erreichen muss.
-i, --instructionsINTEGER15Maximale Anzahl an Instruktionen in einem einzelnen LCSAJ-Knoten.
-v, --verboseFLAG—Ausführliche Ausgabe für detaillierte Ergebnisse pro Gadget aktivieren.
-o, --outputPATH—Ausgabe in Datei schreiben. Standardmäßig Klartext; mit --json für JSON-Ausgabe.
-b, --bad-charsTEXT—Hex-Bytes, die aus Gadget-Adressen herausgefiltert werden sollen (z. B. "000a0d").
--jsonFLAG—Gadgets als strukturiertes JSON ausgeben. Mit -o kombinieren, um in Datei zu speichern.
--all-execFLAG—Alle ausführbaren Abschnitte analysieren, nicht nur .text.
-al, --algoFLAG—Streng algorithmisches Ranking verwenden (ML umgehen).
--versionFLAG—Installierte Version anzeigen und beenden.
--helpFLAG—Hilfemeldung anzeigen und beenden.