Strona ta jest uzupełnieniem mojej prezentacji (nagranie) z konferencji Security BSides 2016. Tematem prezentacji było efektywne fuzzowanie za pomocą American Fuzzy Loop.
Tutaj przedstawiam:
- Narzędzia przydatne w pracy z AFL (lub rozszerzające funkcjonalność)
- Gotowe korpusy test case’ów
- Posty nt. fuzzingu
- Prezentacje z innych konferencji o podobnej tematyce
Narzędzia
- AFLFast – rozszerzenie AFLa o Power Schedules od teamu który zajął drugie miejsce w Grand DARPA Challenge
- afl-cov – generowanie raportu pokrycia kodu z danych przypadków testowych
- afl-sancov – j/w z tą różnicą, że wykorzytuje Clanga
- crashwalk – bardzo przydatne narzędzie do analizy znalezionych crashy
- disfuzz-afl – rozproszone fuzzowanie za pomocą AFL #1
- roving – rozproszone fuzzowanie za pomocą AFL #2
- Fuzzer kernela GNU\Linux oparty na AFL od Oracle
- TriforceAFL – rozszerzona wersja AFLa pozwalająca na full-system fuzzing za pomocą QEMU
- WinAFL – AFL pod Windowsa
- python-afl – AFL dla Pythona
- go-fuzz – AFL dla Go
- afl.rs – AFL dla Rust
- preeny – zbiór bibliotek pomocnych przy pwningu
- afl-utils – narzędzia do automatycznej “obróbki” crashy i nie tylko
- afl-trivia – rozszerzenie AFL o możliwość pauzowania / wznawiania działania oraz zarządzania korpusem między wieloma instancjami
- afl-kit (w tym momencie tylko poprawiony afl-cmin w Pythonie)
- RecidiVM – must have w przypadku fuzzowania z ASAN \ MSAN – określa potencjalne zapotrzebowanie na pamięć
- aflize – automatyczne budowanie paczek Debiana ze wsparciem dla AFL
- afl-ddmin-mod – alternatywne narzędzie do minimalizacji test case’ów lub crashy – nieco wolniejsze, lecz bardziej rozbudowane
- afl-sid – wygodne budowanie i wdrażanie AFL na Dockerze
- hongfuzz – interesujący fuzzer odpowiedzialny za ostatnie use-after-free w OpenSSL (CVE-2016-6309)
- Failure Observation Engine (FOE) – fuzzer od CMU CERT na platformę Windows
- libFuzzer – biblioteka LLVM do fuzzingu
Gotowe korpusy
- Olbrzymi zbiór test case’ów różnych typów (dokumenty, pliki wykonywalne, archiwa), pierwotnie dla ClamAV
- Mój korpus dla YARA
- Mój korpus dla OpenH264
- LibiCal – korpus + słownik, używany w Thunderbird, Evolution, Kontact
- yaml-cpp
- libsass
- libtorrent – korpus użyty do znalezienia CVE-2016-5301
Posty \ strony godne uwagi
- Bardzo dobry opis procesu fuzzingu krok po kroku za pomocą AFL
- Mój post nt. Double Free oraz Integer Underflow w Yarze
- Fuzzowanie Capstone Engine za pomocą persistent mode w AFL
- Drugi post o persistent mode w AFL
- Fuzzowanie ClamAV
- Narzędzie preeny + słowniki w AFL
- Jak fuzzować biblioteki?
- Fuzzowanie modułów Perla
- Bogaty zbiór opisów błędów i plików crashy znalezionych za pomocą AFL
- Zbiór CVE przypisanych AFL
- Wysokopoziomowy opis działania TriforceAFL