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
choronzon — Ein evolutionärer wissensbasierter Fuzzer | Kitploit
Tools/GitHubGitHub/census/choronzon
SchwachstellenanalyseExploitationFuzzingBinäranalyse
GitHubcensus/choronzon

choronzon

Ein evolutionärer wissensbasierter Fuzzer

Repository anzeigen
27261vor 10 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

Choronzon - Ein evolutionärer wissensbasierter Fuzzer

Einführung

Dieses Dokument soll kurz die Theorie hinter Choronzon erläutern. Darüber hinaus enthält es Details zu seinen Interna und wie man Choronzon erweitern kann, um neue Anforderungen zu erfüllen. Ein Überblick über die Architektur von Choronzon wurde ursprünglich auf der ZeroNights 2015 Konferenz vorgestellt. Eine Aufzeichnung des Vortrags und die Präsentationsfolien sind ebenfalls verfügbar.

Choronzon ist ein evolutionärer Fuzzer. Es versucht, den evolutionären Prozess nachzuahmen, um kontinuierlich bessere Ergebnisse zu erzielen. Um dies zu erreichen, verfügt es über ein Bewertungssystem, das klassifiziert, welche der gefuzzten Dateien interessant sind und welche verworfen werden sollten.

Darüber hinaus ist Choronzon ein wissensbasierter Fuzzer. Es verwendet benutzerdefinierte Informationen, um Dateien des Ziel-Dateiformats zu lesen und zu schreiben. Um sich mit der Terminologie von Choronzon vertraut zu machen, sollten Sie bedenken, dass jede Datei durch ein Chromosom repräsentiert wird. Benutzer sollten die elementare Struktur des betrachteten Dateiformats beschreiben. Eine allgemeine Übersicht über das Dateiformat wird bevorzugt, anstatt jedes Detail und jeden Aspekt zu beschreiben. Jede dieser benutzerdefinierten elementaren Strukturen wird als Gen betrachtet. Jedes Chromosom enthält einen Baum von Genen und kann daraus die entsprechende Datei erstellen.

Choronzon ist in drei Teilsysteme unterteilt: das Tracer-Modul, das Chromosome-Modul und den Fuzzer.

Kurz gesagt: Die Chromosom-Komponente wird verwendet, um das Ziel-Dateiformat zu beschreiben. Benutzer können ihre eigenen Module schreiben, um neue oder benutzerdefinierte Formate zu unterstützen. Als Testfall ist ein PNG-Modul mit Choronzon enthalten.

Andererseits ist die Tracer-Komponente dafür verantwortlich, die Zielanwendung zu überwachen und verschiedene Informationen über ihre Ausführung zu sammeln. Diese Version von Choronzon verwendet Intels Pin Binärinstrumentierungswerkzeug, um die während der Ausführung besuchten Basisblöcke zu protokollieren. Choronzon kann jedoch auch andere Tracing-Backends unterstützen. Beachten Sie auch, dass in der nächsten Version von Choronzon Pin aufgrund seiner enormen Leistungseinbußen ersetzt wird.

Schließlich wird die Fuzzer-Komponente verwendet, um den Inhalt der zu testenden Dateien zu verändern. Das Modul enthält eine Sammlung von Mutatoren und Rekombinatoren. Mutatoren verändern die Datei einfach wie übliche Fuzzer. Zum Beispiel führen sie Byte-Flipping, Byte-Vertauschung, zufällige Byte-Mutation usw. durch. Aber Choronzon hat eine weitere Funktion, die bei Fuzzern nicht so üblich ist. Rekombinatoren nutzen die Informationen über die Struktur des Dateiformats, die vom Chromosom-Modul bereitgestellt werden, um intelligentes Fuzzing durchzuführen.

Chromosom

Im Verzeichnis chromosome/parsers finden Sie die Datei PNG.py. Dieses Python-Modul beschreibt dem Fuzzer das PNG-Dateiformat. Sie können Ihre eigenen Module für andere Dateiformate in diesem Verzeichnis hinzufügen.

Die grundlegende Idee hinter dem Chromosom-Teilsystem ist es, die ursprünglichen Seed-Dateien mit Hilfe eines Deserializers in einen Baum von Genen umzuwandeln. Irgendwann werden die (gefuzzten) Gene mit einem Serializer in eine Datei geschrieben.

Bedenken Sie, dass in Choronzon das Ziel des Parser-Moduls darin besteht, die elementare Struktur des Dateiformats bereitzustellen, anstatt jedes kleine Detail. Dies hilft dem Fuzzer, meist wohlgeformte Dateien zu erstellen, wodurch ein frühzeitiger Abbruch in der Zielanwendung vermieden wird. Zusätzlich spart dieser Ansatz Zeit, da die Beschreibung jedes Aspekts des Dateiformats zeitaufwändig ist und einen erheblichen Entwicklungsaufwand mit sich bringt.

Wie man einen benutzerdefinierten Parser schreibt

Ein neues Parser-Modul muss Folgendes importieren:

  • chromosome.gene.AbstractGene
  • chromosome.serializer.BaseSerializer
  • chromosome.deserializer.BaseDeserializer

und es muss implementieren:

  • eine Gen-Klasse, die von chromosome.gene.AbstractGene abgeleitet ist,
  • eine Serializer-Klasse, die von chromosome.serializer.BaseSerializer abgeleitet ist,
  • und eine Deserializer-Klasse, die von chromosome.deserializer.BaseDeserializer abgeleitet ist.

Im mitgelieferten Beispiel von Choronzon entspricht jedes PNGGene einem PNG- Chunk. Allgemein können Sie sich ein Gen als eine elementare Datenstruktur des Zielformats vorstellen. Jedes Chromosom besteht aus einem Baum von Genen und repräsentiert eine eindeutige Datei. Jedes Gen muss in der Lage sein, einen Byte-String zu erzeugen, der seine Daten zusammen mit den Daten der untergeordneten Gene im Baum enthält.

Der PNGSerializer muss in der Lage sein, aus einer Liste von Genen eine (weitgehend wohlgeformte) Datei zu erzeugen. Andererseits muss PNGDeserializer in der Lage sein, eine gültige Datei des Zielformats zu parsen und in einen Baum von Genen zu deserialisieren.

Überprüfen Sie chromosome/parsers/PNG.py für ein kommentiertes Beispiel für das PNG-Format.

Tracer

Das Tracer-Modul wird verwendet, um die Zielanwendung (und/oder eine oder mehrere ihrer Bibliotheken) zu disassemblieren. In dieser Version von Choronzon wird dies mit IDA erreicht. Wir haben diesen Ansatz gewählt, weil wir interessante Informationen aus der Fuzzing-Kampagne mit unseren IDBs korrelieren können. Allerdings werden wir die Abhängigkeit von IDA in naher Zukunft möglicherweise aufgeben, um Choronzon portabler und zugänglicher zu machen.

Eine Datei wird mit Hilfe eines Pin-Dienstprogramms gegen eine Anwendung getestet. Im Verzeichnis analyzer/coverage befindet sich der Quellcode dieses Pin-Tools, das am Anfang jedes Basisblocks in der Zielanwendung Hooks einfügt. Wenn die Ausführung beendet ist, korrelieren wir den getroffenen Basisblock mit dem Basisblock aus der Binärdatei. So können wir Metriken berechnen, die für uns wertvoll sind (Abdeckung usw.).

Fuzzer

Die Fuzzer-Komponente verwendet die Chromosom-Darstellung, um eine Datei zu fuzzen. Wie bereits erwähnt, gibt es in Choronzon zwei Fuzzing-Methoden.

Bei der ersten Methode holt Choronzon den Inhalt von einem oder mehreren Genen und wendet einen der Mutatoren an. Mutatoren implementieren übliche aber effektive Fuzzing-Methoden wie zufällige Byte-Mutation, Setzen des höchsten Bits, Byte-Vertauschung und viele mehr. Sie können auch Ihre eigenen benutzerdefinierten Mutatoren schreiben und sie in fuzzers/mutators.py hinzufügen.

Die zweite Fuzzing-Methode heißt Rekombination. Rekombinatoren werden verwendet, um die Struktur der Datei zu ändern. Hier ist ein Beispiel mit dem PNG-Format.

PNG-Dateien bestehen aus aufeinanderfolgenden Chunks, die vier Felder enthalten:

  • Länge,
  • Typ des Chunks,
  • Daten des Chunks,
  • und eine CRC.

Nehmen wir an, wir haben eine PNG-Datei, die nur IHDR-, IDAT- und IEND-Chunks enthält. Ihre Struktur würde folgendermaßen aussehen:

root@kitploit:~
[ PNG-Signatur ] [ IHDR ] [ IDAT ] [ IEND ]

Da Choronzon die grundlegenden Strukturen (d.h. die PNG-Chunks) kennt, ist es in der Lage, deren Reihenfolge zu ändern. Nach einer erfolgreichen Rekombination kann die gefuzzte PNG-Ausgabedatei so aussehen:

root@kitploit:~
[ PNG-Signatur ] [ IDAT ] [ IHDR ] [ IEND ]

Choronzon enthält viele weitere Rekombinationsstrategien, die es in die Lage versetzen, auch mit komplizierten Dateiformaten umzugehen.

Installation

Choronzon wurde getestet mit Python 2.7, Pin 3, IDA Pro 6.6 bis 6.9, auf Ubuntu 16.04 LTS (Linux-Kernel 4.4) und Windows 10.

Um es auszuführen, müssen Sie das Python-Paket sortedcontainers installieren. Sie finden es hier oder installieren es über pip.

Darüber hinaus benötigt Choronzon IDA Pro (genauer gesagt dessen Terminalversion). Der Pfad zu IDA Pro sollte in Ihrer Konfigurationsdatei wie folgt angegeben werden:

root@kitploit:~
DisassemblerPath = 'C:\\Program Files (x86)\\IDA 6.6'

Es wurde erfolgreich mit IDA Pro 6.6, 6.7, 6.8 und 6.9 getestet.

Choronzons Abdeckungs-Pin-Tool befindet sich unter analyzer/coverage und muss kompiliert werden. Sie können die Pin-Dokumentation für Details überprüfen, oder Sie können die folgenden Schritte ausführen:

  1. Kopieren Sie die Dateien coverage.cpp und makefile.rules nach /path/to/pin/source/tools/MyPinTool
  2. Führen Sie make aus. Wenn Sie unter Windows sind, sollten Sie die Visual Studio-Befehlszeile verwenden und das make-Dienstprogramm sowie seine Abhängigkeiten von Cygwin nutzen.
  3. Kopieren Sie das neu erstellte Verzeichnis obj-intel64 (oder obj-ia32 für 32-Bit-Systeme) zurück nach /path/to/choronzon/analysis/coverage

Konfiguration

Um mit Choronzon zu fuzzen, müssen Sie eine Konfigurationsdatei bereitstellen. Im Verzeichnis settings befindet sich ein Beispiel für Choronzons Konfiguration.

Tool herunterladen