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
grap — Definieren und abgleichen von benutzerdefinierten Graphenmustern mit binären Kontrollflussgraphen unter Verwendung eines Capstone-basierten Disassemblers, mit CLI, Python-Bindungen und IDA-Plugin-Unterstützung. | Kitploit
Tools/GitHubGitHub/quosecgmbh/grap
Statische AnalyseReverse EngineeringDebuggerMalware-AnalyseBinäranalyse
GitHubquosecgmbh/grap

grap

Definieren und abgleichen von benutzerdefinierten Graphenmustern mit binären Kontrollflussgraphen unter Verwendung eines Capstone-basierten Disassemblers, mit CLI, Python-Bindungen und IDA-Plugin-Unterstützung.

Repository anzeigen
15511vor 4 JahrenVon 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

grap: Graphmuster in Binärdateien definieren und erkennen

https://github.com/QuoSecGmbH/grap

grap nimmt Muster und Binärdateien entgegen, verwendet einen Capstone-basierten Disassembler, um die Kontrollflussgraphen aus den Binärdateien zu extrahieren, und gleicht dann die Muster mit ihnen ab.

Muster sind benutzerdefinierte Graphen mit Instruktionsbedingungen („opcode ist xor und arg1 ist eax“) und Wiederholungsbedingungen (3 identische Instruktionen, Basisblöcke...).

grap ist als eigenständiges Werkzeug mit einem Disassembler und Python-Bindungen sowie als IDA-Plugin verfügbar, das die von IDA und dem Reverser durchgeführte Disassemblierung nutzt.

Unterstützung:

  • Dateien: Disassemblierung von PE, ELF und rohen Binärdateien, weitere Dateien sollten innerhalb von IDA funktionieren
  • Architektur: x86 und x86_64

Schnelles Muster erkennen:

Schnelles Muster erkennen

Vollständiges Muster erkennen:

Vollständiges Muster erkennen

Erkennung auf mehreren Dateien:

Erkennung auf mehreren Dateien

Muster direkt aus IDA erstellen und erkennen:

Muster direkt aus IDA erstellen und erkennen

Installation

Dieses Dokument beschreibt, wie man grap auf einer Linux-Distribution baut und installiert.

Sie können auch lesen:

  • WINDOWS.md: Installation von grap unter Windows
  • IDA.md: Installations- und Nutzungshinweise für das IDA-Plugin

Voraussetzungen

Neben Compilern (build-essential) müssen folgende Abhängigkeiten installiert sein:

  • cmake
  • bison
  • flex
  • libboost-regex-dev
  • libboost-system-dev
  • libboost-filesystem-dev
  • libseccomp-dev
  • python3-dev
  • python3-pefile
  • python3-pyelftools
  • python3-capstone
  • swig (Version 3 oder neuer ist erforderlich)

Daher sollte dies unter Ubuntu / Debian funktionieren:

root@kitploit:~
sudo apt-get install build-essential cmake bison flex libboost-regex-dev libboost-system-dev libboost-filesystem-dev libseccomp-dev python3-dev python3-pefile python3-pyelftools python3-capstone swig

Bitte beachten Sie, dass diese für das neueste Ubuntu LTS (18.04.3) getestet wurden. Die Pakete können je nach Ihrer Distribution abweichen.

Bauen und installieren

Die folgenden Befehle bauen und installieren das Projekt:

  • mkdir build; cd build/ wie wir empfehlen, das Projekt in einem dedizierten Verzeichnis zu bauen
  • cmake ../src/; make baut mit cmake und make
  • sudo make install installiert grap nach /usr/local/bin/

SWIG könnte Python3 nicht finden, wenn Ihre Standardversion Python2 ist; dies kann behoben werden, indem Sie Python3 als Standard einstellen. Zum Beispiel unter Ubuntu:

root@kitploit:~
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Nutzung

Das Werkzeug kann mit folgendem Befehl gestartet werden:

$ grap [options] pattern test_paths

Unten sind einige Beispiele für unterstützte Optionen:

  • grap -h: beschreibt unterstützte Optionen

Man kann grap ein Muster aus einer Zeichenkette ableiten lassen. Es werden nur wenige Optionen unterstützt, aber dies ist nützlich für die Prototypenerstellung:

  • grap "opcode is xor and arg1 contains '['" (test.exe): sucht nach einem xor mit einem Speicherschreibzugriff
  • grap -v "sub->xor->sub" (test.exe): -v gibt den Pfad des abgeleiteten Musters aus

Wählen Sie, wie die Binärdateien disassembliert werden:

  • grap -od (pattern.grapp) samples/*: disassembliert Dateien im Ordner samples/ ohne Erkennungsversuch
  • grap -f (pattern.grapp) (test.exe): erzwingt die erneute Disassemblierung der Binärdatei und gleicht sie dann mit pattern.grapp ab
  • grap --raw (pattern.grapp) (test.bin): disassembliert eine rohe Datei (verwenden Sie --raw-64 für 64-Bit-Binärdateien)

Steuern Sie die Ausführlichkeit der Ausgabe:

  • grap -q -sa (pattern.grapp) (samples/*.grapcfg): gleicht disassemblierte Dateien ab, zeigt passende und nicht passende Dateien an, eine pro Zeile
  • grap -m (pattern.grapp) (test.grapcfg): zeigt alle erkannten Knoten an

Wählen Sie, wo die disassemblierten Datei(en) (.grapcfg) geschrieben werden; gleichen Sie mehrere Dateien mit mehreren Mustern ab:

  • grap patterns/basic_block_loop.grapp -o ls.grapcfg /bin/ls: disassembliert ls in ls.grapp und sucht nach Basisblock-Schleifen
  • grap (pattern1.grapp) -p (pattern2.grapp) (test.exe): gleicht mit mehreren Musterdateien ab
  • grap -r -q patterns/ /bin/ -o /tmp/ : disassembliert alle Dateien aus /bin/ nach /tmp/ und gleicht sie mit allen .grapp-Mustern aus patterns/ ab (die rekursive Option -r gilt für /bin/, nicht für patterns/)

Musterbeispiele

Das folgende Muster erkennt eine Entschlüsselungsschleife bestehend aus einem xor, gefolgt von sub, gefunden in einer Backspace-Beispielprobe:

root@kitploit:~
digraph decryption_md5_4ee00c46da143ba70f7e6270960823be {
A [cond=true, repeat=3]
B [cond="opcode is xor and arg2 is 0x11"]
C [cond="opcode is sub and arg2 is 0x25"]
D [cond=true, repeat=3]
E [cond="opcode beginswith j and nchildren == 2"]

A -> B
B -> C
C -> D
D -> E
E -> A [childnumber=2]
}

Beachten Sie, dass Musterdateien mehrere Mustergraphen enthalten können.

Weitere Musterbeispiele finden Sie in zwei Verzeichnissen:

  • patterns/ enthält einige Muster, die bei jeder Binärdatei nützlich sein können, wie z.B. ein Muster zum Erkennen kurzer Schleifen oder zum Erkennen einer Schleife auf Basisblöcken,
  • examples/ enthält Muster, die gegen die Backspace-Malware verwendet werden (siehe examples/backspace_samples.md, um die Binärproben zu erhalten).

Tutorials und weitere Beispiele

Zu Malware-Proben:

  • Navigation durch Malware-Proben mit grap (CLI, IDA): https://yaps8.github.io/blog/grap_qakbot_navigation
  • Automatisierung von Funktionsparsing und Entschlüsselung (Python-Bindungen): https://yaps8.github.io/blog/grap_qakbot_strings

Nutzung der Python-Bindungen:

  • Python-Datei, die die Verwendung der Bindungen zur Analyse von Backspace-Proben demonstriert: examples/analyze_backspace.py
  • Beispiele für IDApython-Scripting sind im IDA-Plugin integriert, sie können hier eingesehen werden: https://yaps8.github.io/grap/html/scripting_css.html

Dokumentation

Weitere Dokumentation finden Sie im Ordner doc/:

  • doc/COMPILE_OPTIONS.md
  • doc/DEBUG.md
  • doc/TESTS.md
  • doc/syntax_highlighting.md

Die Syntax von Muster- und Testgraphen wird in der Datei grap_graphs.pdf im Release-Bereich detailliert beschrieben.

Lizenz

grap ist unter der MIT-Lizenz lizenziert. Der vollständige Lizenztext ist in LICENSE zu finden.

Tool herunterladen