Jak se muze ten rootkit zamaskovat, aby se na nej neslo dostat, byl neviditelny?
takhle pracuje spousta softu, truecrypt a spol, na sifrovanem disku s OS, take musi zavest driver vlastne jeste pred startem OS a i pred startem ntoskrnl nebo co se to vubec jako prvni dnes spousti a take muze prevzit heslo a klice z usb key atp...
Takhle daleko ale žádný soft před startem a při startu systému nezasahuje. (si zapal cígo, zase bude román)
TDL4 přepíše zaváděcí kód v MBR sektoru svým vlastním, který obsahuje dešifrovací smyčku a zašifrovaný kód, jehož hlavním úkolem je odskočit do sektoru někde na konci disku, kde má rootkit umístěn svůj vlastní oddíl s jednoduchým šifrovaným souborovým systémem (tam jsou umístěny všechny součásti rootkitu) a spustit speciální 16bitový zavaděč ldr16, jehož úkolem je hahákovat obsluhu přerušení INT13 BIOSu. Má tedy při zavádění Windows plnou kontrolu nad kopírováním systémových modulů do paměti.
Při zapnutí PC spustí zavaděč BIOSu upravený zaváděcí kód v MBR, ten se dešifruje, najde, nahraje do paměti a spustí ldr16, který zahákuje INT13 a vrátí řízení původnímu kódu z MBR, který má rootkit zazálohovaný ve svém šifrovaném oddílu. Ten dokončí svůj původní úkol - vyhledá aktivní oddíl, nahraje a spustí zavaděč svazku (VBR bootstrap), který zase nahraje a spustí bootmgr a ten spustí zavaděč OS Winload.exe (u XP místo bootmgr a winload.exe pouze ntldr). V této době už má ale rootkit díky háku na INT13 pod kontrolou všechny diskové operace.
Když winload.exe (ntldr) načítá do paměti moduly operačního systému, rootkit prohledává načítaná data z diskových sektorů a číhá na za normálních okolností docela nepotřebnou dynamickou knihovnu kdcom.dll (používanou při ladění systému). Jakmile zjistí, že je načítána do paměti, začne místo jejího kódu do paměti kopírovat kód svého 32/64bitového zavaděče ldr32/ldr64 (další komponenta skrytá v jeho šifrovaném oddílu). Zjistí o jaký systém se jedná a podle toho použije buď 32 bitový nebo 64 bitový zavaděč.
U Win Vista a výše navíc upravuje v paměti obraz BCD souboru, kde přenastavením jedné hodnoty vypne ověřování digitálního podpisu kdcom.dll. Po natažení modulu kdcom.dll je ověřování podpisů opět aktivováno. Na oko to tedy vypadá, že je v paměti digitálně podepsaná kdcom.dll, místo ní je tam ale úplně jiný modul.
Jak původní kdcom.dll, tak zavaděč rootkitu ldr32/ldr64, kterým je nahrazena, exportují stejné funkce. Jádro v první fázi inicializace systému automaticky volá funkci KdDebuggerInitialize1 z kdcom.dll. Zavolána je tedy automaticky KdDebuggerInitialize1 ldr23/ldr64, čímž je zajištěno spuštění loaderu a navíc je takto zabráněno ladění jádra, kdyby se někdo rozhodl podívat se z jiného počítače na start infikovaných Windows, protože dubugovací funkce v ldr32/ldr64 postrádají funkčnost původních z kdcom.dll.
Zavaděč ldr32/ldr64 slouží především k tomu, aby speciálním způsobem natáhl a spustil 32/64 bitový ovladač drv32/drv64 (opět podle verze systému), sloužící pro skrytí rootkitu, pro zajištění přístupu ke svému šifrovanému souborovému systému a také se stará o injektování své dynamické knihovny cmd.dll/cmd64.dll do každého procesu.
Ovladač drv32/drv64 zahákuje objekt zařízení fyzického disku, čímž opět kontroluje přístup k disku. Nyní již ne prostřednictvím INT13, ale tak, že se napíchne mezi ostatní ovladače, které spolupracují při vyřizování diskových operacích. Pokud někdo vznese požadavek na čtení obsahu infikovaného MBR sektoru, požadavek je rootkitem zachycen a ten místo obsahu infikovaného MBR sektoru vrátí obsah zazálohovaného čistého sektoru, kterou si při infikování udělal ve svém šifrovaném oddílu. Stejně tak skrývá svůj speciální oddíl na konci disku. Když bude zachycen pokus o čtení z této části disku, nebudou vrácena žádná data a vypadá to, že je místo prázdné.
Zahákování disku u TDL4 je provedeno na velmi nízké úrovni (ovladač portu disku), proto musí mít antivir vlastní metodu ke čtení diskových sektorů a nespoléhat se na infikovaný operační systém. Jinak obyčejný přepis zavaděče v MBR sektoru např. z Live CD nebo bootovací flešky, rootkit zlikviduje. Sice jeho komponenty zůstanou schované na disku, nemají se ale jak spustit. Leda by byl rootkit doplněn modulem spouštějícím se po startu počítače, který by se staral o novou infekci MBR.
Dynamická knihovna cmd.dll/cmd64.dll injektovaná do procesů může provádět libovolné kravinky. Obstarává např. vzdálené řízení rootkitu, může implementovat vzdálenou správu počítače (připojení do botnetu), zajistit aktualizaci rootkitu (rozšíření či změnu funkčnosti), vyhazovat reklamní okna, krást data, hesla, piny, stahovat a instalovat jiný malware, prakticky cokoliv. Defaultně injektovaná knihovna cmd.dll/cmd64.dll zvládá tyto vzdálené příkazy:
-stáhnout zašifrovaný soubor
-stáhnout a spustit soubor
-stáhnout zašifrovaný soubor, dešifrovat a spustit ho
-stáhnout nešifrovaný soubor
-zapisovat do svého konfiguračního souboru v šifrovaném oddílu
Tyhle funkce rootkitu stačí, aby si z netu stáhl novou verzi jakékoli své komponenty, pokud třeba autor objeví chybu v kódu, která by vedla k jeho odhalení a pod. Rootkit prostě běží v režimu jádra a je pánem počítače. Největší nebezpečí spočívá v tom, že pokud ho napíše profík a vymazlí si ho, uživatel se o infekci jen tak nedozví. V jeho zájmu je, co nejlépe se zamaskovat. Instalátor TDL4 jsem našel třeba v jednom keygenerátoru a díky slabině v systému nepotřebuje k instalaci rootkitu ani práva správce. A i kdyby, spousta uživatelů mu ta práva ochotně zapůjčí
Co se týká rootkitů, existuje spousta maskovacích technik. Např. hákování systémových služeb, objektů přerušení, tabulky deskriptorů přerušení, objektů jádra, úprava různých datových struktur a seznamů (např. seznam procesů) atd. Na 64 bitových systémech už je jich ale mnoho nepoužitelných, díky Kernel Patch Protection (PatchGuard) který hlídá integritu takových slabých míst.
TDL4 se ale PatchGuardu úspěšně vyhýbá a navíc elegantně obešel kontrolu digitálního podpisu ovladače. Zajímavý je na něm způsob spouštění a obcházení kontroly digitálního podpisu.