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
autoharness — Ein Werkzeug, das automatisch Fuzzing-Harnesses basierend auf einer Bibliothek erstellt. | Kitploit
Tools/GitHubGitHub/parikhakshat/autoharness
SchwachstellenanalyseCode-AnalyseFuzzingBinäranalyse
GitHubparikhakshat/autoharness

autoharness

Ein Werkzeug, das automatisch Fuzzing-Harnesses basierend auf einer Bibliothek erstellt.

Repository anzeigen
29325vor 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

AutoHarness

Erstellt von Akshat Parikh

Was ist dieses Tool?

AutoHarness ist ein Tool, das automatisch Fuzzing-Harnesses für Sie generiert. Diese Idee entstammt einem aktuellen Problem beim Fuzzing von Codebasen: Große Codebasen haben Tausende von Funktionen und Codeabschnitte, die recht tief in der Bibliothek eingebettet sein können. Es ist sehr schwer oder manchmal sogar unmöglich für intelligente Fuzzer, diesen Codepfad zu erreichen. Selbst bei großen Fuzzing-Projekten wie oss-fuzz gibt es immer noch Teile der Codebasis, die nicht durch Fuzzing abgedeckt sind. Daher versucht dieses Programm, dieses Problem in gewissem Maße zu lindern und gleichzeitig ein Tool bereitzustellen, das Sicherheitsforscher zum ersten Testen einer Codebasis verwenden können. Dieses Programm unterstützt nur Codebasen, die in C und C++ programmiert sind.

Einrichtung/Demonstration

Dieses Programm verwendet llvm und clang für libfuzzer, Codeql zum Auffinden von Funktionen und Python für das allgemeine Programm. Dieses Programm wurde auf Ubuntu 20.04 mit llvm 12 und Python 3 getestet. Hier ist die erste Einrichtung.

root@kitploit:~
sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

Befolgen Sie die Installationsanleitung für Codeql auf https://github.com/github/codeql. Stellen Sie sicher, dass Sie die CLI-Tools und die Bibliotheken installieren. Für meine Tests habe ich sowohl die Tools als auch die Bibliotheken in einem Ordner gespeichert. Klonen Sie schließlich dieses Repository oder laden Sie eine Version herunter. Hier ist die Ausgabe des Programms nach dem Ausführen auf nginx mit dem Mehrfachargument-Modus. Dies ist der Befehl, den ich verwendet habe.

root@kitploit:~
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h,ngx_core.h

Ergebnisse: image Es ist definitiv möglich, die Erfolgsquote durch weiteres Debuggen der Kompilierung und Hinzufügen weiterer Header-Dateien und mehr zu erhöhen. Beachten Sie, dass das nginx-Projekt nach der Kompilierung keine Shared Objects enthält. Dieses Programm verfügt jedoch über eine Funktion, die PIE-Executables in Shared Libraries konvertieren kann.

Geplante Funktionen (in der Reihenfolge des Fortschritts)

  1. Struct Fuzzing

Die derzeit im Programm implementierte Methode zum Fuzzen von Funktionen mit mehreren Argumenten verwendet den Fuzzing-Datenanbieter. Es gibt einige Verbesserungen bei dieser Integration, aber ich glaube, ich kann diese Funktion mit Datenstrukturen einbinden. Ein Problem, auf das ich beim Programmieren gestoßen bin, betrifft codeql und verschachtelte Structs. Es wird besonders schwierig, ohne mehrere Abfragen zu schreiben, die für jede Funktion variieren. Kurz gesagt, diese Funktion benötigt mehr Arbeit. Ich habe auch über eine einfache Lösung mit Protobufs nachgedacht.

  1. Implementierungsbasierte Harness-Erstellung

Mit codeql ist es möglich, einen Kontrollflussgraphen zu generieren, der abbildet, wie die Parameter in einer Funktion initialisiert werden. Mit diesen Informationen können wir eine bessere Harness erstellen. Ein anderer Weg ist, nach Implementierungen der Funktion in der Bibliothek zu suchen und diese Informationen zu verwenden, um eine fundierte Vermutung über eine Implementierung der Funktion als Harness anzustellen. Die Probleme, die ich derzeit damit habe, sind die Generierung der Kontrollflussgraphen mit codeql.

  1. Parallelisiertes Fuzzing/Erkennung von Fehlalarmen

Ich kann ein einfaches Programm erstellen, das alle Harnesses ausführt und mit ASAN nach häufigen Fehlalarmen sucht. Außerdem kann ich eine neue Schnittstelle erstellen, die alle Harnesses gleichzeitig ausführt und deren Statistiken anzeigt.

Beitrag/Fehler

Wenn Sie Fehler in diesem Programm finden, erstellen Sie bitte ein Issue. Ich werde versuchen, einen Fix zu finden. Wenn Sie Ideen für neue Funktionen haben oder wie Leistungsverbesserungen oder die derzeit geplanten Funktionen implementiert werden können, erstellen Sie bitte einen Pull Request oder ein Issue mit dem Tag (contribution).

PSA

Dieses Tool generiert einige Fehlalarme. Bitte analysieren Sie die Abstürze zuerst und prüfen Sie, ob es sich um einen gültigen Fehler oder nur um einen Implementierungsfehler handelt. Sie können auch den Debug-Modus aktivieren, wenn einige Funktionen nicht kompilieren. Dies hilft Ihnen zu verstehen, ob Header-Dateien fehlen oder Link-Probleme vorliegen. Wenn das Projekt, an dem Sie arbeiten, keine Shared Libraries, sondern eine ausführbare Datei hat, stellen Sie sicher, dass Sie die ausführbare Datei in PIE-Form kompilieren, damit dieses Programm sie in eine Shared Library konvertieren kann.

Referenzen

  1. https://lief.quarkslab.com/doc/latest/tutorials/08_elf_bin2lib.html
Tool herunterladen