Wszystkie artykuły Poprzedni Następny

Czym jest rootkit

Rootkit jest jednym z najbardziej niebezpiecznych typów malware, z jakim możemy się spotkać. Sposób, w jaki działa, powoduje, że jest bardzo trudny do wykrycia. W tym artykule pokażemy rodzaje rootkitów, jak je wykryć, usunąć i jakie kroki podjąć by się przed nimi uchronić.

analiza malware

Rootkit to software, który umożliwia, pełną, niewykrytą, kontrolę nad systemem. Ten typ złośliwego kodu jest niebywale niebezpieczny z dwóch powodów. Dostęp na poziomie przywilejów administratora pozwala, na praktycznie niczym nieograniczone możliwości wykorzystania tego faktu, ale również na manipulacje systemem na bardzo niskim poziomie, co oznacza możliwość ukrycia przed programami, które mają na celu jego wykrycie.

Samo słowo rootkit pochodzi od połączenia słowa „root”, które oznacza administratora (użytkownika z pełnymi prawami dostępu) w systemach UNIX, oraz słowa „kit”, które oznacza zestaw narzędzi.

Krótka historia rootkitów

Rootkity swoje początki mają w latach 80-dziesiątych. Swoją egzystencję zaczęły od Linuxa. W tych latach powstawały pierwsze teoretyczne rozważania ich dotyczące. Ken Thompson, jeden z autorów UNIX-a poruszał ten problem już w 1983 roku.

Pierwszym znanym wirusem atakującym PC-ty był Brain, wykryty w 1986 roku. Cztery lata później powstał pierwszy znany rootkit. Stave Dake i Lane Davis są autorami prototypu (proof-of-concept) napisanego, w 1990 roku, pod Sun Microsystems OS (system UNIX).

Pierwszym rootkitem na system WindowsNT pojawił się w 1999 roku. Był to trojan napisany przez Grega Hoglund.

Pierwszy złośliwy kod atakujący Mac OS X pojawił się w 2009 roku.

Jednym z najbardziej znanych rootkitów (jak i malware w ogóle) jest Stuxnet, który został odkryty w 2010 roku. Stuxnet najprawdopodobniej został stworzony w kolaboracji Stanów Zjednoczonych z Izraelem (żadne z tych państw nie przyznaje się otwarcie) i był atakiem na program nuklearny Iranu, mającym na celu wyrządzenie fizycznych szkód.

Do czego może zostać wykorzystany rootkit?

Wykorzystanie rootkitów nie ma w zasadzie żadnych ograniczeń. Praktycznie każdy rodzaj malware może zostać zastosowany i stać się jeszcze groźniejszy przez funkcjonalność ukrywania się w systemie.

Jednymi z główniejszych zastosowań złośliwych rootkitów to:

  • Backdoor-y. Rootkity są idealnymi backdoorami, czyli furtkami, pomiędzy atakującym a systemem, które umożliwiają mu zdalną kontrolę.
  • Ukrywanie innego malware. Rootkity często służą jako nośnik dla innego rodzaju malware takiego jak keyloggery, czy wirusy.
  • Wykorzystywanie zainfekowanej ofiary jako bota służącego m.in. do ataków DDoS, spamowania, czy nieuczciwych kliknięć (click fraud).

Trzeba pamiętać, że tego typu oprogramowanie może mieć też legalne zastosowanie, takie jak:

  • Wykrywanie oszustw w grach.
  • Wykrywanie ataków (honeypots).
  • Wykrywanie samego malware. Niektóre programy antywirusowe mają funkcjonalność zbliżoną do rootkitów, która ma na celu ochrony przed nimi.
  • Funkcjonalności antykradzieżowe. Laptopy mają możliwość instalacji rootkitów na poziomie BIOS, który wysyła raporty monitorujące.

Rodzaje rootkitów

Pierścienie zabezpieczające (protection rings) opisują poziomy przywilejów architektury systemu komputerowego. Im bliżej poziomu 0 (ring 0), tym więcej przywilejów.

security ring

Poziom 3 (ring 3) to poziom aplikacji takich jak Microsoft Office, czy Photoshop. Poziom 1 i 2 to sterowniki, takie jak np. sterowniki systemu dźwiękowego, czy karty graficznej. Poziom 0 to najniższy poziom jądra systemu. To poziom, który steruje wszystkim innym w tym programami antywirusowymi, które operują zwykle na poziomie 3 i nie mają nawet pełnego dostępu do poziomu 1.

Rootkity działają na różnych poziomach, dlatego zrozumienie powyższych poziomów pozwoli lepiej zrozumieć samą klasyfikację tego typu malware.

Rootkit poziomu użytkownika (user mode rootkit)

To rootkity z najwyższego, poziomu 3 (ring 3). Działają na poziomie użytkownika, czyli tym samym co aplikacje.

Zwykle ich działanie polega na zamianie plików wykonywalnych lub bibliotek współdzielonych (.DLL w przypadku Windowsa i .dylib w przypadku MacOS). W ten sposób mają możliwość do przechwytywania zapytań API, co umożliwia im ukrywanie procesów, plików, sterowników systemowych, portów sieciowych, registrów, czy serwisów systemowych.

Rootkity z poziomu użytkownika często zamieniają standardowe programy, systemu służące do uzyskania informacji o nim (takie jak np. find, login, netstat, ls, ps, top — w przypadku systemów UNIX) na trojańskie wersje mające na celu maskowanie obecności malware.

Przykładami rootkitów z poziomu użytkownika to Vanquish, Aphex, czy Hacker Defender.

Rootkit trybu jądra systemu (kernel mode rootkit)

Rootkit, który działa w trybie jądra systemu (kernel mode) operuje z najwyższymi przywilejami systemu operacyjnego. Tego typu złośliwe oprogramowanie modyfikuje lub dodaje własne funkcjonalności do źródła systemu. Dzięki temu, że operuje na takim samym poziomie co sam system, ma możliwość modyfikowania oprogramowania antywirusowego (jak i każdego innego zainstalowanego oprogramowania, w praktycznie dowolny sposób).

Wiele rootkitów kernel mode występuje jako sterowniki urządzeń lub LKM (loadable kernel modules) w przypadku Linuksa.

Tego typu rootkity dają praktycznie nieograniczoną kontrolę, ale z powodu ich złożoności są trudne do napisania i bardzo często błędy w kodzie powodują niestabilność systemu, dzięki czemu mogą zostać wykryte.

Jeden z najbardziej znanych rootkitów w trybie jądra został opisany przez Grage'a Hoglund i opublikowany w magazynie Phrackw 1999 roku.

Autorzy systemów próbują wprowadzać praktyki utrudniające działanie rootkitom. Microsoft Windows (64-bit) zaimplementował obowiązkowe podpisywanie wszystkich sterowników na poziomie jądra, ograniczając tym samym możliwość egzekucji niebezpiecznego kodu.

Przykładami rootkitów w trybie jądra mogą być FU, Knark, Adore, Rkit, czy Da IOS.

Bootkity

Bootkity są wariantem rootkitów działających na poziomie jądra, ale zasługują na oddzielną kategorię.

Bootkity infekują MBR (Master Boot Record), VBR (Volume Boot Record) lub sektor startowy. Dzięki temu, że atakują przed startem systemu, mają nad nim całkowitą kontrolę.

Tego typu rootkit może zostać wykorzystany do ataku na zaszyfrowany dysk. Evil Maid to atak, który został opracowany przez polskiego analityka bezpieczeństwa, Joanne Rutkowską, w 2009 roku. Bootkit zamienia kod programu rozruchowego, przez co przejmuje nad nim kontrolę, co jest wykorzystywane do przejęcia kluczy deszyfrujących i haseł.

Przy pomocy tego typu malware możliwe jest ominięcie wymogu cyfrowego podpisu sterowników działających na poziomie jądra w Windows 7. Taki atak ma miejsce w przypadku rootkita Alureon — na szczęście jest nieskuteczny w wyższych wersjach Windowsa, który wykorzystuje zabezpieczenia bazujące na unikalnym, dla danego komputera, kluczu.

Przykładami bootkitów mogą być Olmasco, Rovnix, czy Stoned Bootkit.

Rootkit poziomu hipervisor / hipernadzorcy

Hipernadzorca to narzędzie niezbędne do zarządzania procesami wirtualizacji. Rootkity tej kategorii są głównie tematem badań akademicznych, działają na kolejnym (ring 1) poziomie bezpieczeństwa, wykorzystują wirtualizację sprzętową, która umożliwia przechwycenie komunikacji z oryginalnego systemu z hardware.

Tego typu rootkity nie muszą modyfikować jądra systemu. Mogą zostać wykryte przy pomocy pomiaru czasu egzekucji instrukcji CPU.

Windows 10 zaimplementował "Device Guard", który ma na celu zabezpieczać przed tego typu atakami.

Rootkit firmware i hardware

Zamiast atakować sam system rootkity firmware/hardware atakują kod opowiadający za obsługę narzędzi hardware takich jak router, karta sieciowa, a także kod BIOSU. Hakerzy wykorzystują, w tym przypadku, fakt, że firmware jest rzadko sprawdzane pod względem integralności kodu.

Przykładami rootkitów firmware mogą być Cloaker i VGA rootkit.

Wykrywanie rootkitów

Rootkity są niebywale niebezpieczne właśnie z powodu trudności w ich wykryciu. Malware w tym przypadku ma możliwość manipulacji samym systemem i standardowe praktyki takie jak sprawdzenie listy plików lub procesów w nim zachodzących nie są wiarygodne.

Jeśli malware jest na niższym poziomie systemu (ma wyższe przywileje) niż program, który ma zadanie go wykryć, wykrycie może być praktycznie niemożliwe (zakładając, że malware wykorzystuje odpowiednio swoje przywileje).

Jakie znamy metody wykrywania rootkitów?

Alternatywny nośnik

Jednym z najlepszych sposobów do wykrycia rootkita z poziomu systemu jest użycie alternatywnego nośnika z systemem. Ta technika polega na uruchomieniu systemu z zaufanego nośnika (CD-ROM, czy USB) i inspekcja dysku z potencjalną infekcją.

Techniki behawioralne

To techniki polegające na próbie rozpoznania malware w systemie za pomocą analizy zachowania się systemu. Obecność rootkita może oznaczać zmiany w czasie pomiędzy zapytaniami API, czy użyciu CPU. Niektóre rootkity powodują dosyć oczywiste zmiany.

Sygnatury

Sygnatury to jedna z najważniejszych metod wykrywania malware stosowana przez programy antywirusowe. W dużym przybliżeniu polega ona na wyodrębnieniu części kodu przez badaczy malware i dodaniu ich to bazy danych. Pliki badane są pod względem obecności sygnatury.

W przypadku rootkitów metody te łączone są z wykrywaniem prób ukrycia.

Sygnatury skuteczne są jedynie w przypadku znanych, „oznaczonych” rootkitów.

Wykrywanie różnic / porównanie krzyżowe

Kolejną metodą jest porównywanie różnic pomiędzy zaufanymi surowymi danymi a tym, co jest zwracane przez API. Binaria zapisane na dysku mogą zostać porównane z zawartością pamięci operacyjnej lub zawartość rejestru systemu Windows porównana z odpowiadającymi strukturami fizycznymi dysku.

Rootkity mają możliwość wykrycia tych technik i zastosowania odpowiednich modyfikacji sprawiając, że te staną się nieskuteczne.

Sprawdzenie integralności

Kod może zostać cyfrowo podpisany z wykorzystaniem klucza publicznego. To pozwala sprawdzić, czy kod nie został zmodyfikowany od czasu podpisania.

Alternatywnie, administrator systemu ma możliwość użycia kryptograficznych funkcji hash podczas instalacji systemu. Tego typu oznaczenie (fingerprint) jest skuteczne jedynie, jeśli do ataku rootkita dojdzie po instalacji.

Bardziej zaawansowane rootkity mają możliwość obejścia tej metody poprzez udostępnianie niezmienionych plików. Również sam kod dokonujący porównań może zostać zaatakowani i zmodyfikowany.

Zrzut pamięci

Istnieje możliwość dokonania pełnego zrzutu pamięci wirtualnej lub zrzutu jądra systemu (w przypadku rootkitów trybu jądra systemu). To umożliwi dokonania pełnej analizy, a co za tym wykrycia rootkita, który pozbawiony jest możliwości jakiegokolwiek działania maskującego.

Tego typu analizy są trudne do przeprowadzenia, a także, niekiedy, możliwe do ominięcia przez rootkity z poziomu hipernadzorcy, które mogą mieć możliwość wykrycia próby dokonania zrzutu pamięci.

Usuwanie rootkitów

Usuwanie jest bardzo trudne, ale istnieją narzędzia, które mają w tym pomóc. Poniżej lista darmowych rozwiązań.

Narzędzia do usuwania rootkiów dla systemu Windows

rootkit revealer

  • Sophos Virus Removal Tool jest darmowym wykrywaczem rootkitów od firmy Sophos.
  • GMER to bardzo dobry przenośny skaner napisany przez polskiego researchera Przemysława Gmerka. Obecnie jest wykorzystywany m.in. przez Avast.
  • TDSSKiller to darmowe narzeędzie od Kaspersky'ego. Niektóre z antywirusów mają możliwość dostępu do surowych struktur plików i stosują je do porównania z wynikami zapytań do API systemowego.

Narzędzia do usuwania rootkiów dla systemów MacOS i Linux

  • chkrootkit - darmowy wykrywacz rootkitów.
  • rkhunter - The Rootkit Hunter to darmowy skaner dla środowiska unixowego.
  • ESET Mac Rootkit Detector Beta - narzędzie dla Maca. Ostatni wspierana wersja systemu to Mac OS X 10.8.x (Mountain Lion).

Jak zabezpieczyć się przed rootkitami?

  • Używaj skanerów rootkitów
  • Rób jak najczęstsze aktualizacje
  • Zadbaj o dobrą konfigurację systemu
  • Ograniczaj możliwość instalacji oprogramowania
  • Zastosuj zasadę minimalnego uprzywilejowania
  • Używaj firewalli, które analizują sieć na poziomie aplikacji
  • Używaj bezpiecznego systemu uwierzytelnień
  • Wykonuj testy bezpieczeństwa
  • Ogranicz obecność kompilatorów w systemie

Postaw kawę autorowi artukułu.

Zobacz wszystkie artykuły

Jeśli potrzebujesz pomocy, twoja strona została zainfekowana, chcesz dokonać audytu bezpieczeństwa, czy po prostu masz jakieś pytania — napisz do nas. Postaramy się pomóc.

Zgłoś błąd w tekście
×