Sociálne siete

SecIT.sk na Facebooku SecIT.sk na Google+ SecIT.sk na Twitteri Hosting zadarmo od WebSupport.sk

Podporte nás


V prípade, že Vám obsah nášho portálu niekedy nejakým spôsobom pomohol, či bol pre Vás prínosom prosím podporte jeho chod ľubovoľnou čiastkou. Ďakujeme!

Prihlásenie

Štítky

Vyhľadávanie

You are here

Domov

Jak jsem lovil Sinoval

V nedávné době vyjsem se "osobně" střetl s malwarem jménem Sinoval, jež patří mezi havěť infikující hlavní zaváděcí sektor disku (Master Boot Record). Samotná procedura odstranění škůdce není příliš zajímavá a není to důvod, proč píši tento článek. Na tomto incidentu lze však ukázat typické vlastnosti a projevy systému infikovaného kvalitním rootkitem.

Škůdci infikující hlavní zaváděcí sektor (či první sektor média pro ukládání dat) se vyskytovali v dobách, kdy se data běžně přenášela na disketách. S nástupem novějších verzí operačního systému Microsoft Windows a s upouštěním od používání disket také ubývalo virů tohoto typu. Nová vlna se objevila před několika lety, kdy jistá výzkumná skupina publikovala článek (včetně zdrojového kódu) o možnosti infekce hlavního zaváděcího sektoru disku s nainstalovaným systém Windows. Protože kód hlavního zaváděcího sektoru se vykonává ještě před vlastním zavedením operačního systému do paměti, získává malware značnou výhodu.

Infikovaný hlavní zaváděcí sektor zajistí rootkitu kontrolu nad samotným procesem načítání operačního systému. Rootkit ve většině případů modifikuje diskové služby BIOSu tak, že může modifikovat libovolná data, která jsou z disku přečtena. Čtená data (jedná se o ovladače jádra OS) modifikuje tak, aby zůstal skryt i po dobu běhu vlastního systému. Další "výhoda" spočívá ve faktu, že rootkit nemusí být uložen v žádném souboru na disku, stačí infikovaný hlavní zaváděcí sektor a několik prázdných sektorů disku. Tím jsou vyloučeny ze hry některé antiviry. Jádro operačního systému je modifikováno, aby většina komponent nemohla zjistit, že hlavní zaváděcí sektor je infikován. Tím je neviditelný plášť dokončen a malware se může plně věnovat své podvratné činnosti.

V předchozích odstavcích jsem zlehka popsal princip fungování rootkitů modifikujících hlavní zaváděcí sektor. Nyní se podívejme na detaily mého příběhu.

Sinoval.C infikoval relativně starý stolní počítač, aniž by vzbudil jakoukoli pozornost programu Avira AntiVir. Pravděpodobně se jednalo o nějakou tehdy neznámou variantu nebo byla infekce provedena zneužitím zranitelnosti prohlížeče.

Počítač byl periodicky kontrolován výše zmíněným programem od Aviry a nástrojem Rootkit Unhooker LE v3.7. Bohužel tato starší verze Rootkit Unhookeru nedetekuje skrytě vykonávaný kód, tudíž nebylo nic objeveno. Antivirus byl vyřazen pláštěm neviditelnosti, který kolem sebe Sinoval rozprostřel.

Naštěstí rootkit nebyl napsán bezchybně, občas docházelo k selháním systému a k nepopulárním modrým obrazovkám. Modrým obrazovkám jsem zpočátku nepřikládal valného významu, přisuzoval jsem jejich vznik zastaralosti ovladače skeneru. Při zběžné analýze jednoho crash dumpu (výpis stavu paměti při selhání sytému) jsem však pojal podezření. Systém selhal s následujícíc chybou:

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1) An attempt was made to access a pageable (or completely invalid) address at an interrupt request level (IRQL) that is too high. This is usually caused by drivers using improper addresses. If kernel debugger is available get stack backtrace. Arguments: Arg1: 00000004, memory referenced Arg2: 00000002, IRQL Arg3: 00000001, value 0 = read operation, 1 = write operation Arg4: 84677a41, address which referenced memory

Tato chyba se často vyskytuje na strojích s vadnými paměťmi či ovladači. Podivný je čtvrý parametr, který obsahuje adresu instrukce, jenž selhání vyvolala. Adresy tvaru 0x84xxxxxx, kde x je libovolná hexadecimální číslice, se nachází v oblasti paměti, kterou jádro a ovladače využívají pro ukládání různých informací. Spustitelný kód by do této oblasti žádný rozumný program neukládal. Rozhodl jsem se tuto teorii ověřit a podíval jsem se na adresy rutin, jež byly volány těsně před selháním (adresy rutin jsou uloženy jako poslední číslo na každém řádku).

f4f2a888 84677a41 badb0d00 84e6b2e4 f4f2ad44 nt!KiTrap0E+0x233 WARNING: Frame IP not in any known module. Following frames may be wrong. f4f2a8f8 84408024 f4f2aacf 00000001 00000000 0x84677a41 f4f2a8fc f4f2aacf 00000001 00000000 00000000 0x84408024 f4f2a900 00000000 00000000 00000000 00000000 0xf4f2aacf

Je vidět, že před selháním byly volány dvě rutiny, jejichž kód ležel v podezřelé oblasti. Poslední funkcí volanou před smrtí byla KiTrap0E nacházející se v hlavním modulu jádra (zde značený jako nt), jejímž úkolem je obsluhovat výpadky stránek (při přístupu na neplatnou adresu paměti či na adresu, jejíž obsah je právě uložen ve stránkovacím souboru).

Abych se utvrdil v podezření, podíval jsem se, jaké instrukce se nachází v jedné z rutin ležící v podezřelé oblasti.

84677a41 894104          mov     dword ptr [ecx+4],eax
84677a44 8b8424b4010000  mov     eax,dword ptr [esp+1B4h]
84677a4b 8b8c24b0010000  mov     ecx,dword ptr [esp+1B0h]
84677a52 8901            mov     dword ptr [ecx],eax
84677a54 8b842448010000  mov     eax,dword ptr [esp+148h]
84677a5b 3531920000      xor     eax,9231h 
84677a60 8b8c242c020000  mov     ecx,dword ptr [esp+22Ch]
84677a67 8b09            mov     ecx,dword ptr [ecx]

Ač se vám to možná nezdá, tyto instrukce vypadají celkem smysluplně - pravděpodobnost, že by se jednalo o náhodná data v paměti, je velmi nízká. Tím bylo podezření na přítomnost rootkitu potvrzeno.

Pak už vše šlo relativně rychle. Zkontroloval jsem antivirem celý počítač. Kontrola nenašla žádný virus. Poté jsem nainstaloval Rootkit Unhooker LE verze 3.8 a ten objevil skrytě vykonávaný kód na adresách v podezřelé oblasti. Říkáte si, jak jsem si tyto symptomy spojil s rootkitem infikujícím hlavní zaváděcí sektor? Naprostou náhodou - podobné příznaky jsem viděl v jednom příspěvku na fóru SysInternals.

Použil jsem prográmek mbr, který potvrdil infekci hlavního zaváděcího sektoru. Infekce byla odstraněna. Po vyléčení začal antivirus okamžitě hlásit přítomnost rootkitu Sinoval.C v dalších sektorech (počítač má tři pevné disky, všechny tři hlavní zaváděcí sektory byly infikovány) - prostě klasická ukázka odstranění pláště neviditelnosti. Vše jsem dal do pořádku několika příkazy fixmbr z Konzole pro zotavení. A tím celý incident skončil.

A jaké z toho všeho plyne poučení? Buďte paranoidní. Antivirus není stoprocentní záruka bezpečnosti. Počítač je třeba kontrolovat i dalšími nástroji jako jsou programy specializované na detekci přítomnosti rootkitů. Jinak může malware zůstat nepozorován po velmi dlouhou dobu (i v řádech měsíců). Ne kažedá havěť zpomaluje počítač tak, že si toho oko uživatele všimne. Tudíž kontrolujte, kontrolujte a ještě jednou kontrolujte! Nečekejte na symptomy.

Komentáre

Z údajů, které Vás vedly k pátrání a přesvědčení, že jde o rootkit, taková skutečnost nijak nevyplývá a klidně to mohla být "normální" chyba ;)

Normální chyba to být mohla. Už se přesně nepamatuji, ale podobnou modrou obrazovku jsem viděl asi dva týdny předtím, co se odehrál tento příběh, a tehdy jsem ji vyhodnotil jako "normální" chybu. Aby se v jádře vykonával kód, který nepatří žádnému ovladači, to je (až na výjimky) velmi neobvyklé. Podobné techniky používají různé "hlídací" systémy (GameGuard...) a programy podobného ražení. Nemuselo se tedy jednat o malware. A jak podrobnější informace o modré obrazovce, tak výpis volání (zásobníku) či výpis instrukcí ukazuje, že spustitelný kód se s největší pravděpodobností opravdu nacházel tam, kde neměl co dělat. Rootkit Unhooker už vše jenom potvrdil. Samozřejmě údaje z výpisu stavu paměti při modré obrazovce mohly být poškozeny, a tudíž nedávat valný smysl. V tomto případě ale dávaly.

Podporte nás


Páčil sa Vám tento článok? Ak áno, prosím podporte nás ľubovoľnou čiastkou. Ďakujeme!


ITC manažer Security-portal.cz Spamy.cz PHP Fushion Soom.cz
Hoax.cz Antivirove centrum Crypto-world.info SPYEMERGENCY.com