Rootkit na śniadanie
Paweł Krawczyk
(2005.11.17)
Wyobraźmy sobie konia trojańskiego, którego nie widzi żaden antywirus i nie ma go na liście procesów. A on tam jest, dyskretnie ukryty zbiera nasze hasła i kody do kont bankowych. Dzisiaj to już rzeczywistość. Skuteczne metody walki z rootkitami opisuje Paweł Krawczyk.
Walka z rootkitami nie jest łatwa, ale jest możliwa. Pomocne są w tym dwa narzędzia, które na dzień dzisiejszy wyłapują wszystkie seryjne rootkity. W skrajnych przypadkach pozostaje metoda ręczna, która daje jednak większą pewność że system jest czysty.
Klasycznym przykładem nowoczesnego rootkita jest czeski Hacker Defender, dostępny wraz z kodem źródłowym. Działanie tego programu jest bardzo widowiskowe, bo po uruchomieniu na testowym komputerze z Windows jego plik binarny oraz konfiguracyjny... po prostu znikają. Nie znajdziemy go również na liście procesów wyświetlanej przez Task Manager, pomimo że proces oczywiście tam jest.
KLIKNIJ NA OBRAZEK ABY POWIEKSZYĆ
Task manager nie pokazuje procesu hxdef100
Tworzy kilkanaście kluczy w rejestrze i choćby w ten sposób jest jednak wykrywalny. Konfiguracja Hacker Defendera jest elastyczna i pozwala dodawać do konfiguracji listę ukrywanych procesów, plików, a także nazw kluczy w rejestrze. Co więcej, przy budowaniu tej listy można posługiwać się wyrażeniami regularnymi, co ułatwia ukrywanie całych grup plików. Konstrukcja programu jest ukierunkowana na działanie w charakterze "ochroniarza" towarzyszącego rootkitowi konia trojańskiego lub keyloggera, czyli programu "podsłuchującego" dane wprowadzane za pomocą klawiatury.
Antywirusy
Programy antywirusowe w większości przypadków wykrywają pliki binarne rootkita i wyraźnie ostrzegają użytkownika przed niebezpieczeństwem. Ale potrafią go jednak wykryć tylko pod warunkiem, że system nie został wcześniej zainfekowany. To istotna różnica w stosunku do klasycznych wirusów - po uruchomieniu rootkita staje się on bowiem niewidzialny także dla programów antywirusowych, nawet pomimo tego, że cały czas działa w pamięci.
Dostępnych jest przynajmniej kilka narzędzi służących do automatycznego wykrywania rootkitów. Działają one zwykle na zasadzie analizy wielu elementów systemu i porównywania ich zawartości w celu znalezienia niespójności, świadczących o dyskretnej, ale jednak, ingerencji. Tam gdzie to możliwe, sprawdzanie odbywa się z pominięciem standardowego API Windows na różnych poziomach - program zakłada (i słusznie), że znajduje się ono pod kontrolą rootkita.
Narzędzia już są
Pierwszym testowanym przez nas narzędziem jest
Sysinternals Rootkit Revealer. Firma Sysinternals jest znana z publikowania licznych darmowych narzędzi ułatwiających niskopoziomowe konfigurowanie systemów Windows. Rootkit Revealer to aplikacja, służąca do skanowania systemu w poszukiwaniu podejrzanych i ukrytych elementów. Nie wszystkie raportowane przez Rootkit Revealer klucze lub pliki muszą być od razu wynikiem działania rootkita, ale wszystkie warto sprawdzić. Na ilustracji obok widać, jak Rootkit Revealer poradził sobie ze znalezieniem zainstalowanego w systemie Hacker Defendera. Jednak na jego znalezieniu rola programu się kończy - administrator musi sobie sam poradzić z jego usunięciem.
Rootkit Revealer w akcji
F-Secure BlackLight
http://www.f-secure.com/blacklight/try.shtml
Drugim przydatnym do walki z rootkitami programem jest wersja beta F-Secure BlackLight - narzędzia, które w tym roku ma wejść w skład komercyjnego skanera F-Secure. Biorąc pod uwagę jego skuteczność, będzie to bardzo słuszny krok ze strony producenta. BlackLight jest narzędziem nieco łatwiejszym w obsłudze od Rootkit Revealera i trudno się dziwić, bo docelowo ma być to program dla szerokiego grona użytkowników.
BlackLight skanuje system i przedstawia użytkownikowi raport ze znalezionych ukrytych plików, oferując również ich usunięcie. Przydatną funkcją jest możliwość wyświetlenia "jedynej prawdziwej" listy działających w systemie procesów, która jak widać różni się dość istotnie od tej wyświetlanej przez Managera zadań. Rootkit jest na niej wyraźnie widoczny jako proces hxdef100.
Lista procesów według BlackLight
Porównanie listy procesów wg BlackLight i Task Managera - rootkit jest widoczny
Po znalezieniu podejrzanych plików BlackLight proponuje użytkownikowi usunięcie lub zmianę nazwy w celu dezaktywacji przy kolejnym uruchomieniu systemu. Program sugeruje wykonać restart zaraz po zakończeniu skanowania. Dzięki temu system powinien wystartować bez ukrywających się "dodatków", w związku z czym skanowanie antywirusem powinno zlokalizować źródło infekcji.
BlackLight leczy system z rootkita
IceSword
Jeszcze jednym ciekawym narzędziem jest chiński program IceSword.
Posiada on rozbudowane funkcje znajdowania ukrytych elementów Windows i w połowie
tego roku w wersji 1.12 był jedyną aplikacją, która wykrywała komercyjne
wersje Hacker Defendera. Autorzy tego ostatniego w końcu znaleźli sposób na
obejście IceSword, ale równocześnie wysoko ocenili pomysłowość tego
programu.
Pewnym problemem przy korzystaniu z IceSword jest język - chiński. Dostępna w
sieci wersja angielska
nie chciała działać. Z drugiej strony to co najważniejsze, czyli lista
procesów jest wyświetlana w zwykłym ASCII a nie w ideogramach. Program od
ponad pół roku nie był uaktualniany.
RootKit Hook Analyzer
http://www.resplendence.com/hookanalyzer
System Virginity Verifier
http://www.invisiblethings.org/tools.html
Rootkit Detector V0.62
http://www.3wdesign.es/security/
Automaty niewątpliwie mogą więc niemało. Obydwa testowane programy radzą
sobie skutecznie z "seryjnymi" rootkitami, takimi jak Hacker Defender.
BlackLight jest zdecydowanie łatwiejszy w użyciu. Rootkit Revealer wyświetla
więcej ukrytych w systemie elementów, w tym także zmodyfikowane klucze
rejestru, co pozwala znaleźć symptomy wcześniejszej infekcji. Dla pełnego
efektu należałoby stosować obydwa narzędzia jedno po drugim.
Kiedy automat nie wystarczy?
Autorzy Hacker Defendera nie poprzestali na ogólnodostępnej wersji swojego
rootkita, która przecież w formie binarnej wykrywana jest z łatwością przez
większość programów antywirusowych, a po jego uruchomieniu rozpoznawana
przez opisane wyżej narzędzia. Użytkownikom "komercyjnym" rootkita
(czytaj: phisherom i złodziejom) oferowane są spersonalizowane, płatne wersje
rootkita wyposażone w zaawansowane funkcje ukrywania się w systemie. Najdroższa
kosztuje niemal 4 tys. zł, ale jest za to niemożliwa do wykrycia przez żadne
z testowanych przez nas narzędzi.
Prezentowany na stronie Hacker Defendera krótki
film (AVI) pokazuje jak uruchomiony rootkit skutecznie unika wykrycia, m.in.
przez ostatnie wersje BlackLight, Rootkit Revealera i kilku innych narzędzi.
Według zapewnień autorów rootkita, komercyjne wersje są w stanie ukryć się
przed wszystkimi znanymi programami do wykrywania rootkitów i antywirusami.
Jak z tym walczyć? Pamiętajmy, że te "dozbrojone" wersje Hacker
Defendera są niewykrywalne tylko dlatego, że ich techniki ukrywania się są
spersonalizowane pod kątem konkretnych antywirusów i narzędzi
antyrootkitowych. Jeśli więc dzisiejsza wersja jest niewidzialna dla F-Secure
BlackLight w wersji 2.2.1007, to bardzo prawdopodobne, że jutrzejszy BlackLight
już ją zobaczy. Jest to więc klasyczny przypadek tarczy i miecza, które cały
czas są udoskonalane. Według zapewnień autorów, komercyjne wersje są w
stanie ukryć się przed wszystkimi znanymi programami do wykrywania rootkitów
i antywirusami.
Istnieje jednak technika, która nie polega na żadnych wykrywaczach rootkitów,
a na specyficznych właściwościach tych ostatnich oraz samego systemu
operacyjnego.
Inne, bardziej zaawansowane ale za to skuteczniejsze metody opisujemy niżej.
Czy powinniśmy zawsze ufać antywirusom, kiedy codziennie powstają nowe konie trojańskie i rootkity? Jak wyprzedzić przeciwnika w wyścigu zbrojeń i jednoznacznie stwierdzić czy system jest wolny od zakaźnych "niespodzianek".
W poprzedniej części artykułu Rootkit na śniadanie opisywaliśmy narzędzia do automatycznego wyszukiwania rootkitów w systemie, działające za pomocą metody "cross-check" czyli porównywania list plików zwracanej przez system operacyjny z tym, co faktycznie jest na dysku.
W przypadku zastosowania rootkita ukierunkowanego specjalnie na konkretny program skanujący, takie narzędzia są najczęściej skazane na porażkę. To proste: ten, kto w systemie był pierwszy, może przejąć nad nim pełną kontrolę. Jedynie pewne niedopatrzenia ich autorów mogą powodować, że opisane wcześniej aplikacje, takie jak Rootkit Revealer czy BlackLight ,są w stanie wykryć rootkit w systemie przez niego opanowanym.
Każda aplikacja uruchamiana po zainstalowaniu rootkita będzie działać pod kontrolą tego złośliwego oprogramowania. Rootkit może dowolnie przejmować wywołania systemowe i podsuwać skanerowi takie dane, jakich ten oczekuje od "zdrowego" systemu. Autorzy skanera mogą w kolejnej wersji znaleźć miejsca, o których zapomnieli autorzy rootkita, i tam z kolei szukać jego śladów. Luka ta może z kolei zniknąć w kolejnej wersji rootkita - i tak bez końca. W tym wyścigu zbrojeń rootkit jest zawsze górą, ponieważ to on trafia do sieci jako pierwszy i w trakcie krótkiego "okresu swobody" może czynić szkody.
"Ciekawe" zastosowania
Problem nie jest tylko teoretyczny. Funkcjonalność rootkita Hacker Defender opisanego w poprzedniej części artykułu wręcz idealnie pasuje do zaprezentowanego przez firmę G DATA przykładu podrobienia podpisu elektronicznego za pomocą ukrytego w systemie filtra, który podmienia podpisywane dokumenty.
Sprzedająca certyfikaty X.509 firma Certum, której aplikację badała G DATA, odpowiedziała na tę demonstrację, że użytkownik powinien sam zadbać o to żeby w jego systemie działał firewall i antywirus. Ale kto będzie odpowiedzialny za konsekwencje fałszerstwa jeśli antywirus nie zobaczy rootkita?
Strider Ghostbuster
Istnieje jednak technika, która nie polega na żadnych wykrywaczach rootkitów, a na specyficznych właściwościach tych ostatnich oraz cechach systemu operacyjnego. W sytuacji gdy skaner działający w potencjalnie zarażonym systemie jest niewiarygodny, należy sprawdzić system ze środowiska, które na pewno jest "czyste". Pewnym rozwiązaniem jest uruchomienie na danym komputerze systemu z płyty CD z antywirusem i przeskanowanie dysku podejrzanego systemu. Stwarza to jednak wiele problemów praktycznych, po pierwsze związanych z aktualnością bazy antywirusa, a po drugie z czasem trwania skanowania.
Opracowana w ramach prowadzonego przez Microsoft projektu Strider metoda
Ghostbuster Rootkit Detection wykorzystuje główną cechę rootkitów, jaką jest ukrywanie przez nie plików w systemie do ich wykrywania. Największa "zaleta" rootkitów staje się ich największą słabością. Technika ta polega na porównaniu listy plików wygenerowanej przez rootkit w zarażonym systemie z listą plików w systemie uruchomionym ze zdrowego systemu.
Ponieważ w bardzo krótkim czasie liczba plików obecnych w systemie nie zmienia się radykalnie, porównując listę plików wygenerowaną w stanie zarażonym oraz w stanie zdrowym, jesteśmy w stanie wykryć te, które zostały celowo ukryte. Będą to te pliki, które pojawiły się pomiędzy wykonaniem listingu systemu zdrowego i listingu systemu potencjalnie zarażonego rootkitem. Przez system zdrowy rozumiemy tutaj system operacyjny uruchomiony z pewnego, czystego nośnika, ale mający dostęp do "podejrzanego" systemu plików. Procedura badawcza jest następująca:
(1) listujemy wszystkie pliki w zakażonym systemie i zapisujemy listing do pliku A,
(2) uruchamiamy czysty system z CD i z tego systemu powtarzamy listing plików na dysku systemu zarażonego, zrzut zapisujemy do pliku B,
(3) porównujemy pliki A i B, wszystkie poważniejsze różnice to najprawdopodobniej rootkit.
Jak widać procedura wymaga ponownego uruchomienia systemu, jednak samo badanie jest o wiele szybsze niż skanowanie antywirusem. Nie jest też uzależnione od jakichkolwiek sygnatur. Rootkit sam wskazuje nam pliki, które ukrywa, a im bardziej je będzie ukrywać, tym bardziej będą one widoczne. Metoda ta jest także niezależna od systemu operacyjnego, ponieważ cel rootkita - ukrywanie plików - jest identyczny zarówno w Windows, jak i Linuxie.
Ghostbusting w praktyce
Do poszukiwania rootkita tą metodą wykorzystaliśmy bootowalny CD z Windows. Kluczowe wymagania co do systemu-nadzorcy to obsługa NTFS oraz aktualna wersja programu dir.exe. Wersje obecne w starszych wersjach Windows nie obsługują wszystkich wymaganych flag, pozwalających na listowanie ukrytych plików.
Pewnym problemem okazało się znalezienie bootowalnego systemu spełniającego te kryteria - Windows XP pozwala jedynie na sformatowanie dyskietki bootującej, jednak zawarty tam interpreter poleceń nie obsługuje odpowiednich flag w poleceniu "dir", a pochodzący z XP program dir.exe wymaga do uruchomienia środowiska graficznego pomimo że działa w trybie tekstowym. Z tych samych powodów spełzły na niczym próby zastosowania FreeDOS, CD instalacyjnych do Windows i podobnych wynalazków. Albo wersja "dir" była nie ta, albo brak było obsługi NTFS.
Najlepszym rozwiązaniem okazało się wykorzystanie sprytnego programu BartPE, który pozwala na zbudowanie bootowalnego CD z pełnym systemem Windows. Przy wykorzystaniu płyt instalacyjnych Windows XP i odrobinie kombinacji związnych z koniecznością równoczesnego nałożenia SP2 (BartPE robi to niemal w pełni automagicznie) mieliśmy CD z graficznym acz okrojonym XP i kilkoma narzędziami w rodzaju Rootkit Revealera jako bonusem.
Mając to narzędzie w zarażonym systemie uruchamiamy linię komend (Start->Run->cmd.exe), przechodzimy do głównego katalogu i robimy listingi wszystkich plików w dwóch wariantach:
1. CD \
2. DIR /S /B /AH >INFSBAH.TXT (wszystkie pliki z flagą "hidden")
3. DIR /S /B /A-H >INFSBA-H.TXT (wszystkie pliki bez flagi "hidden")
Wyniki te pozostawiamy w tym samym miejscu w którym zostały utworzone czyli w katalogu C:\ zarażonego systemu. Następnie uruchamiamy system z płyty CD, uruchamiamy linię komend, przechodzimy na badany dysk (C:\) i powtarzamy listingi do innych plików (dla odróżnienia niech zaczynają się od "CL" jak "clean"):
1. CD C:\
2. DIR /S /B /AH >CLSBAH.TXT
3. DIR /S /B /A-H >CLSBA-H.TXT
Dysponujemy teraz dwoma parami plików - dwa z nich to lista plików widzianych przez zarażony system, druga to lista plików widziana przez zdrowy system na dysku tego pierwszego. Odpowiedź na pytanie o lokalizację potencjalnego intruza wskaże nam zatem porównanie obu par plików.
Najwygodniej wykorzystać do tego narzędzie WinDiff. Ładujemy do niego kolejno pliki INFSBAH.TXT i CLSBAH.TXT, a w drugim rzucie INFSBA-H.TXT i CLSBA-H.TXT. W każdym z nich po kliknięciu guzika "Expand" poszukujemy czerwonych pól oznaczających różnice. Może być ich trochę, biorąc pod uwagę że Windows intensywnie wykorzystuje ukryte pliki do własnych celów, jednak każda większa grupa nie wyglądająca na pliki systemowe jest podejrzana.
W naszym testowym przypadku Hacker Defendera rootkit był widoczny jak na dłoni w drugiej parze plików. Pliki, które "zniknęły" z systemu zarażonego rootkitem, w czystym systemie są znowu.
Hacker Defender w całej krasie
Metoda ta będzie jednak skuteczna tylko wtedy, gdy rootkit będzie ukrywał pliki. Można spytać, po co komu rootkit, który nie ukrywa plików - przecież wtedy z łatwością wykryje go większość antywirusów? Otóż Joanna Rutkowska opisuje
koncepcję rootkitów nowej
generacji, które mogą ukrywać pliki selektywnie albo usuwać się przed restartem systemu. W długo działających systemach serwerowych rootkit i tak prawdopodobnie zdąży zebrać dość przydatnych informacji, by bez wielkiej hańby ulotnić się przed restartem mogącym oznaczać próbę jego znalezienia.
System Virginity Checker czyli studium w szkarłacie
Kolejny program, System Virginity Verifier autorstwa Joanny Rutkowskiej polskiej specjalistki z dziedziny bezpieczeństwa, został stworzony właśnie w celu wykrywania rootkitów, które mogą ukrywać pliki selektywnie albo samodzielnie usuwać się przed restartem systemu. Programowi towarzyszy sterownik wspomagający sprawdzanie systemu, ładowany do Windows podczas pracy SVV. Głównym podejrzanym dla SVV są modyfikacje kodu w jądrze Windows oraz przejmowanie wywołań systemowych. Ponieważ jednak techniki te są wykorzystywane przez system Windows i wiele pożądanych aplikacji (antywirusy, debuggery), konieczne było jakieś rozróżnienie pomiędzy tym co dobre, a tym, co złe.
Ciekawą nowością w porównaniu do innych programów jest stosowanie przez SVV pięciostopniowej skali zagrożenia zamiast prostego "tak" lub "nie". Skala zaczyna się kolorem niebieskim (1), oznaczającym system całkowicie "dziewiczy", kończy się zaś głębokim szkarłatem (5), czyli systemem na pewno opanowanym przez rootkit. Takie skalowanie poziomu zagrożenia pozwala programowi dość łatwo odróżnić modyfikacje wprowadzone przez sterowniki Windows czy antywirusy od tych wprowadzonych przez programy ukrywające się w systemie ze złymi intencjami. Metoda ta okazała się bardzo skuteczna w praktyce, co przedstawia ilustracja obok. Dziewiczy system Windows 2000 Server - wynik "zielony"; system Windows XP z wieloma rezydentnymi narzędziami - wynik "żółty", czyli nadal wszystko w porządku; system Windows 2000 Server z uruchomionym rootkitem - wynik "szkarłatny".
Windows 2000 Server bez żadnych dodatków - system błękitny czyli niemal dziewiczy
Windows XP z zainstalowanym antywirusem i licznymi programami rezydentnymi, ale bez rootkita - wynik żółty, czyli wszystko w normie
Windows 2000 Server z uruchomionym rootkitem - szkarłatny alarm!
Jak widać, program poradził sobie bezbłędnie w przypadkach najczęściej spotykanych w realnym świecie. Dotyczy to zwłaszcza systemu Windows XP, który ze względu na obecność wielu mniej lub bardziej nietypowych narzędzi (sterowników urządzeń, narzędzi diagnostycznych itp.) może się wydawać podejrzany z punktu widzenia narzędzia badającego pamięć. Pomimo ich obecności w systemie, SVV bezbłędnie zlokalizował Hacker Defendera.
Co więcej, program potrafi również usuwać rootkity z pamięci (opcja "svv fix"). Oczywiście, program lojalnie ostrzega, że system może ulec destabilizacji. W przypadku zarażonego Windows 2000 Server leczenie okazało się w pełni skuteczne i obyło się bez komplikacji. Usunięcie rootkita miało natychmiastowy rezultat - zgodnie z przewidywaniami pliki Hacker Defendera pojawiły się z powrotem w katalogu, z którego je uruchomiono. Również sprawdzenie wyleczonego systemu Rootkit Revealerem oraz BlackLight dało wynik negatywny.
Leczenie systemu przy pomocy SVV
Usunięcie rootkita miało natychmiastowy rezultat - zgodnie z przewidywaniami pliki Hacker Defendera pojawiły się z powrotem w katalogu, z którego je uruchomiono. Również sprawdzenie wyleczonego systemu Rootkite Revealerem oraz BlackLight dało wynik negatywny.
Przyszłość wykrywania rootkitów
Dokładnie 17 listopada br. autorzy Hacker Defendera poinformowali o zakończeniu prac nad modułem ukrywającym komercyjną wersję rootkita przed SVV 1.1. Czyli znowu Hacker Defender górą. Pytanie: na jak długo? Zapewne do czasu publikacji kolejnej wersji SVV. Należy pamiętać, że SVV, Rootkit Revealer i inne narzędzia implementują tylko ograniczony zakres testów. Program kompleksowo weryfikujący wszystkie oznaki działania rootkita byłby zapewne twardym orzechem do zgryzienia dla autorów rootkitów.
Stworzenie takiego narzędzia to cel nowego projektu Joanny Rutkowskiej czyli OMCD (Open Metodology for Compromise Detection), który ma być tym dla wykrywania włamań, czym OSSTMM dla testów penetracyjnych, czyli kompletnym zbiorem procedur testowania systemu w celu wykrycia naruszenia jego integralności. Projekt jest w fazie rozruchu. Na razie więcej szczegółów można znaleźć w
prezentacji o SVV i OMCD zaprezentowanej we wrześniu na konferencji w Malezji.
Techniki opisane w tym artykule będzie można zobaczyć na żywo podczas darmowych warsztatów ISACA, które odbędą się w grudniu w Krakowie i Warszawie. Informacje o terminach spotkań można będzie znaleźć na
stronach ISACA.
Konsultacja techniczna: Tomek Onyszko, Wojtek Dworakowski, Joanna Rutkowska
http://www.hal.trzepak.net/faq/winxp/faqxp.html -strona główna FAQ XP