A vírusok tevékenységének leglényegesebb célja, hogy más programterületeket fertőzzenek meg. Ezek a programterületek lehetnek programfájlok, programkódot tartalmazó szektorok (boot szektor, MBR - master boot record). Egyes vírusok a fertőzést az egyes területeken különböző eljárással végzik. Előfordulhat az is, hogy egyes speciális állományok (például COMMAND.COM) fertőzésére a víruskód külön algoritmust tartalmaz.
A vírusok programkódja mérhető helyet foglal a fájlokban, a bootszektorban, az mbr-ben, illetve a flopi vagy merevlemez szektoraiban.
Ez a méret nem mindig egyezik meg a tényleges és látható méretnövekedéssel, mert egyéb hatások is közrejátszanak. Például, ha a vírus felülír saját kódjával kisebb-nagyobb programszakaszokat a fájlban, vagy ha a gazdaprogram "üregeiben" rejti el saját kódját. Előfordulhat az is, hogy a megfertőzött fájlokat a szegmenshatárig tölti fel valamilyen (általában közömbös) tartalommal.
Sok esetben a víruskód tényleges mérete helyett csak a lefoglalt szektorok számát lehet megadni.
A több célpontot is fertőző kártevőknél gyakori eset, hogy az adott fájltípusok különböző struktúrája miatt a COM és az EXE fertőzésekben levő víruskód mérete más, illetve az mbr-t és bootszektort is fertőző bootvírusok és multitarget vírusok más mérettel jellemezhetők a flopilemez bootszektorában, mint az mbr-ben, vagy éppen a COM és/vagy EXE fájlokban.
A MS-DOS/Lego vírus
a fertőzéskor 3
bájtot ír felül víruskóddal a fertőzött programfájlok elején, hogy saját programkódjára irányítsa a vezérlést. A felülírásnak köszönhetően a fertőzött állomány eredeti tartalma nem visszaállítható.
A COM típusú programok mérete - ellentétben az EXE programokéval - meglehetősen korlátozott. Az operációs rendszer - kevés kivételtől eltekintve - nem képes a 64 KB méretet meghaladó COM programok futtatására, így azok a víruspéldányok, amelyeknél a fertőzött fájl mérete meghaladja a 64 KB-ot, soha nem kapnak vezérlést. Ennek megfelelően a COM fertőző vírusok egy része figyel erre és egy megfelelő szűrővel válogatja ki azokat a nagyobb méretű fájlokat, ahol a fertőzött fájl már nem lenne futásképes. Bár az EXE fájlokra nincs ilyen korlát, ennek ellenére sok EXE fertőző vírus szintén csak adott mérethatárig fertőz.
Mivel a túlságosan kis méretű fájlok is veszélyesek lehetnek a vírus számára (túlságosan feltűnő lenne a méretnövekedés, illetve a csalifájlokat szeretné a vírus készítője elkerülni), számos vírus csak a programkódjában megadott alsó korlátnál nagyobb méretű fájlokat fertőz.
A MS-DOS/Lego vírus
csak a
1024
bájtnál nagyobb és a
61440
bájtnál kisebb fájlokat fertőzi.
A MS-DOS/Lego vírus
a COMMAND.COM fájlt is fertőzi.
A víruskód elhelyezése a megfertőzött gazdaprogramban különösen érdekes, mert a vírusmentesítéskor a takarító programnak pontosan tudnia kell, honnan és mekkora részleteket kell kivágnia. Bootvírusok esetén az 512 bájtnál (1 szektor) nagyobb programkódot már csak további szektorokban lehet elrejteni, amelyek megtalálása a víruskód konkrét ismerete nélkül elég nehéz.
A víruskód a fertőzött fájl(ok) végére kerül és a program elején csupán egy ugróutasítást módosít, hogy a gazdaprogram indításakor először a víruskód fusson le, majd visszaugrik az eredeti belépési pontra.
A víruskészítők már a kezdetektől igyekeztek programjaik elrejtésére. Ennek érdekében a vírusprogramot kódolják, illetve olyan "szolgáltatással" látják el, hogy a kód fertőzésről fertőzésre változzon. Ennek mértéke is változó, és a többalakúság fokának megfelelően megkülönböztetünk polimorf, oligomorf és metamorf kártevőket. Az oligomorf, illetve polimorf kártevőkben alkalmazott kódolásra (és kártevőre) jellemző a beépített dekódoló eljárás (dekriptor) is, mely a legtöbb esetben jól elkülöníthető a víruskód többi részétől.
A vírus
programkódja titkosított.
A fertőzöttséget a víruskód 47h offszetjénél található 4 bájt ellenőrzésével végzi.
A COM típusú programok mérete - ellentétben az EXE programokéval - meglehetősen korlátozott. Az operációs rendszer - kevés kivételtől eltekintve - nem képes a 64 KB méretet meghaladó COM programok futtatására, így azok a víruspéldányok, amelyeknél a fertőzött fájl mérete meghaladja a 64 KB-ot, soha nem kapnak vezérlést. Ennek megfelelően a COM fertőző vírusok egy része figyel erre és egy megfelelő szűrővel válogatja ki azokat a nagyobb méretű fájlokat, ahol a fertőzött fájl már nem lenne futásképes. Bár az EXE fájlokra nincs ilyen korlát, ennek ellenére sok EXE fertőző vírus szintén csak adott mérethatárig fertőz.
Mivel a túlságosan kis méretű fájlok is veszélyesek lehetnek a vírus számára (túlságosan feltűnő lenne a méretnövekedés, illetve a csalifájlokat szeretné a vírus készítője elkerülni), számos vírus csak a programkódjában megadott alsó korlátnál nagyobb méretű fájlokat fertőz.
A MS-DOS/Lego vírus
csak a
2048
bájtnál nagyobb és a
458752
bájtnál kisebb fájlokat fertőzi.
A víruskód elhelyezése a megfertőzött gazdaprogramban különösen érdekes, mert a vírusmentesítéskor a takarító programnak pontosan tudnia kell, honnan és mekkora részleteket kell kivágnia. Bootvírusok esetén az 512 bájtnál (1 szektor) nagyobb programkódot már csak további szektorokban lehet elrejteni, amelyek megtalálása a víruskód konkrét ismerete nélkül elég nehéz.
A víruskód a fertőzött fájl(ok) végére kerül és a program elején csupán egy ugróutasítást módosít, hogy a gazdaprogram indításakor először a víruskód fusson le, majd visszaugrik az eredeti belépési pontra.
A víruskészítők már a kezdetektől igyekeztek programjaik elrejtésére. Ennek érdekében a vírusprogramot kódolják, illetve olyan "szolgáltatással" látják el, hogy a kód fertőzésről fertőzésre változzon. Ennek mértéke is változó, és a többalakúság fokának megfelelően megkülönböztetünk polimorf, oligomorf és metamorf kártevőket. Az oligomorf, illetve polimorf kártevőkben alkalmazott kódolásra (és kártevőre) jellemző a beépített dekódoló eljárás (dekriptor) is, mely a legtöbb esetben jól elkülöníthető a víruskód többi részétől.
A vírus
programkódja titkosított.
A fertőzöttséget a víruskód 47h offszetjénél található 4 bájt ellenőrzésével végzi.
Tevékenységek
Minden vírus, féreg azt csinál, amit akar, illetve amit a programozó beleprogramozott. Egyes vírusok, férgek tevékenységüket (büntető rutinjukat) valamilyen
eseményhez, legtöbbször valamilyen időponthoz kötik.
feltétel
számolja a fertőzött fájlokat, a számláló
"400"
értékénél
és
egy billentyű lenyomása
tevékenység
elrontja a CMOS RAM checksum-ot
az itt megadott üzenetet jeleníti meg, fehér betűkkel:
Szétszedtem a géped! Rakd össze, LEGO-zz!
LEGO virus
MESTER (C) 1995
A fertőzés módszerei
A memóriába bekerült vírus akkor fertőz, ha megfelelő célpont kerül a látókörébe. A felügyelt megszakítástól és a vírusprogram kódjától függően megkülönböztethetünk olyan vírusokat, melyek a programfájlok futtatásakor fertőznek, mások a fájlok megnyitásakor vagy zárásakor, másolásakor, olvasásakor vagy írásakor, esetleg már a tartalomjegyzék lekérésekor is, és nem ritka eset, amikor ezek kombinációival találkozunk.
A fájl és lemezműveletekhez kapcsolódó megszakítások következő funkcióit használja fel a víruskód terjesztésére:
fájl végrehajtása
fájl betöltése
Memória
A vírusok nagyobbik része rezidens módon bekerül a memóriába, ám vannak, amelyek direkt fertőzőként (parazita módon) programkódjuk lefutása után a vezérlést visszaadják a gazdaprogramnak és eltávoznak a memóriából.
A MS-DOS/Lego vírus
memóriarezidens.
A memóriába beülő MS-DOS/Lego vírus
lecsökkenti a DOS által elérhető memóriát. Ez a csökkenés 5632
bájt.