Professional Documents
Culture Documents
Rootkity. Sabotowanie Jądra Systemu Windows
Rootkity. Sabotowanie Jądra Systemu Windows
Rootkity. Sabotowanie Jądra Systemu Windows
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
Rootkity. Sabotowanie
jdra systemu Windows
Autorzy: Greg Hoglund, Jamie Butler
Tumaczenie: Wojciech Moch
ISBN: 83-246-0257-7
Tytu oryginau: Rootkits: Subverting the Windows Kernel
Format: B5, stron: 312
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
O autorach ....................................................................................... 9
O okadce ....................................................................................... 11
Wstp ............................................................................................ 13
Rozdzia 1. Nie zostawi ladu .......................................................................... 17
Spis treci
Rozdzia 1.
G. Hoglund i G. McGraw, Exploiting Software: How to Break Code, Boston, Addison-Wesley, 2004.
Prosz zajrze rwnie na stron www.exploitingsoftware.com.
J. Koziol, D. Lichtfield, D. Aitel, C. Anley, S. Eren, N. Mehta i R. Hassell, The Shellcoders Handbook,
Nowy Jork, John Wiley & Sons, 2004.
S. McClure, J. Scambray i G. Kurtz, Hacking Exposed, Nowy Jork, McGraw-Hill, 2003.
(29-03-06)
17
18
Znaczenie niewidzialnoci
Jeeli pozostawiony program tworzcy tylne wejcia ma unikn wykrycia, to musi
korzysta z technik niewidzialnoci. Niestety, wiele z dostpnych publicznie hakerskich programw tego typu nie ukrywa si zbyt dobrze. W takich programach le
dziaa moe wiele elementw, co najczciej wynika z tego, e ich twrcy staraj si
w nie wbudowa wszystko, wcznie z kuchennym zlewem. Przyjrzyjmy si na przykad
programom Back Orfice lub NetBus. Kady z nich oferuje imponujc list funkcji,
wrd ktrych znajdziemy rwnie tak niedorzeczne jak wysuwanie tacki napdu
CD-ROM. Taka funkcja moe si przyda przy robieniu komu zoliwoci w biurze,
ale z ca pewnoci nie przyda si w czasie planowania profesjonalnego ataku4.
Jeeli atakujcy nie bdzie dostatecznie ostrony, to moe niechccy ujawni swoj
obecno w sieci i w ten sposb narazi na szwank cao operacji. Z tego powodu
4
18 (29-03-06)
19
Jako dobr ksik omawiajc podobne ledztwa mona poleci pozycj D. Farmera i W. Venema,
Fornesic Discovery (Boston: Addison-Wesley, 2004).
(29-03-06)
19
20
atakujcemu na uzyskanie dostpu administratora (ang. root), czyli najbardziej uprzywilejowanego uytkownika w systemie. Innymi sowy, rootkit jest zestawem programw
i kodu pozwalajcym na trwa i niewykrywaln obecno w obcym komputerze.
W podanej definicji rootkitu najwaniejsze jest sowo niewykrywalna. Wikszo
technologii i rozwiza stosowanych w rootkitach przeznaczonych jest do ukrywania
jego kodu i danych w systemie. Na przykad wiele rootkitw jest w stanie ukry okrelone pliki i katalogi. Inne funkcje rootkitw obejmuj najczciej zdalny dostp do
komputera oraz podsuchiwanie jego uytkownikw, czyli na przykad przegldanie
pakietw przesyanych w sieci. Poczenie tych wszystkich funkcji moe stanowi
nokautujcy cios dla wszelkich systemw zabezpieczajcych.
Rootkity same z siebie nie s ze i nie zawsze wykorzystywane s przez przestpcw.
Bardzo wane jest, eby przyswoi sobie fakt, e rootkit jest jedynie technologi. Dobre
lub ze intencje jej uycia mog mie tylko wykorzystujcy j ludzie. Istnieje wiele
poytecznych programw komercyjnych pozwalajcych na zdalne administrowanie
systemem, a nawet funkcje podsuchiwania. W niektrych z tych programw stosowane
s nawet funkcje ukrywajce, a zatem pod wieloma wzgldami s one podobne do
rootkitw. W ramach dyskusji prawniczych termin rootkit moe by stosowany do
opisywania usankcjonowanego programu typu tylne wejcie, ktry legalnie instalowany jest na danym komputerze na wniosek organw pastwowych sdu (takie sprawy
rozpatrywa bdziemy w punkcie Uprawnione uycie rootkitw). Wielkie korporacje
rwnie mog stosowa rootkity do monitorowania i wymuszania prawidowego wykorzystania komputerw pracownikw.
Postaramy si przedstawi umiejtnoci i techniki naszego przeciwnika, przedstawiajc
rootkity z perspektywy atakujcego. W ten sposb znacznie podniesiemy nasze umiejtnoci w zabezpieczaniu si przed takimi zagroeniami. Niniejsza ksika pomoe
rwnie wszystkim prawym twrcom rootkitw, przedstawiajc techniki, z ktrych
bd mogli oni skorzysta.
20 (29-03-06)
21
Rootkity speniaj zatem dwie podstawowe funkcje: umoliwiaj zdaln kontrol nad
komputerem i podsuchiwanie innych programw.
Zdalna kontrola
Zdalna kontrola nad komputerem moe obejmowa kontrol nad plikami, wymuszanie
ponownego uruchomienia komputera lub niebieskich ekranw mierci, a nawet umoliwienie dostpu do wiesza polece (czyli cmd.exe lub /bin/sh). Na rysunku 1.1 przedstawiony zosta przykad menu polece rootkitu. Takie menu daje nam przegld funkcji
oferowanych przez rootkit.
Rysunek 1.1.
Menu rootkitu
Podsuchiwanie oprogramowania
Podsuchiwanie oprogramowania pozwala na obserwowanie operacji wykonywanych
przez uytkownikw komputera. Oznacza to przegldanie pakietw sieciowych, przechwytywanie nacini klawiszy i czytanie wysyanych e-maili. Atakujcy moe wykorzystywa te techniki do przechwytywania hase i zaszyfrowanych plikw, a nawet
kluczy szyfrujcych.
(29-03-06)
21
22
Bro elektroniczna
Co prawda rootkity s czsto stosowane jako bro elektroniczna, jednak nie jest to
ich podstawowe zastosowanie.
Wojny tocz si na wielu frontach, przy czym front ekonomiczny z ca pewnoci
jest jednym z waniejszych. Od zakoczenia drugiej wojny wiatowej, przez cay czas
zimnej wojny, Zwizek Radziecki tworzy wiele grup zajmujcych si zbieraniem informacji na temat technologii rozwijanych w Stanach Zjednoczonych6.
Po wykryciu kilku takich grup w USA podsunito im faszywe plany, oprogramowanie
i materiay. W jednym z opublikowanych wypadkw to wanie zoliwe modyfikacje
oprogramowania zostay uznane za przyczyn wybuchu gazocigu na Syberii7. Eksplozja ta zostaa sfotografowana przez satelity, a eksperci okrelali j jako najbardziej
przeraajcy wybuch nienuklearny, jaki kiedykolwiek zosta zaobserwowany z przestrzeni kosmicznej8.
7
8
G. Weiss The Farewell Dossier w Studies in Intelligence (Waszyngton: CIA, Center for the Study
of Intelligence, 1996), dostpny na stronie www.cia.gov/csi/studies/96unclass/farewell.thml.
Co sugeruje, e eksplozja zostaa spowodowana przez sabota oprogramowania.
D. Hoffman, Zimna wojna zaognia si jeszcze bardziej w momencie, gdy w wyniku sabotau
w powietrze wylecia sowiecki rurocig., Sydney Morning Herald, 28 lutego 2004.
22 (29-03-06)
23
10
www.tripwire.org.
(29-03-06)
23
24
Poprawianie
Kod wykonywalny (czasami nazywany jest binark) skada si z serii instrukcji zapisanych w postaci cigu bajtw. Takie bajty musz by uoone w cile okrelonym
porzdku, ktry dla komputera ma jakiekolwiek znaczenie. Jeeli takie bajty zostan
zmodyfikowane, to jednoczenie zmodyfikowana zostanie logika oprogramowania.
Taka technika czasami nazywana jest poprawianiem (ang. patching), a podobna jest
do nakadania kolorowych atek na star kodr. Oprogramowania nie mona nazwa
sprytnym. Wykonuje ono tylko kolejne rozkazy i nie zajmie si niczym innym. To wanie
dlatego tak doskonale sprawdzaj si tego rodzaju modyfikacje. Co wicej, ich wprowadzanie wcale nie jest tak bardzo skomplikowane. Poprawianie bajtw kodu jest jedn
z najwaniejszych technik stosowanych w tak zwanych krakach, ktre usuwaj zabezpieczenia z oprogramowania. Innym zastosowaniem takich poprawek jest wprowadzanie
moliwoci oszukiwania w grach komputerowych (na przykad nieograniczone zoto,
zdrowie lub inne dodatki).
Jaja wielkanocne
Zmiany w logice oprogramowania mog by rwnie wbudowane. Takie tylne
wejcia w programie moe umieszcza jego twrca. Nie jest to oczywicie opisywane
w dokumentacji programu, a zatem takie funkcje zostaj w utajone. Czasami prezentowane podejcie nazywane jest jajami wielkanocnymi (ang. easter eggs) i przez twrcw
programw uywane jest do pozostawienia swojego specjalnego podpisu. Jest to swego
rodzaju specjalny znak mwicy, e to ten programista napisa dany program. Wczesne
wersje bardzo szeroko wykorzystywanego programu Microsoft Excel zawieray takie
jajo wielkanocne, ktre pozwalao zagra w trjwymiarow strzelank podobn do
starej gry Doom11 wywietlan w jednej z komrek arkusza kalkulacyjnego.
Spyware
Czasami jeden program specjalnie infekuje inny program, wprowadzajc do niego elementy szpiegujce (tzw. spyware). Niektre programy tego typu zapamituj strony
WWW, jakie odwiedzaj uytkownicy komputera. Takie programy szpiegujce mog
11
24 (29-03-06)
25
Wiele przegldarek WWW staje si upem tego rodzaju szpiegw, przy czym najwikszym celem
twrcw takiego oprogramowania jest, oczywicie, Internet Explorer.
13
Linus Torvalds jest ojcem Linuksa.
14
CERT Advisory CA-2003-21, dokument dostpny jest na stronie www.cert.org/advisories/
CA-2003-21.html.
15
Na przykad na stron monkey.org nalec do D. Songa wamano si w maju 2002 roku i wstawiono
poprawki do rde przechowywanych na tej stronie programw Dsniff, Fragroute i Fragrouter.
Prosz zobaczy te dokument Download Sites Hacked, Source Code Backdoored dostpny
na stronie www.securityfocus.com/news/462.
(29-03-06)
25
26
26 (29-03-06)
27
16
Tak nazw oznacza si wieo wykryte bdy, dla ktrych nie ma jeszcze poprawek.
(29-03-06)
27
28
Problem z wirusami
Co prawda rootkit nie jest wirusem, ale techniki stosowane w rootkitach mog by
rwnie wykorzystywane w wirusach. Jeeli wirus zostaby poczony z rootkitem, to
powstaaby wyjtkowo niebezpieczna technologia.
wiat ju wielokrotnie si przekona, do czego zdolne s wirusy. Niektre z nich rozprzestrzeniy si w cigu kilku godzin na wiele milionw komputerw.
Najpopularniejszy system operacyjny, Microsoft Windows, ma ju dug histori bdw
umoliwiajcych wirusom infekowanie milionw komputerw w internecie. Wikszo
zoliwych hakerw nie opisze wykrytych przez siebie bdw do twrcy oprogramowania. Innymi sowy, jeeli taki haker znajdzie w systemie Microsoft Windows bd
pozwalajcy na wykonanie dowolnego kodu, to na pewno firma Microsoft si o tym
nie dowie. Bd tego rodzaju znaleziony w domylnej instalacji systemu jest jak klucz
do bram krlestwa, a poinformowanie o tym bdzie producenta jest rwnoznaczne
z oddaniem tego klucza.
Poznanie technologii rootkitw jest bardzo istotne dla prawidowej ochrony przed
wirusami. Programici tworzcy wirusy ju od lat korzystaj z tej technologii do usprawnienia swoich produktw. To naprawd niebezpieczny trend. Zostay ju opublikowane algorytmy rozprzestrzeniania17 wirusw, ktre pozwalaj na spenetrowanie setek,
a moe i tysicy komputerw w cigu godziny. Powstay ju techniki pozwalajce na
zniszczenie systemw komputerowych, a nawet sprztu. Co wicej, wcale nie ubywa
bdw w systemach Windows pozwalajcych na ich zdalne wykorzystanie. Wirusy
korzystajce z technologii rootkitw bd coraz trudniejsze do wykrycia i coraz trudniej
bdzie si przed nimi zabezpieczy.
N. Weaver, Warhol Worms: The Potential for Very Fast Internet Plagues, dostpne na stronie
www.cs.berkeley.edu/~nweaver/warhol.html.
18
G. Hoglund i G. McGraw, Exploiting Software.
28 (29-03-06)
29
19
Nie moemy dostarczy adnego dowodu na takie stwierdzenie, ale zostao ono wywiedzione z naszej
wiedzy na temat tego problemu.
20
Wikszo innych producentw oprogramowania stosuje podobne metody ledzenia i poprawiania
bdw w swoich produktach.
21
Ciche poprawianie oznacza, e bd jest poprawiony przez aktualizacj oprogramowania,
ale producent nigdy nie podaje do wiadomoci klientw informacji o istnieniu takiego bdu.
Taki bd uznawany jest za tajny i nikt nie ma prawa na jego temat rozmawia. Niestety,
jest to praktyka szeroko stosowana przez wielu duych producentw oprogramowania.
22
www.eEye.com.
(29-03-06)
29
30
Rysunek 1.2. Metoda stosowana przez firm eEye przy wstpnym publikowaniu bdw
zajmuje zwykle znacznie duej ni wspomniane 60 dni. Wyglda na to, e do tej pory
poprawki takich bdw powstaway nawet w cigu kilku dni, ale tylko w sytuacji, gdy
w internecie szala robak wykorzystujcy okrelony bd.
Jzyki z bezpiecznymi typami
Jzyki programowania posiadajce bezpieczne typy danych s zdecydowanie lepiej
zabezpieczone przed pewnymi rodzajami bdw, takimi jak przepenienia bufora.
Bez stosowania zabezpiecze typw dane programu s tylko jednym wielkim oceanem
bitw. Program moe pobra dowoln ilo takich bitw i interpretowa je w cakowicie
dowolny sposb, niezalenie od ich oryginalnego przeznaczenia. Na przykad, jeeli
w pamici umiecimy cig znakw GARY, to pniej moe on zosta wykorzystany
jako 32-bitowa liczba cakowita (o wartoci 0x47415259 lub dziesitnie 1.195.463.257
naprawd dua liczba), a nie jako tekst. Jeeli w programie moe doj do nieprawidowej interpretacji danych podanych przez uytkownika, to bardzo prawdopodobne
jest powstanie niebezpiecznych bdw.
Z drugiej strony, program napisany w jzyku z bezpiecznymi typami danych (takim
jak Java lub C#23) nigdy nie pozwoli na przeksztacenia cigu znakw GARY w liczb
cakowit. W takich jzykach cigi znakw zawsze traktowane s jako tekst.
30 (29-03-06)
31
Kiedy bdy przepenienia bufora strac na znaczeniu, cho na pewno nie nastpi to
w najbliszej przyszoci. Co prawda zdyscyplinowany programista moe napisa kod,
ktry nie bdzie zawiera tego rodzaju bdw (i to niezalenie od jzyka programowania;
bezpieczne mog by nawet programu tworzone w asemblerze), ale niestety, wikszo
programistw nie wykazuje si a tak skrupulatnoci. Aktualnie w czasie produkcji
oprogramowania firmy staraj si narzuci programistom praktyki bezpiecznego tworzenia kodu oraz stosowa automatyczne narzdzia do przegldania kodu i wyszukiwania
ewentualnych usterek. Takimi narzdziami posuguje si na przykad Microsoft25.
Narzdzia do automatycznego przegldania kodu mog wychwyci cz bdw, ale
z pewnoci nie s w stanie znale wszystkich. Wikszo programw komputerowych
jest na tyle skomplikowana, e ich automatyczne, dokadne przetestowanie moe by
naprawd trudne. Niektre programy mog mie zbyt wiele stanw, eby mona je
wszystkie sprawdzi26. Co ciekawe, niektre programy mog mie wicej rnych
stanw ni jest czsteczek we wszechwiecie27. Ze wzgldu na tak ogromn zoono
programw bardzo trudno jest choby oglnie okreli stopie bezpieczestwa programu
komputerowego.
Zastosowanie jzykw programowania z bezpiecznymi typami (takich jak Java lub C#)
niemal cakowicie wyeliminuje ryzyko wystpowania bdw przepenienia bufora.
Co prawda jzyki z bezpiecznymi typami danych nie gwarantuj cakowitego bezpieczestwa programw, ale zdecydowanie zmniejszaj ryzyko powstawania bdw przepenienia bufora, bdw konwersji znaku oraz bdw przepenienia liczb cakowitych
(wicej na ten temat w ramce ze strony ???). Niestety, takie jzyki nie mog si rwna
z jzykami C i C++ pod wzgldem wydajnoci i dlatego systemy Microsoft Windows
nawet w swoich najnowszych wersjach nadal tworzone s w jzykach C i C++. Twrcy
systemw osadzonych (ang. embedded systems) zaczynaj ju coraz czciej stosowa
jzyki z bezpiecznymi typami, ale i ten proces postpuje bardzo powoli. Co wicej,
miliony istniejcych ju systemw raczej nie zostan wymienione w najbliszym czasie.
To wszystko oznacza, e tradycyjne ju eksploity oprogramowania bd nam towarzyszyy jeszcze przez dugie lata.
25
Na przykad narzdzia PREfix i PREfast zostay przygotowane i opublikowane przez Jona Pincusa,
pracujcego w centrum badawczym Microsoftu. Prosz przejrze stron http://research.microsoft.com/
users/jpincus/.
26
Stan mona traktowa jak wewntrzn konfiguracj oprogramowania. Za kadym razem, gdy program
wykonuje jak operacj, zmienia si jego stan. Oznacza to, e wikszo programw moe przyjmowa
naprawd gigantyczn liczb rnych stanw.
27
Prosz sobie wyobrazi liczb moliwych permutacji pewnego cigu liczb binarnych. Za przykad
niech posuy nam program o wielkoci 160 MB, ktry swj stan przechowuje w 16 MB pamici
(mniej wicej 10% cakowitej wielkoci programu). Taki program moe mie teoretycznie nawet
2^16777216 rnych stanw, co jest liczb o wiele, wiele wiksz od liczby czsteczek we wszechwiecie
(zwykle ocenia si j na mniej wicej 10^80). [Dzikujemy Aaronowi Bornsteinowi za wyjanienie
tego przykadu.]
(29-03-06)
31
32
HIPS
Technologia systemw HIPS moe zosta przygotowana samodzielnie, ale mona te
kupi j w postaci gotowych programw. Oto przykadowe programy wykorzystujce
technologi HIPS:
t Blink (eEye Digital Security, www.eEye.com),
t Integrity Protection Driver (IPD, Pedestal Software, www.pedestal.com),
t Entercept (www.networkassociates.com),
t Okena Storm Watch (teraz nazywa si Cisco Security Agent, www.cisco.com),
t LIDS (Linux Intrusion Detection System, www.lids.org),
t WatchGuard ServerLock (www.watchguard.com).
NIDS
Sieciowe systemy IDS (NIDS) rwnie stanowi zagroenie dla rootkitw, ale dobrze
zaprojektowany rootkit moe bardzo skutecznie unika wykrycia przez systemy NIDS.
Teoretycznie analiza statystyczna jest w stanie wykry utajone kanay komunikacyjne,
32 (29-03-06)
33
28
Uywajc publicznego eksploitu, atakujcy moe udawa zachowanie znanego ju wczeniej robaka
(na przykad robaka Blaster). Wikszo administratorw zajmujcych si bezpieczestwem systemw
uzna takie zachowania za typowy atak robaka i przez to nie rozpozna waciwego ataku.
(29-03-06)
33
34
www.encase.com
34 (29-03-06)
35
Wnioski
Rootkity pierwszej generacji byy najnormalniejszymi programami. Dzisiejsze rootkity najczciej s konstruowane w postaci sterownikw urzdze. W nadchodzcych
latach powstajce rootkity mog prbowa modyfikowa lub instalowa si w mikrokodzie procesora. Niewykluczone, e bd one mogy istnie wycznie w ramach
mikroukadw skadajcych si na dany komputer. Nie jest na przykad wykluczone,
e twrcom rootkitw uda si tak zmodyfikowa obraz ukadw FPGA (Field Programmable Gate Array), eby utworzy w nich dla siebie tylne wejcie30. Oczywicie rootkity
tego rodzaju tworzone bd w celu zaatakowania bardzo konkretnego celu. Bardziej
rozpowszechnione bd oczywicie te rootkity, ktre wykorzystywa bd najoglniejsze
usugi udostpniane przez system operacyjny.
Technologia rootkitw ukrywajcych si w ramach ukadw FPGA nie nadaje si do
zastosowania w robakach internetowych. W tych szkodnikach cakowicie nie sprawdzaj si ataki uzalenione od konkretnej konfiguracji sprztowej. Robaki sieciowe
najlepiej rozprzestrzeniaj si w ogromnych i jednolitych rodowiskach. Innymi sowy,
robaki najlepiej czuj si w sytuacji, gdy na wszystkich komputerach dziaa takie samo
oprogramowanie. W wiecie rootkitw ukierunkowanych na konkretne rozwizania
sprztowe istnieje zbyt wiele drobnych rnic pomidzy komputerami, ktre uniemoliwiaj masowe atakowanie komputerw. Bardziej prawdopodobne jest to, e takie
ataki bd przeprowadzane na konkretnie wybrane cele, ktre atakujcy moe szczegowo przeanalizowa i przygotowa rootkit idealnie pasujcy do wybranej ofiary.
Rootkity bd wykorzystywa eksploity do czasu, a te nie zostan cakowicie wyeliminowane. Wsppraca rootkitu z eksploitami jest czym cakowicie naturalnym. Trzeba
jednak zaznaczy, e rootkity istniayby nawet wtedy, gdybymy nigdy nie syszeli
o eksploitach.
W cigu kilku nastpnych dziesicioleci najprawdopodobniej dzisiejszy krl wszystkich
eksploitw, czyli bdy przepenienia bufora, zostanie cakowicie wyeliminowany.
Zaawansowane jzyki z bezpiecznymi typami, zaawansowane kompilatory oraz technologie maszyn wirtualnych praktycznie cakowicie wyeliminuj zagroenie bdw
przepenienia bufora. Z ca pewnoci bdzie to dotkliwy cios dla wszystkich tych,
ktrzy w ten sposb zdalnie prbuj atakowa systemy. Nie oznacza to jednak, e w ten
sposb znikn rwnie eksploity. Nowa kategoria eksploitw opiera si bdzie zapewne
na bdach logiki znajdujcych si w programach, a nie na sabociach architektury.
30
Zakadamy teraz, e w takich ukadach bdzie do miejsca (co oznacza odpowiedni liczb bramek)
na dopisanie do ukadu nowych funkcji. Producenci sprztu prbuj jednak oszczdza na kadym
elemencie komputera, wic ukady FPGA s zwykle tylko tak due jak zapisywana do nich aplikacja.
Oznacza to, e w ukadzie moe brakowa miejsca na nowe funkcje, a zatem rootkit, instalujc si
w tak niewielkiej przestrzeni, bdzie prawdopodobnie musia usun z ukadu pewne funkcje.
(29-03-06)
35
36
Rootkity bd istniay niezalenie od tego, czy nadal bdzie istniaa moliwo zdalnego stosowania eksploitw. Mona je umieszcza w systemach na wielu etapach, od
momentu tworzenia systemu, a po jego instalacj. Jak dugo bdzie istniaa ludzko,
znajd si te osoby pragnce szpiegowa innych. Oznacza to, e rootkity na zawsze
bd czci technologii komputerowych. Programy tworzce w systemie tylne wejcie
i technologie sabotau systemw operacyjnych s po prostu ponadczasowe!
36 (29-03-06)