Egy etikus hacker, második rész

2011.03.23. 15:55 | aliceesbob | Szólj hozzá!

Címkék: rootkit gépházból jelentjük

Saját bevallása szerint sem túl divatos dolog manapság rootkitekkel foglalkozni, mégis ez hozta meg a jól megérdemelt szakmai elismerést Barta Csabának. Egy általa kedvtelésből írt rootkit a nemzetközi konferenciák sztárja lett, és bekerült a világ 60 országában oktatott információbiztonsági tananyagba is. 


A cikk első része itt olvasható.

A hagyományos biztonsági szoftverek (például az antivírus eszközök) mennyire hatékonyak a rootkitek észlelésében?

A már ismert rootkiteket a szignatúra alapján észleli egy modern antivírus program, de ha minimális mértékben módosítják őket -- ami azért a legtöbb esetben nem bonyolult --, akkor már nem tud velük mit kezdeni. Amikor megírtam a saját rootkitemet, és az bekerült a tananyagba, fel is hívtuk rá a gyártók figyelmét, és egyeztettük a szükséges lépéseket, hogy megelőzzük a rosszindulatú felhasználást. Fejlődik a heurisztikus technológia is, ami már nem a program bájtjait nézi, hanem a viselkedését, működését, az általa végrehajtott műveleteket. A heurisztikában alkalmazott mesterséges intelligencia persze még nem tökéletes, de ilyen alapokon egyre nagyobb esély van az ismeretlen variánsok megtalálására is.

Az elkötelezettség mintaképei

"Három olyan külföldi szakember van, akikkel szívesen találkoznék. Ketten a rootkitekkel és újabban a forensickel foglalkoznak: Peter Silbermann és James Butler. A harmadik szakember szintén a forensic területén tevékenykedik, őt Brendan Dolan Gavittnak hívják. Személyesen még egyikükkel sem sikerült összefutnom, pedig biztos nagy élmény lenne. Nem csak a szakértelmük, a tudásuk miatt nézek fel rájuk: a téma melletti elkötelezettségük az, ami magával ragadó. Hihetetlen elszántsággal igyekeznek megismerni szakterületüket, és mindent megtesznek, hogy a mélyére hatoljanak a kérdéseknek."

Mennyire különböznek egymástól a rootkitek? A vírusok nagy része már csak variáció, igaz ez a rootkitekre is?

Ezen a téren is vannak már jól ismert, akár könyvben is megjelent dolgok. Sok esetben itt sem találják fel a spanyolviaszt: felcserélik az utasítások sorrendjét, ettől már megváltozik a szignatúra, és mehet a rootkit, mert az antivírus szoftverek nem ismerik fel. Vagy amit újabban alkalmaznak: fájlszinten titkosítják a rootkitet, ami csak akkor bontódik ki, amikor bekerül a memóriába. Innentől kezdve ha a titkosítókulcs megváltozik, a fájl tartalmának akár a 90 százaléka is más lehet, miközben maga a rootkit ugyanaz maradt. Itt is igaz az, hogy a támadónak van könnyebb dolga: neki csak egyetlen hibát kell megtalálnia, míg a védelemnek több felé kell figyelnie és 100 százalékos teljesítményt kell nyújtania.

Mennyire komoly teljesítmény rootkitet írni?

Én a kernel szintű rootkitekről tudok nyilatkozni. Ahhoz -- a programozói ismereteken túl (mint a debugger vagy az assembly fordító használata) -- minimum két számítógép kell (akár fizikailag, akár virtuálisan). Ugyanis ha az ember valamit elront -- és valamit biztosan el fog rontani --, azt a Windows kék halállal honorálja. A hibát csak kernel szintű debugolással lehet megtalálni, ahhoz meg egy másik számítógép kell. Így aztán meglehetősen macerás kernel szintű rootkitet írni.

Én Linuxot használok, amin két virtuális gépen Windows működik; az egyiken a debugger és a fejlesztőkörnyezet fut, a másikon az operációs rendszer, amin a rootkitet tesztelem. A fejlesztés menete nagyjából úgy néz ki, hogy az első virtuális gépen módosítom a kódot, azt lefordítom, átteszem a másik gépre, azt a gépet újraindítom, becsatlakozom rá a debuggerrel, betöltöm a rootkitet, és elkezdem végigtesztelni a funkciókat. Mivel fut a debugger, látom, hogy melyik programkódnál következett be az esetleges kék halál, és mi a hiba (nem tudott írni egy memóriaterületre, vagy nem volt allokált az a memóriaterület, vagy nem az az adat van ott, amire számítottam). Egyetlen tesztciklus jó félóra; ha hiba van benne, akkor végig kell gondolni, javítás, és kezdem elölről.

Lassú munka ez. Az én rootkitemben nagyjából két és fél évnyi munka van, a munkám mellett készült. De fél év tiszta munkaidővel biztosan számolni lehet.

Te miért álltál neki saját rootkitet írni?

Az egyik ok a kíváncsiság volt. Olvastam róla, hogy nehéz egy terület, meg nem annyira divatos, mert manapság mindenki botneteket csinál, sérülékenységeket keres, esetleg webalkalmazásokat tör fel, és a rootkit már amolyan "oldschool" dolognak számít.

Elkezdtem forráskódokat nézegetni, és rájöttem, hogy hihetetlenül egyszerű ötleteken alapulnak. A rootkit-fejlesztés arról szól, hogy az ember megnézi az operációs rendszer egyes részeit -- például hogyan tartja nyilván a futó folyamatokat vagy hogyan kezeli a jogosultságokat tartalmazó tokent --, és ezeket próbálja meg kijátszani vagy a saját céljai érdekében módosítani a működésüket.

A kíváncsiság mellett a másik ok a tanulás-tanítás volt. Én magam is megtanultam, hogyan működnek a folyamatok, beleláttam a mélyükbe; azáltal pedig, hogy bekerült egy tananyagba, mások is láthatják, hogy hogyan működik. Ha pedig a szakember megismerkedik a rootkit működésével, akkor az többé nem lesz misztérium a számára, és jobban fel tud készülni a védekezésre is.

A te rootkitedben vannak különleges, máshol nem alkalmazott részek?

Igen, a jogosultságokat tároló token lemásolása szerintem olyan módszer, amit én használtam először. Egy másik részlet az authentikációs rendszert módosítja, és így bármelyik, lokálisan létrehozott felhasználó jelszavát ki tudom iktatni, és be tudok lépni a nevében, majd kilépek, és visszaállítom az eredeti jelszót -- vagyis úgy tevékenykedek az illető nevében, mintha mi sem történt volna. Ennek az elméleti lehetőségéről korábban már olvastam, de megvalósítva ezt sem láttam. Az is érdekessége és újdonsága, hogy moduláris felépítésű. Már a tervezésénél odafigyeltem arra, hogy a különféle funkciók önálló modulokban kapjanak helyet, így ha csak bizonyos szolgáltatásra van szükség, akkor csak az ahhoz szükséges modult telepítjük föl. A modulokat ráadásul külön-külön lehet módosítani.

Könyv helyett internet

"Kedvenc szakkönyvem nincs, sokkal inkább az internetről tájékozódom. A polcomon lévő szakkönyvek inkább csak relikviák: Bruce Schneiernek a kriptográfiáról szóló könyve, illetve James Butler és Greg Hoglund alapműve a rootkitekről (Rootkits: Subverting the Windows Kernel). Van még egy könyvem a fuzzing technológiáról (Fuzzing). A könyvek persze egy idő után elavulnak, de a szerző gondolkodásmódja, az alapok később is tanulsággal szolgálhatnak.

A friss ismereteket inkább az internetről szerzem be. Előszeretettel olvasom a SANS Institute forensicsről szóló blogját, a Windows Incident Response-t, néhány szakember Twitter-üzeneteit, illetve kiválasztott levelezőlistákat, mint például a Full Disclosure-t."

Hogyan lett a rootkitből világhír és tananyag?

Ez egy hosszú történet. 2009-ben előadást tartottam az Ethical Hacking konferencián; ekkor látta meg Fóti Marcell, a NetAcademia vezetője és a konferencia szervezője a rootkitet. Az ő bátorítására, illetve segítségével hívtak meg a tavaly októberi amerikai Hacker Halted konferenciára, ahol kifejezetten erről az egy rootkitről és annak a képességeiről tartottam előadást, amit aztán felkapott a szakma. Nem hivatalos demót tartottam a forensics eszközök egyik legnagyobb gyártójának, és kapom az újabb konferencia-meghívókat. Magam sem gondoltam volna, hogy a rootkitem ekkora feltűnést kelt.

És mi igaz azokból a hírekből, hogy az amerikai titkosszolgálatok is érdeklődtek iránta?

Ez azért olyan jereváni rádió szintű híresztelés. Annyi igaz belőle, hogy a rootkitem demonstrációs eszközként bekerült a Certified Ethical Hacker (CEH) tananyagba, és ezt a tanfolyamot el kell végezniük azoknak, akik az információbiztonság terén dolgoznak az amerikai védelmi minisztériumban.

Hogyan kapcsolódnak össze a rootkitek a másik érdeklődési területeddel, a forensics-szel?

Az ügyfeleknél végzett munkák során sokszor felmerül a kérdés: mit lehet csinálni, ha rootkit van a gépen, hogyan lehet bizonyítani a működését? És ami a legfontosabb: pontosan mit is csinált? Milyen adatokat vitt ki? Mihez fért hozzá? Mire adott lehetőséget a támadónak? Ez érdekli elsősorban a felhasználót, nem az, hogy milyen technológiával dolgozott a rootkit vagy a vírus. A fenti kérdésekre pedig a forensics adhat választ.

Én személy szerint nagyon szeretem a forensicset. Elméleti szinten mély, egy-egy területre specializált és strukturált tudás kell hozzá. Ha ki akarom jelenteni, hogy valami így meg így történt, akkor azt alá kell tudni támasztani. Ilyen esetben 3-4-5 különböző helyről begyűjtött bizonyítékot kell szolgáltatni arra, amit leírunk, és csak a tényeket írjuk le, nem találgatunk.

A bejegyzés trackback címe:

https://aliceesbob.blog.hu/api/trackback/id/tr22765277

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása