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
autoPwn — Automatisiere wiederkehrende Aufgaben für das Fuzzing | Kitploit
Tools/GitHubGitHub/bannsec/autopwn
ExploitationFuzzingBinäranalyse
GitHubbannsec/autopwn

autoPwn

Automatisiere wiederkehrende Aufgaben für das Fuzzing

Repository anzeigen
12630vor 5 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

Daily Build Trigger

Warnung

Ich schreibe dies gerade komplett neu. Der Schwerpunkt liegt zunächst auf interaktiven Linux-Apps, die nur Eingaben von stdin akzeptieren. Es wird versucht, die Driller- und Fuzzer-Funktionalität von Shellphish zu nutzen.

autoPwn in seinem aktuellen Zustand wird dies in begrenztem Umfang tun. Führen Sie einfach autoPwn ./binary aus und wählen Sie dann die Option Start.

Installation

Angesichts all der Abhängigkeitsprobleme hier ist der einfachste Weg, autoPwn zum Laufen zu bringen, die Verwendung des Docker-Builds. Beachten Sie, dass Sie die Optionen --security-opt und --cap-add entfernen können, aber einige Fuzzing-Aspekte könnten dann nicht funktionieren.

root@kitploit:~
$ sudo docker pull bannsec/autoPwn
$ sudo docker run -it -v $PWD:/mount --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ bannsec/autopwn

Im Docker-Build sollte alles einsatzbereit sein. Sie können das Tool einfach starten mit:

root@kitploit:~
$ autoPwn ./file

Quellcode für das Fuzzing kompilieren

autoPwn versucht, das Kompilieren von Quellcode für das Fuzzing eines Projekts zu erleichtern. Zu diesem Zweck wurde autoPwnCompile erstellt. Geben Sie einfach Ihren Quellcode an und geben Sie Optionen an, und es wird eine ausführbare Datei ausgegeben, die zum Fuzzing bereit ist.

root@kitploit:~
usage: autoPwnCompile [-h] [--file FILE] [--ASAN | --MSAN] [--UBSAN]
                      [--fuzzer FUZZER]

Compile source to binaries for use in autoPwn.

optional arguments:
  -h, --help       show this help message and exit
  --file FILE      Single file to compile.
  --ASAN           Enable ASAN (default off)
  --MSAN           Enable MSAN (default off)
  --UBSAN          Enable UBSAN (default off)
  --fuzzer FUZZER  (optional) What fuzzer to compile for. Options are:
                   ['AFL']. Default is AFL.

Das Folgende stammt aus der ALTEN Version von autoPwn..

Überblick

autoPwn ist ein hochtrabender Name für ein einfaches Skript. Bei der Arbeit mit Fuzzing und afl-fuzz ist mir aufgefallen, dass ich immer wieder die gleichen Aufgaben ausführe. Aus diesem Grund wollte ich ein Skript erstellen, das Folgendes erreicht:

  1. Automatisieren und Vereinfachen der Aufgabe, den Fuzzer durch intelligente Eingabeaufforderungen zu starten.
  2. Automatisieren und Vereinfachen der Aufgabe, den Fuzzer über eine Konfigurationsdatei neu zu starten.
  3. Vollautomatisches Minimieren der afl-Warteschlange.
  4. Vollautomatisches Extrahieren und Minimieren aller möglichen ausnutzbaren Pfade.
  5. Vollautomatisches Extrahieren und Minimieren aller möglichen Pfade im Allgemeinen.
  6. Vollständige oder teilweise Automatisierung der Generierung von Anfangspfadwerten.

Bisher ist das Skript in der Lage, die ersten 5 Punkte zu erfüllen. Punkt 6 ist spekulativ und wird derzeit entwickelt. Es würde die symbolische Ausführungsengine angr nutzen, um mögliche Anfangspfade zu erstellen. An diesem Punkt könnte das Skript theoretisch einfache Fuzzing-Aufgaben vollständig automatisieren.

Beispiel

Werfen wir einen Blick auf eine kürzliche TUCTF-Challenge namens "WoO2". Obwohl sie nicht unbedingt den benötigten Exploit findet, zeigt sie, wie autoPwn verwendet werden kann, um die Pfadfindung zu vereinfachen.

Hier ist ein grundlegender Durchlauf des Programms:

root@kitploit:~
$ ./e67eb287f23011a40ef5bd5c2ad2f48ca97834cf 
Welcome! I don't think we're in Kansas anymore.
We're about to head off on an adventure!
Select some animals you want to bring along.

Menu Options:
1: Bring a lion
2: Bring a tiger
3: Bring a bear
4: Delete Animal
5: Exit

Enter your choice:
1
Choose the type of lion you want:
1: Congo Lion
2: Barbary Lion
1
Enter name of lion:
Test
Menu Options:
1: Bring a lion
2: Bring a tiger
3: Bring a bear
4: Delete Animal
5: Exit

Enter your choice:
5

Lassen Sie uns einen einfachen Eingabetestfall erstellen:

root@kitploit:~
$ cat in/1 
1
1
Test
5

Jetzt können wir den Fuzzer einfach starten:

root@kitploit:~
$ autoPwn 
Setting up fuzz configuration
Target Binary (full or relative path): e67eb287f23011a40ef5bd5c2ad2f48ca97834cf
Command line args: 
Number of cores (default: 8): 
Test Case Dir (default: 'in/'): 
Test Case Dir (default: 'out/'): 
Max memory (default: 200): 4096
Starting fuzz
autoPwn> s
status check tool for afl-fuzz by <[email protected]>

Individual fuzzers
==================

>>> SESSION007 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION000 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION002 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION006 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION004 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION001 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION005 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

>>> SESSION003 (0 days, 0 hrs) <<<

  cycle 1, lifetime speed 1 execs/sec, path 0/1 (0%)
  pending 1/1, coverage 0.15%, no crashes yet

Summary stats
=============

       Fuzzers alive : 8
      Total run time : 0 days, 0 hours
         Total execs : 0 million
    Cumulative speed : 8 execs/sec
       Pending paths : 8 faves, 8 total
  Pending per fuzzer : 1 faves, 1 total (on average)
       Crashes found : 0 locally unique


autoPwn> h
autoPwn
     s == fuzzer (s)tatus
     e == collect (e)xploits
     a == collect (a)ll paths
     m == (m)inimize corpus
     q == (q)uit

Was hier also passiert ist, dass das Skript einige Standardwerte erstellt hat (einschließlich der Ermittlung der Anzahl der verfügbaren Kerne). Wir haben einen Standardwert geändert, da zusätzlicher Speicher benötigt wurde, um dies in QEMU auszuführen. autoPwn hat eine Konfigurationsdatei erstellt, die es dann an afl-utils (https://github.com/rc0r/afl-utils) übergeben hat. In der Konfigurationsdatei hat es auch CPU-Affinitäten eingerichtet, sodass das Fuzzing standardmäßig optimal ist.

An diesem Punkt arbeitet Ihr Computer am Fuzzing. Ein wichtiger Aspekt des Fuzzings ist jedoch die Minimierung des Korpus. Aus diesem Grund überwacht autoPwn die afl-fuzz-Instanz, um zu erkennen, wann eine Serie von Mutationen abgeschlossen ist. Wenn dies passiert, wird es das Fuzzing stoppen (nicht optimal, aber für den Moment in Ordnung), den Korpus minimieren und dann das Fuzzing neu starten. Dies geschieht ohne menschliches Eingreifen, sodass Sie es starten und vergessen können.

Irgendwann möchten Sie vielleicht einen Blick darauf werfen, welche Pfade afl gefunden hat. Durch Ausführen des Befehls "a" kopiert autoPwn alle bekannten Pfade, minimiert den Korpus und minimiert dann die Fälle selbst und stellt sie in einem Ausgabeverzeichnis bereit.

Tool herunterladen