Arvutiviirused
Autor
: Margus Sakk
See uurimistöö on on avaldatud autori teadmisel
ja nõusolekul.
Sisukord
Sissejuhatus.
1.Esimesed
arvutiviirused.
2.Interneti uss.
3.
Good Times .
4.Viiruste
klassifitseerimine neid iseloomustava "käitumise" järgi.
4.1. Spawning tüüpi
viirus 4.2. Katalooge nakatav viirus
(DIR II).
4.3. MBR- (Partitsiooni tabeli) viirus (Stoned).
4.4.
Ülekirjutav viirus (Bad Brian).
4.5. Parasiitviirused.
4.6.
Zaraza .
4.7.
Shifting Objective .
4.8. *.BAK ja *.PAS failide
viirus.
5. Viiruste klassifitseerimine nakatamiskiiruse järgi.
6. Arvutiviiruste "abi"
tehnoloogiad 6.1. Stealth
tehnoloogia .
6.2. Polümorfsus
6.3. Koodi pakkimine.
6.4.
Ketta krüpteerimine.
6.5. "Antiviirus" viirus.
Kokkuvõte.
Summary.
Kasutatud kirjandus.
Lisa1.
Kasulikke
näpunäiteid viirustest hoidumiseks
Käesolevas uurimustöös olen
vaadelnud peaasjalikult
personaalarvuti DOS keskkonna
viiruseid kuna
selles keskkonnas on minu arvutialased teadmised suurimad.
Tegelikult on väga raske identifitseerida ja klassifitseerida
arvutiviiruseid. Igaüks, kes avastab arvutiviiruse annab sellele
nime ja iseloomustab seda. Paljudel juhtudel aga pole see viirus aga
hoopiski uus, teda on juba kirjeldatud mitmeid
kordi varem. Sageli ei
kattu need kirjeldused täielikult. On üsna võimatu kirjeldada
kõiki viiruste liike ja nakatumiste eri variatsioone. Seega on
probleem number üks nakatumisraportite filtreerimine ja näidete
kogumine. Teiseks suurimaks probleemiks on see, kuhu tõmmata joon
originaalse viiruse või mõne teise viiruse
variatsiooni vahele.
Näiteks suudab originaalne Brian viirus
nakatada vaid flopikettaid.
Kas pidada Briani variatsioone, mis suudavad nakatada ka kõvaketast,
aga mis kõiges muus on täiesti analoogsed, uuteks viirusteks või
mitte? Aga kuidas
suhtuda tulevastesse modifikatsioonidessse, mis
sisaldavad juba destruktiivset (hävitavat) koodi? Kas see on juba
uus viirus? Aga mida teha juhul, kui keegi võtab ühe segmendi Brian
viirusest ja kasutab seda uue viiruse loomise baasina?
Samasugused
raskused on ka viiruste klassifitseerimisega. Paljud
viirused sisaldavad mitmeid eri viiruseklassidele iseloomulikke jooni. Seega
on üsna raske neid mingi kindla tüübi alla paigutada.
Üldiselt
võib viiruseid klassifitseerida nelja eri moodi:
1.Kahjustuste
järgi. (kas viirus sisaldab destruktiivset koodi või mitte)
2.Tõrjutavuse järgi.
3.Töökeskkonna järgi.
4.Viiruste
(nakatamise) käitumise järgi.
Käesolevas töös on põhiliselt
vaadeldud DOS-keskkonna viiruseid iseloomulike nakatamisviiside
järgi.
1.
Esimesed arvutiviirused.
Esimene laialt
esinenud "metsik"
(mitte teaduslikel eesmärkidel loodud) arvutiviirus oli Pakistanist
pärit Brian
Virus , mis sai avalikuks 1986. aastal. Järgmisel aastal
alustasid tegevust Jerusalem -levinumaid ja visamaid raaliviirusi,
millest on ohtralt erinevaid
variante . Samal ajal tekitati ka viirus
Stoned, mis on tänaseni levinuim ning üks raskesti tõrjutavaid.
Tema päritolumaaks peetakse
Itaaliat või Uus-Meremaad. Viiruse
tunneb ära ekraanile ilmuva fraasi "Your PC is Stoned"
järgi; stoned tähendab argoos meelemõistuse kaotanult
purjus või
narkootikumiuimas olemist.
Sellest ajast muutusid raaliviiruse
nakkusjuhud üha sagedamateks. Tuli ette esimesi suurkahjustusi, kui
viiruse ohvriks langes suur hulk arvuteid või siis suured
terviksüsteemid. 1988.a. said lühikese aja jooksul nakkuse paljud
Iisraeli
arvutid Weitzmanni-nimelises Instituudis,
Haridusministeeriumi teadus- ja pedagoogikakeskuses, ühes Tel-Avivi
tarkvarafirmas ning Juudi Ülikoolis, mille mälu järk-järgult üle
koormati ning lõpuks täielikult blokeeriti. Samal ajal said nakkuse
ka paljud USA firmade ja ülikoolide arvutid.
Juba 1991. aastal
sai USA-s viirusnakkuse keskmiselt neli personaalarvutit tuhandest
ning see arv kasvab kogu aeg. 1993.aasta lõpuks oli
identifitseeritud juba
2300 viirust ja nende modifikatsiooni.
Raaliviiruste suhtes tundlikuks on osutunud IBM PC-ühilduvad
arvutid, millele on suunatud ka viirusekirjutajate peamised
jõupingutused. 1992.a. augustiks oli teada 1350 PC-viirust. Teistel
arvutitüüpidel tunduvalt vähem -Amigat ähvardas 200 viirust,
Macintoshi vaid 35.
2.
Interneti uss.
Esimene tõeline raaliviiruse
epideemia puhkes USA-s 2.novembril 1988. Täpsemalt öeldes ei olnud
tegu mitte viirusega, vaid vagelprogrammiga, mis erinevalt viirusest
ei haaku mõne olemasoleva peremeesprogrammi külge, vaid levib ja
paljune arvutivõrgus iseseisvalt. Vagla
autoriks osutus Cornelli
Ülikooli üliõpilane Robert
Morris Jr, kes muide oli Rahvusliku
Julgeolekuagentuuri Rahvusliku Arvutiturvakeskuse peateaduri poeg.
Oma vaglale andis Morris nimeks
worm (ingl.keeles: uss).
Vagel ründas
arvutivõrku
Internet kell 5 pärast lõunat nakatades lühikese
ajaga 6200 VAX- ja Sun-arvutit, mis töötasid operatsioonisüsteemi
Unix teatud versioonidega. Paljud organisatsioonid, sealhulgas suured
teaduskeskused nagu
Lawrence Livermore Rahvuslik laboratoorium, olid
sunnitud ennast mõneks ajaks Internetist täielikult lahti ühendama.
Kahjud ründe tagajärgede likvideerimiskuludest moodustasid
ühtekokku 98 miljonit dollarit.
Worm ise töötas järgmisel
põhimõttel: nimelt kasutas ta ära muidu väga turvaliseks peetava
operatsioonisüsteemi Unix-i augu programmi sendmail silumisreziimis
(see
meiliprogramm töötab ootereziimil ja ootab, kuni teised
süsteemid temaga ühendust võtavad ja
elektronposti annavad) ning
ühe augu
finger deemonis
fingerd , mis
teenindab fingeri kutseid.
Kui worm seadis end mõnes süsteemis sisse, hakkas ta koguma
teavet teiste sellega ühendatud hostarvutite kohta ning tegi siis
katset
neisse siirduda, üritades seda teha järgemööda mitmel
erineval viisil. Kui
nakatumine õnnestus, katkestati side. Uues
kohas oli vagla esimene ülesanne ennast maskeerida, kustutades kõik
sissetungimise käigus loodud failid. Seejärel hakkas vagel üritama
tungida mõne kasutaja pangaarvesse, püüdes leida parooli ning
seejärel end kasutajaks maskeerides.
Et maskeering oleks veelgi
täiuslikum, tekitas vagel nakatatud süsteemis aeg-ajalt enda
koopiaid ning seejärel kustutas
esialgse versiooni, nii et wormi ei
saanud leida mingi ühe programmi poolt kasutatud ülemäärase
protsessoriaja järgi. Iga 12 tunni järel kustutas ta tema poolt
nakatatud arvutite nimekirja (s.t. viirus pidas jooksvat arvestust
arvutite kohta, mida ta oli juba nakatanud). Seetõttu võis ta mõnda
vahepeal vaglast
puhastatud süsteemi uuesti nakatada.
Mõne
päeva pärast hakkasid asjad aegamööda normaliseeruma. Robert T.
Morris Jr. mõisteti süüdi arvutipettuse ja -kuritarvitusakti (§
18) rikkumises ning ta sai kolm aastat
tingimisi , 400 tundi
paranduslikke töid ja 10 050 $
trahvi , lisaks pidi ta
tasuma enda
järelvalve kulud. 1990.aasta detsembris andis ta sisse
appellatsiooni, mis lükati tagasi järgmise aasta märtsis.
3.
Good Times
1994.a. detsembris levis
interneti uudistegruppides
haruldane Good Times nimeline worm. Good
Times ei olnud viirus mitte
tavalises mõttes: täpsemalt väljendudes
oli ta asjatundlikult käimalastud kirjakett. Selle asemel, et ise
arvutist arvutisse
levida , usaldas Good Times selle inimestele.
Good
Times töötas umbes järgmisel ideel: autor lasi ringlusse e-
maili teate, mille pealkirjaks Subject : > pani Good Times. Kiri ise
sisaldas hoiatust, et mööda e-mail süsteeme liigub ringi ohtlik
viirus nimega Good Times, mis aktiviseerub siis, kui lugeda viirust
sisaldavat kirja. Kiri selgitas, et nakatunud kirja võib ära tunda
pealkirja järgi, milleks on Good Times. Hoiatuse järgi tuli kõik
sellist pealkirja
kandvad kirjad kohe ilma lugemata hävitada.
Paljud kasutajad ei mõistnud, et see
hoiatus oli nali -üldiselt
ei võimalda
elektrooniline kirjasüsteem teatud kirja lugemise peale
programmide käivitamist. Teisest küljest, kuna hoiatus oli
kirjutatud väga siiras vormis, siis
saatsid inimesed selle edasi oma
sõpradele, pealegi soovitas seda ka hoiatus.
Varem või hiljem
tuli kiri sõprade sõpradelt või veel suurema ringiga tagasi.
Esimese
asjana märkas inimene loomulikult pealkirja, milleks oli
Good Times. Uskudes, et teda ründab ohtlik viirus, kustutas ta selle
kirja ilma lugemata. Loomulikult sisaldas see kiri vaid esialgset
hoiatust. Pärast sellist pääsemist saatis see inimene arvatavasti
veel mõned hoiatused...
4.
Viiruste klassifitseerimine neid iseloomustava "käitumise"
järgi.
1. Käivitusfaile pakkivad
viirused -pakivad koodi kokku, nii et saadud fail on kas sama suur
või väiksem.
2. Kõiki programmifaile (*.EXE, *.COM) nakatavad
viirused.
2.1. Ainult EXE-faili nakatavad viirused.
2.2.
Ainult COM-faili nakatavad viirused.
2.2.1. COMMAND.COM nakatavad
viirused.
1.
Boot -sektori viirused.
3.1. Kõvaketta DOS
Boot-sektorit nakatavad viirused.
3.2. 360 kB flopiketta
viirused.
4. Ülekirjutavad viirused.
5. Parasiitviirused.
6. Mälus mitteresidentselt paiknevad viirused.
7. Mälus
residentselt asetsevad viirused.
7.1. Alla 640 kB (segmendis
A000).
7.2. Üle 640 kB.
7.2.1. Viirused mis kasutavad
BIOS /Video/Shadow RAM-i (
segment A000 - FFFF).
7.2.2. Viirused,
mis kasutavad extended/
expanded mälu.
8. Spawning (companion)
viirused.
9. Viirused, mis manipuleerivad failipaigutustabeliga
(FAT - File Allocation Table).
10.Viirused, mis nakatavad MBR-i
(Master Boot
Record , Partition Table).
1. Katalooge nakatavad
viirused.
4.1
Spawning virus.
Esimene Spawning või Companion
tüüpi viirus avastati 1990.aasta
aprillis . Selleks oli AIDS II. See
oli esimene teadaolev viirus, mis kasutas "korrespondeeriva
faili tehnikat", nii et nakatatav sihtmärk: EXE-fail jäi
tegelikult muutmata. Viirus kasutas ära DOS-i omapära lugeda
kõigepealt COM-faili ja seejärel alles EXE-faili, juhul kui nad on
samanimelised.
Viirus ei nakatanud tegelikult EXE-faili. Ta lõi
samanimelise korrespondeeriva viiruse koodi sisaldava COM-faili
suurusega 8,064
baiti . Uus fail asetses tavaliselt samanimelise
EXE-failiga ühes kataloogis, kuid see ei ole kõikide Spawning tüüpi
viiruste puhul nii. Mõned neist võisid COM- faili luua täiesti
suvalisse DOS-i pathi.
Viirus ise levis nii: kui inimene otsustas
käivitada mõnd programmi, millel oli juba olemas korrespondeeriv
COM-fail, siis käivitus kõigepealt viiruse koodi sisaldav COM-fail.
Kõigepealt lõi viirus veel nakatamata EXE- failidele samanimelised
aga viiruse koodi sisaldavad korrespondeerivad COM-failid. Pärast
uute COM-failide loomist mängis AIDS II mingi
meloodia ja kuvas
ekraanile järgmise teate:
"Your computer is infected with
...
? Aids Virus II ?
-
Signed WOP & PGI of DutchCrack -"
Seejärel käivitas viirus EXE-faili ning programm käivitus
probleemideta. Pärast töö lõpetamist programmiga võttis AIDS II
jälle kontrolli enda kätte. Monitorile kuvati järgmine teade:
"
Getting used to me?
Next time, use a Condom . . . . ."
Viiruse
koodis need
teated nähtavad ei ole. Kuna EXE-fail töötas
tõrgeteta, siis mõned viirusetõrje
programmid ei suutnud viirust
leida.
4.2
Katalooge nakatav viirus (DIR II).
DIR II (
alias Creeping
Death ,
FAT) avastati Ida-Euroopas (
Bulgaaria , Ungari, Poola) 1991. aasta
septembris. DIR II on residentselt mälus asetsev stealth-tüüpi
viirus, mis kasutab täiesti uudset nakatamise tehnoloogiat. Ta on
üsna raskesti avastatav, kuna tal ei ole kergesti nähtavaid ja
mõõdetavaid suurusi.
Kui arvuti käivitatakse nakatunud
kettalt , siis sel ajal kui DOS käivitab peidetud süsteemifaile,
loeb DOS ka DIR II residentselt mällu. Viirus loetakse residentseks
süsteemi alumisse mällu, kus asub informatsioon (IO ja MSDOS)
süsteemi konfiguratsiooni kohta. Kui kasutaja peaks vaatama mälu
jaotust mõne DOS-i tööriistaga, siis näeb ta seal, et Config on 1
552 baiti suurem kui oodatud.
Kui süsteemi kõvaketas ei olnud
enne nakatunud, siis juhtus see viirusega nakatunud kettalt
käivitamise ajal. Kuna DIR II on mälus residentselt, siis iga
ketas , mis pole kaitstud ülekirjutamisseadmega, nakatatakse
kasutamisel . Viirus paigutab oma koodi ketta viimasesse klastrisse
(
cluster ). Süsteemi kõvakettal asetab viirus end eelnevalt
kasutamata klastrisse. Seejärel
kodeerib viirus õiged
käivitusfailide
viidad ja kopeerib need ketta
kataloogi kasutamata
osasse . Siis muudetakse õiged viidad nii, et need osutaksid viiruse
koodile kõvakettal.
Vaadates nakatunud kataloogi ei märka
kasutaja mingit erinevust. Kõik käivitusfailid säilitavad oma
esialgse suuruse ja kuupäeva/kellaaja stambi. Tegelikult ei
muudeta originaalprogramme üldse. Kui kasutaja käivitab mõne programmi,
siis käivitub viirus. Kasutades kodeeritud viitasid, mis sisaldasid
programmi tegelikke viitasid
laeb DIR II programmi, mille kasutaja
kavatses käivitada.
Üks põhilisi DIR II sümptomeid on see, et
viirus on ka siis süsteemis, kui käivitatakse viirusvabalt kettalt.
Kopeerides faile nakatunud kettalt on tulemuseks see, et failid ei
kopeeru korralikult. Uued kopeeritud failid sisaldavad viiruse koodi,
mis on paigutatud ketta viimasesse klastrisse. Juhul kui DIR II ei
ole mälus residentne, käivitamisel DOS-i programmi CHKDSK, on
resultaadiks teade suurest hulgast kadunud klastritest. Kõikide
käivitusfailide kohta öeldakse, et nad on
cross -linked ühes ja
samas sektoris. See
sektor on viiruse koodi asukoht kettal. Kui
kasutada aga veel parameetrit /F, siis on tulemuseks kõigi
käivitusfailide jääv moonutus. Käivitades aga
CHDSK ajal, mil
viirus on mälus residentne, ei järgne mingit teadet kahjustuste
kohta.
4.3
MBR- (Partitsiooni tabeli) viirused. (Stoned).
Viirus
Stoned avastati esmakordselt Wellingtonis, Uus-
Meremaal 1988. aasta
alguses. Originaalne Stone nakatas ainult 360Kb 5¼'' flopisid,
tegemata mingit destruktiivset kahju. Enamus ülejäänud Stoned-i
modifikatsioonidest on võimelised nakatama master boot
sector -t
(partitsiooni tabelit) ja hävitama katalooge või
failipaigutustabeli (FAT) informatsiooni. Paljud modifikatsioonidest
on vaid väikese muudatusega teates, mis kuvatakse käivitamise ajal.
Kui arvuti käivitatakse viirusega nakatunud kettalt, siis
installeerib Stoned end süsteemimälu algusesse residentselt.
Katkestusvektor 12 liigutatakse ära ja CHKDSK
teatab , et arvutil on
2Kb vähem mälu kui installeeritud. Tehes algkäivituse flopikettalt
püüab viirus samuti nakatada kõvaketta master boot sector-t kui
see on veel eelnevalt nakatamata.
Algkäivituse ajal võib Stoned
suvalisel hetkel kuvada teate, mis enamasti näeb välja järgmine:
"Your PC is now Stoned!"
või:
"Your
Computer is now Stoned."
Pärast seda kui Stoned on mälus
residentne, nakatub iga kopeerimiskaitseta ketas süsteemi
lülitumisel.
Nakatamisel lükkab Stoned õige boot-sektori (sektor
0) sektoriks 11 ja kopeerib end sektorisse 0. Kuna 11. sektor on
tavaliselt 360Kb 5¼'' flopi juurkataloogi osa, siis kõik failid,
mille kataloogi
kirjed asuvad selles sektoris, on määratud kaduma.
Mõnede DOS-i
versioonide korral on 11. sektor osa
failipaigutustabelist (FAT) -seega ketta FAT
rikutakse .
Kui
Stoned nakatab süsteemi kõvaketast, siis kopeeritakse master boot
sector uude kohta, milleks enamasti on side 0, cyl 0, sector 7.
Viiruse enda koopia tehakse aga master boot sector-i endisse kohta
side 0, cyl 0, sector 1. Juhul kui kõvaketas oli formaaditud
tarkvaraga, mis paigutas boot-sektori, failipaigutustabeli või ketta
kataloogi side 0, cyl 0 kohe peale master boot sector-t, siis on
kõvaketas kahjustatud.
4.4
Ülekirjutavad viirused.
Üheks ülekirjutavaks viiruseks
on näiteks Bad Brian (samuti tuntud kui BB). Bad Brian avastati
1992.aasta aprillis. BB on destruktiivne viirus, sest kõik failid,
mida ta nakatab, on seejärel
kahjustunud . Nakatamise
objektiks valib
ta COM-failid, sealhulgas ka COMMAND.COM.
Kui käivitatakse
programm, mis on nakatatud BB poolt, siis nakatab viirus ühe
COM-faili, mis asub teises alamkataloogis.
Failis , mis on nakatunud
BB-ga, on 576 baiti faili algusest viiruse poolt üle kirjutatud. See
osa sisaldab seejärel ainult viiruse koodi. Kuna esialgset koodi
kuskile ümber ei kopeerita, siis faili pikkus pärast nakatumist ei
muutu, küll aga kaotab fail oma endise ülesande. Samuti ei muutu ka
faili modifitseerimise kuupäev ja kellaaeg.
Kuna ülekirjutavad
viirused kirjutavad oma koodi
peremees -faili koodi peale, siis ei saa
neid faile enam pärast taastada. Need tuleb lihtsalt
asendada viiruspuhaste failidega.
4.5
Parasiitviirused.
Parasiitviirused on viirused, mis
kirjutavad oma koodi peremees-faili otsa (EXE- ja COM-failid). Seega
muutub fail viiruse koodi võrra pikemaks. Viirus kasutab ära faili
alguses olevat käsku JMP, mida muudetakse nii, et see osutaks
kõigepealt viiruse koodile faili lõpus ja seejärel käivitaks
selle. Õige JMP-käsk kopeeritakse aga viiruse koodi lõppu. Pärast
seda, kui viirus on nakatanud veel mõned EXE- või COM-failid,
pannakse käima õige programm. Üsna tihti ei sisalda need viirused
hävitavat koodi. Ainus asi, mis annab märku viiruse olemasolust, on
faili suurenemine viiruse koodi võrra ja mingi viirusele iseloomulik
string faili lõpus. Kuid uuematel
viirustel ei peagi faili suurus
kasvama, sest peremees-faili kood pakitakse kokku.
4.6
Zaraza.
1994.a. oktoobri keskel leiti
Moskvast uus bootviirus, millele pandi nimeks Zaraza (vene keeles
nakkus). Viirus kasutab täiesti ainulaadset nakatamismeetodit.
Zaraza nakatab flopide boot-sektoreid nagu tavaliselt. See-eest
kõvakettal nakatab viirus DOS-i tuuma: faili IO.SYS. Seetõttu
mõeldi välja kohe uus viiruste klass:
kernel infectors. Viiruse
pikkus on 1024 baiti (s.t. kaks sektorit). Flopil on viiruse esimene
osa boot-sektoris, ülejäänud osa viirusest ja esialgset boot
sektorit hoitakse juurkataloogi kahes viimases sektoris.
Kui
arvuti käivitatakse nakatatud disketilt, siis püüab viirus
nakatada esimest faili aktiivse DOS-partitioni juurkataloogis
(tavaliselt on see IO.SYS). Kõigepealt teeb viirus failist koopia ja
siis kirjutab faili algusse oma koodi. Hiljem pannakse nakatatud
faili atribuudiks
Volume label.
Kui arvuti järgmine kord
käivitatakse, siis aktiviseerub ka viirus ja tegutseb edasi nagu
tavaline boot-sektori viirus. Kõik arvutis kasutatavad
kopeerimiskaitseta flopid muutuvad viirusekandjateks. Nakatunud
kõvaketta nimeks on IO.SYS (Label seda nime muuta ei suuda!). Kuna
Zaraza asub failis IO.SYS, siis ei aita ka FDISK/MBR, kuna see
asendab vaid MBR-i ja boot-sektori. Samuti ei aita ka SYS C:, kuna
see muudab/kustutab vaid IO.SYS faili nakatumata koopia.
Lisaks
kõigele muule on Zaraza veel kergelt polümorfne: nakatunud ketaste
boot-
sektorid erinevad vähesel määral teineteisest. Ainult string
MS DOS 5.0 sektori alguses ja 55AA sektori lõpus on alati nähtavad.
Viirus sisaldab teksti "V boot sektore zaraza". Tekst on
kodeeritud ja seda ei ole näha isegi mälus. Augusti jooksul näitab
viirus seda teadet igal käivitamisel. Zaraza ei sisalda hävitavat
koodi. Vea tõttu koodis jääb viirus sageli 386/486
protsessoriga arvutitel rippuma. Zaraza suudab nakatada vaid neid kõvakettaid,
mille aktiivne DOS-partition on suurem kui 10,6 MB.
4.7
Shifting Objective.
Siiamaani on kõikide viiruste
üheks vältimatuks omaduseks olnud käivituvate failide nakatamine.
Ent seda vaid 1994.a.
alguseni . Nimelt siis tuli avalikkuse ette
Shifting Objective, esimene viirus, mis ei
nakata käivituvat koodi.
Selle asemel lisab ta end hoopis OBJ moodulitele. (OBJ fail on
vaheaste programmide lähtetekstide ja käivitatava koodi vahel.)
Mitte kõik inimesed ei kirjuta
programme ja mitte kõik
programmeerijad ei kasuta selleks C -d või assemblerit -seega nende
arvutites Shifting Objective ei levi.
OBJ fail on põhimõtteliselt
muutuva pikkusega
kirjete jada. Iga kirje alguses on 3 baiti pikk
päis ja lõpus kontrollsumma. Päise esimene
bait defineerib kirje
tüübi ja ülejäänud kaks baiti sisaldavad endas kirje pikkust
baitides.
Osad kirjete tüüpidest on: 80h -OBJ faili esimene
kirje
8Ah -OBJ faili viimane kirje
8Ch -väliste andmete
definitsioonid A0h -tavaline kood
A2h -kokkusurutud kood.
Tavaline OBJ fail algab esimese ja lõpeb viimase
kirjega . Need
kirjed sisaldavad OBJ mooduli nime, koodi algusaadressi ja muud
taolist infot. Väliste andmete definitsioonide kirje sisaldab endas
teistes OBJ moodulites paiknevate andmete ja koodide nimekirja.
Viimased kaks kirjetüüpi sisaldavad
tegelikku koodi ja andmeid
(A0h) või korduvaid mustreid (DUP käskude tulemus lähtetekstis).
Nendel kirjetel on pärast kolmebaidist koodi veel kolm
baiti:segmendi indeks (esimene bait) ja koodi off-set (teised kaks
baiti).
Kuidas viirus tegutseb? Viirus püüab nakatada ainult
neid OBJ mooduleid, millest peaksid saama *.COM failid. Ta lisab end
OBJ moodulile nii, et pärast linkimist on COM-failis viiruse kood
esimene. Käivitamisel alustab viirus tegevust. Kõigepealt
kontrollib ta, kas ta on juba residentne. Kui ei, siis see viga
parandatakse. Edasi kutsub viirus välja residentse osa, mis tõstab
vana koodi õigele kohale tagasi ja
laseb selle käima. Viirus ronib
DOS -le kättesaadava 640 KB lõppu, vähendades seda 2 KB võrra.
Samuti haarab ta enda kätte katkestusvektori 2Ih.
Residentsena
jälgib viirus failide sulgemist. Kui suletav fail on OBJ
moodul ,
siis püütakse teda enne sulgemist nakatada. Viirus kontrollib iga
kirje päist. Kui kirje on väliste andmete definitsiooni kirje, siis
jäetakse fail puutumata. Kui kirje on koodikirje (A0h või A2h),
siis muudetakse tema koodi off-set, liites sinna juurde viiruse
pikkuse, ja lõpus kontrollsummat. Kui kirje on esimene koodikirje ja
koodi off-set ei ole 100h, siis otsustatakse, et tegemist ei ole
COM-faili jaoks mõeldud OBJ mooduliga ja jäetakse fail puutumata.
Kui tegemist on viimase kirjega, siis loetakse see mällu,
kirjutatakse asemele tavalise koodi kirjena viiruse kood ja pannakse
viimane kirje tagasi faili.
Mingeid muid kõrvalefekte peale
paljunemise viiruses ei esine. Samuti ei sisalda ta mingi hävitavat
koodi. Viiruse koodis on lahtiselt näha teksti:
Shifting
Objective Virus 3.0 © 1994
Stormbringer [Phalcon/Skism]
Kudos
go to The
Nightmare !
Viirusega seoses tekib üks probleem. Nimelt
on Shifting Objective võimeline korralikult töötama vaid
COM-failis, aga OBJ-failis ei ole kuskil kirjas, et konkreetne moodul
peaks saama COM-
failiks . Keegi ei
keela meil COM-
failina mõeldud
OBJ-moodulit linkimast EXE-failiks. Samuti võib EXE-faili
lähteaadressiks olla 100h.
Shifting Objective ei kujuta endast
suurt ohtu. Kui mitte arvestada ülaltoodud probleemi, siis ei tekita
viirus mingeid kahjusid. Pealegi ei levi see viirus just eriti
aktiivselt.
4.8
*.BAK ja *.PAS failide viirus.
Üheks
selliseks viiruseks, mis tegeleb *.BAK ja *.PAS failidega on
Anti-
Pascal . See viirus avastati 1990 aasta juunis Sofias Vesselin
Bontchevi poolt. Arvatakse, et tegelikult kirjutati see viirus kas
Venemaal või Poolas. Üldiselt on Anti-Pascal *.COM faili viirus
(
sealjuures on ta võimeline nakatama ka COMMAND.COM-i). Kui viirus
ei ole veel mälus residentselt, siis nakatamise käigus hõivatakse
vektor 24.
Kui käivitatakse nakatunud programm, siis on
viirusel ülesandeks nakatada teisi *.COM faile aktiivsel kettal või D:
kettal, aga ainult neid faile mis asuvad vahemikus 605 ja 64 930
baiti. Samuti ei tohi need failid
sisaldada read-only atribuuti. Kui
leitakse selline nakatumata *.COM fail, mis vastab viiruse
kriteeriumitele, siis esimesed 605 baiti *.COM failis kirjutatakse
üle viiruse
koodiga . Õige kood kirjutatakse aga faili lõppu. Seega
kasvab faili suurus 605 baidi võrra, muudetakse ka faili
kuupäeva/kellaaja stampe, mis saavad nakatumise hetke andmed.
Nakatunud fail sisaldab stringi "combakpas???exe".
Kui
Anti-Pascal ei leia nakatamiseks vähemalt kahte *.COM faili, siis
otsib ta aktiivsest kataloogist *.PAS ja *.Bak faile. Kui leitakse
mõni sellise laiendiga fail, siis kirjutatakse esimesed 605 baiti
viiruse koodiga üle. Kui ülekirjutavaks failiks oli *.PAS fail,
siis kaotab kasutaja osa
Pascali koodist. Pärast *.PAS ja *.BAK
failide ülekirjutamist on viirusel ülesanne muuta need failid *.COM
failideks, aga kui samanimeline fail juba eksisteerib, siis *.EXE
failiks. Kuna Anti-Pascali esialgse variandi koodis oli viga sees,
siis viimast ülesannet ei suutnud viirus täita. See viga parandati
viiruse hilisemate versioonidega.
Anti-Pascal II koodis muudeti
aga ümbernimetamise käsk ära kustutamiskäsuks. Seega mitte leides
vähemalt kahte nakatamata *.COM faili, kustutas Anti-Pascal II ära
kõik *.PAS ja *.BAK ja veel ka *.BAT failid, mis ta leidis.
Anti-Pascal II erinevuseks tema eelkäijast on veel see, et selle
viiruse kood kirjutatakse *.COM faili lõppu. Programmi käivitamisel
suunatakse esimese JMP käsuga viiruse koodile ja alles seejärel
käivitatakse õige kood. Samuti ei muudeta kuupäeva/kellaaja
stampe. Anti-Pascal II nakatab kõigepealt iga ketta juurkataloogis
asuva esimese *.COM faili (tavaliselt on selleks COMMAND.COM). Üheks
oluliseks Anti-Pascal II sümptomiks on veel see, et ta võib
kahjustada ketta boot-sektorit nii, et enne käivitatav ketas seda
enam ei ole.
5.
Viiruste klassifitseerimine nakatamiskiiruse järgi.
Nakatamiskiiruse (aktiivsuse)
järgi saab viiruseid klassifitseerida kas
aktiivseteks (Fast
Infectors) või väheaktiivseteks (
Slow Infectors). Aktiivne viirus
on viirus, mis olles aktiivselt mälus ei nakata ainult
parajasti käivitatavaid faile, vaid ka neid, mis on lihtsalt avatud. Sellise
viiruse resultaadiks on see, et pärast mõne käivitusfailide
kontrollprogrammi käivitamist on enamus käivitusfaile korraga
nakatunud. Ühtedeks sellisteks viiruseks on
Dark Avenger ja Frodo.
Terminit -"väheaktiivne viirus" kasutatakse põhiliselt
viiruste kohta, mis olles aktiivselt mälus nakatab ainult neid
faile, mida kas modifitseeritakse või parasjagu
luuakse . Näiteks
võib tuua viiruse nimega Darth
Vader .
6.
Arvutiviiruste "abi"tehnoloogiad.
6.1
Stealth tehnoloogia.
Paljud
arvutiviirused kasutavad oma paremaks maskeerimiseks niinimetatud
stealth tehnoloogiat. See käib eeskätt residentselt mälus asuvate
viiruste kohta. Üheks selliseks on Venemaalt pärit AntiEXE.
Näiteks kui viirus on aktiivselt mälus, siis iga kutse, mis
tehakse Master Boot Record-le, võetakse vastu viiruse poolt ja MBR
kutsutakse välja. Kui aga proovida kirjutada midagi MBR-i, siis teeb
arvuti algkäivituse.
Veel üks stealth tehnoloogiat kasutavate
viiruste omaduseks on see, et nad nakatavad faile "lennult",
s.t. kui mällu hakatakse lugema nakatunud programmi, siis
desinfitseerib viirus selle faili. See raskendab aga tunduvalt
viirusetõrje programmidel nakkust avastamast.
Kolmas omadus on
viiruste
suutlikkus nakatada ka neid käivitusfaile, mis antud hetkel
on avatud. See aga avab suuremad võimalused levida kiiresti üle
kogu süsteemi.
6.2
Polümorfsus.
Bulgaaria
üks tuntumaid viirusekirjutajaid Dark Avanger on lasknud välja
mootori, millega saab praktiliselt igasuguse viiruse polümorfseks
teha. seega ei ole see võimalus enam kitsa ringi viirusekirjutajate
käes. See raskendab tunduvalt viiruse tabamist viirusetõrje
programmide poolt.
Polümorfsus viiruse juures tähendab seda, et
viiruse kood eri failides erineb üksteisest, aga viiruse
põhiülesanne jääb samas endiseks.
6.3
Koodi pakkimine.
Seda
tehnoloogiat kasutavad peamiselt
parasiit -viirused. Pakkides
põhiprogrammi koodi kokku ja seejärel enda koodi tekkinud vabale
kohale kirjutades, ei ole näha, et fail suureneks, saadud fail võib
olla isegi esialgsest väiksem. Käivitades sellist pakitud faili,
hakkab viirus kõigepealt koodi lahti pakkima. Programm käivitub ja
pärast töö lõpetamist
pakib viirus faili koodi kokku tagasi.
Ühed selliseid viiruseid on Cruncher-i "perekonda"
kuuluvad viirused.
Pakkimiseks kasutavad nad Lempel-Zev-Huffman-i
pakkimismeetodit.
6.4
Ketta krüpteerimine.
Esimesena
tuli sellise idee peale mitmete viirusealaste raamatute autor Mark
Ludwig . Põhimõte on selles, et viirus,
saades mälus residentseks,
hakkab kettal olevaid andmeid tugeva
algoritmiga kodeerima. sellised
viirused on väga
destruktiivsed , sest on oht jääda ilma kõikidest
andmetest, mis asuvad kõvakettal.
Põhiline probleem sellistel
boot-viirustel on see, et nad satuvad tihti vastuollu Windowsiga kuna
seal kasutatakse 16bitise
andmevahetuse asemel 32 bitist. Seega tuleb
Windowsi peamine
swap -fail jätta kodeerimata.
6.5
"Antiviirus"-viirus.
Mõned
arvutiviirused ei ole
disainitud ainult nakatama käivitusfaile, vaid
sisaldavad ka teatud antiviiruse koodi. Need viirused sisaldavad
mootorit, mis on võimelised võimetuks tegema või kõrvaldama
antiviiruse programme ja konkureerivaid viiruseid. Üheks selliseks
on näiteks Den_Zuko (kustutab ära Brian või Ohio viiruse ja
kirjutab oma koodi selle asemele), aga ka Yankee_Doodle (selle
viiruse uuematel versioonidel on võime upgrade-da oma vana versioon,
kustudades vana koodi ja kirjutades sinna peale uuema versiooni koodi
aga ka muuta viiruse
Ping Pong koodi nii, et pärast sajandat
nakatamist hävitab Ping Pong end), Neuroquila seevastu suudab teha
võimetuks mõningaid viirusetõrjeprogramme.
Kokkuvõte.
Arvutiviiruste suhtes kõige
tundlikumaks on osutunud IBM PC-ühilduvad arvutid. Nendel arvutitel
on avastatud praktiliselt kümme korda rohkem viiruseid kui teistel.
Seni on viiruste suhtes kõige töökindlamaks osutunud Macintosh
tüüpi arvutid.
Üldiselt võib IBM tüüpi arvuti viirused
jagada kahte suurde gruppi. Esimeseks oleksid viirused, mis kasutavad
oma levikuks faile (nakatades neid). Enamasti osutuvad nakatunuteks
*.EXE ja *.COM failid, aga on olemas viiruseid, mis suudavad nakatada
ka teistsuguste laienditega (*.SYS, *.OVL, *.PRG) faile. Faile
nakatavad viirused võib omakorda jaotada kaheks: a)viirused, mis
loevad end residentselt mällu
b)viirused, mis ei loe end
residentselt mällu
Teiseks viiruste rühmaks oleksid süsteemi
või buut-sektori viirused. Siia gruppi kuuluvad viirused, mis
kirjutavad oma koodi ketta buut-sektorisse. Seega tehes algkäivituse
nakatunud kettalt aktiviseeritakse ka viirus. Sellised viirused on
tavaliselt üsna destruktiivsed, sest kirjutades viiruse koodi
buut-sektorisse, kirjutatakse üle seal eelnevalt
asunud info ketta
kohta.
Kuid on olemas ka viiruseid, mis suudavad nakatada nii
faile, kui ka buut-sektorit. Selliseid viiruseid kutsutakse
Multi -Partite viirusteks.
On välja mõeldud palju nn.
"abi"
tehnoloogiaid , mis raskendavad viirustõrje
programmidel viirusi leidmast. Need on "
mootorid ", mida
saab viiruse koodi juurde panna, et viirus oleks raskesti avastatav
või oleks tema levik kiirem/laialdasem. Sellisteks abivahenditeks
on: 1.ketta krüpteerimine
2.polümorfsus
3.failide pakkimine
4.stealth tehnoloogia
5."antiviirus" viirus.
Summary.
Generally, in PC-compatible
computers are two main classes of viruses. The
first class
consists of the File Infectors which attach themselves to ordinary
program files.
These usually infect arbitrary *.COM and/or *.EXE programs,
though some can infect any program for which execution is
requested ,
such as *.SYS, *.OVL, *.PRG and *.MNU files.
File infectors can
be either
direct Action or
Resident . A direct - action virus selects
one or more
other programs to infect each time the program which
contains it is executed. A resident virus hides itself somewhere in
memory the first time an infected program is executed, and thereafter
infects other programs when "they" are executed or when
certain other
conditions are fulfilled. Most viruses are resident.
The second
category is System or Boot-Record Infectors: those
viruses which infect executable code
found in certain system areas on
a
disk which are not ordinary files. On DOS systems,
there are
ordinary boot-sector viruses, which infect only DOS boot-sector, and
MBR viruses which infect the Master Boot Record on fixed disks and
the DOS boot sector on diskettes. Examples
include Brain, Stoned,
Empire, Azuza and
Michelangelo . Such viruses are always resident
viruses.
But a few viruses are
able to infect
both (the
Tequila virus is one example). These are often called Multi-Partite viruses,
though there has been criticism of this name;
another name is
Boot-and-File virus.
File System or Cluster viruses (e.g. DIR II)
are those which
modify directory table entries so that the virus is
loaded and executed
before the desired program is.
Note that the
program itself is not physically altered, only the directory entry
is. Some consider these infectors to be a third category of viruses,
while others consider
them to be a sub-category of the file
infectors.
KASUTATUD
KIRJANDUS.
1. Bontchev, Vesselin"Are
Good Computer Viruses Still a Bad
Idea ?"
University of
Hamburg .
2. Brunnstein,
Klaus "MSDOSVIR.791" University of
Hamburg 14.02.91.
3.
Chess , David M. "Some Common PC-DOS
Viruses and What They
Mean To You."
IBM
Thomas J.
Watson Research
Center Yorktown Heights, NY '1991.
4. Hoffman, Partica
M. "The Virus Information Summary List" '1996.
5.
Kehoe, Brendan P. "Interneti Zen" 1994 lk 48.
6. LeRoy
H. Pedone, Kevin J. Ziese "The Virus" '1993.
7.
Peterman, Doug "What are computer viruses (and why should I
worry about them)?"
USA '1995
8. Stiller,
Wolfgang "Integrity Master" version 2.61, Colorado Springs, USA
'1996.
9. van Wyk, Ken R. "Virus-L., FAQ." '1996
10.
Ajakiri "
Arvutimaailm " '1994 nr 3 lk 61-62.Ustus Agur "The
Virus Story."
11. Ajakiri "EXE" '1995.a. nr 7. lk
53.
12. Ajakiri "EXE" '1995.a. nr 7. lk 54.
13.
Ajakiri "EXE" '1995 nr 8. lk 56.
1. Ajaleht "Äripäev"
11.03.1992. Jaak Ennuste "Arvutiviirused."
LISA
1.
Sõnaseletused.
Boot sector
alglaadimissektor (sektor, kus asub info arvuti
algkäivituse kohta)
File Allocation Table (FAT)
failipaigutustabel (kirjeldab paigutust välissalvestist), info
failide ja nende asukoha kohta.
Master Boot Record (MBR)
info
failisüsteemi ja kõvaketta kohta (operatsioonisüsteemi alguse
aadress jne.). Esimene füüsiline sektor (track 1, head 0, sector 1)
PC kõvakettal. See ei ole sama, mis esimene DOS-i sektor (logical
sektor 0).
Partition Table
info ketta kohta (kas ketas on
buuditav, sektorite ja silindrite arv kõvakettal jne.)
CHKDSK
MS DOS-i tööriist, mis näitab arvuti mälujaotust ja kas
failid asuvad kettal samal aadressil kui FAT-is (cross-linked files).
Path
kataloogide nimekiri, kust otsitakse sisestatavat
käivitusfaili
Swap-file
fail, kuhu salvestatakse
operatsioonimälust teatud andmehulgad, mida ei kasutata aktiivselt.
Upgrade
vanema
tarkvara versiooni asendamine uue versiooniga
Kõik kommentaarid