Sekretne życie rootkita

Rootkit to program zmieniający działanie systemu operacyjnego i w ten sposób ukrywający przed wzrokiem użytkownika procesy, pliki czy połączenia sieciowe.

Rootkit to program zmieniający działanie systemu operacyjnego i w ten sposób ukrywający przed wzrokiem użytkownika procesy, pliki czy połączenia sieciowe.

Problemy z rootkitami przypominają nieśmiertelnego Matriksa. Świat nie jest taki, jakim go postrzegamy, niewidoczne i ukryte przed człowiekiem procesy rządzą naszym życiem. Pod nazwą rootkit kryją się specjalne techniki programistyczne, modyfikujące działanie systemu operacyjnego. Taki zniekształcony system nie podaje użytkownikowi informacji o niektórych plikach, kluczach rejestru, połączeniach sieciowych. Brzmi to niewiarygodnie, ale wyobraźmy sobie program, który zmienia działanie systemu tak, aby informacja o nim nie była wyświetlana w Menedżerze zadań. Rootkit jak się patrzy! Taki ukryty program może wykonywać dowolne działania, a użytkownik pozostanie nieświadomy jego harców.

Szpiedzy i antywirusy

Modyfikacja systemu operacyjnego w celu ukrycia własnej działalności chętnie stosowana jest przez wszelkiego typu złośliwe programy, które potrafią zniknąć nie tylko z oczu użytkownika, ale też z zasięgu programu antywirusowego czy antyszpiegowskiego. Nie tylko złośliwe programy korzystają z modyfikacji systemu. Niektóre aplikacje użytkowe pozwalają np. tworzyć pliki niewidoczne dla innych użytkowników komputera. Głęboko ingerują w system operacyjny programy antywirusowe, czasem do poziomu utożsamianego z rootkitami. To jednak działanie całkowicie pożądane!

Skanowanie za pomocą RootkitRevealera pozwala wykryć większość podejrzanych modyfikacji systemu operacyjnego.

Skanowanie za pomocą RootkitRevealera pozwala wykryć większość podejrzanych modyfikacji systemu operacyjnego.

Jak działa rootkit? Sztuczka polega na przechwytywaniu wywołań funkcji systemowych i zmianie rezultatów zwracanych przez nie. Funkcje systemowe niskiego poziomu, znane programistom całego świata jako Windows API, wykorzystywane są praktycznie przez wszystkie aplikacje do czytania i zapisywania plików, pobierania listy działających procesów, odczytywania i zapisywania rejestru. Wystarczy, że rootkit będzie nadzorować i zmieniać rezultat funkcji EnumProcesses, a już można ukryć jeden z działających w systemie procesów przed większością programów użytkowych. Łatwo zauważyć tutaj wyścig między złośliwym programem a np. antywirusem. Pierwszy zmienia działanie funkcji systemowych, żeby "zniknąć" z systemu, drugi podpina się pod funkcje systemowe, aby monitorować wszystkie operacje na plikach.

Zamontowanie rootkita w systemie polega najczęściej na wstrzyknięciu dodatkowego kodu do pewnej części jądra systemu. Może to się odbywać przez modyfikację sterownika jakiegoś urządzenia, uruchomienie dodatkowej usługi w systemie lub np. zmianę biblioteki DLL. Techniki podłączania się do funkcji systemowych nie są tajną wiedzą zastrzeżoną dla informatycznych guru. Przeciwnie, sposoby hakowania systemu operacyjnego można znaleźć w prawie każdym podręczniku do nauki programowania w asemblerze.

Gdzie chowasz swojego rootkita?

Blacklight to oprogramowanie firmy F-Secure służące do wykrywania rootkitów, obecnie zintegrowane z pakietem F-Secure Internet Security 2006.

Blacklight to oprogramowanie firmy F-Secure służące do wykrywania rootkitów, obecnie zintegrowane z pakietem F-Secure Internet Security 2006.

Wykrycie tych programów nie jest prostym zadaniem. Istnieją dwa podstawowe sposoby: skanowanie systemu i monitorowanie zdarzeń. Pierwszy polega na - w wielkim skrócie - porównywaniu wyników uzyskiwanych przez zwykłą aplikację i jądro systemu operacyjnego. Jeśli program użytkowy uzyskuje np. inną listę procesów niż ta przechowywana w pamięci zarezerwowanej dla jądra systemu, to sygnał, że w systemie może działać rootkit. Jeśli jednak jest zagnieżdżony dostatecznie głęboko w systemie operacyjnym, takie skanowanie może nie dać żadnego rezultatu. Co więcej, jądro systemu Windows nie jest dobrze (lub niemal wcale) udokumentowane, dlatego wiarygodność tego typu skanowania może pozostawiać wiele do życzenia. Drugi sposób polega na stałym monitorowaniu zmian w systemie operacyjnym, umożliwiając w założeniu wykrycie momentu instalacji rootkita. To podejście także nie jest idealne, bo wiele zwykłych programów użytkowych modyfikuje system - chociażby wspomniane już antywirusy. Jak widać, znajdowanie rootkitów wymaga zastosowania metod heurystycznych kwalifikujących proces jako rootkit na podstawie wielu przesłanek: modyfikacji systemu, ukrywania okna programu, plików, przechwytywania znaków wprowadzanych z klawiatury itd. W tym miejscu techniki wykrywania przypominają analizę heurystyczną używaną od lat do wychwytywania wirusów, trojanów, niebezpiecznych skryptów, tyle że rozszerzoną o nadzorowanie wszelkich zmian w jądrze systemu operacyjnego. Analiza heurystyczna powoduje jednak wiele fałszywych komunikatów. Łatwo się o tym przekonać, włączając najwyższy poziom heurystyki w jednym z popularnych programów antywirusowych. Wykrywacz rootkitów musi, oprócz analizy heurystycznej, porównywać podejrzane procesy z listą znanych, bezpiecznych programów (chociażby innych wykrywaczy). Całe szczęście, że rootkity, chociaż groźne, są wykrywalne: czy to w momencie instalacji, czy podczas skanowania systemu.


Zobacz również