rootkity.-sabotowanie-jadra-systemu-windows full version, ebooki
[ Pobierz całość w formacie PDF ]
6 Rootkity. Sabotowanie jądra systemu Windows Rozdział 2. Sabotowanie jądra .......................................................................... 37 Ważne składniki jądra systemu ........................................................................................38 Projekt rootkitu .................................................................................................................38 Wprowadzenie kodu do jądra ...........................................................................................41 Tworzenie sterownika urządzeń dla systemów Windows ................................................42 Device Driver Development Kit ................................................................................43 Środowisko kompilacji ..............................................................................................43 Pliki ............................................................................................................................43 Uruchamianie narzędzia Build ...................................................................................45 Procedura usuwania sterownika .................................................................................45 Ładowanie i usuwanie sterownika ...................................................................................46 Zapisywanie komunikatów debugowania do dziennika ...................................................47 Rootkity łączące tryb użytkownika z trybem jądra ..........................................................48 Pakiety żądań wejścia-wyjścia ...................................................................................48 Tworzenie uchwytu pliku ..........................................................................................51 Dodawanie dowiązania symbolicznego .....................................................................53 Ładowanie rootkitu ..........................................................................................................54 Szybka i nieładna metoda ładowania sterownika ......................................................54 Jedyna słuszna metoda ładowania sterownika ...........................................................56 Dekompresowanie pliku .sys z zasobów ...........................................................................57 Ponowne uruchomienie ....................................................................................................59 Wnioski ............................................................................................................................61 Rozdział 3. Połączenia sprzętowe ...................................................................... 63 Pierścień zerowy ..............................................................................................................64 Tablice, tablice i jeszcze więcej tablic .............................................................................66 Strony pamięci ..................................................................................................................67 Szczegóły kontroli dostępu do pamięci .....................................................................68 Stronicowanie i przekształcanie adresów ..................................................................69 Przeszukiwanie tablic stron ........................................................................................70 Pozycje katalogu stron ...............................................................................................72 Pozycja tablicy stron ..................................................................................................72 Do pewnych ważnych tablic dostęp możliwy jest wyłącznie w trybie tylko do odczytu ........................................................................................73 Wiele procesów, wiele katalogów stron ....................................................................73 Procesy i wątki ...........................................................................................................74 Tablice deskryptorów pamięci .........................................................................................75 Globalna tablica deskryptorów ..................................................................................75 Lokalna tablica deskryptorów ....................................................................................75 Segmenty kodu ...........................................................................................................75 Bramki wywołań ........................................................................................................76 Tablica deskryptorów przerwań .......................................................................................76 Inne typy bram ...........................................................................................................79 Tablica rozdziału usług systemowych ..............................................................................79 Rejestry sterujące .............................................................................................................80 Zerowy rejestr sterujący (CR0) ..................................................................................80 Pozostałe rejestry sterujące ........................................................................................80 Rejestr EFlags ............................................................................................................81 Systemy wieloprocesorowe ..............................................................................................81 Wnioski ............................................................................................................................82 Spis treści 7 Rozdział 4. Prastara sztuka tworzenia punktów zaczepienia ................................ 85 Punkty zaczepienia w przestrzeni użytkownika ...............................................................85 Punkty zaczepienia w tablicy importowanych adresów .................................................87 Punkty zaczepienia wbudowane w funkcje ...............................................................88 Wstrzykiwanie biblioteki DLL do procesu działającego w przestrzeni użytkownika .......90 Punkty zaczepienia w jądrze systemu ..............................................................................94 Tworzenie punktów zaczepienia w tablicy deskryptorów usług systemowych .........95 Tworzenie punktów zaczepienia w tablicy deskryptorów przerwań .......................102 Tworzenie punktów zaczepienia w głównej tablicy funkcji pakietów IRP w ramach obiektu sterownika urządzenia .............................................................106 Hybrydowe punkty zaczepienia .....................................................................................115 Dostęp do przestrzeni adresowej procesu ................................................................115 Pamięć dla punktów zaczepienia .............................................................................119 Wnioski ..........................................................................................................................120 Rozdział 5. Wprowadzanie poprawek w trakcie pracy ...................................... 121 Tworzenie łatek obejścia ................................................................................................122 Zmiana przepływu kodu wykonana za pomocą rootkitu MigBot ............................123 Sprawdzanie bajtów funkcji .....................................................................................124 Zapamiętywanie nadpisywanych instrukcji .............................................................126 Używanie pamięci ze zbioru niestronicowanego .....................................................128 Poprawianie adresu w czasie pracy ..........................................................................128 Szablony skoków ............................................................................................................131 Przykład z punktem zaczepienia w tablicy przerwań ..............................................132 Różne wersje podanej metody ........................................................................................137 Wnioski ..........................................................................................................................138 Rozdział 6. Sterowniki warstwowe .................................................................. 141 Podsłuchiwanie klawiatury ............................................................................................142 Pakiety IRP i umiejscowienie na stosie ...................................................................144 Rootkit KLOG — analiza ..............................................................................................146 Sterownik filtra plików ...................................................................................................156 Wnioski ..........................................................................................................................167 Rozdział 7. Bezpośrednie manipulacje na obiektach jądra ................................. 169 Zalety i wady metodologii DKOM ................................................................................170 Określanie wersji systemu operacyjnego .......................................................................171 Określanie wersji systemu w trybie użytkownika ...................................................172 Określanie wersji systemu w trybie jądra ................................................................173 Odczytywanie wersji systemu operacyjnego z rejestru .............................................174 Komunikacja ze sterownikiem z przestrzeni użytkownika ............................................175 Ukrywanie się za pomocą metodologii DKOM .............................................................178 Ukrywanie procesów ...............................................................................................179 Ukrywanie sterowników ..........................................................................................183 Problemy z synchronizacją ......................................................................................186 Uprzywilejowanie tokena i podnoszenie grupy .............................................................190 Modyfikowanie tokena procesu ...............................................................................191 Oszukiwanie podglądu zdarzeń systemu Windows .................................................202 Wnioski ..........................................................................................................................205 Rozdział 8. Manipulacje na sprzęcie ................................................................ 207 Po co nam sprzęt? ...........................................................................................................209 Modyfikowanie firmware’u ...........................................................................................210 Dostęp do sprzętu ...........................................................................................................211 Adresy sprzętowe .....................................................................................................211 Dostęp do sprzętu to coś innego niż dostęp do pamięci ..........................................212 Problemy z czasem ..................................................................................................212 8 Rootkity. Sabotowanie jądra systemu Windows Magistrala wejścia-wyjścia ......................................................................................213 Dostęp do BIOS-u ....................................................................................................214 Adresowanie urządzeń PCI i PCMCIA ...................................................................215 Przykład: Dostęp do kontrolera klawiatury ....................................................................216 Układ kontrolera klawiatury 8259 ...........................................................................216 Zmiana ustawień diod LED .....................................................................................217 Twardy restart ..........................................................................................................221 Monitor klawiatury ..................................................................................................222 Jak daleko można się posunąć? Aktualizacja mikrokodu ..............................................227 Wnioski ..........................................................................................................................228 Rozdział 9. Tajne kanały komunikacji .............................................................. 231 Zdalne sterowanie, kontrola i wydobywanie danych .....................................................232 Zmienione protokoły TCP/IP .........................................................................................233 Strzeż się wzorców ruchu sieciowego .....................................................................234 Nie wysyłaj danych „jawnie” ...................................................................................235 Niech czas pracuje na Twoją korzyść ......................................................................236 Ukrywaj się w żądaniach DNS ................................................................................236 Używaj steganografii w komunikatach ASCII ........................................................236 Używaj innych kanałów TCP/IP ..............................................................................237 Wykorzystanie w rootkicie interfejsu TDI ........................................................................238 Tworzenie struktury adresu ......................................................................................239 Tworzenie obiektu adresu lokalnego .......................................................................240 Tworzenie punktu końcowego TDI z kontekstem ...................................................243 Łączenie punktu końcowego z adresem lokalnym ..................................................245 Łączenie z serwerem zdalnym (wysyłanie potwierdzeń TCP) ................................247 Wysyłanie danych do serwera zdalnego ..................................................................248 Manipulacje dokonywane na sieci .................................................................................250 Implementowanie „surowych” gniazd sieciowych w systemie Windows XP .........251 Wiązanie z interfejsem .............................................................................................252 Podglądanie pakietów za pomocą surowego gniazda ..............................................252 Rozbudowane podglądanie z wykorzystaniem surowych gniazd ............................253 Wysyłanie pakietów przez surowe gniazdo .............................................................254 Wykuwanie źródeł ...................................................................................................254 Pakiety odbijane .......................................................................................................254 Wykorzystanie w rootkicie interfejsu NDIS ..................................................................255 Rejestrowanie protokołu ..........................................................................................256 Wywołania zwrotne sterownika protokołu ..............................................................260 Przenoszenie całych pakietów .................................................................................263 Emulacja komputera .......................................................................................................268 Tworzenie własnego adresu MAC ...........................................................................269 Obsługa protokołu ARP ...........................................................................................269 Brama IP ..................................................................................................................271 Wysyłanie pakietu ....................................................................................................272 Wnioski ..........................................................................................................................275 Rozdział 10. Wykrywanie rootkitów .................................................................. 277 Wykrywanie obecności ..................................................................................................278 Straże u bram ...........................................................................................................278 Przeszukiwanie „pokoi” ...........................................................................................280 Poszukiwanie punktów zaczepienia .........................................................................281 Wykrywanie zachowania ...............................................................................................289 Wykrywanie ukrytych plików i kluczy Rejestru .....................................................290 Wykrywanie procesów ukrytych .............................................................................290 Wnioski ..........................................................................................................................293 Skorowidz ..................................................................................... 295 Rozdział 1. Subtelny i dyskretny, ekspert nie zostawia śladów; bosko tajemniczy, jest niesłyszalny. Jest zatem władcą losu swego przeciwnika. — Sun Tzu Wiele książek omawia sposoby penetracji systemów komputerowych i oprogramowania. Liczni autorzy zajmowali się się już kwestiami uruchamiania złośliwych skryptów, two- rzenia przepełnień bufora i ciekawych skryptów powłoki. Do najważniejszych przykła- dów takich książek zaliczyć można: Exploiting Software 1 , The Shellcoder’s Handbook 2 i Hacking Exposed 3 . Ta książka jest inna. Zamiast zajmować się w niej technikami ataków, opisywać bę- dziemy sposoby atakujących na pozostanie w naszych systemach po udanym włamaniu. Ten temat omawiany jest w bardzo niewielu publikacjach, z wyjątkiem tych zajmujących się analizą przejętych systemów. W przypadku tych ostatnich najczęściej opisywane są metody defensywne, czyli wykrywanie obecności włamywacza i wsteczna inżynieria złośliwego kodu. W tej książce zajmiemy się znacznie bardziej agresywnymi zachowa- niami. Omawiać będziemy sposoby penetrowania systemu komputerowego uniemożli- wiające wykrycie tego zdarzenia. W końcu udana penetracja systemu nie może zostać wykryta. W niniejszym rozdziale wprowadzimy Czytelnika w świat technologii rootkitów i ogól- nych zasad ich działania. Rootkity stanowią tylko jeden z elementów spektrum zagro- żeń dla naszego komputera, ale są one niezbędnym elementem wielu typów ataków. Rootkity nie są złośliwe same z siebie, ale mogą być używane w ramach złośliwych programów. Poznanie technologii rootkitów jest niezbędne każdemu, kto chce ochronić swój system przed nowoczesnymi technikami ataków. 1 G. Hoglund i G. McGraw, Exploiting Software: How to Break Code , Boston, Addison-Wesley, 2004. Proszę zajrzeć również na stronę www.exploitingsoftware.com . 2 J. Koziol, D. Lichtfield, D. Aitel, C. Anley, S. Eren, N. Mehta i R. Hassell, The Shellcoder’s Handbook , Nowy Jork, John Wiley & Sons, 2004. 3 S. McClure, J. Scambray i G. Kurtz, Hacking Exposed , Nowy Jork, McGraw-Hill, 2003. [ Pobierz całość w formacie PDF ] |