![]() |
![]() |
|
Nejčastější techniky Win32 virůV této kapitole si budeme vykládat o některých tzv. "advanced Win32" technikách, které začaly vznikat před necelými dvěma lety a časem se velmi rozšířily. Časy, kdy Win32 viry byly nerezidentní a jediné co uměly bylo infikovat všechny soubory v aktuálním adresáři, jsou pryč. Nové viry používají stále více "vylepšených" technik pro zvýšení šance rozšíření a snížení šance odhalení viru. Těchto technik je mnoho, dalo by se říci desítky. Za jistou dobu, co viry programuji jsem se mnohé techniky naučil a některé používané techniky jsem i vymyslel. O některých z nich zde budu hovořit. Technika 1: MultithreadingTato technika využívá schopnosti operačních systémů založených na Win32 vykonávat více než jeden kód jednoho programu v "jeden čas". Příklad: Píšete ve Wordu dopis. Pokud ho budete chtít vytisknout, Word vytvoří nový thread (česky: prováděcí tok), který se bude starat o tisk. Mezitím co druhý thread tiskne, vy můžete dopis psát dál, protože ten první thread se stará o psaní. Takto se v programu může provádět více věcí v relativně stejném čase. Viry této vlastnosti využívají k ochraně před emulátorem/heuristikou (současné emulátory zatím neumí simulovat vykonávání více než jednoho kódu v jeden čas), před trasováním (zatímco antivirový nadšenec krokuje nějaký nevýznamný kód, ten významný virový kód běží "úplně jinde") a taky pro zlepšení funkčnosti viru (původní program pracuje normálně (třeba Word), běží v něm však virový thread – zatímco vy píšete dopis, virový thread infikuje všechny soubory na disku). Viry využívající multithreadingu: Win32.Leviathan, Win32.Legacy, Win32.Vulcano. Technika 2: FiberyFibery mají blízko k threadům. Ale zatímco plánování threadů řídí sám operační systém (plánováním rozuměj určování, co v daný čas poběží), fibery řídíte vy sami. Výhodou je, že se fibery snadněji ovládají (máte nad nimi stoprocentní kontrolu), nevýhodou je, že neběží pod Win95. Fibery jsou podporováný ve Win98+ a WinNT 3.51+ (+SP3). První, a pokud je mi známo, tak i poslední virus, který fibery využívá je Win98.Milennium. Technika 3: Multiprocessing & IPCTato technika je vcelku nová. Využívá schopnosti Win32 platforem mít spuštěno více než jeden program (proces). InterProcess Communication (IPC) je komunikace mezi dvěma a více procesy. Použití těchto technik se liší snad u každého viru. Virus Win98.BeGemot například umožňuje uživateli komunikovat s virem, pokud je v paměti, pomocí externího programu: textové konzole. Virus to dělá tak, že ve sdílené paměti vytvoří strukturu, která se bude ke komunikaci využívat. Externí program tuto strukturu najde a pomocí dohodnutých pravidel do ní zapisuje a čte z ní. Vstupem jsou povely, na které umí virus reagovat, výstupem jsou výstupní data zobrazená uživateli. Příklad: Uživatel se přes konzoli zeptá, co právě virus dělá, a virus mu odpoví, že právě infikuje soubor. Veškerá "interní" komunikace je na bázi struktury, "externí" komunikace je na bázi konzole. Toto je příklad multiprocessingu a IPC. Virus Win32.Vulcano zase umí komunikovat mezi více instancemi stejného viru v paměti. V praxi to znamená, že pokud chce virus infikovat nějaký soubor, tak se pokusí najít "stejný virus spuštěný v jiném programu", a pokud ho najde, tak mu dá příkaz, ať infikaci provede za něj. Vtip je v tom, že pokud ladíte nějaký program, ladíte pouze a jenom ten jeden program. Pokud se něco děje v jiném programu, nezjistíte to. Proto ten, kdo bude trasovat tento virus, uvidí jen nějaké nevýznamné instrukce - hlavní kód, tedy infikace programu, bude proveden úplně někde jinde, tedy v jiném programu. A na to nepřijde jak heuristika/emulátor, tak ani ten, kdo virus zběžně trasoval. Tyto techniky v sobě skrývají hodně uplatnění. Zatím je toto teritorium málo probádané, což se ale jistě časem změní. Technika 4: EPOTechnika EntryPoint Obscuring, zkráceně EPO, je známa už z dob starých DOS virů. Hlavní myšlenkou bylo a je nepředávat řízení viru okamžitě, ale až za nějaký čas - uprostřed vykonávání programu, na konci apod. Například virus, který je aktivován až při volání ukončovací rutiny programu nebude s největší pravděpodobností zachycen heuristikou. Heuristika, jak jistě víte, se snaží krokovat kód a případně varovat uživatele, je-li kód podezřelý. Ovšem emulování chodu programu nesmí trvat déle než pár sekund. Pokud je tedy virus aktivován až před ukončení programu, heuristika se k němu nedostane a virus zůstane neodhalen. Technika EPO je velmi účinná. Příkladem viru, který EPO využívá je Win32.Vulcano nebo třeba Win32.CTX. Autorem tohoto článku je Benny/29A (benny@post.cz). Tímto mu velice děkuji ! |
||
![]() |
![]() |