Fuzzing zur Absturzsuche
Das Offset finden
Fuzzing zur Absturzsuche ist eine kostenlose Ethical Hacking Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ethical Hacking Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ethical Hacking Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Fuzzing?
Fuzzing bezeichnet das Senden fehlerhafter oder übergroßer Eingaben an ein Programm, um unerwartetes Verhalten, insbesondere Abstürze, auszulösen. Ein Absturz ist häufig ein Hinweis auf eine Speicherbeschädigungs-Sicherheitslücke.
Bei Pufferüberläufen besteht das erste Ziel darin, den Zielprozess zum Absturz zu bringen, damit wir wissen, dass ein Überlauf vorhanden ist.
Der Ablauf
Der klassische Ablauf beim Ausnutzen einer Schwachstelle ist:
- Durch Fuzzing das Programm zum Absturz bringen.
- Den genauen Offset bis zur Rücksprungadresse finden.
- EIP kontrollieren.
- Zu Shellcode umleiten.
Diese Lektion behandelt die ersten beiden Schritte.
Einen Debugger anhängen
Um Abstürze zu beobachten, hängen Sie einen Debugger (z. B. Immunity Debugger oder x64dbg unter Windows bzw. GDB unter Linux) an das Zielprogramm an.
Wenn das Programm abstürzt, zeigt der Debugger den Zustand der Register an, insbesondere von EIP. Dadurch lässt sich erkennen, ob wir die Rücksprungadresse überschrieben haben.
Größer werdende Eingaben senden
Ein einfacher Fuzzer sendet Zeichenketten mit zunehmender Länge, bis das Programm abstürzt. Häufig werden zunächst viele Zeichen 'A' (0x41) gesendet.
Wenn EIP nach dem Absturz 41414141 enthält, haben Sie die Kontrolle über die Rücksprungadresse bestätigt.
python -c 'print("A"*2000)' | ./vulnDen Absturz bestätigen
Wenn die Anwendung abstürzt und EIP 41414141 entspricht, hat der Überlauf die gespeicherte Rücksprungadresse erreicht.
Sie wissen jedoch noch nicht genau, wie viele Bytes vor EIP stehen. Wenn überall dasselbe Byte gesendet wird, zeigt das nur, dass EIP kontrollierbar ist, nicht aber, an welcher Position es sich befindet.
Den Offset finden: zyklische Muster
Um den exakten Offset zu finden, senden Sie statt ausschließlich 'A'-Zeichen ein eindeutiges, sich nicht wiederholendes Muster. Jedes 4-Byte-Fenster ist verschieden, sodass der in EIP landende Wert den Offset angibt.
Metasploit enthält dafür pattern_create.rb.
msf-pattern_create -l 2000Den Offset ablesen
Notieren Sie nach dem Absturz mit dem Muster den Wert in EIP. Übergeben Sie ihn an pattern_offset.rb; das Tool gibt die exakte Anzahl der Bytes vor EIP zurück.
Dieser Offset entspricht der Größe des Auffüllbereichs vor den Bytes der Rücksprungadresse.
msf-pattern_offset -l 2000 -q 39654138Den Offset überprüfen
Überprüfen Sie ihn immer. Erstellen Sie eine Eingabe aus offset Bytes 'A', gefolgt von vier 'B'-Bytes (0x42). Wenn EIP zu 42424242 wird, ist der Offset exakt.
Diese Bestätigung verhindert, dass Sie später stundenlang einen Fehler debuggen, bei dem der Offset um wenige Bytes abweicht.
"A"*offset + "B"*4 # EIP should become 42424242ESP bestimmen
Nachdem Sie EIP kontrollieren, stellen Sie außerdem fest, worauf ESP im Moment des Absturzes zeigt. ESP zeigt normalerweise direkt hinter die überschriebenen Rücksprungadresse, in Ihren verbleibenden Puffer.
In diesem Bereich werden Sie später den Shellcode platzieren.
Zusammenfassung der Werkzeuge
Zu den nützlichen Fuzzing- und Musterwerkzeugen gehören:
- Spike und boofuzz: Fuzzer für Netzwerkprotokolle.
- pattern_create / pattern_offset: ermitteln den EIP-Offset.
- mona.py in Immunity: automatisiert Aufgaben zu Mustern, Offsets und problematischen Zeichen.
!mona pattern_create 2000Reproduzierbarkeit ist wichtig
Ein nützlicher Absturz muss reproduzierbar sein. Speichern Sie die exakte Eingabe, die ihn auslöst, und führen Sie sie aus einem sauberen Zustand erneut aus, um zu bestätigen, dass der Offset stabil ist.
Inkonsistente Abstürze bedeuten häufig, dass es sich nicht um einen sauberen Stacküberlauf handelt oder dass eine Bedingung (Zeitpunkt, Länge oder Inhalt) zwischen den Durchläufen variiert.
Kurze Überprüfung
Rufen Sie sich in Erinnerung, warum ein zyklisches Muster besser ist als eine Zeichenkette aus identischen Bytes.
Zusammenfassung
Sie wissen nun, wie Sie den Absturz-Offset finden:
- Fuzzing mit zunehmend größeren Eingaben löst einen Absturz aus; bestätigen Sie ihn mit
41414141in EIP. - Verwenden Sie ein zyklisches Muster mit
pattern_create/pattern_offset, um den exakten Offset zu finden. - Überprüfen Sie ihn mit Auffüllbytes plus vier
'B'-Bytes (42424242). - Notieren Sie, worauf ESP zeigt, um später den Shellcode zu platzieren.
Als Nächstes übernehmen Sie EIP vollständig und leiten die Ausführung um.
Häufig gestellte Fragen
Ist die Lektion „Fuzzing zur Absturzsuche“ kostenlos?
Ja — der vollständige Text von „Fuzzing zur Absturzsuche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ethical Hacking Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ethical Hacking Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fuzzing zur Absturzsuche“?
Das Offset finden Du übst Ethical Hacking Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ethical Hacking Academy zu starten?
Keine Vorkenntnisse erforderlich. Ethical Hacking Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Fuzzing zur Absturzsuche“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ethical Hacking Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ethical Hacking Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Speicher und Stack
- Fuzzing zur Absturzsuche
- EIP kontrollieren
- Shellcode und Exploitation