|
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" virem | Po "p°evzetφ slu₧by" virem |
B∞₧φ u₧ivatelsk² program | B∞₧φ u₧ivatelsk² program |
Vyvolß systΘmovou slu₧bu | Vyvolß systΘmovou slu₧bu |
OperaΦnφ systΘm provede po₧adovanou operaci | Vir prozkoumß po₧adavek a ud∞lß, co uznß za vhodnΘ; P°φpadn∞ se ke slovu dostane i OS |
U₧ivatelsk² program pokraΦuje | U₧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)
|
|