Rootkity_Sabotowanie_jadra_systemu_Windows_rootki.pdf

(386 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TREŒCI
Rootkity. Sabotowanie
j¹dra systemu Windows
Autorzy: Greg Hoglund, Jamie Butler
T³umaczenie: Wojciech Moch
ISBN: 83-246-0257-7
Tytu³ orygina³u:
Rootkits: Subverting the Windows Kernel
Format: B5, stron: 312
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Chcesz ochroniæ swój system? Poznaj jedno z najpowa¿niejszych zagro¿eñ
• Sposób dzia³ania rootkitów
• Pisanie rootkitów i narzêdzi chroni¹cych przed nimi
• Wykrywanie rootkitów
Rootkit to zestaw programów i kodów pozwalaj¹cy hakerowi na niewykrywalny
dostêp do komputera, a tym samym na korzystanie z cudzego systemu operacyjnego.
Narzêdzie takie mo¿na stworzyæ, znaj¹c luki w zabezpieczeniach j¹dra systemu
operacyjnego i dysponuj¹c odpowiednimi umiejêtnoœciami. Ale mo¿na równie¿ uchroniæ
siê przed jego dzia³aniem, co dla osoby odpowiedzialnej za bezpieczeñstwo komputera
jest zdecydowanie wa¿niejsze.
Dziêki ksi¹¿ce „Rootkity. Sabotowanie j¹dra systemu Windows” poznasz swojego
przeciwnika i nauczysz siê z nim walczyæ, tworz¹c w³asny arsena³. Greg Hoglund
i James Butler przedstawiaj¹ sposoby, z jakich korzystaj¹ hakerzy, aby w³amywaæ siê
do komputerów i u¿ywaæ ich bez wiedzy w³aœcicieli. Ksi¹¿ka opisuje szczegó³y
sabotowania j¹dra systemów Windows XP i Windows 2000 oraz koncepcje, które
mo¿na zastosowaæ w praktycznie ka¿dym systemie operacyjnym — od Windows Server
2003, poprzez Linuksa, a¿ po inne systemy uniksowe. Czytaj¹c tê ksi¹¿kê, poznasz
techniki programowania rootkitów oraz tworzenia systemów obronnych.
• Zasada dzia³ania rootkitów
• Sposoby wprowadzania kodu do j¹dra systemu
• Tworzenie rootkitów
• Manipulowanie obiektami j¹dra systemu
• Uzyskiwanie bezpoœredniego dostêpu do sterowników sprzêtu
• Wykorzystywanie w rootkitach po³¹czeñ sieciowych
• Wykrywanie rootkitów w systemie
Jeœli zajmujesz siê bezpieczeñstwem komputerów i danych,
koniecznie przeczytaj tê ksi¹¿kê
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
O autorach ....................................................................................... 9
O okładce ....................................................................................... 11
Wstęp ............................................................................................ 13
Rozdział 1. Nie zostawić śladu .......................................................................... 17
Zrozumienie motywów atakującego ................................................................................18
Znaczenie niewidzialności .........................................................................................18
Kiedy nie trzeba się ukrywać? ...................................................................................19
Czym jest rootkit? ............................................................................................................19
Dlaczego istnieją rootkity? ...............................................................................................20
Zdalna kontrola ..........................................................................................................21
Podsłuchiwanie oprogramowania ..............................................................................21
Uprawnione użycie rootkitów ....................................................................................21
Jak długo istnieją rootkity? ..............................................................................................22
Jak działają rootkity? ........................................................................................................24
Poprawianie ................................................................................................................24
Jaja wielkanocne ........................................................................................................24
Spyware ......................................................................................................................24
Modyfikacje kodów
źródłowych
...............................................................................25
Legalność modyfikowania oprogramowania .............................................................26
Czym nie jest rootkit? ......................................................................................................26
Rootkit nie jest exploitem ..........................................................................................26
Rootkit nie jest wirusem ............................................................................................27
Rootkity i błędy w oprogramowaniu ................................................................................28
Eksploity nadal są wielkim problemem .....................................................................30
Ofensywne technologie rootkitów ...................................................................................32
HIPS ...........................................................................................................................32
NIDS ..........................................................................................................................32
Obchodzenie systemów IDS i IPS .............................................................................33
Pomijanie narzędzi wykrywających ..........................................................................34
Wnioski ............................................................................................................................35
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
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
Podsłuchiwanie klawiatury ............................................................................................142
Pakiety IRP i umiejscowienie na stosie ...................................................................144
Rootkit KLOG — analiza ..............................................................................................146
Sterownik filtra plików ...................................................................................................156
Wnioski ..........................................................................................................................167
Rozdział 5. Wprowadzanie poprawek w trakcie pracy ...................................... 121
Rozdział 6. Sterowniki warstwowe .................................................................. 141
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
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
Rozdział 8. Manipulacje na sprzęcie ................................................................ 207
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
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
Rozdział 10. Wykrywanie rootkitów .................................................................. 277
Skorowidz ..................................................................................... 295
Zgłoś jeśli naruszono regulamin