rootkity. sabotowanie jądra systemu windows ebook.pdf

(11712 KB) Pobierz
887632953.001.png
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.
887632953.002.png 887632953.003.png
 
Zgłoś jeśli naruszono regulamin