Polowanie na rootkity

Rootkit to oprogramowanie używające specjalnych technik, pozwalających ukryć procesy, pliki lub foldery przed użytkownikiem i większością programów użytkowych. Jest wykorzystywane do instalowania w systemie zagrożeń typu backdoor, ale działania przypominające instalowanie rootkita stosuje też wiele programów komercyjnych.


Rootkit to oprogramowanie używające specjalnych technik, pozwalających ukryć procesy, pliki lub foldery przed użytkownikiem i większością programów użytkowych. Jest wykorzystywane do instalowania w systemie zagrożeń typu backdoor, ale działania przypominające instalowanie rootkita stosuje też wiele programów komercyjnych.

Czy komercyjne oprogramowanie może instalować rootkity? Owszem. Najczęściej zdarza się programom antywirusowym i narzędziom systemowym, co potwierdza słynny przypadek Norton SystemWorks firmy Symantec. Oprogramowanie to ukrywało pewien folder na twardym dysku, próbując chronić w ten sposób użytkownika przed przypadkowym usunięciem ważnych plików. Lekarstwo okazało się gorsze od choroby, a ukryty folder mógł być z powodzeniem użyty do ukrywania nie tylko potrzebnych plików, ale też np. oprogramowania szpiegowskiego lub trojanów. Gdzie znajdował się ukryty folder? Była to część funkcji Norton Protected Recycle Bin, czyli dodatku do standardowego Kosza, pomagającego przywrócić skasowane pliki (nawet usunięte z Kosza). Folder NProtect był niewidoczny dla funkcji systemowych (Windows API). Stwarzało to niewielkie, ale realne zagrożenie, że zostanie wykorzystany do przechowywania niebezpiecznego oprogramowania, które w ten sposób ukryje się np. przed skanerem antywirusowym. Ukrywanie plików ma też na swoim koncie Kaspersky AnitVirus (od wersji 5.) - w tym wypadku znany antywirus rosyjskiej produkcji ukrywa informacje o przeskanowanych i nieprzeskanowanych plikach. I znów trudno mówić o działaniu na niekorzyść użytkownika, chociaż nie można całkowicie wykluczyć ryzyka związanego z ukrywaniem plików.

Najbardziej znana historia rootkita ukrytego w komercyjnym oprogramowaniu wiąże się z zabezpieczeniami płyt produkowanych przez Sony BMG. Oprogramowanie mające chronić płyty CD przed kopiowaniem (można było wykonać tylko trzy kopie) mocno ingerowało w system operacyjny, w dodatku bez wiedzy użytkownika. Pikanterii całej sprawie dodawało to, że oprogramowanie najprawdopodobniej korzystało z kodu dostępnego na licencji GNU LPGL, naruszając zasady tej licencji. Straszliwa burza, która rozpętała się wokół "rootkita od Sony", zmusiła firmę do wycofania obdarzonych feralnym zabezpieczeniem płyt z rynku.

Instalowanie rootkitów przez komercyjne oprogramowanie jest bardzo niebezpieczną tendencją. Pojedynczy rootkit może być wmontowany w system w dobrych intencjach (tak jak w wypadku Norton SystemWorks), ale jeśli na jednym komputerze zainstalowano kilka rootkitów, na tych "bezpiecznych", to najprawdopodobniej będą przeszkadzać sobie wzajemnie i innym aplikacjom, destabilizując system i narażając go na włamania.

Jak działa rootkit?

Polowanie na rootkity

Program antywirusowy Kaspersky AntiVirus Personal ukrywa przed funkcjami systemowymi wiele folderów na twardym dysku, wykorzystując tzw. alternatywne strumienie NTFS.

Przyjrzymy się działaniu rootkita, którego dalekosiężnym celem jest udzielenie dostępu do komputera niepowołanym osobom. Pliki rootkita powinny zostać zainstalowane w miejscu niewzbudzającym podejrzeń, np. w folderze systemowym. Następnie rootkit powinien zmodyfikować działanie niektórych programów systemowych, ukrywając obecność pewnych procesów lub jeszcze lepiej - usług. Z pewnością powinien zostać zmodyfikowany menedżer zadań, a nawet tablica aktywnych procesów, z której korzysta system operacyjny. Rootkit często zmienia też działanie narzędzi typu netstat - głównie po to, by ukryć transmisję danych w wybranym porcie (służącym do kontaktu z włamywaczem). Czy zmiana działania netstat jest trudna? Niestety, jest bardzo prosta. Wystarczy, że podczas instalacji rootkit zamieni plik netstat.exe na np. syscheckwin32.exe i umieści w folderze systemowym własny program o nazwie netstat.exe. Ten fałszywy netstat uruchamiać będzie oryginalna aplikację, zapisywać wyniki działania w pliku tekstowym, a następnie wycinać z tego pliku informacje o ukrywanych połączeniach i portach, po czym zwracać przetworzony plik użytkownikowi. Proste? Nawet bardzo. Rootkita ukrywają-cego komunikację w wybranym porcie może napisać nawet początkujący programista.

Powyższy przykład był prosty. Jak jednak możliwe jest ukrycie całego folderu na dysku? W tym wypadku rootkit musi przejąć obsługę pewnych funkcji systemowych (tak jak w poprzednim przykładzie "przejmował" działanie netstat.exe). Wystarczy, że przejmie obsługę funkcji systemowych, np. zwracających listę plików i folderów. Najprostsze przejęcie kontroli nad takimi funkcjami polega na zmodyfikowaniu odpowiedniej biblioteki DLL. Do funkcji systemowej dodawana jest instrukcja skoku, przenosząca wykonanie kodu do rootkita, który odpowiednio modyfikuje wyniki, po czym oddaje działanie właściwej funkcji systemowej. Ta prosta metoda jest, oczywiście, równie prosta do wykrycia. Do pełnej niewidzialności rootkit potrzebuje dodatkowych zabiegów, modyfikacji innych funkcji systemowych, które mogą zostać użyte do wykrycia zagrożenia. Są także sposoby zakamuflowania procesu w systemie niewymagające zmian w plikach, a jedynie odpowiedniej modyfikacji pamięci używanej przez system operacyjny do przechowywania listy aktywnych procesów.

Jak go wykryć?

Zadanie nie jest proste, gdyż z definicji rootkit to oprogramowanie, które ukrywa się przed użytkownikiem wykorzystując najgłębsze pokłady sys-temu operacyjnego. Dostępne są jednak programy, które pozwalają odnaleźć ślady jego obecności. Większość to narzędzia dla profesjonalistów, prezentujące różne sprytne techniki wykrywania, ale mało przydatne w domowych zastosowaniach. Wiele ciekawych narzędzi można znaleźć na stroniehttp://www.invisiblethings.org . Autorką programów i towarzyszących im publikacji jest Joanna Rutkowska, polska specjalistka w dziedzinie zabezpieczeń, zajmująca się właśnie technikami stosowanymi przez rootkity i sposobami ich wykrywania.

Rootkit Revealer 1.6

Polowanie na rootkity
Rootkit Revealer to program narzędziowy autorstwa Marka Russinovicha, człowieka, który wykrył root- kit w zabezpieczeniach Sony. Jest potężnym narzędziem, ale poprawne zinterpretowanie wyników skanowania systemu wymaga wiedzy. Aplikacja wyświetla wszystkie elementy, które mogą świadczyć o obecności rootkita, ale to nie dowodzi, że jest on w systemie. Na liście wyników mogą się pojawić np. nieprawidłowe wpisy w rejestrze, niezwiązane jednak z żadnym rootkitem. Program informuje także o folderach ukrytych przed funkcjami systemowymi, ale trzeba pamiętać, że w każdym systemie plików NTFS jest kilka folderów domyślnie niewidzialnych dla Windows API, np. $BadClus, $BitMap, $Volume czy $AttrDef. Jak widać, jest to narzędzie przede wszystkim dla zaawansowanych użytkowni-ków, które bardzo się przydaje do odkrywania rootkitów stanowiących zagrożenie dla systemu, a także instalowanych przez komercyjne oprog-ramowanie.

Informacjehttp://www.sysinternals.com

F-Secure BlackLight 2.2.1030 Beta

Polowanie na rootkity
Program BlackLight firmy F-Secure stanowi obecnie część pakietu F-Secure Internet Security 2006, ale jeszcze do końca kwietnia 2006 będzie dostępny w bezpłatnej wersji beta. Podobnie jak Rootkit Revealer, przede wszystkim wykrywa podejrzane elementy w systemie operacyjnym, ale działa znacznie szybciej, potrafi nie tylko wykrywać, ale także usuwać zagrożenia, natomiast nie wyświetla tak szczegółowego podsumowania, pomijając elementy standardowo ukryte przed Windows API czy błędne wpisy w rejestrze. Dodatkową zaletą aplikacji jest to, że nie wymaga restartu systemu operacyjnego, a skanowanie może być przeprowadzone w trakcie normalnej pracy. Słowem, to program przeznaczony dla mniej zaawansowanych, zwykłych użytkowników, którzy chcieliby wiedzieć, czy ich system jest wolny od rootkitów. Ci, którym zależy na dokładnym spisie ukrytych przed Windows API procesów i plików, będą bardziej zadowoleni z wyników działania Rootkit Revealera.

Informacjehttp://www.f-secure.pl

TCPView 2.40

Polowanie na rootkity
TCPView wyświetla kompletną listę wszystkich aktywnych połączeń z innymi komputerami i przydaje się zwłaszcza do sprawdzenia połączeń nawiązywanych przez "egzotyczne" porty, mogących świadczyć o działalności backdoora czy oprogramowania szpiegowskiego. Aplikacja oznacza procesy kolorami: żółtym te, które zmieniły docelowy adres IP połączenia, zielonym - nowe, a czerwonym - usunięte przez użytkownika. Zakończenie działania podejrzanego procesu jest proste - wystarczy zaznaczyć połączenia na liście, kliknąć prawym przyciskiem myszy i wybrać z menu podręcznego opcję Close Connections (można zakończyć tylko połączenia w stanie ESTABLISHED). TCPView ma odpowiednik pozbawiony okna dialogowego, działający w trybie tekstowym - TCPvcon. Domyślnie TCPView odświeża listę połączeń co sekundę, ale możesz zmienić tę częstotliwość, korzystając z opcji Options | Refresh Rate.

Informacjehttp://www.sysinternals.com

Active Ports 1.4

Polowanie na rootkity
Ten program informuje o wszystkich aktywnych portach TCP i UDP. Nie wykryje rootkita za ciebie, ale może oddać nieocenione usługi, gdy chcesz sprawdzić, jakie programy nawiązują połączenie z innymi komputerami. Pomaga zauważyć podejrzane połączenia, a także aplikacje, które funkcjonują inaczej, niż informuje ich nazwa. Te ostatnie przypadki mogą wskazywać na obecność np. backdoora podszywającego się pod inną aplikację. Program wyświetla także adres IP komputera, z którym łączy się dany proces. W wypadku podejrzanej aktywności użytkownik może zamknąć dowolny proces widoczny w oknie Active Ports 1.4. Program działa wyłącznie w systemach Windows NT/2000/XP. Uwaga: niektóre antywirusy uznają ActivePorts za szpiega, ale jest w pełni bezpieczny i komunikaty takie należy traktować jako fałszywe alarmy.

Informacje http://www.protect-me.com