Materiały konferencyjne - Mateusz “j00ru”
Transkrypt
Materiały konferencyjne - Mateusz “j00ru”
Bootkit versus Windows Co warto wiedzied Mateusz ‘j00ru’ Jurczyk E-mail: [email protected] Tech blog: http://j00ru.vexillium.org/ \ 1. Basic Input/Output System (BIOS) – zbiór funkcji wykonujących podstawowe operacje wymagane do poprawnego ładowania systemu w początkowych fazach oraz prosty interfejs komunikacji ze sprzętem. 2. Tablica deskryptorów przerwao (IDT) – tablica 256 elementów, zawierająca wskaźniki na funkcje obsługujące konkretne przerwania sprzętowe/software’owe. W zależności od aktualnego trybu pracy procesora, wskaźniki te mogą byd zapisane przy użyciu adresowania segmentowego lub wirtualnego (w obu przypadkach pojedynczy wskaźnik jest wielkości 32 bitów). 3. Cylinder-Head-Sector (CHS) – adresowanie obowiązujące w momencie próby dostępu do fizycznych danych dowolnego nośnika w trybie rzeczywistym. 4. Bootsector – rekord startowy, najczęściej pierwszy fizyczny sektor danych znajdujący się na nośniku bootowalnym. 5. Master Boot Record (MBR) – bootsector dysku twardego, o rozmiarze 512 (0x200) bajtów. 6. Volume Boot Record (VBR) – sektor bootowalny przypisany do konkretnej partycji dysku twardego lub przenośnego nośnika danych (dyskietka, CD-ROM itp.) 7. Preboot Execution Environment (PXE) – technologia umożliwiająca uruchamianie maszyny przy użyciu kodu znajdującego się na zdalnym serwerze. Komputer uruchamiany w ten sposób nie musi posiadad systemu operacyjnego znajdującego się na lokalnym nośniku danych. 8. Trusted Platform Module (TPM) – standard układu scalonego, udostępniającego interfejs wykonywania podstawowych operacji kryptograficznych. Jest podstawowym elementem działania m.in. programów szyfrowania dysku twardego (BitLocker) 9. Tryb rzeczywisty (ang. real-mode) – tryb pracy procesora, charakteryzujący się m.in. następującymi cechami: Adresowanie segmentowe – adresowanie, którego przestrzeo ogranicza ilośd dostępnej w jednej chwili pamięci do 1 megabajta. Sam adres zbudowany jest z dwóch 16 bitowych części, nazywanych kolejno segmentem oraz przesunięciem (Segment:Offset) Ograniczenie na wielkośd pamięci wynika ze sposobu, w jaki adres segmentowy tłumaczony jest na adres fizyczny: Adres Fizyczny = Segment*0x10 + Offset; Brak ochrony pamięci – kod działający w trybie rzeczywistym posiada nieograniczoną możliwośd ingerencji w całą dostępną, adresowalną pamięd fizyczną. 10. Tryb chroniony (ang. protected-mode) – nowszy tryb pracy procesora, wprowadzający wiele poprawek i ulepszeo do starego trybu rzeczywistego: Adresowanie wirtualne – adresowanie pozwalające na wykorzystanie zarówno potencjalnych możliwości segmentów (w nieco zmienionej formie), jak i adresowania liniowego, pozwalającego na zaadresowanie maksymalnie 4GB pamięci. Ochrona pamięci – dzięki niej przestaje istnied możliwośd bezpośredniego dostępu do pamięci fizycznej wszystkich procesów działających w systemie. W normalnych warunkach możemy więc odwoład się jedynie do danych znajdujących się w kontekście własnego procesu, nie mając kontroli nad zarządzaniem pamięcią przez inne aplikacje. 11. Virtual 8086 mode – Tryb pracy procesora, pozwalający na wykonywanie kodu przeznaczonego dla trybu rzeczywistego, w trybie chronionym. 12. Portable Executable (PE) – format pliku wykonywalnego wdrożony przez firmę Microsoft w roku 1993, który obowiązuje do dnia dzisiejszego. Dokładną dokumentację można znaleźd pod adresem http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx 13. Jądro systemu Microsoft Windows – zbiór obrazów wykonywalnych PE, w skład którego wchodzą przede wszystkim pliki ntoskrnl.exe, HAL.dll oraz win32k.sys. Umożliwiają one poprawny start systemu operacyjnego oraz udostępniają obszerny interfejs wywołao systemowych. 14. Wywołanie systemowe (ang. System Call) – funkcja interfejsu jądra, która pozwala aplikacjom użytkownika na wykonanie operacji wymagających wsparcia na poziomie kernela. 15. System Service Descriptor Table (SSDT) – tabela wskaźników na funkcje obsługi wywołao systemowych. Wszystkie aplikacje działające w systemie Windows w sposób pośredni (interfejs API) lub bezpośredni korzystają z syscalli. 16. Przestrzeo użytkownika Windows trybu chronionego – niskie obszary pamięci, najczęściej dolne 2GB przestrzeni adresowej (adresy 0x00000000 – 0x7FFFFFFF). Przestrzeo wirtualna user-mode jest mapowana w sposób rozdzielny, tj. kod działający w kontekście jednego procesu nie „widzi” danych znajdujących się pod tym samym adresem pamięci w innym procesie. 17. Przestrzeo jądra Windows trybu chronionego – wysokie obszary pamięci, najczęściej górne 2GB przestrzeni adresowej (adresy 0x80000000 – 0xFFFFFFFF).