Ciekawy scenariusz/sposób ataku: KHOBE

Warto zapoznać się z artykułem KHOBE – 8.0 earthquake for Windows desktop security software opisującym ciekawy przykład ataku, który pozwala na obejście zabezpieczeń opartych o SSDT hooking. Jest to specyficzny przypadek race condition (TOCTOU). W pewnym uproszczeniu problem polega na tym, że kod “systemu zabezpieczającego” widzi inne parametry niż te, które są ostatecznie obsługiwane przez wywołanie systemowe. Dlaczego?

Cóż, od pewnego czasu systemy operacyjne są w stanie wykonywać wiele procesów (wątków) jednocześnie. Oczywiście ilość procesorów jest ograniczona, więc stan ten jest osiągany przez przypisywanie kwantu czasu procesora dla kolejnych wątków. Wykonywany wątek może być wywłaszczony w praktycznie dowolnej chwili, a w międzyczasie inny wątek może zmodyfikować dane, na których wywłaszczony właśnie wątek pracował. W tym przypadku wywłaszczenie i modyfikacja danych powinna nastąpić po wykonaniu założonych przez autorów “oprogramowania zabezpieczającego” sprawdzeń, ale przed “prawdziwym” kodem realizującym “chronioną” funkcję. Więcej szczegółów we wspominanym artykule (dobrze opisuje to sekcja: The Problem).

O wywłaszczeniu decyduje system operacyjny, więc osiągnięcie pożądanych efektów nie zawsze jest trywialne i deterministyczne, może wymagać kilku prób:

The argument-switch attack requires specific behavior from system scheduler which is impossible to ensure from user mode. However, this fact does not affect the strength of the attack too much. If the goal of the attack is to perform the action that the security software always blocks, the attacker and faker threads might try the method many times till they succeed. Our experiments show that in most cases, the attack succeeds after few attempts and sometimes even the first attempt is successful. The number of attempts needed can be radically lowered using smart manipulation of the threads' priorities.

Dla równowagi – KHOBE Not So High On The Richter Scale, czyli trochę o tym, że artykuły typu “koniec świata” na temat argument-switch są nieco przesadzone.

Ja ze swojej strony do programów antywirusowych mam pewną awersję (patrz: Dlaczego nie używam antywirusa). Dla porządku dodam, że obecnie na części moich komputerów zamiast ClamAV zainstalowany jest Microsoft Security Essentials. Zmiana ta wynika nie z jakiejś radykalnej zmiany moich poglądów, ale z faktu, że MSSE jest w moim odczuciu na tyle “lekki”, by pozwolić sobie na jego uruchomienie w tle. Co prawda musiałem wprowadzić kilka modyfikacji (np.: Virus scanning recommendations for Enterprise computers that are running currently supported versions of Windows, wykluczenie ze skanowania wielu ścieżek), ale po pewnym czasie doszedłem z oprogramowaniem do porozumienia.

Nie lubię, gdy oprogramowanie antywirusowe stara się robić zbyt wiele. Jednym z elementów tego “zbyt wiele” jest właśnie przechwytywanie wywołań systemowych w celu wprowadzenia “dodatkowej warstwy zabezpieczeń”, co w praktyce często oznaczało wprowadzenie nowych błędów, patrz: Plague in (security) software drivers. Atak argument-switch tylko mnie w tym przeświadczeniu utwierdza.

Oryginał tego wpisu dostępny jest pod adresem Ciekawy scenariusz/sposób ataku: KHOBE

Autor: Paweł Goleń