Projekt fusil to program fuzzing. Obecnie jest to specyficzne dla programów wiersza poleceń systemu Linux, ale kod jest przeznaczony do stosowania w przypadku każdego rodzaju projektu (zdalnego procesu, fałszywe serwera HTTP, gniazda sieciowego fuzz, etc.). Projekt fusil opiera się na systemie multi-agenta zamiast monolitycznego architektury.
Fusil jest projektem opensource napisany w Pythonie na licencji GNU GPL.
Spróbuj fusil
Idź do fusil katalogu nadrzędnym rozpocząć fuzz projekt xterm:
fusil --project projektu / xterm.py
Wynik wyjściowa:
$ Cd fusil
Projekt -p $ fusil / xterm.py
[Sesja # 1] Rozpoczęcie sesji
[Proces xterm] Timeout! (1,0 sekundy)
(...)
[Sesja # 8] Rozpoczęcie sesji
*** Glibc wykryte *** / usr / bin / xterm: podwójne wolne lub korupcji (poprz!): 0x080ad2b8 ***
======= Ślad: =========
/lib/tls/i686/cmov/libc.so.6[0xb7b957cd]
(...)
[Proces watch] Proces zabity przez SIGIOT sygnału
[Sesja # 8] Wynik sesji: 100,0%
[Aplikacja] Sukces z sesji # 8
Co nowego w tym wydaniu:
- Python 3 Wsparcie
- fusil-python:
- poprawy funkcji listę wszystkich modułów Pythona: używać sys.builtin_module_names i pkgutil.iter_modules ()
- moduły, czarnej więcej klasy i funkcje
Co nowego w wersji 1.3.2:
- replay.py: set sys.path złagodzić Wykorzystanie fusil bez instalowania go
- Fix fusil-gettext: ignorować błędy strace w locateMO ()
- fusil-python:
- ostrzeżenia ukryj Python
- listAllModules () zawiera moduły wbudowane
- Nowa opcja --only-c przetestować tylko moduły napisane w C
- wyciek pamięci fix: testowany usuwania modułów
- getFunctions fix (): wykorzystanie isclass także () w celu wykrycia klasy
- maksymalny limit pamięci proces Wyłącz fusil
Co nowego w wersji 1.3.1:
- fusil-python: autodiscover wszystkich modułów zamiast używania statyczna lista modułów, złapać żadnego wyjątku podczas ładowania modułu, tylko fuzz funkcje publiczne (moduł wykorzystanie .__ wszystkie __)
- FileWatch: ignorować zduplikowane części na sesji zmiany nazwy
- Usuń zduplikowane nazwy części sesji (np & quot;. Marynowane-error-błąd & quot; = & gt; & quot; picke błędów & quot;)
- replay.py: nie przekierowanie stdin do / dev / null, jeśli --ptrace służy
- sondy CPU: ustawić czas trwania max od 3 do 10 sekund (i zmienić nazwę sesji na sukces)
Co nowego w wersji 1.3:
- Tworzenie fusil-gimp
- Usuń charset od WriteCode: użyć wbudowane open () zamiast codecs.open (), ponieważ pliki utworzone przez open () są znacznie szybsze,
- Optimize FileWatch: nie skompilować wzorów na każdej sesji
- fusil zależy teraz od python-ptrace 0.6
- Nie używaj close_fds argument subprocess.Popen () w systemie Windows
- Czytnik konfiguracji Fix: normal_calm_load, normal_calm_sleep, slow_calm_load, klucze slow_calm_sleep opcje globalne są float, nie całkowitych
- FileWatch wykorzystuje wzór, aby zmienić nazwę sesji
Co nowego w wersji 1.2.1:
- Fix agenta mangle obrazu Magick fuzzer
- Fix AttachProcessPID () sondy: zatrzymanie procesu sondy na wyjściu
Co nowego w wersji 1.2:
- Użytkownik widoczne zmiany:
- fusil teraz wymaga Pythona 2.5
- Dokumentacja: Napisać indeksu (index.rst) oraz instrukcji obsługi (usage.rst)
- skrypt Powtórka: skopiować środowisku domowym dla GDB i złapać setuid () błąd
- fusil-firefox: obsługuje więcej formatów plików (bmp, gif, ico, png, svg), tworzenie --test opcji wiersza poleceń, wpisz stronę HTML w plik index.html
- fusil-python: Napisać błędów na stderr (zamiast na standardowe wyjście), aby uniknąć błędów w Unicode (w szczególności z Python3)
- FileWatch: zmienić nazwę sesji z & quot; long_output & quot; jeśli program napisał więcej niż linii max_nbline
- fusil-python: Czarna lista posix.fork (), aby uniknąć fałszywie dodatnie
- Jeśli proces został zabity przez sygnał, zmienić nazwę sesji przy użyciu nazwy sygnału (już pracował jeśli debugger był wyłączony)
- Zmiany programu:
- MangleAgent obsługuje wiele plików wejściowych
- Tworzenie DummyMangle: agenta z MangleFile API, ale nie dotykaj zawartość pliku do testowania fuzzer
- Sieć: close () metoda NetworkClient i wykorzystanie ServerClient shutdown (SHUT_RDWR)
- NetworkServer korzysta zaległości 5 klientów dla socket.listen () (zamiast 1)
- Poprawki błędów:
- Fix Directory.rmtree (powtórka) i skrypt Pythona 3.0 dla
- ServerClient.sendBytes Fix (): wykorzystanie socket.send () Wynik dostać kolejne dane przesunięcie
Co nowego w wersji 1.0 końcowa:
- W tej wersji dodano vlc i zzuf fuzzers, powtórkę. skrypt py z wielu opcji (np --valgrind) i opcją force-niebezpieczne (jak --unsafe ale bez potwierdzenia).
- Nie zawsze używa urządzenie jako null stdin dla procesów podrzędnych, aby uniknąć blokowania fuzzer jeśli proces odczytuje stdin.
- utworzony identyfikator procesu jest napisane w dziennikach.
Co nowego w wersji 1.0 Beta 3:
- Sesja zostanie zmieniona za pomocą kodu zakończenia procesu ( kod wyjścia lub sygnał). Wyświetlany jest postęp wykonanie.
- łączna liczba procesów jest ograniczona (w celu ochrony przed widelec bomby) i Zrzut jest dozwolone.
- Błędy wprowadzone przez przełączania użytkowników zostały ustalone.
- Zgodność z Pythona 3000 i FreeBSD poprawiła.
Wymagania :
- Python
- GCC
Komentarze nie znaleziono