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

Pam∞¥ov∞ rezidentnφ viry - DOS

Umφst∞nφ viru rezidentn∞ v pam∞ti probφhß ve dvou krocφch. Prvnφm je vyhledßnφ nebo vytvo°enφ vhodnΘho mφsta, kam by se vir umφstil. TakovΘ mφsto musφ b²t jednak dostateΦn∞ velkΘ, jednak dostateΦn∞ bezpeΦnΘ.
V p°φpad∞ boot viru nenφ v²b∞r mo₧nostφ nijak p°evratn². Vir se toti₧ instaluje do pam∞ti v okam₧iku, kdy jeÜt∞ nenφ zaveden operaΦnφ systΘm a nemß tedy k dispozici ani to mßlo funkcφ pro manipulaci s pam∞tφ, kterΘ DOS nabφzφ.
Naprosto nejΦast∞jÜφm zp∙sobem, kter²m se boot viry s tφmto problΘmem vypo°ßdßvajφ, je snφ₧enφ velikosti zßkladnφ pam∞ti a vyu₧itφ takto uvoln∞nΘho mφsta. Datovß oblast BIOSu obsahuje prom∞nnou, kterß °φkß, kolik zßkladnφ pam∞ti je k dispozici. Ve v∞tÜin∞ p°φpad∙ obsahuje tato prom∞nnß hodnotu 640, co₧ je maximßlnφ velikost zßkladnφ pam∞ti v kilobajtech. Pokud vir tuto hodnotu snφ₧φ, operaΦnφ systΘm se domnφvß, ₧e mß k dispozici mΘn∞ pam∞ti, a ani se nepokouÜφ vyu₧φvat tu Φßst, kterß by tam podle n∞j b²t nem∞la, a vir se tedy m∙₧e do tΘto oblasti bezpeΦn∞ nast∞hovat.
K nev²hodßm uvedenΘ metody pat°φ takΘ pom∞rn∞ snadnß mo₧nost zjistit netypickou velikost zßkladnφ pam∞ti. (OvÜem pozor, n∞kterß za°φzenφ vyu₧φvajφ tuto oblast obdobn²m zp∙sobem jako viry, je tedy t°eba zvß₧it, jestli se jednß o b∞₧n² stav nebo ke zm∞n∞ doÜlo bez n∞jakΘho zjevnΘho d∙vodu.)
Jinou metodou, kterou pou₧φvajφ n∞kterΘ, zejmΘna menÜφ viry, je vyu₧itφ mal²ch voln²ch oblastφ v datov²ch oblastech v dobrΘ vφ°e, ₧e do nich nebude nikdo jin² zapisovat. S vyu₧itφm tΘto techniky se lze obΦas setkat i v t∞le n∞kter²ch souborov²ch vir∙. (Dlu₧no podotknout, ₧e podobn² zp∙sob zachßzenφ s pam∞tφ je operaΦnφm systΘmem chßpßn jako zdvo°ilß prosba o jeho havßrii).
D∙mysln∞jÜφ boot viry vyu₧φvajφ techniku jakΘhosi "meziskladu", kter²m °eÜφ doΦasnou nedostupnost slu₧eb pro manipulaci s pam∞tφ. Jejφ princip spoΦφvß v tom, ₧e se vir umφstφ do oblasti pam∞ti, o kterΘ p°edpoklßdß, ₧e nebude po urΦitou, pom∞rn∞ krßtkou, dobu zm∞n∞na (typicky se k t∞mto ·Φel∙m vyu₧φvß hornφ Φßst videoram, kterß nenφ v b∞₧nΘm textovΘm re₧imu vyu₧φvßna). PotΘ nechß zavΘst operaΦnφ systΘm a teprve pak se p°ekopφruje na definitivnφ pozici s vyu₧itφm vÜech mo₧nostφ, kterΘ majφ souborovΘ viry.
SouborovΘ viry mohou vyu₧φvat bu∩ standardnφ kolekci t°φ slu₧eb pro prßci s pam∞tφ (alokuj blok, uvolni blok, zm∞≥ velikost bloku), nebo mohou pou₧φt n∞kolik r∙zn²ch, v∞tÜinou nedokumentovan²ch zßsah∙ do °φdφcφch struktur DOSu. To mß pro n∞ oporoti vyu₧itφ systΘmov²ch slu₧eb tu v²hodu, ₧e takto zrezidentn∞n² vir nebude figurovat na p°φpadnΘm seznamu rezidentnφch program∙.
Modern∞jÜφ viry se takΘ nauΦily manipulovat nejen se zßkladnφ pam∞tφ, ale dokß₧φ se usadit i v pam∞ti nad hranicφ 640 KB, pokud je dostupnß. Typick²m p°φkladem m∙₧e b²t virus Tremor.
N∞kterΘ z pokroΦilejÜφch vir∙ mohou dokonce sledovat hospoda°enφ jin²ch program∙ s pam∞tφ a v p°φpad∞, kdy₧ usoudφ, ₧e se pro n∞ uvolnilo vhodn∞jÜφ mφsto, mohou se p°esunout ze svΘho souΦasnΘho p∙sobiÜt∞ do novΘho.
Aby m∞lo usφdlenφ kopie viru v pam∞ti n∞jak² smysl, musφ b²t vir n∞jak spojen se systΘmem. Toto spojenφ b²vß realizovßno p°esm∞rovßnφm vhodn²ch systΘmov²ch slu₧eb do t∞la viru. D∙sledkem takovΘto vazby na systΘm je, ₧e v pr∙b∞hu °ßdnΘ Φinnosti systΘmu jsou ve vybran²ch okam₧icφch aktivovßny urΦitΘ Φßsti viru.
P°esm∞rovßnφ slu₧eb se provßdφ zm∞nou tzv. vektor∙ p°eruÜenφ, co₧ jsou adresy, na kterΘ se p°edßvß °φzenφ v p°φpad∞ generovßnφ p°eruÜenφ (systΘmovΘ slu₧by jsou realizovßny prßv∞ volßnφm p°eruÜenφ). Tabulka adres t∞chto slu₧eb je ulo₧ena na konstantnφm mφst∞ v operaΦnφ pam∞ti (na jejφm ·plnΘm zaΦßtku) a v operaΦnφm systΘmu DOS je bohu₧el nekontrolovateln∞ p°φstupnß vÜem program∙m, kterΘ z nφ mohou hodnoty nejen beztrestn∞ Φφst, ale takΘ do nφ zapisovat.
Standardnφ postup p°evzetφ systΘmovΘ slu₧by virem spoΦφvß v napln∞nφ vektoru p°eruÜenφ adresou sm∞°ujφcφ do t∞la viru. P°i vyvolßnφ p°eruÜenφ vir provede vlastnφ Φinnost a potΘ, pomocφ zapamatovanΘ p∙vodnφ hodnoty vektoru p°eruÜenφ zavolß p∙vodnφ funkci (mo₧n² je i opaΦn² postup, kdy vir nejd°φve zavolß p∙vodnφ systΘmovou slu₧bu a potΘ provede vlastnφ Φinnost, p°φpadn∞ vir p∙vodnφ slu₧bu nevolß v∙bec a jejφ Φinnost zcela nahradφ). Velmi zjednoduÜen∞ lze d∞nφ v systΘmu znßzornit nßsledovn∞:

P°ed "p°evzetφm slu₧by" viremPo "p°evzetφ slu₧by" virem
B∞₧φ u₧ivatelsk² programB∞₧φ u₧ivatelsk² program
Vyvolß systΘmovou slu₧buVyvolß systΘmovou slu₧bu
OperaΦnφ systΘm provede po₧adovanou operaciVir prozkoumß po₧adavek a ud∞lß, co uznß za vhodnΘ;
P°φpadn∞ se ke slovu dostane i OS
U₧ivatelsk² program pokraΦujeU₧ivatelsk² program pokraΦuje

Vlastnφ Φtenφ a zm∞nu hodnot vektor∙ p°eruÜenφ lze realizovat op∞t pomocφ slu₧eb DOSu. Pou₧φvßnφ t∞chto slu₧eb lze ovÜem snadno monitorovat, proto se mnoho vir∙ uchyluje ke zm∞n∞ vektor∙ p°eruÜenφm p°φmo do tabulky vektor∙, kterΘ se nachßzφ zcela na zaΦßtku operaΦnφ pam∞ti, co₧ je jednak mΘn∞ nßpadnΘ, a pokud je programßtor Üikovn², i kratÜφ.
Slo₧it∞jÜφ viry obΦas nevyu₧φvajφ tuto p°φmou metodu p°evzetφ vektoru, mφsto toho sm∞rujφ slu₧bu do svΘho t∞la p°ed jak²si "m∙stek" umφst∞n² odd∞len∞ od t∞la viru, jeho₧ k≤d ned∞lß nic jinΘho, ne₧ ₧e bezprost°edn∞ zavolß cφlovou funkci viru.
Toto °eÜenφ nenφ samo·ΦelnΘ, ale mß z pohledu vir∙ jistΘ v²hody. Jednß se o typick² produkt souboje vir∙ a antivir∙; ty se toti₧ nauΦily sledovat, kam ukazujφ vektory n∞kter²ch d∙le₧it²ch slu₧eb, a pßtrat v jejich okolφ po k≤du viru. Uveden² postup se jim to pokouÜφ alespo≥ zkomplikovat, takΘ ruΦnφ anal²za takovΘho k≤du je obtφ₧n∞jÜφ.

Zdroj: Praktickß sebeobrana proti vir∙m (Petr Odehnal, Petr ZahradnφΦek)

Zp∞t