Hacker verwenden häufig Fuzzers, um nach Schwachstellen in Software zu suchen und sie auf Schwachstellen zu untersuchen, die sie ausnutzen können. Softwareentwickler können mit einem Fuzzer solche Angriffe vorhersehen und abwehren.
Ursprung
Der erste Fuzzer wurde in den frühen achtziger Jahren von Entwickler Steve Capps geschrieben, um auf Schwachstellen in Programmen für den Macintosh-Computer zu testen. Er nannte sein Programm "The Monkey" und bezog sich dabei auf das klassische Sprichwort eines Affen, der eine unendliche Zeit lang zufällige Tasten einer Schreibmaschine drückte. Die Theorie besagt, dass der Affe bei ausreichender Zeit die kompletten Werke von Shakespeare schreiben wird. Obwohl dieser Ansatz für das Testen von Software normalerweise als "Fuzzing" bezeichnet wird, wird er aufgrund des Capps-Programms auch als "Affentest" bezeichnet.
Liste der Fuzzers
Fuzzing-Techniken können zum Testen von Software verwendet werden, und viele Fuzzers existieren für bestimmte Zwecke.
Das Folgende ist eine Liste von Fuzzern, von denen die meisten Open Source sind und sich viele noch in der aktiven Entwicklung befinden.
Fuzzer Name / URL | Beschreibung |
---|---|
Google-Desinfektionsmittel | Eine von Google entwickelte Gruppe von vier Datenentkeimern, die mithilfe von Fuzzing Programmfehler erkennt:
|
afl-fuzz | American Fuzzy Lop, ein Tool, das genetische Algorithmen verwendet, um die Sicherheit von kompilierten Programmen zu testen. |
Backfuzz | Ein Protokoll-Fuzzing-Toolkit. |
BrundleFuzz | Ein verteilter Fuzzer für Windows und Linux. |
CERT FOE | Failure Observation Engine, ein von CERT entwickeltes Tool, das mithilfe von Mutations-Fuzzing Schwachstellen in Windows-Programmen erkennt. |
CERTfuzz | Der Quellcode von CERT FOE. |
Choronzon | Ein evolutionärer wissensbasierter Fuzzer. |
Diffy | Ein von Twitter entwickeltes Tool zur Erkennung von Schwachstellen in Web-Services. |
Schwindlig | Eine fuzzing-Bibliothek für Python |
dfuzzer | Ein Fuzzing-Tool zum Testen von Prozessen, die über den D-Bus-IPC- und RPC-Mechanismus kommunizieren. |
dotdotpwn | Ein Tool zum Testen von Webanwendungen auf Schwachstellen bei der Pfaddurchquerung. |
Dranzer | Ein Fuzz-Tester für ActiveX-Steuerelemente. |
EMFFuzzer | Ein Enhanced Metafile-Fuzz-Tester. |
Ausnutzbar | Eine Erweiterung für GDB (der GNU-Debugger), die ausführbare Linux-Dateien analysiert und ihre Fehler nach Schweregrad nach bekannten Exploits klassifiziert. Ursprünglich im CERT entwickelt. |
Go-Fuzz | Ein Fuzz-Tester für Go-Programme, der Objekte mit zufälligen Werten auffüllt. |
grr | Konvertiert 32-Bit-Binärdateien in 64-Bit und fuzzing sie als Teil des Prozesses. |
honggfuzz | Evolutionärer, feedbackgesteuerter Fuzzer für Hardware und Software. |
HTTP / 2-Fuzzer | Ein Fuzzer für HTTP / 2-Anwendungen, der weiterhin zum Download zur Verfügung steht, jedoch nicht mehr aktiv entwickelt wird. |
Hodor | Ein "etwas mehr als total dummer" Fuzzer. |
iFuzzer | Ein in Python geschriebener Fuzzer, der Mercurial und Valgrind verwendet. |
KEMUfuzzer | Ein Fuzzer für virtuelle Maschinen, die auf QEMU-, VMware-, VirtualBox- oder BHOCS-Emulationsplattformen ausgeführt werden. |
KernelFuzzer | Ein Fuzzer für Kernel-Systemaufrufe |
LibFuzzer | Eine Bibliothek für prozessuale, evolutionäre, feldbasierte Fuzz-Tests. |
Netzob | Ein Fuzzer für Reverse-Engineering-Kommunikationsprotokolle. |
Neuraler Fuzzer | Ein Fuzzer, der für das Testen maschinelles Lernen (neuronale Netzwerke) verwendet. |
Albtraum | Ein verteilter Fuzzer mit webbasierten Verwaltungstools. |
Pathgrind | Pfadbasierte dynamische Analyse für 32-Bit-Anwendungen. |
Perf-Fuzzer | Ein Fuzzer, der speziell zum Testen des Systemaufrufs perf_event_open () im Linux-Kernel entwickelt wurde. |
Pulsar | Ein Fuzzer, der Protokolle "lernt". |
PyJFuzz | Ein Python-JSON-Fuzzer. |
QuickFuzz | Ein experimenteller Grammatikfuzzer, geschrieben in Haskell. |
Radamsa | Ein Fuzzer für allgemeine Zwecke. |
Geil | Ein einfacher Python-Fuzzer, der eine zufällige Eingabe für das getestete Programm generiert. |
sfuzz | Einfacher Flaum. "Genau wie es sich anhört - ein einfacher Fuzzer." Bestandteil des Kali Linux-Toolsets. |
Skifisch | Ein bei Google entwickelter Sicherheitsscanner für Webanwendungen. |
Syntribios | Ein automatisierter Fuzz-Tester für Web-APIs, der in Python geschrieben und von der OpenStack Security Group verwaltet wird. |
TriforceAFL | Ein Full-System-Fuzzer, der QEMU verwendet. |
Wapiti | Ein Scanner für Webanwendungs-Schwachstellen. |
Wfuzz | Ein Brute-Force-Fuzzer für Webanwendungen. |
zzuf | Ein deterministischer, transparenter Anwendungseingabefuzzer, der Bits in den Eingabeoperationen einer Datei zufällig ändert. |
Das Folgende sind unscharfe Kabelbäume oder Frameworks, die Ihnen beim Verwalten Ihres Fuzz-Tests helfen können.
Fuzzing Framework | Beschreibung |
---|---|
CERT BFF | Das von CERT entwickelte BFF (Basic Fuzzing Framework) wurde entwickelt, um Schwachstellen in Windows-, MacOS- und Linux-Anwendungen zu finden. |
FuzzFlow | Ein Fuzzing-Framework in AngularJS. |
Fuzzinator | Ein Framework für zufällige Fuzz-Tests. |
FuzzLabs | Ein allgemeines Fuzz-Test-Framework. |
Schleifer | Ein Fuzz Testing Automator / Framework zum Testen von Webbrowsern. |
Kitty | Ein in Python geschriebenes Fuzz-Test-Framework. |
ofuzz | Ein in OCaml geschriebenes Fuzzing-Framework. |
Nodefuzz | Ein Fuzz-Test-Framework für Webbrowser, geschrieben in nodejs. |
PassiveFuzzFrameworkOSX | Ein Fuzzer zum Testen von Schwachstellen im macOS-Kernel. |
Pfirsich Fuzzer | Eine Plattform für Fuzz-Tests, mit der praktisch jedes System auf unbekannte Schwachstellen getestet werden kann. |
RamFuzz | Ein Fuzzer zum Testen der einzelnen Parameter von Objektmethoden. |
Sulley | Ein "vollautomatisches und unbeaufsichtigtes, reines Python" Fuzzing-Framework. |
FunFuzzer | Ein Python-Fuzzing-Harness für JavaScript-Engines und DOM-Renderer von Mozilla. |
Fehler, Programmierbegriffe, Sicherheitsbegriffe, Softwaretest