Rootkity i Bootkity - ebook
Rootkity i Bootkity - ebook
Rootkity i Bootkity pomaga zrozumieć i przeciwdziałać wyrafinowanym, zaawansowanym zagrożeniom, zagrzebanym głęboko w procesie rozruchowym maszyny albo oprogramowaniu układowym UEFI.
Z pomocą rozlicznych studiów przypadków i profesjonalnych badań trzech spośród wiodących światowych ekspertów do spraw zabezpieczeń prześledzimy rozwój złośliwego oprogramowania, od rootkitów takich jak TDL3, aż po dzisiejsze implanty UEFI. Zbadamy, jak dokonują infekcji systemu, przeżywają restart systemu i unikają oprogramowania zabezpieczającego. W miarę badania i rozkładu na elementy rzeczywistego złośliwego oprogramowania dowiemy się:
• Jak uruchamia się system Windows – w tym tryby 32-, 64-bitowe oraz UEFI – i gdzie można znaleźć słabości
• Jak działają mechanizmy zabezpieczeń procesu rozruchowego, takich jak Secure Boot, w tym przegląd rozwiązań Virtual Secure Mode (VSM) oraz Device Guard
• Jak stosować techniki odwrotnej inżynierii i analizy śledczej potrzebne do analizowania prawdziwego złośliwego oprogramowania, w tym takich bootkitów, jak Rovnix/Carberp, Gapz, TDL4 oraz niesławnej pamięci rootkitów TDL3 i Festi
• Jak używać narzędzi wirtualizacji, takich jak VMware Workstation do prowadzenia odwrotnej inżynierii bootkitów lub narzędzia Intel Chipsec w celu zagłębiania się w analizy śledcze.
Kategoria: | Informatyka |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-21540-8 |
Rozmiar pliku: | 11 MB |
FRAGMENT KSIĄŻKI
ALEX MATROSOV jest głównym, ofensywnym badaczem bezpieczeństwa w firmie NVIDIA. Ma ponad dwadzieścia lat doświadczenia w dziedzinie inżynierii odwrotnej, zaawansowanych technik analizy złośliwego oprogramowania, bezpieczeństwa oprogramowania wbudowanego i technik nadużywania. Przed dołączeniem do NVIDIA Alex pełnił funkcję głównego badacza bezpieczeństwa w Intel Security Center of Excellence (SeCoE), spędził ponad sześć lat w zespole Intel Advanced Threat Research i zajmował stanowisko starszego badacza bezpieczeństwa w ESET. Alex jest autorem i współautorem licznych artykułów badawczych oraz prelegentem na konferencjach branżowych, w tym na REcon, ZeroNights, Black Hat, DEFCON i wielu innych. Otrzymał od Hex-Rays nagrodę za swoją wtyczkę HexRaysCodeXplorer, od roku 2013 wspieraną przez zespół w REhint.
EUGENE RODIONOV, dr, pełni funkcję badacza bezpieczeństwa w firmie Intel i zajmuje się zabezpieczeniami BIOS dla platform klienckich. Wcześniej Rodionov prowadził wewnętrzne projekty badawcze i wykonywał pogłębione analizy zaawansowanych zagrożeń w ESET. Do jego obszaru zainteresowań należą zabezpieczenia oprogramowania wbudowanego, programowanie w trybie jądra, technologie antyrootkitowe i inżynieria odwrotna. Rodionov występował na wielu konferencjach branżowych takich jak Black Hat, REcon, ZeroNights i CARO. Jest też współautorem licznych artykułów naukowych.
SERGEY BRATUS jest profesorem nadzwyczajnym na wydziale informatyki Dartmouth College. Poprzednio pracował w BBN Technologies nad badaniami przetwarzania języka naturalnego. Bratus interesuje się wszelkimi aspektami zabezpieczeń systemów Unix, a w szczególności zabezpieczeniami jądra Linux oraz wykrywaniem i odwrotną inżynierią złośliwego oprogramowania dla systemu Linux.
O recenzencie technicznym
RODRIGO RUBIRA BRANCO (_BSDaemon_) pracuje jako Chief Security Researcher w Intel Corporation, gdzie kieruje zespołem STORM (_Strategic Offensive Research and Mitigations_). Rodrigo ujawnił dziesiątki podatności w wielu ważnych technologiach i publikował innowacyjne badania na temat EKSPLOITACJI, inżynierii odwrotnej i analiz złośliwego oprogramowania. Jest członkiem RISE Security Group i jednym z organizatorów Hackers to Hackers Conference (H2HC), najstarszej konferencji poświęconej badaniom bezpieczeństwa w Ameryce Łacińskiej.PRZEDMOWA
Jest niezaprzeczalnym faktem, że wykorzystanie złośliwego oprogramowania jest rosnącym zagrożeniem dla bezpieczeństwa komputerów. Ze wszystkich stron obserwujemy alarmujące statystyki świadczące o powiększaniu się finansowych skutków złośliwego oprogramowania, o jego złożoności oraz o samej liczbie złośliwych próbek. Więcej niż kiedykolwiek wcześniej badaczy zabezpieczeń, zarówno w przemyśle, jak i środowisku naukowym, studiuje złośliwe oprogramowanie i publikuje wyniki badań w rozmaitych miejscach, od blogów i konferencji branżowych po spotkania naukowe i książki dedykowane tej tematyce. Publikacje te obejmują wszelkie rodzaje tematów: inżynierię odwrotną, najlepsze praktyki, metodologię i najlepsze zestawy narzędzi.
Jak widać zatem, od dawna toczy się wiele dyskusji na temat analizy złośliwego oprogramowania i automatyzowania narzędzi, każdy zaś dzień przynosi kolejne. Można się zatem zastanawiać: Po co jeszcze jedna książka na ten temat? Co wnosi ta książka, czego nie znajdziemy w innych?
Po pierwsze i przede wszystkim, choć książka ta dotyczy inżynierii wstecznej zaawansowanego – przez co rozumiem _innowacyjnego_ – złośliwego oprogramowania, zawiera całą podstawową wiedzę o tym, dlaczego dany kod złośliwego oprogramowania w ogóle powstał. Książka wyjaśnia wewnętrzne działanie różnych komponentów, których to dotyczy – od rozruchu platformy, przez ładowanie systemu operacyjnego, aż po różne komponenty jądra oraz operacje warstwy aplikacji, które wpływają z powrotem na jądro.
Sam wielokrotnie odkrywałem, że objaśnianie podstawowych zagadnień jest czymś innym niż same _podstawy_ – choć wymaga sięgnięcia w dół do fundamentów, do podstawowych elementów budulcowych techniki komputerowej. I z tej perspektywy książka ta jest o czymś więcej niż tylko o złośliwym oprogramowaniu. Wyjaśnia, jak działają komputery, jak nowoczesny stos oprogramowania wykorzystuje zarówno podstawowe możliwości maszyny, jak i interfejsy użytkownika. Gdy raz to pojmiemy, zaczniemy _automagicznie_ rozumieć, jak i dlaczego coś się psuje oraz jak i dlaczego może zostać nadużyte.
Kto mógłby lepiej przedstawić takie wskazówki niż autorzy z potwierdzonymi osiągnięciami w dziedzinie ujawniania – w wielu sytuacjach – prawdziwie zaawansowanego złośliwego kodu, który za każdym razem przesuwał dalej granice możliwości w tej dziedzinie? Dodajmy do tego celowy i mozolny wysiłek w dążeniu do połączenia tego doświadczenia z podstawami działania komputerów i tworzenia szerszego obrazu, takiego jak sposoby analizowania i zrozumienia różnych problemów o podobnych cechach koncepcyjnych, a stanie się oczywiste, dlaczego książka ta powinna się znaleźć na początku listy obowiązkowych lektur.
Jeśli zawartość i wybrana metodologia aż nadto usprawiedliwiają potrzebę powstania takiej książki, kolejnym pytaniem mogłoby być, dlaczego nikt wcześniej nie podjął się jej napisania. Obserwowałem (i miałem zaszczyt aktywnie uczestniczyć, a także – mam nadzieję – wnieść coś od siebie) ewolucję tej książki, co zajęło kilka lat stałych wysiłków, mimo że autorzy mieli już całość surowych materiałów. Przez to doświadczenie oczywiste stało się dla mnie, dlaczego nikt inny nie próbował tego wcześniej: nie tylko jest to trudne, lecz także wymaga odpowiedniego połączenia umiejętności (które, biorąc pod uwagę wcześniejsze doświadczenia autorów, oczywiście posiadają), właściwego wsparcia ze strony redaktorów (które zapewniło wydawnictwo No Starch Press, cierpliwie przeprowadzając przez proces redakcyjny i akceptując nieuniknione opóźnienia w trakcie projektu z powodu zmieniających się realiów ofensywnej pracy związanej z zabezpieczeniami), a także entuzjazmu pierwszych czytelników (którzy mieli kluczowy wpływ na doprowadzenie tej pracy do linii mety).
Znacząca część tej książki koncentruje się na budowaniu zrozumieniu tego, jak w nowoczesnym komputerze osiągane jest zaufanie (lub jego brak) i jak mogą zostać wykorzystane (nadużyte) różne warstwy i przejścia między nimi, aby unieważnić założenia poczynione przez kolejną warstwę. W unikatowy sposób zwraca to uwagę na dwa główne problemy związane z implementowaniem zabezpieczeń; dotyczą one: kompozycji (wiele warstw, gdzie poprawne funkcjonowanie każdej zależy od właściwego zachowania innej lub innych) oraz założeń (ponieważ warstwy muszą z natury zakładać, że poprzednia zachowuje się poprawnie). Autorzy dodatkowo dzielą się swoją wiedzą na temat narzędzi i podejść stosowanych w unikatowo trudnych analizach komponentów wczesnego rozruchu i głębszych warstw systemu operacyjnego. Samo to przekrojowe podejście warte było napisania książki, przez co powstała niejako książka wewnątrz książki. Jako czytelnik uwielbiam takie podejście „dwa w jednym”, które niewielu tylko autorów oferuje swoim czytelnikom.
Moje przekonania o naturze wiedzy jest takie, że jeśli naprawdę coś znamy, możemy to zhakować. Użycie inżynierii odwrotnej do zrozumienia kodu, który hakuje zwyczajne zachowanie systemu, to wspaniały techniczny wyczyn, który często odsłania wiele wiedzy. Możliwość uczenia się od profesjonalistów o wielkim dorobku w wykonywaniu tej ewolucji – wykorzystanie ich umiejętności, metod, zaleceń i ogólnej wiedzy specjalistycznej – przy podążaniu własną ścieżką jest unikatową okazją. Nie przeocz jej! Idź w działaniach dalej; użyj materiałów pomocniczych; ćwicz; zaangażuj społeczność, przyjaciół, a nawet wykładowców (którzy, mam nadzieję, dostrzegą wartość, jaką ta książka wnosi do nauczania). To nie jest tylko książka do czytania – to książka warta przestudiowania.
_Rodrigo Rubira Branco_
(BSDaemon)PODZIĘKOWANIA
Chcielibyśmy podziękować wszystkim czytelnikom, którzy zakupili wczesne wersje tej książki. Ich ciągłe wsparcie było bardzo motywujące do dalszej pracy; bez tego książka zapewne nigdy nie zostałaby ukończona. Dziękujemy wam wszystkim za cierpliwe oczekiwanie na to ostateczne wydanie!
Chcielibyśmy też podziękować ludziom, którzy wspierali nas we wczesnej fazie powstawania książki: to David Harley, Juraj Malcho i Jacub Debski.
Pracowników No Starch Press, którzy pomagali nam w ciągu pięciu lat pracy nad tą książką, jest zbyt wielu, aby ich wszystkich wymienić, zatem chcielibyśmy szczególnie podkreślić wkład Billa Pollocka (za jego cierpliwość i skupienie się na jakości) oraz Liz Chadwick i Laurel Chun (bez ich pomocy książka byłaby bardzo odmienna).
Doceniamy ogromnie wszystkie opinie, które otrzymaliśmy od takich osób, jak Alexandre Gazet, Bruce Dang, Nikolaj Schlej, Zeno Kovah, Alex Tereshkin i wszyscy inni czytelnicy wczesnych wersji, którzy przesłali nam swoje komentarze. Dziękujemy z wskazanie znalezionych przez was literówek i błędów oraz za sugestie i zachęty.
Ogromne podziękowania należą się Rodrigo Rubira Branco (_BSDaemon_) za jego nadzwyczajną pomoc, recenzję techniczną i przedmowę do tej książki.
Chcielibyśmy też podziękować Ilfakowi Gulfanovowi oraz zespołowi Hex-Rays za ich pomoc i świetne narzędzia, których użyliśmy przy analizach zagrożeń omawianych w tej książce.
Chciałbym podziękować mojej żonie, Swietłanie, za jej wsparcie, a zwłaszcza za cierpliwość, gdy spędzałem większość czasu na swoich badaniach.
_Alex Matrosov_
Chciałbym przekazać wielkie „dziękuję” mojej rodzinie: mojej żonie, Eugenii, oraz moim chłopcom, Olegowi i Leonowi, za pomoc, inspirację i zrozumienie.
_Eugene Rodionov_
Jestem wdzięczny wielu ludziom za możliwość wniesienia skromnego wkładu do tej książki: autorom i redaktorom z Phrack i Uninformed, badaczom z Phenoelit i THC, organizatorom i uczestnikom Recon, PH-Neutral, Toorcon, Troopers, Day-Con, Shmoocon, Rubi-Con, Berlinsides, H2HC, Sec-T, DEFCON i wielu innym. Specjalne podziękowania kieruję do Williama Polka, który pokazał mi, że hakerskie podejście wykracza poza komputery, i bez którego pomocy nie byłbym fizycznie w stanie pracować ani podróżować od lat. I oczywiście nic z tego nie mogłoby się zdarzyć bez miłości, cierpliwości i pomocy mojej żony, Anny.
_Sergey Bratus_SKRÓTY*
AES Advanced Encryption Standard
ACM Authenticated Code Module
ACPI Advanced Configuration and Power Interface
AMT Active Management Technology
APC _asynchronous procedure call_ – asynchroniczne wywołanie procedury
APIC Advanced Programmable Interrupt Controller
ARM Advanced RISC Machine
ATA Advanced Technology Attachment
BCD Boot Configuration Data
BDS Boot Device Selection
BIOS Basic Input/Output System
BMC Baseboard Management Controller
BPB BIOS Parameter Block
BPM _boot policy manifest_ – manifest zasady rozruchu
BSI _boot sector infector_ – infektor sektora rozruchowego
BSoD _Blue Screen of Death_ – „niebieski ekran śmierci”
C&C _command and control_ – serwer zarządzający złośliwego oprogramowania
CBC _cipher block chaining_ – wiązanie bloków zaszyfrowanych
CDO _control device object_ – obiekt urządzenia sterującego
CHS Cylinder Head Sector
CLR Common Language Runtime
COFF Common Object File Format
COM Component Object Model
CSM Compatibility Support Module
DBR DOS Boot Record
DDoS _distributed denial of service –_ rozproszona odmowa usługi
DGA _domain name generation algorithm_, algorytm generowania nazwy domenowej
DKOM Direct Kernel Object Manipulation
DLL _dynamic-link library_ – biblioteka łączona dynamicznie
DMA _direct memory access_ – bezpośredni dostęp do pamięci
DRAM _dynamic random access memory_ – dynamiczna pamięć o swobodnym dostępie
DRM _digital rights management_ – zarządzanie prawami cyfrowymi
DXE Driver Execution Environment
EC Embedded Controller
ECB Electronic Code Book
ECC Elliptic Curve Cryptography
EDK EFI Development Kit
EDR Endpoint Detection and Response
EFI Extensible Firmware Interface
ELAM Early Launch Anti-Malware
ELF Executable and Linkable Format/Extensible Linking Format
EPT Extended Page Tables
FEK _file encryption key_ – klucz szyfrowania pliku
FFS _firmware filesystem_ – system plików oprogramowania układowego
FIT Firmware Interface Table
FPF _field-programmable fuse_ – programowalna macierz bramek
GDB GNU Debugger
GDT Global Descriptor Table
GPT GUID Partition Table
GUID _global unique identifier_ – globalnie unikatowy identyfikator
HAL _hardware abstraction layer_ – warstwa abstrakcji sprzętu
HBA _host-based architecture_ – architektura oparta na hoście
HECI Host-Embedded Controller Interface
HIPS Host Intrusion Prevention System
HSFC _hardware sequencing flash control_ – kontrola sekwencjonowania sprzętowego pamięci flash
HSFS _hardware sequencing flash status_ – status sekwencjonowania sprzętowego pamięci flash
HVCI Hypervisor-Enforced Code Integrity
IBB _initial boot block_ – wstępny blok rozruchowy
IDT Interrupt Descriptor Table
IOCTL Input/Output Control
IPL Initial Program Loader
IRP _input/output request packet_ – pakiet żądania wejścia/wyjścia
ISH Integrated Sensor Hub
IV _initialization value_ – wartość inicjująca
IVT Interrupt Vector Table
KEK _key exchange key_ – klucz wymiany kluczy
KM _key manifest_ – manifest klucza
KPP Kernel Patch Protection
LBA _logical block address_ – adres bloku logicznego
LPE _local privilege escalation_ – lokalna eskalacja uprawnień
MBR Master Boot Record
ME Management Engine
MFT Master File Table
MIPS _millions of instructions per second_ – miliony instrukcji na sekundę
MSR _model-specific register_ – __ rejestr specyficzny dla modelu
NDIS Network Driver Interface Specification
NVRAM _nonvolatile random access memory_ – nieulotna pamięć o swobodnym dostępie
NX _no-execute_ – nie wykonanuj
OEM _original equipment manufacturer_ – oryginalny wytwórca sprzętu
OSI Open Systems Interconnection
PCH Platform Controller Hub
PCR Platform Configuration Register
PDO _physical device object_ – obiekt urządzenia fizycznego
PE Portable Executable
PEI Pre-EFI Initialization
PI _platform initialization_ – inicjowanie platformy
PIC Position-Independent Code
PK _platform key_ – klucz platformy
PKI _public key infrastructure_ – infrastruktura klucza publicznego
PMU Power Management Unit
PnP Plug and Play
PoC _proof of concept_ – dowód koncepcji, prototyp
POST Power-On Self-Test
PPI Pay-Per-Install
RCBA Root Complex Base Address
RCRB Root Complex Register Block
ROP _return-oriented programming_ – programowanie zwrotne
RVI Rapid Virtualization Indexing
SGX Software Guard Extensions
SLAT Second Level Address Translation
SMC System Management Controller
SMI System Management Interrupt
SMM System Management Mode
SMRAM _system management random access memory_ – pamięć o swobodnym dostępie zarządzania systemem
SPC Software Publisher Certificate
SPI Serial Peripheral Interface
SPIBAR SPI Base Address Register
SSDT System Service Descriptor Table
TBB Trusted Boot Board
TDI Transport Driver Interface
TE Terse Executable
TPM Trusted Platform Module
TSA Time Stamping Authority
UAC _User Account Control_ – kontrola konta użytkownika
UEFI Unified Extensible Firmware Interface
UID _unique identifier_ – unikatowy identyfikator
VBR Volume Boot Record
VBS _virtualization-based security_ – zabezpieczenia oparte na wirtualizacji
VDO _volume device object_ – obiekt urządzenia woluminu
VFAT Virtual File Allocation Table
VFS Virtual File System
VM _virtual machine_ – maszyna wirtualna
VMM _virtual machine manager_ – menedżer maszyn wirtualnych
VSM Virtual Secure Mode
WDK Windows Driver Kit
WHQL Windows Hardware Quality Labs
WMI Windows Management Instrumentation
* Nazwy własne podawane są w oryginalnym brzmieniu. Dla akronimów pochodzących od terminów potocznych podane jest rozwinięcie oryginału wraz z tłumaczeniem na język polski (_przyp. tłum._).WPROWADZENIE
Pomysł napisania tej książki powstał, gdy po opublikowaniu wielu artykułów i postów na blogach o rootkitach i bootkitach zdaliśmy sobie sprawę, że temat ten nie uzyskuje nawet ułamka uwagi, na którą zasługuje. Czuliśmy, że jest to szersze zagadnienie i pragnęliśmy książki, która pozwoli
nadać sens temu wszystkiemu – takiej, która uogólniłaby tę mieszankę sprytnych sztuczek, spostrzeżeń na temat architektur systemów operacyjnych i wzorców projektowych używanych w innowacjach napastników i obrońców. Rozglądaliśmy się za taką książką i nie znaleźliśmy żadnej, zatem zdecydowaliśmy się ją napisać – taką, jaką sami chcieliśmy przeczytać.
Zajęło nam to cztery i pół roku, dłużej niż planowaliśmy i, niestety, dużo dłużej, niż moglibyśmy oczekiwać, że nasi oczekiwani czytelnicy i pomocnicy wczesnych wydań zechcą z nami pozostać. Jeśli jesteś jedną z tych osób, które nas wspierały od początku i jednak czytasz tę książkę, jesteśmy zawstydzeni twoim nieustającym poświęceniem!
W tym czasie obserwowaliśmy wspólną ewolucję ataków i obrony przed nimi. W szczególności widzieliśmy, jak nowe mechanizmy ochrony Microsoft Windows sprawiły, że wiele głównych gałęzi rozwoju rootkitów i bootkitów stało się ślepymi uliczkami. Historię tę można znaleźć na stronach tej książki.
Widzieliśmy też pojawienie się nowych klas złośliwego oprogramowania, biorącego na cel BIOS i oprogramowanie chipsetu, poza zasięgiem bieżącego oprogramowania obronnego w Windows. Wyjaśnimy w książce, jak ta wspólna ewolucja się rozwijała i dokąd naszym zdaniem zaprowadzą nas jej kolejne kroki.
Innym tematem tej książki jest rozwój technik inżynierii odwrotnej, nakierowanej na wczesne fazy procesu rozruchu systemu operacyjnego. Tradycyjnie, im wcześniej w długim łańcuchu procesu rozruchowego komputera wchodzi do gry jakiś fragment oprogramowania, tym mniej jest on widoczny. Ten brak możliwości obserwacji przez długi czas był mylony z bezpieczeństwem. Jednak w miarę naszych badań nad bootkitami i implantami BIOS-u, które wywracały do góry nogami technologie systemu niskiego poziomu, takie jak Secure Boot, dostrzegamy, że podejście _security by obscurity_ sprawdza się tu nie lepiej niż w innych obszarach informatyki. Po krótkim czasie (który w czasach Internetu może się tylko skrócić jeszcze bardziej) podejście to staje się bardziej korzystne dla napastników niż dla obrońców. Ta koncepcja nie została dostatecznie omówiona w innych książkach na ten temat, zatem próbujemy wypełnić tę lukę.
Dlaczego warto przeczytać tę książkę?
Książkę pisaliśmy dla bardzo szerokiego kręgu badaczy bezpieczeństwa informatycznego, zainteresowanych tym, jak zaawansowane, trwałe zagrożenia (ataki APT) omijają zabezpieczenia poziomu systemu operacyjnego. Skupiliśmy się na tym, jak te zaawansowane zagrożenia można wykrywać i skutecznie je analizować. Każda część książki odzwierciedla nową fazę ewolucyjnego rozwoju zaawansowanych zagrożeń, od ich pojawienia się jako zawężonych dowodów koncepcji po ich późniejsze rozpowszechnienie wśród uczestników zagrożeń, aż po finalne włączenie do podstępnego arsenału ukierunkowanych ataków.
Chcielibyśmy jednak dotrzeć do szerszego grona odbiorców niż tylko analitycy złośliwego oprogramowania. W szczególności mamy nadzieję, że książka okaże się równie użyteczna dla twórców systemów wbudowanych i specjalistów zabezpieczeń chmurowych, biorąc pod uwagę, że zagrożenie rootkitami i innymi implantami może być ogromne dla ich ekosystemów.
Co znajdziemy w tej książce?
Rozpoczynamy od eksploracji rootkitów w części 1, w której przedstawiamy wewnętrzne mechanizmy jądra systemu Windows, które historycznie były miejscem działania rootkitów. Następnie w części 2 przenosimy uwagę w stronę procesu rozruchu systemu operacyjnego i bootkitów, które powstały po tym, gdy w systemie Windows zaczęto wzmacniać tryb jądra. Rozbieramy na części proces rozruchu z punktu widzenia napastnika, zwracając szczególną uwagę na nowe schematy oprogramowania układowego UEFI i na ich podatności. Na koniec, w części 3, skupiamy się na badaniach śledczych, zarówno dotyczących klasycznych ataków rootkitów systemu operacyjnego, jak i nowszych ataków bootkitów na BIOS i oprogramowanie układowe.
_Część 1: Rootkity_
W tej części koncentrujemy się na klasycznych rootkitach poziomu systemu operacyjnego w czasie ich największej świetności. Te historyczne przykłady rootkitów zapewniają wartościowy wgląd w to, jak napastnicy widzą wewnętrzne mechanizmy systemu operacyjnego i jak znajdują sposoby solidnego wbudowania do nich swoich implantów, wykorzystując własne struktury systemu.
Rozdział 1: Czym jest rootkit: studium przypadku TDL3
Poznawanie tego, jak działają rootkity, rozpoczynamy od opowieści o jednym z najbardziej interesujących rootkitów swoich czasów, opartej na naszych własnych spotkaniach z jego różnymi wariantami i naszych analizach tych zagrożeń.
Rozdział 2: Rootkit Festi: najbardziej zaawansowany bot spamu i DDoS
W tym rozdziale analizujemy pamiętny rootkit Festi, który wykorzystywał najbardziej zaawansowane techniki utajniania dostępne w jego czasach do rozsyłania spamu i ataków DDoS. Techniki te obejmowały utworzenie własnego stosu TCP/IP na poziomie jądra.
Rozdział 3: Obserwowanie infekcji rootkitami
Rozdział ten prowadzi nas w głąb jądra systemu operacyjnego, pokazując triki używane przez napastników w celu przejęcia kontroli nad głębszymi warstwami jądra, takie jak przechwytywanie zdarzeń i wywołań systemowych.
_Część 2: Bootkity_
Druga część przenosi naszą uwagę na ewolucję bootkitów, warunki, które napędzały tę ewolucję, oraz techniki inżynierii wstecznej takich zagrożeń. Zobaczymy tu, jak bootkity rozwinęły się w celu implantowania się wewnątrz BIOS-u i wykorzystywania podatności oprogramowania układowego UEFI.
Rozdział 4: Ewolucja bootkitów
Ten rozdział to głębokie zanurzenie w siły (ko)ewolucyjne, które powołały bootkity do istnienia i kierowały ich rozwojem. Przyjrzymy się niektórym z pierwszych odkrytych bootkitów, takich jak owiany złą sławą Elk Cloner.
Rozdział 5: Podstawy procesu rozruchu systemu operacyjnego
Omówimy tu wewnętrzne mechanizmy procesu rozruchowego Windows i jak się one zmieniały z upływem czasu. Zagłębimy się w takie szczegóły, jak Master Boot Record, tablice partycji, dane konfiguracyjne i moduł bootmgr.
Rozdział 6: Zabezpieczenia procesu rozruchu
Rozdział ten to wycieczka z przewodnikiem po technologiach ochrony systemu rozruchu Windows, takich jak moduły Early Launch Anti-Malware (ELAM), zasady podpisywania trybu jądra (Kernel-Mode Code Signing Policy) i ich słabości oraz nowsze techniki zabezpieczeń oparte na wirtualizacji.
Rozdział 7: Techniki infekcji bootkitów
W tym rozdziale rozłożymy na czynniki metody infekowania sektorów rozruchowych i przyjrzymy się ich ewolucji z upływem czasu. Jako przykładów użyjemy kilku dobrze znanych bootkitów: TDL4, Gapz oraz Rovnix.
Rozdział 8: Statyczna analiza bootkitu przy użyciu IDA Pro
Ten rozdział dotyczy metod i narzędzi analizy statycznej do badania infekcji bootkitami. Poprowadzimy w nim czytelnika przez analizę, używając bootkitu TDL4 jako przykładu, a także udostępniamy materiały do wykorzystania we własnych analizach, włącznie z obrazem dysku do pobrania.
Rozdział 9: Dynamiczna analiza bootkitu: emulacja i wirtualizacja
W tym miejscu przeniesiemy uwagę na metody analizy dynamicznej przy użyciu emulatora Bochs oraz wbudowanego w VMware debuggera GDB. Ponownie poprowadzimy czytelnika przez kolejne kroki dynamicznej analizy bootkitów MBR i VBR.
Rozdział 10: Ewolucja technik infekowania MBR i VBR: Olmasco
Prześledzimy tu ewolucję technik ukrywania się wykorzystywanych w celu przeniesienia bootkitów na niższe poziomy procesu rozruchu. Jako przykładu użyjemy Olmasco, zbadamy jego techniki infekcji i utrwalania, funkcjonalności złośliwego oprogramowania i wstrzykiwania payloadu.
Rozdział 11: Bootkity IPL: Rovnix i Carberp
W tym rozdziale zajrzymy pod maskę dwóch spośród najbardziej złożonych bootkitów, Rovnix i Carberp, wymierzonych w bankowość elektroniczną. Były to pierwsze bootkity atakujące IPL i unikające ówczesnego oprogramowania ochronnego. Do ich analizy wykorzystamy VMware oraz IDA Pro.
Rozdział 12: Gapz: zaawansowana infekcja VBR
Przedstawiamy tu szczytowe osiągnięcie ewolucji ukrywania się bootkitów: tajemniczy rootkit Gapz, który wykorzystywał najbardziej zaawansowane techniki swoich czasów do atakowania VBR.
Rozdział 13: Rozwój ransomware MBR
W tym rozdziale zobaczymy, jak bootkity znalazły sobie miejsce w zagrożeniach typu ransomware.
Rozdział 14: Rozruch UEFI a proces rozruchowy MBR/VBR
W tym miejscu poznamy proces rozruchu rozwiązań UEFI BIOS – informacje kluczowe dla wykrywania najnowszej ewolucji złośliwego oprogramowania.
Rozdział 15: Współczesne bootkity UEFI
Ten rozdział dotyczy naszych autorskich badań nad różnymi implantami BIOS-u, zarówno dowody koncepcji, jak i ich rozmieszczenie w środowisku naturalnym. Omówimy metody infekowania i utrwalania obecności w BIOS UEFI oraz przyjrzymy się przykładom złośliwego oprogramowania UEFI odkrytego w takim środowisku naturalnym jak Computrace.
Rozdział 16: Podatności oprogramowania układowego UEFI
W tym miejscu przedstawimy pogłębiony przegląd różnych klas podatności nowoczesnych układów BIOS-u, które umożliwiają wprowadzenie implantów. Jest to pogłębione studium podatności i eksploitów UEFI, włącznie ze studium przypadku.
_Część 3: Obrona i techniki śledcze_
Końcowa część książki dotyczy analiz śledczych bootkitów, rootkitów i innych zagrożeń dla BIOS-u.
Rozdział 17: Jak działa UEFI Secure Boot
Rozdział ten stanowi pogłębioną analizę działania technologii Secure Boot i jej ewolucji, podatności i skuteczności.
Rozdział 18: Podejścia do analizowania ukrytych systemów plików
Tu przedstawimy przegląd ukrytych systemów plików wykorzystywanych przez złośliwe oprogramowanie i metod ich wykrywania. Przeanalizujemy obraz ukrytego systemu plików, przedstawiając opracowane przez nas narzędzie HiddenFsReader.
Rozdział 19: Badania BIOS/UEFI: podejścia do zdobywania oprogramowania układowego i analizy
W tym końcowym rozdziale omówimy podejścia do wykrywania najbardziej zaawansowanych i wyrafinowanych zagrożeń. Przyjrzymy się podejściom sprzętowym i programowym oraz wykorzystaniu różnych narzędzi open source, takich jak UEFITool i Chipsec.
Jak czytać tę książkę
Wszystkie próbki zagrożeń omawianych w tej książce oraz inne materiały pomocnicze można znaleźć na stronie internetowej tej książki, _https://nostarch.com/rootkits/_. Witryna ta również wskazuje narzędzia używane w analizach bootkitów, takie jak kod źródłowy wtyczki IDA Pro, której używaliśmy w naszych autorskich badaniach.PRZYPISY
Rozdział 1
1 _http://static1.esetstatic.com/us/resources/white-papers/TDL3-Analysis.pdf._
2 Rodrigo Rubira Branco, Gabriel Negreira Barbosa i Pedro Drimel Neto, „Scientific but not academic overview of malware anti-debugging, anti-disassembly and anti-VM technologies” (dokument przedstawiony na konferencji Black Hat USA 2012, 21–26 czerwca, Las Vegas, Nevada), _https://media.blackhat.com/bh-us-12/Briefings/Branco/BH_US_12_Branco_Scientific_Academic_WP.pdf_.
3 _https://blogs.technet.microsoft.com/markrussinovich/2005/10/31/sony-rootkits-and-digital-rights-management-gone-too-far/._
4 Payload – kod, który wykonuje rzeczywistą szkodliwą pracę (_przyp. tłum_.).