Wieści z linii frontu

Szperając w pamięci

Na rynku dostępne są programy służące do wykrywania rootkitów, jednak ich skuteczność bywa ograniczona. Jeśli złośliwe oprogramowanie pracuje na tym samym poziomie przywilejów co detektor - zazwyczaj jako element jądra systemu - wykrycie złośliwego programu będzie bardzo trudne. Jednym ze sposobów detekcji jest analiza zawartości pamięci systemu i systemu plików. Można tego dokonać na kilka sposobów, z czego najpopularniejszym jest odczyt przez odpowiedni sterownik jądra systemu, potem znajdują się metody analizy poprzez użycie maszyn wirtualnych i analizę "uśpionej" maszyny. Najrzadziej używa się dedykowanych urządzeń przeznaczonych do monitorowania pamięci komputera.

Od kiedy pojawiły się rootkity potrafiące z powodzeniem oszukać najpopularniejsze detektory (jednym z nich jest choćby Hacker Defender Brilliant, który nie jest już oficjalnie komercyjnie rozwijany, ale kolejne usprawnienia można znaleźć w Internecie), powszechnie uznano, że użycie sterownika ładowanego do jądra systemu to za mało. Coraz nowsze aplikacje, takie jak Komoku Gamma, znacząco utrudniają przygotowywanie niewykrywalnych rootkitów, ale nadal pozostaje niepewność wynikająca z tego, że oba procesy pracują przy tym samym poziomie zabezpieczeń.

Użycie nieco zmodyfikowanej maszyny wirtualnej ma sens, ale niektóre rootkity wykrywają pracę wewnątrz niej (np. w VMWare) i zaraz się deinstalują. Są także takie rootkity, które modyfikują start systemu, uruchamiając go wewnątrz kontrolowanej przez siebie maszyny wirtualnej - a wówczas sterownik w tak uruchomionym systemie nie pokaże nic szczególnego. Zabezpieczenia sprzętowe nie mają tych wad, bowiem z założenia są całkowicie przezroczyste dla systemu operacyjnego, jakkolwiek by on był uruchamiany. Jednym z najpewniejszych zabezpieczeń jest analiza offline plików zatrzymanego systemu operacyjnego i porównanie sum kontrolnych z uprzednio zapisanymi. Niestety, taka analiza wykonywana ręcznie nie jest łatwa dla przeciętnego administratora, chociaż są już rozwiązania, które to znacznie upraszczają.

Do niedawna uważano, że zabezpieczenia polegające na sprzętowych urządzeniach odczytujących pamięć komputera są nie do złamania. Podczas konferencji Black Hat Security w Arlington Polka Joanna Rutkowska wykazała, że można ominąć nawet tak pewne metody ochrony. Testowane rozwiązanie polegało na użyciu bezpośredniego dostępu za pomocą FireWire (IEEE1394b), wykorzystując cechy standardu i systemów operacyjnych. Gdy użyje się sprzętowych, niedostępnych dla zwykłych nabywców i dość kosztownych rozwiązań, takich jak dedykowane karty PCI (Tribble, RamShot, Memory Capture Tool lub CoPilot), większość rootkitów daje się wykryć, choć prawdopodobnie nie wszystkie.

Problem polega na tym, że wszystkie te narzędzia, podobnie jak FireWire, używają DMA do odczytu pamięci, co daje potencjalnie możliwość ich omijania. Zrzut pamięci wykonywany za pomocą DMA jest zawsze opóźniony, nie można bowiem zatrzymać działającego procesora, a proces zrzutu zwalnia inne, gdyż wymaga dodatkowych cykli pamięci. Programy sprawdzające czas wykonania mogą to wykryć, analizując właśnie opóźnienia. Modelowy kod zaprezentowany przez Joannę Rutkowską udowadnia, że przyczyną słabości jest sam projekt komputera klasy PC, który nie był nigdy przygotowywany pod kątem analizy pamięci pracującej maszyny.

Istnieje co najmniej jedna karta PCI, która nie ma tych wad, ale jest jeszcze nie do końca dopracowana. Jest to pionierskie rozwiązanie. Można jedynie podejrzewać, że firmy takie jak BBN czy Komoku mają stosowną kartę w ofercie, chociaż żadna z nich o tym oficjalnie nie pisze. Niestety, nie jest ona dostępna dla zwykłego dewelopera. Można znaleźć także doniesienia o zrealizowaniu specjalnej architektury zgodnej z typowym komputerem klasy PC, gdzie pamięć systemu podlega duplikacji do drugiej kopii wraz ze znacznikami czasu dostępu i modyfikacji. Duplikację można w każdej chwili przerwać i dokonać analizy offline. Rozwiązanie bazujące na tym pomyśle nadaje się dobrze do laboratoriów badawczych, ale niekoniecznie będzie można używać go w typowych komputerach biurowych.

Pojedynek z wirusami

Jednym ze sposobów walki specjalizowanych programów ze złośliwym kodem jest system sygnatur. Upraszczając nieco, polega on na wyodrębnieniu charakterystycznych fragmentów kodu wirusa (lub określonych reguł charakteryzujących zależności między różnymi miejscami próbki kodu) i zapisaniu informacji o nich w bazie danych programu antywirusowego. Przy wykrywaniu typowo napisanych wirusów spełnia on swoje zadanie. Niektóre z nich były specjalnie zaprojektowane, po to by móc ukrywać się przed programem antywirusowym, zatem niedługo potem oprogramowanie antywirusowe zostało wyposażone w nowe technologie, takie jak analizatory behawioralne. Obecnie - oprócz pasywnej ochrony za pomocą sygnatur - stosuje się analizę algorytmiczną, gdzie kod jest sprawdzany pod kątem występowania charakterystycznych elementów, emulację wykonywania kodu (często skuteczną wobec wirusów szyfrujących kod) i ostatnią szansę, czyli metody sandbox. Te ostatnie analizują rzeczywiście wykonywany kod w symulowanym środowisku o bardzo ograniczonym dostępie i podnoszą alarm, gdy wykonuje on zadania, których nie powinien robić, czy żąda dostępu do obiektów, po które nie powinien sięgać.

Postęp nie ominął także złośliwych programów, m.in. dlatego powstały specjalizowane narzędzia do wykrywania rootkitów i analizy pamięci. Najnowsze rootkity potrafią jednak omijać także i te zabezpieczenia. Jest to typowy pojedynek pancerza z pociskiem, ale w przypadku technologii teleinformatycznych dochodzi jeszcze jeden czynnik - czas. Producent programu antywirusowego ma coraz mniej czasu od zgłoszenia lub wychwycenia kodu do rozesłania nowej wersji baz danych do systemów klienckich. Gdy systemy antywirusowe są już zaktualizowane, wychwycenie tych wirusów jest stosunkowo łatwe i tamuje rozwój zagrożenia tym wirusem. Zatem najważniejsze są pierwsze godziny od pojawienia się zagrożenia. Istnieją programy antywirusowe, które szczególnie dobrze wyróżniają się na tym tle, potrafiąc wykryć większość nieznanego w ich sygnaturach złośliwego kodu tylko na podstawie działań w systemie.


TOP 200