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).