Zagrożone środowisko

  • Marcin Marciniak,

Luka w standardzie

Zawartość tekstu poniżej ostrzeżenia można kontro-lować, co może posłużyć do ataku socjotechnicznego.

Bardzo ciekawą koncepcję ataku przedstawił Didier Stevens, specjalista zajmujący się bezpieczeństwem plików PDF. Przedstawiony przez niego scenariusz udowadnia, że można zainicjować infekcję jedynie przez umieszczenie odpowiednich komend w pliku PDF. Funkcją, z której korzystają eksploity, jest Launch File (z Launch Actions), przy czym jest to klauzula zawarta w specyfikacji PDF, umożliwiająca uruchomienie umieszczonych skryptów lub plików wykonywalnych. Ponieważ czytniki Adobe Reader oraz Foxit Reader nie pozwalają na uruchomienie wprost osadzonego kodu binarnego, Didier Stevens opracował specjalny sposób na umieszczenie i uruchomienie programu wewnątrz pliku PDF. W zasobach przeznaczonych dla frameworku Metasploit jest także dostępne narzędzie (adobe_pdf_embedded_exe) do testów podatności różnych systemów.

Podczas testów, badaczom udało się przygotować zestaw dwóch plików PDF, z których jeden tworzył plik BAT, który dodaje użytkownika do domeny Active Directory, a drugi dokument uruchamiał już utworzony plik z poziomu interpretera cmd.exe. Skutkiem otwarcia tych dwóch dokumentów w przeglądarce Foxit Reader, uruchamianej z uprawnieniami administratora (dość częsty przypadek, gdy administrator przegląda dokumentację online podczas jakichś prac), było dodanie nowego użytkownika z uprawnieniami administratora domeny. Atak z użyciem takich skryptów jest bardzo prymitywny, ale w wielu przypadkach byłby skuteczny. Ochrona za pomocą DEP i ASLR nie osłania przed żadnym z nowych ataków, gdyż nie są przełamywane zabezpieczenia przed wykonaniem kodu w obrębie pamięci, zamiast nich wykonywane są typowe odwołania systemowe, służące do uruchomienia nowego procesu. W systemach Windows do pewnego stopnia będzie można im przeciwdziałać.

Blokada uruchamiania nowych programów

Ci sami badacze, którzy analizowali podatność czytnika PDF, pracowali nad sposobem zabezpieczenia tej aplikacji przed atakami polegającymi na uruchomieniu przez nią obcego kodu. Jednym ze sposobów, który uniemożliwi wykorzystanie takiej luki, jest zablokowanie wykonywania nowych procesów - technika ta jest stosowana w wielu środowiskach sandbox i w rozwiązaniach hostowego IPS. Poprzez dodanie specjalnej biblioteki DLL modyfikującej API Create Process (NtCreateProcess, NtCreateProcessEx, NTCreateUserProcess czy ZwCreateProcess) można poważnie utrudnić uruchomienie nowego procesu. Niestety przechwycenie tych odwołań to za mało, gdyż złośliwy kod może użyć "magicznych liczb" NT albo załadować je z ntdll.dll i użyć bezpośrednio metody KiFastSystemCall.

Dzięki zmianie odwołania systemowego, nawet podatna aplikacja, taka jak Adobe Reader czy Foxit Reader, nie będzie mogła uruchomić nowego procesu - nie pozwoli na to przejęte odwołanie. Wynikiem może być załamanie czytnika, ale złośliwy kod nie zostanie wykonany. Niepożądanym skutkiem ubocznym jest zablokowanie mechanizmów aktualizacji, zazwyczaj realizowanych w postaci osobnego programu i wywoływanych z głównej aplikacji.

Niestety, pisanie rozwiązań HIPS pracujących w przestrzeni użytkownika nie jest prostą sprawą, są to rozwiązania podatne na błędy, a ich skuteczność jest ograniczona. Takie rozwiązania najlepiej działają na poziomie jądra systemu.

Manipulacja ostrzeżeniami

Chociaż program Adobe Reader (9.3.1, Windows 7, Ubuntu Linux) wyświetla okno z ostrzeżeniem, zawartość tekstu w oknie można w pewnym stopniu kontrolować i posłużyć się nim do ataku socjotechnicznego. Należy pamiętać, że opcja bezpiecznego przeglądania dokumentów (enhanced secutity) w programie Adobe nie wyłącza komendy /Launch, zatem mimo włączenia tej opcji, czytnik jest podatny na atak. Pewne utrudnienie dla włamywaczy można wprowadzić wyłączając w opcjach Trust Manager obsługę załączników innych niż PDF, ale nie jest to domyślne ustawienie.