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
obfuscation_detection — Binary Ninja-Plugin zur Identifizierung von obfuskiertem Code und anderen interessanten Codekonstrukten | Kitploit
Tools/GitHubGitHub/mrphrazer/obfuscation_detection
Statische AnalyseReverse EngineeringMalware-AnalyseBinäranalyseFirmware-Analyse
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

Binary Ninja-Plugin zur Identifizierung von obfuskiertem Code und anderen interessanten Codekonstrukten

Repository anzeigen
67274vor 3 MonatenVon 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

Obfuscation Detection (v2.4)

Autor: Tim Blazytko

Erkennen Sie automatisch verschleierten Code und andere interessante Codekonstrukte

Beschreibung:

Obfuscation Detection ist ein Binary-Ninja-Plugin zur Erkennung von verschleiertem Code und interessanten Codekonstrukten (z. B. Zustandsautomaten) in Binärdateien. Das Plugin erleichtert die Analyse, indem es Codestellen identifiziert, die während des Reverse Engineerings einen genaueren Blick wert sein könnten.

Basierend auf verschiedenen Heuristiken lokalisiert das Plugin Funktionen, die komplexe oder ungewöhnliche Codekonstrukte enthalten. Solche Codekonstrukte können Folgendes implementieren:

  • verschleierten Code
  • Zustandsautomaten und Protokolle
  • C&C-Server-Kommunikation
  • String-Entschlüsselungsroutinen
  • kryptografische Algorithmen

Die folgenden Blogbeiträge enthalten weitere Informationen zu den zugrunde liegenden Heuristiken und zeigen deren Anwendungsfälle:

  • Automated Detection of Control-flow Flattening
  • Automated Detection of Obfuscated Code
  • Statistical Analysis to Detect Uncommon Code
  • Identification of API Functions in Binaries

Einige Beispielanwendungen finden Sie in examples. Darüber hinaus demonstriert der REcon-Vortrag „Unveiling Secrets in Binaries using Code Detection Strategies“ einige Anwendungsfälle. Die Folien finden Sie hier; die Aufzeichnung finden Sie hier.

Kernfunktionen

  • identifiziert interessante Codekonstrukte in großen Binärdateien
  • hebt disaligned Instructions in Binary Ninjas Graphenansicht hervor
  • effiziente und architekturunabhängige Implementierung
  • läuft als Hintergrundaufgabe
  • taggt identifizierte Funktionen automatisch mit der entsprechenden Heuristik oder Dienstprogramm
  • kann im UI- und im Headless-Modus verwendet werden

Installation

Das Tool kann über den Plugin-Manager von Binary Ninja installiert werden.

Für die Headless-Version gehen Sie wie folgt vor:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_detection.git
cd obfuscation_detection

# obfuscation_detection installieren
pip install .

Verwendung

Das Plugin kann in der Benutzeroberfläche und im Headless-Modus verwendet werden.

Benutzeroberfläche

Wählen Sie Plugins -> Obfuscation Detection, um einzelne Heuristiken auszuführen, oder Plugins -> Obfuscation Detection -> Utils, um einzelne Dienstprogramme auszuführen. Der Befehl Plugins -> Obfuscation Detection -> All führt alle Heuristiken und alle Dienstprogramme gemeinsam aus.

Plugin-Menü

Die Ergebnisse werden im Log-Fenster angezeigt:

Binary Ninja-Protokoll

Durch Klicken auf die identifizierten Funktionsadressen navigiert Binary Ninja zur ausgewählten Funktion.

Headless

Um das Plugin im Headless-Modus zu verwenden, führen Sie scripts/detect_obfuscation.py aus:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py <binary>

Dies führt alle Heuristiken und alle Dienstprogramme aus. Für maschinenlesbare Ausgabe übergeben Sie --json:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py --json <binary>

Das JSON-Payload enthält alle Ergebnisse unter dem Schlüssel detections. Jede Erkennung hat eine stabile id für die Automatisierung und einen menschenlesbaren name. Jeder getaggte Funktionsfund enthält den Tag-Typ und die Beschreibung, die vom Binary-Ninja-Plugin verwendet werden.

Um nur die Zustandsautomaten-Heuristik im Headless-Modus auszuführen, verwenden Sie scripts/detect_state_machine.py:

root@kitploit:~
$ python3 scripts/detect_state_machine.py [--json] <binary>

Erkennungsheuristiken

Das Plugin implementiert verschiedene Erkennungsheuristiken, um unterschiedliche Codekonstrukte zu erkennen. Im Folgenden beschreiben wir kurz die einzelnen Heuristiken und erläutern ihre Verwendung.

Large Basic Block

Die Large-Basic-Block-Heuristik identifiziert die obersten 10 % der Funktionen mit der größten durchschnittlichen Anzahl von Instruktionen pro Basisblock. Sie ermöglicht die Erkennung von

  • entrolltem Code
  • kryptografischen Implementierungen
  • Initialisierungsroutinen
  • arithmetischer Verschleierung / Mixed Boolean-Arithmetic

Complex Function

Die Complex-Function-Heuristik identifiziert die obersten 10 % der Funktionen mit den komplexesten Kontrollflussgraphen (basierend auf zyklomatischer Komplexität). Sie ermöglicht die Identifizierung von

  • komplexen Dispatch-Routinen und Protokollen
  • Zustandsautomaten
  • mit undurchsichtigen Prädikaten verschleierten Funktionen

State Machine

Die Zustandsautomaten-Heuristik nutzt graphentheoretische Eigenschaften, um Funktionen zu identifizieren, die Zustandsautomaten implementieren. Üblicherweise lassen sich solche Zustandsautomaten als switch-Anweisungen darstellen, die in einer Schleife abgearbeitet werden. Die Heuristik ermöglicht die Identifizierung von

  • Netzwerkprotokoll-Dispatch
  • Dateiparsinglogik
  • C&C-Server-Kommunikation / Befehlsdispatch
  • Kontrollflussabflachung (Control-Flow Flattening)

Uncommon Instruction Sequence

Die Uncommon-Instruction-Sequence-Heuristik führt eine statistische Analyse durch, um die obersten 10 % der Funktionen zu identifizieren, deren Codemuster von einem vorberechneten Grundwahrheitswert abweichen. Auf diese Weise ermöglicht die Heuristik die Identifizierung von

  • kryptografischen Implementierungen
  • intensiver Nutzung von Gleitkommaarithmetik
  • arithmetischer Verschleierung / Mixed Boolean-Arithmetic
  • generischen Verschleierungsmustern

Overlapping Instruction

Die Overlapping-Instruction-Heuristik identifiziert Funktionen mit disaligned Instructions (Instruktionsbytes werden von zwei verschiedenen Instruktionen gemeinsam genutzt). Die Heuristik identifiziert

  • fehlerhafte Disassemblierung (z. B. Daten, die als Code markiert sind)
  • undurchsichtige Prädikate, die in andere Instruktionen springen

Wird die Heuristik in der Benutzeroberfläche von Binary Ninja verwendet, werden überlappende Instruktionen auch in der Graphenansicht hervorgehoben.

Most Called Function

Die Most-Called-Function-Heuristik identifiziert die obersten 10 % der Funktionen mit der größten Anzahl von Aufrufen aus verschiedenen Funktionen. Auf diese Weise kann die Heuristik

  • String-Entschlüsselungsroutinen
  • Bibliotheksfunktionen in statisch gelinkten Binärdateien

identifizieren.

Loop Frequency

Die Heuristik identifiziert Funktionen mit einer hohen Anzahl von Schleifen. Diese Art von Funktionen könnte Folgendes implementieren:

  • eine komplexe Parsinglogik für strukturierte Datenformate
  • intensive algorithmische Berechnungen

Die Heuristik hilft auch dabei, potenzielle Leistungsengpässe zu lokalisieren.

Irreducible Loop

Die Heuristik identifiziert Funktionen mit seltenen und komplexen Schleifenstrukturen, die typischerweise auf Folgendes hindeuten:

  • aggressive Compileroptimierungen
  • handgeschriebenes Assembly
  • Verwendung von goto-Anweisungen
  • verschleierten Code

XOR Decryption Loop

Die Heuristik identifiziert Funktionen, die innerhalb einer Schleife eine XOR-Operation mit einer Konstanten durchführen. Auf diese Weise kann die Heuristik

  • String-Entschlüsselungsroutinen
  • Code-Entschlüsselungsstubs
  • kryptografische Implementierungen

identifizieren.

Complex Arithmetic Expression

Die Heuristik identifiziert Funktionen, in denen die Ausdrücke gleichzeitig mehr als eine arithmetische Operation und eine boolesche Operation enthalten. Auf diese Weise kann die Heuristik

  • gemischt-boolesche arithmetische Verschleierung
  • Initialisierungsroutinen
  • kryptografische Implementierungen

identifizieren.

Duplicate Subgraph

Die Heuristik verwendet einen iterativen Kontext-Hashing-Ansatz, um wiederholte Multi-Block-Strukturen im Kontrollflussgraphen jeder Funktion zu erkennen. Durch den Vergleich der Opcode-Signatur jedes Blocks mit den Signaturen seiner Nachfolger identifiziert die Heuristik Subgraphen, die in einer einzelnen Funktion dupliziert oder nahezu dupliziert wurden. Dies hilft beim Auffinden von:

  • Verschleierungsstubs wie mehrfach geklonte kleine Zustandsautomaten oder Dispatcher-Blöcke
  • entrollte oder inline eingefügte Schleifen, die durch Compileroptimierungen eingeführt wurden
  • mehrfache Verzweigungslogik wie Bereichsverteiler und Entscheidungsbäume
  • wiederholte kryptografische oder Prüfsummen-Stubs

Dienstprogramme

Das Plugin enthält auch engere Dienstprogramme für interessante Funktionen und Codebereiche. Sie bleiben im Untermenü Utils verfügbar; der Befehl All führt sie zusammen mit den breiteren Heuristiken aus.

Entry Function

Dieser Helfer identifiziert Funktionen ohne bekannte Aufrufer. Diese Funktionen könnten

  • Einstiegspunkte in der Binärdatei sein
  • Ziele indirekter Sprünge sein, bei denen die Aufrufhierarchie vom Disassembler nicht wiederhergestellt werden konnte

Leaf Function

Dieser Helfer identifiziert Funktionen, die keine anderen Funktionen aufrufen. Diese Art von Funktionen kann zum Beispiel Funktionen sein, die

  • vom Compiler ausgelagert wurden, um Funktionalitäten zu implementieren, die an verschiedenen Codestellen genutzt werden
  • Trampoline zu anderen Funktionen sind
  • Teil von Codeverschleierungsschemata sind (z. B. ausgelagerte Berechnungen für die Kontrollflussverschleierung)

Recursive Function

Dieser Helfer identifiziert rekursive Funktionen – Funktionen, die sich direkt oder indirekt selbst aufrufen. Rekursive Funktionen können auf Folgendes hindeuten:

  • algorithmische Implementierungen wie Baum- oder Graphendurchläufe
  • verschleierten Code, der die statische Analyse erschweren soll
  • Implementierungen von mathematischen Algorithmen oder komplexen Parsingroutinen
  • potenzielle Stack-Overflow-Schwachstellen aufgrund tiefer Rekursion

Section Entropy

Dieser Helfer bewertet die Entropie jedes Abschnitts. Entropie ist ein statistisches Maß für Zufälligkeit mit Werten zwischen 0 und 8. Abschnitte mit einer Entropie nahe 8 weisen auf ein hohes Maß an Zufälligkeit hin und können auf Folgendes hindeuten:

  • gepackten oder komprimierten Code
  • verschlüsselte Daten oder Code
  • zufällige Daten

RC4

Dieser Helfer erkennt potenzielle Implementierungen des RC4-Algorithmus, indem er heuristische Marker verwendet, die typischerweise mit RC4s Key Scheduling Algorithm (KSA) und Pseudo-Random Generation Algorithm (PRGA) verbunden sind. RC4 wird häufig in Malware für Zwecke wie

  • Entschlüsselung von Strings und anderen Datennutzlasten
  • Verschleierung der Kommunikation mit Command-and-Control (C&C)

eingesetzt.

Kontakt

Für weitere Informationen kontaktieren Sie @mr_phrazer.

Tool herunterladen