Fuzzing

https://chacker.pl/

Dzięki naszym obecnym ramom jesteśmy teraz w stanie uruchomić maszynę wirtualną i wykonać dowolny kod w Ring-0. Wszystko to zaledwie w kilku linijkach Pythona. Teraz użyjemy go do fuzzowania hiperwizorów!

Klasa bazowa fuzzera

Pisanie fuzzerów obejmuje pewne powtarzalne zadania, które możemy abstrahować do klasy bazowej:

Obiekty fuzzera (lub dowolnej klasy pochodnej) są tworzone (1) z wartości początkowej używanej do inicjalizacji pseudolosowego stanu fuzzera. Faktyczne fuzzowanie jest wykonywane przez metodę run (2), która uruchamia gościa i obsługuje przychodzące wiadomości. Pętla przetwarzania wiadomości ustawia alarm, więc jeśli fuzzer utknie na kilka sekund, zgłaszany jest wyjątek i fuzzer uruchamia się ponownie z nowym gościem. Wiadomości odpowiedzi są wysyłane do metody fuzz (3), która musi zostać zaimplementowana przez podklasy. Przychodzące wiadomości rozruchowe mogą być obsługiwane przez podklasy, które przeciążają on_boot (4). Gdy on_boot nie jest przeciążony, ta metoda po prostu wywołuje fuzz, przekazując puste ciało. Na koniec mamy kilka wygodnych metod generowania kodu (code, context_save i context_restore)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *