RootkitRevealer v1.71

Autor: Mark Russinovich

Opublikowano: 1 listopada 2006 r.

DownloadPobierz rootkitRevealer(231 KB)
Uruchom teraz z programu Sysinternals Live.

Wprowadzenie

RootkitRevealer to zaawansowane narzędzie do wykrywania zestawu rootkit. Działa on w systemach Windows XP (32-bitowych) i Windows Server 2003 (32-bitowych), a jego dane wyjściowe zawierają listę rozbieżności interfejsu API rejestru i systemu plików, które mogą wskazywać na obecność zestawu rootkit trybu użytkownika lub jądra. RootkitRevealer pomyślnie wykrywa wiele trwałych zestawów rootkit, w tym AFX, Vanquish i HackerDefender (uwaga: RootkitRevealer nie ma na celu wykrywania zestawów rootkit, takich jak Fu, które nie próbują ukryć swoich plików ani kluczy rejestru). Jeśli używasz go do identyfikowania obecności zestawu rootkit, daj nam znać!

Powodem, dla którego nie ma już wersji wiersza polecenia, jest to, że autorzy złośliwego oprogramowania zaczęli kierować skanowanie RootkitRevealer przy użyciu jego nazwy wykonywalnej. Zaktualizowaliśmy więc rootkitRevealer, aby wykonać skanowanie z losowo nazwanej kopii, która działa jako usługa systemu Windows. Ten typ wykonywania nie sprzyja interfejsowi wiersza polecenia. Należy pamiętać, że możesz użyć opcji wiersza polecenia, aby wykonać automatyczne skanowanie z wynikami rejestrowanymi w pliku, co jest odpowiednikiem zachowania wersji wiersza polecenia.

Co to jest zestaw rootkit?

Termin rootkit służy do opisywania mechanizmów i technik, w których złośliwe oprogramowanie, w tym wirusy, programy szpiegujące i trojany, próbuje ukryć swoją obecność przed blokowaniem programów szpiegujących, oprogramowaniem antywirusowym i narzędziami do zarządzania systemem. Istnieje kilka klasyfikacji rootkit w zależności od tego, czy złośliwe oprogramowanie przetrwa ponowny rozruch i czy jest wykonywane w trybie użytkownika, czy w trybie jądra.

Trwałe zestawy rootkit
Trwały zestaw rootkit jest skojarzony ze złośliwym oprogramowaniem, które aktywuje się za każdym razem, gdy system się uruchamia. Ze względu na to, że takie złośliwe oprogramowanie zawiera kod, który musi być wykonywany automatycznie po każdym uruchomieniu systemu lub po zalogowaniu się użytkownika, musi przechowywać kod w magazynie trwałym, takim jak Rejestr lub system plików, i skonfigurować metodę, za pomocą której kod jest wykonywany bez interwencji użytkownika.

Zestawy rootkit oparte na pamięci
Rootkity oparte na pamięci to złośliwe oprogramowanie, które nie ma trwałego kodu i dlatego nie przetrwa ponownego uruchomienia.

Zestawy rootkit w trybie użytkownika
Istnieje wiele metod, za pomocą których zestawy rootkit próbują uniknąć wykrywania. Na przykład zestaw główny trybu użytkownika może przechwytywać wszystkie wywołania interfejsów API Windows FindFirstFile/FindNextFile, które są używane przez narzędzia eksploracji systemu plików, w tym Eksploratora i wiersza polecenia, w celu wyliczenia zawartości katalogów systemu plików. Gdy aplikacja wykonuje listę katalogów, która w przeciwnym razie zwróci wyniki zawierające wpisy identyfikujące pliki skojarzone z zestawem rootkit, zestaw rootkit przechwytuje i modyfikuje dane wyjściowe w celu usunięcia wpisów.

Natywny interfejs API systemu Windows służy jako interfejs między klientami trybu użytkownika a usługami trybu jądra i bardziej zaawansowanymi zestawami rootkit trybu użytkownika przechwytują system plików, rejestr i funkcje wyliczania procesów interfejsu API natywnego. Zapobiega to ich wykrywaniu przez skanery, które porównują wyniki wyliczenia interfejsu API systemu Windows z wartością zwracaną przez wyliczenie natywnego interfejsu API.

Zestawy rootkit w trybie jądra
Zestawy rootkit trybu jądra mogą być jeszcze bardziej zaawansowane, ponieważ nie tylko mogą przechwytywać natywny interfejs API w trybie jądra, ale mogą również bezpośrednio manipulować strukturami danych trybu jądra. Typową techniką ukrywania obecności procesu złośliwego oprogramowania jest usunięcie procesu z listy aktywnych procesów jądra. Ponieważ interfejsy API zarządzania procesami opierają się na zawartości listy, proces złośliwego oprogramowania nie będzie wyświetlany w narzędziach do zarządzania procesami, takich jak Menedżer zadań lub Eksplorator procesów.

Jak działa rootkitRevealer

Ponieważ trwałe zestawy rootkit działają przez zmianę wyników interfejsu API, tak aby widok systemu przy użyciu interfejsów API różnił się od rzeczywistego widoku w magazynie, rootkitRevealer porównuje wyniki skanowania systemu na najwyższym poziomie z tym na najniższym poziomie. Najwyższy poziom to interfejs API systemu Windows, a najniższy poziom to nieprzetworzona zawartość woluminu systemu plików lub gałąź rejestru (plik hive jest formatem magazynu na dysku rejestru). W związku z tym zestawy rootkit, zarówno w trybie użytkownika, jak i w trybie jądra, które manipulują interfejsem API systemu Windows lub natywnym interfejsem API w celu usunięcia ich obecności z listy katalogów, na przykład, będą widoczne przez rootkitRevealer jako rozbieżność między informacjami zwróconymi przez interfejs API systemu Windows i widocznymi w nieprzetworzonym skanowaniu struktur systemu plików FAT lub NTFS woluminu.

Czy zestaw rootkit może ukrywać się przed rootkitRevealer
Teoretycznie możliwe jest ukrycie zestawu rootkitRevealer przed rootkitRevealer. W ten sposób wymagałoby przechwycenia odczytów danych hive rejestru lub danych systemu plików rootkitRevealer oraz zmiany zawartości danych, tak aby dane rejestru lub pliki zestawu rootkit nie są obecne. Wymagałoby to jednak poziomu wyrafinowania, który nie był widoczny w zestawach rootkits do tej pory. Zmiany w danych wymagają zarówno intymnej wiedzy o formatach systemu plików NTFS, FAT i rejestru, jak i możliwości zmiany struktur danych, tak aby ukrywały zestaw rootkit, ale nie powodują niespójnych lub nieprawidłowych struktur lub rozbieżności skutków ubocznych, które byłyby oflagowane przez RootkitRevealer.

Czy istnieje pewny sposób, aby wiedzieć o obecności rootkita
Ogólnie rzecz biorąc, nie z uruchomionego systemu. Zestaw rootkit trybu jądra może kontrolować dowolny aspekt zachowania systemu, dzięki czemu informacje zwracane przez dowolny interfejs API, w tym nieprzetworzone odczyty gałęzi rejestru i danych systemu plików wykonywanych przez rootkitRevealer, mogą zostać naruszone. Podczas porównywania skanowania lokalnego systemu i skanowania w trybie off-line z bezpiecznego środowiska, takiego jak rozruch do instalacji systemu operacyjnego opartego na cd, jest bardziej niezawodny, rootkits może kierować takie narzędzia do wykrywania nawet przez nie.

Najważniejsze jest to, że nigdy nie będzie uniwersalnego skanera rootkit, ale najpotężniejsze skanery będą skanerami porównania online/pozawierszowymi, które integrują się z oprogramowaniem antywirusowym.

Korzystanie z rootkitRevealer

RootkitRevealer wymaga, aby konto, z którego zostało przypisane jego uruchomienie, pliki kopii zapasowej i katalogi, sterowniki ładowania i wykonywanie zadań konserwacji woluminu (w systemie Windows XP i nowszych). Grupa Administracja istrators jest domyślnie przypisywana do tych uprawnień. Aby zminimalizować wyniki fałszywie dodatnie, uruchom rootkitRevealer w systemie bezczynności.

Aby uzyskać najlepsze wyniki, zamknij wszystkie aplikacje i zachowaj bezczynność systemu podczas procesu skanowania RootkitRevealer.

Jeśli masz pytania lub problemy, odwiedź forum Sysinternals RootkitRevealer.

Skanowanie ręczne

Aby przeskanować system, uruchom go w systemie i naciśnij przycisk Skanuj. RootkitRevealer skanuje system zgłasza swoje akcje w obszarze stanu w dolnej części okna i zauważa rozbieżności na liście danych wyjściowych. Opcje, które można skonfigurować:

  • Ukryj pliki metadanych NTFS: ta opcja jest domyślnie włączona i ma element RootkitRevealer nie wyświetla standardowych plików metadanych NTFS, które są ukryte w interfejsie API systemu Windows.
  • Skanuj rejestr: ta opcja jest domyślnie włączona. Usunięcie jego zaznaczenia ma element RootkitRevealer, który nie wykonuje skanowania rejestru.

Uruchamianie automatycznego skanowania

RootkitRevealer obsługuje kilka opcji dla systemów automatycznego skanowania:

Użycie: rootkitrevealer [-a [-c] [-m] [-r] plik wyjściowy]

Parametr Opis
-a Automatycznie skanuj i wyjdź po zakończeniu.
-c Formatuj dane wyjściowe jako CSV.
-M Pokaż pliki metadanych NTFS.
-r Nie skanuj rejestru.

Należy pamiętać, że lokalizacja wyjściowa pliku musi znajdować się na woluminie lokalnym.

Jeśli określisz opcję -c, nie zgłasza postępu i rozbieżności są drukowane w formacie CSV w celu łatwego importowania do bazy danych. Skanowanie systemów zdalnych można wykonać, wykonując je za pomocą narzędzia Sysinternals PsExec przy użyciu wiersza polecenia, jak pokazano poniżej:

psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log

Interpretowanie danych wyjściowych

To jest zrzut ekranu rootkitRevealer wykrywający obecność popularnego zestawu rootkit HackerDefender. Rozbieżności klucza rejestru pokazują, że klucze rejestru przechowujące sterownik urządzenia i ustawienia usługi HackerDefender nie są widoczne dla interfejsu API systemu Windows, ale są obecne w nieprzetworzonym skanowaniu danych gałęzi rejestru. Podobnie pliki skojarzone z programem HackerDefender nie są widoczne do skanowania katalogów interfejsu API systemu Windows, ale są obecne w skanowaniu nieprzetworzonych danych systemu plików.

Rootkit Revealer

Należy zbadać wszystkie rozbieżności i określić prawdopodobieństwo, że wskazują one obecność zestawu rootkit. Niestety, nie ma ostatecznego sposobu określenia, na podstawie danych wyjściowych, jeśli zestaw rootkit jest obecny, ale należy zbadać wszystkie zgłoszone rozbieżności, aby upewnić się, że są one wyjaśnione. Jeśli ustalisz, że masz zainstalowany zestaw rootkit, wyszukaj w Internecie instrukcje usuwania. Jeśli nie masz pewności, jak usunąć zestaw rootkit, należy ponownie sformatować dysk twardy systemu i ponownie zainstalować system Windows.

Oprócz poniższych informacji na temat możliwych rozbieżności RootkitRevealer, Forum RootkitRevealer w Sysinternals omawia wykryte zestawy rootkit i konkretne fałszywie dodatnie.

Ukryte przed interfejsem API systemu Windows

Te rozbieżności są te, które wykazują większość zestawów rootkit; Jeśli jednak nie sprawdzono opcji Ukryj pliki metadanych NTFS, należy oczekiwać wyświetlenia wielu takich wpisów na dowolnym woluminie NTFS, ponieważ system PLIKÓW NTFS ukrywa pliki metadanych, takie jak $MFT i $Secure, z interfejsu API systemu Windows. Pliki metadanych obecne na woluminach NTFS różnią się w zależności od wersji systemu plików NTFS i funkcji NTFS, które zostały włączone na woluminie. Istnieją również produkty antywirusowe, takie jak Kaspersky Antivirus, które używają technik rootkit do ukrywania danych przechowywanych w alternatywnych strumieniach danych NTFS. Jeśli korzystasz z takiego skanera wirusów, zobaczysz niezgodność interfejsu API ukrytego z systemu Windows dla alternatywnego strumienia danych w każdym pliku NTFS. RootkitRevealer nie obsługuje filtrów wyjściowych, ponieważ zestawy rootkit mogą korzystać z dowolnego filtrowania. Na koniec, jeśli plik zostanie usunięty podczas skanowania, może być również widoczna ta rozbieżność.

Jest to lista plików metadanych NTFS zdefiniowanych jako system Windows Server 2003:

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Odmowa dostępu.
RootkitRevealer nigdy nie powinien zgłaszać tej rozbieżności, ponieważ używa mechanizmów, które umożliwiają dostęp do dowolnego pliku, katalogu lub klucza rejestru w systemie.

Widoczne w interfejsie API systemu Windows, indeksie katalogu, ale nie w MFT.
Widoczne w interfejsie API systemu Windows, ale nie w indeksie MFT lub katalogu.
Widoczne w interfejsie API systemu Windows, MFT, ale nie w indeksie katalogu.
Widoczny w indeksie katalogu, ale nie w interfejsie API systemu Windows lub MFT.

Skanowanie systemu plików składa się z trzech składników: interfejsu API systemu Windows, tabeli plików głównych NTFS (MFT) i struktury indeksów katalogów ntfs na dysku. Te rozbieżności wskazują, że plik pojawia się tylko w jednym lub dwóch skanowaniach. Typowym powodem jest utworzenie lub usunięcie pliku podczas skanowania. Jest to przykład raportu rozbieżności rootkitRevealer dla pliku utworzonego podczas skanowania:

C:\newfile.txt
1.03.2005 17:26
8 bajtów
Widoczne w interfejsie API systemu Windows, ale nie w indeksie MFT lub katalogu.

Długość interfejsu API systemu Windows nie jest zgodna z nieprzetworzonymi danymi hive.
Zestawy rootkit mogą próbować ukryć się, błędnie podając rozmiar wartości rejestru, aby jego zawartość nie jest widoczna dla interfejsu API systemu Windows. Należy zbadać wszelkie takie rozbieżności, ale może być również wyświetlane w wyniku wartości rejestru, które zmieniają się podczas skanowania.

Niezgodność typów między interfejsem API systemu Windows i nieprzetworzonymi danymi hive.
Wartości rejestru mają typ, taki jak DWORD i REG_SZ, a ta rozbieżność zauważa, że typ wartości zgłoszonej za pośrednictwem interfejsu API systemu Windows różni się od nieprzetworzonych danych gałęzi. Zestaw rootkit może maskować swoje dane, przechowując je jako wartość REG_BINARY, na przykład i sprawiając, że interfejs API systemu Windows uważa, że jest to wartość REG_SZ; Jeśli przechowuje wartość 0 na początku danych, interfejs API systemu Windows nie będzie mógł uzyskać dostępu do kolejnych danych.

Nazwa klucza zawiera osadzone wartości null.
Interfejs API systemu Windows traktuje nazwy kluczy jako ciągi zakończone wartością null, natomiast jądro traktuje je jako ciągi zliczane. W związku z tym można utworzyć klucze rejestru widoczne dla systemu operacyjnego, ale tylko częściowo widoczne dla narzędzi rejestru, takich jak Regedit. Przykładowy kod reghide w witrynie Sysinternals demonstruje tę technikę, która jest używana zarówno przez złośliwe oprogramowanie, jak i zestawy rootkit do ukrywania danych rejestru. Użyj narzędzia RegDelNull Sysinternals, aby usunąć klucze z osadzonymi wartościami null.

Niezgodność danych między interfejsem API systemu Windows i nieprzetworzonymi danymi hive.
Ta rozbieżność wystąpi, jeśli wartość rejestru zostanie zaktualizowana podczas skanowania rejestru w toku. Wartości, które zmieniają się często, obejmują znaczniki czasu, takie jak wartość czasu działania programu Microsoft SQL Server, pokazane poniżej i wartości skanera antywirusowego "ostatnie skanowanie". Należy zbadać dowolną zgłoszoną wartość, aby upewnić się, że jest to prawidłowa wartość aplikacji lub rejestru systemowego.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
1.03.2005 16:33
8 bajtów

Zasoby zestawu rootkit

Następujące witryny sieci Web i książki są źródłami dodatkowych informacji na temat zestawów rootkit:

Sony, Rootkits i Digital Rights Management poszło za daleko
Przeczytaj wpis Marka na blogu na temat jego odkrycia i analizy zestawu rootkit Sony na jednym z jego komputerów.

Odkrywanie zestawów rootkitów
Artykuł Mark's June Windows IT Pro Magazine zawiera omówienie technologii rootkit i sposobu działania rootkitRevealer.

Rootkits: odwróć jądro systemu Windows
Ta książka Greg Hoglund i Jamie Butler jest najbardziej kompleksowym leczeniem rootkitów dostępnych.

www.phrack.org
Ta witryna przechowuje archiwum Phrack, magazynu zorientowanego na cracker, w którym deweloperzy omawiają wady produktów związanych z zabezpieczeniami, technik rootkit i innych sztuczek złośliwego oprogramowania.

The Art of Computer Virus Research and Defense, Peter Szor

Złośliwe oprogramowanie: Walka ze złośliwym kodem, autorstwa Eda Skoudisa i Lenny'ego Zeltsera

Windows Internals, 4th Edition, Mark Russinovich i Dave Solomon (książka nie mówi o rootkitach, ale zrozumienie architektury systemu Windows jest pomocne w zrozumieniu rootkits).

DownloadPobierz rootkitRevealer(231 KB)

Uruchom teraz z programu Sysinternals Live.