Sociálne siete

SecIT.sk na Facebooku SecIT.sk na Google+ SecIT.sk na Twitteri

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
Upozornenie: Obsah je licenčne chránený a bez písomných súhlasov autora článku a vlastníka webovej stránky nesmie byť v žiadnej forme ďalej kopírovaný a šírený v pôvodnom, či v akokoľvek upravenom stave.

Rustock C

Většina škodlivého kódu je napsaná velmi lamersky. Proto jsou programy jako HjackThis nebo Combofix stále našimi dobrými pomocníky, ačkoliv mají fatální slabiny. Existuje však i malá část malware, která je napsána velmi zkušenými a vnitřností operačního systému znalými jedinci. Někteří (včetně mě) považují Rustock C právě za takový kousek. Proto si o něm povíme něco bližšího.

Písmeno "C" značí už třetí verzi tohoto rootkitu. Přechozí verze jsou zajímavé také, protože jejich objevení znamenalo velký posun ve vývoji antirootkitových programů, ikdyž jen některých. S Rustockem B má stále problémy mnoho antirootkitů, zvláště od AV firem. Použité techniky se postupně zlepšovaly, až dosáhly vysokého stupně dokonalosti v Rustocku C.

Úkol všech tří dílů tohoto malwaru je stejný - spamování, přičemž rootkit se snaží zajistit skrytí škodlivé činnosti jak před uživatelovým okem, tak před firewally.

Není přesně známo, kdy byl Rustock C vypuštěn. Předpokládá se, že se tak mohlo stát v lednu 2007. V červenci byl objeven nezávislou skupinou výzkumíků, avšak antivirové firmy stále popíraly jeho existenci. Až na jaře letošního roku jej objevili pracovníci společnosti, jenž vyvíjí antivirus DrWeb. Rustock C tedy mohl přežívat nedetekován i 15 měsíců. Neslyšel jsem o rootkitu, kterému by se podařil takový kousek. Za tímto úspěchem kupodivu nestojí žádná revoluční technika skrývání, ale trochu neobvyklé použití technik již známých. Rootkit mohl být bez větších problémů detekován antirootkity, které existovaly v době jeho vzniku. A například IceSword jej detekoval, ovšem vyžadovalo to velkou trpělivost od uživatele.

Použité techniky

Rootkit používá zejména techniky "inline" hákování. Čásk kódu hákované funkce je přepsán skokem na rutinu Rustocku, která může řízení vrátit originální funkci. Zmanipuluje však její činnost, pokud by mohlo jinak dojít k odhalení. To není nic neobvyklého, mnoho rootkitů a virů používá stejnou techniku. Většinou ale přepisují začátek funkce následující instrukcí:

Jmp RutinaMalwaru

jenž je pět bajtů dlouhá. Protože drtivá většina rutin má pětibajtový prolog, je takové hákování velmi triviální (proto se také používá). Rustock C ale vkládá do ubohé hákované funkce následující kód:

push cs
nop
sub esp, 4
mov dword ptr [esp], RutinaMalwaru
retf

Tato sekvence má více jak deset bajtů, tudíž její vložení do cílové funkce je o mnoho složitější. Ale antirootkity ji nepovažovaly za hákování. Tudíž skeny systému z tohoto hlediska neobjevily nic podezřelého. A o to jde především, že?

Rustock C se skládá v podstatě ze dvou částí: z ovladače-rootkitu a z DLL knihovny, jenž je zodpovědná za posílání spamu. Tato DLL knihovna se nachází v procesu winlogon.exe, leč samozřejmě ji běžnými způsoby nenajdete. Vlákna, otevřené handly a paměťové prostředky, kterých knihovna využívá, jsou skryty opět pomocí hákování v jádře operačního systému. Většina rootkitů k tomuto účelu využívá změnu System Service Dispatch Table. To je sice efektnivní, ale snadno detekovatelné. Rustock C však postupuje jinak - pozmění kód rutiny nt!_KiSystemService, jenž je zodpovědná za předání řízení na příslušnou adresu v SSDT. SSDT jako taková není pozměněna, ale kód, který ji používá, ano. Rustock C si dává pozor například na tato systémová volání:

NtCreateThread
NtDelayExecution
NtDuplicateObject
NtOpenThread
NtProtectVirtualMemory
NtQuerySystemInformation
NtReadVirtualMemory
NtResumeThread
NtTerminateProcess
NtTerminateThread
NtWriteVirtualMemory

Některé z těchto funkcí přitom programy využívají, pokud chtějí zjišťovat nějaká fakta o cizím procesu. Například manipulací s výsledky volání NtQuerySystemInformation rootkit docílí skrytí vláken a otevřených handlů. Hákování paměťových funkcí zabrání snadnému nalezení DLL knihovny a manipulace se strukturou Process Environment Block (PEB) procesu winlogon.exe celou skrývačku dokončí. Winlogon.exe je také proces, kterému věří firewally, což je další výhodou pro Rustock C, který však nespoléhá jenom na tento fakt, ale pozměňuje kód i v některých síťových ovladačích (tcpip.sys například).

Rootkit samozřejmě nezahálí ani s ochranou svého ovladače v paměti jádra. Není tam totiž žádný ovladač - vše je vykonáváno několika vlákny nad pamětí, jenž nikomu nepatří. Soubor ovladače rootkitu nenajdete ani na disku, protože tento malware infikuje hodné ovladače Microsoftu. Tohle považuji asi za největší vychytávku. Infekce souboru se samozřejmě projeví ve změně jeho velikosti. Rootkit však hákuje ovladače souborového systému a operačnímu systému se snaží namluvit, že soubor je čístý (má stejnou velikost a stejný obsah jako legitimní ovladač Microsoftu). Rustock ale nezůstává zahnízděn v jednom souboru, ale postupem častu "cestuje" - vrátí aktuálně nakažený soubor ovladače do původního stavu a infikuje jiný. Další vychytávka související se soubory slouží k oklamání antirootkitů - soubory ovladačů, které jsou v jádře patchovány, jsou při načítání z disku upraveny tak, aby háky nebyly vidět. To oklamalo například GMER. Vychytávky fungují jak na NTFS, tak i na FAT32.

Další silnou stránkou rootkitu je šifrování. Kód rootkitu je šifrován (a to v několika vrstvách) a během dešifrování jsou vyzkoušeny nejrůznější antidebugovací a antidisassemblovací triky. Rootkit nespustíte ve virtuální mašině ani pod debuggerem (debugger buď nebude fungovat, nebo dojde k pádu systému). Součástí je také ochrana vlastního kódu.

Detekce

Rustock C samozřejmě detekovat lze. Jednak je to způsobeno technikami, které používá a jednak díky chybám, které obsahuje. Chyby se týkají falšování velikosti souborů (nejsou náležitě upraveny všechny hodnoty). Protože nenapadá ovladače disku, lze jeho přítomnost (přítomnost infikovaných ovladačů a fakt, že velikosti některých souborů nesouhlasí) přímým přístupem na disk přes tyto ovladače. Antirootkity však většinou hlídají, jestli se na disku nenachází nějaký skrytý soubor či alternativní datový proud - podivné chování velikosti však ne.

Na začátku jsem se zmínil, že IceSword je schopný Rustocka detekovat, ale že to je velmi ošemetné. IceSword totiž umí prohlížet souborový systém a přitom ukazuje velikost souboru zjištovanou jak přes ovladače souborového systému, tak přímo z disku. Takže pokud máte dost trpělivosti na to, abyste prošli všechny ovladače v systémových adresářích a zkontrolovali, zda souhlasí velikosti, tak rootkit najdete. Ale žádné tlačítko Scan na to není.

Závěr

Ono bychom to dělat neměli, ale člověk si musí přiznat, že tento rootkit si zaslouží obdiv díky tomu, jak je napsán a díky neovyklému způsobu použití některých skrývacích technik. Aspoň můj obdiv má.

Závěrem ještě dodám, že jsem Rustock C nereverzil, tudíž ne všechny informace v tomto článku musí být pravdivé. Výčet vlastností rootkitu tedy nepovažujte za úplný, ještě pár tajemství skrývá. Informace pro napsání tohoto článku byly čerpány z mých vlastních znalostí a z následujícíh stránek:

Komentáre

Děkuji moc za odkaz.

Alexander Gostev, Kaspersky Lab's senior virus analyst, tells the tale in his blog Tuesday on Viruslist. According to Gostev, the Russian security firm Dr. Web in early May announced its experts had obtained a sample of Rustock.C in March but the sample it shared with the rest of the antivirus community lacked a 'dropper', the file designed to install the rootkit on the system.

Yes, I know about this. When this Rustock version appeared, there were a lot of tales about it. In this small article, I was trying to tell the truth, but It was sometimes quite difficult to disturgish what is the truth and what is only a tale.

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 Soom.cz
Hoax.cz Antivirove centrum Crypto-world.info