TKK | Tietoverkkolaboratorio | Opetus
Johdanto | Suojautuminen | Virustyypit | Langattomat | Wap/Epoc | Onko minulla virus? | Lähteet | Tekijät |
Viruksen voisi määritellä seuraavasti: Virus on itse monistuva ohjelma joka voi liittää itsensä toisiin ohjelmiin
muuttamalla niitä tai niiden ympäristöä niin että kun käynnistää "saastuneen" ohjelman, viruskin
käynnistyy. Monet ihmiset käyttävät termiä "virus" epätäsmällisesti tarkoittaessaan mitä tahansa ohjelmaa jossa
on piilotettua pahansuopaa toiminnallisuutta tai ohjelmaa joka yrittää monistaa itseään ja levitä mahdollisimman
monelle tietokoneelle vaikkakin termi Troijan hevonen sopisi paremmin ensimmäiseen ja mato toiseksi
mainittuun. Tässä kappaleessa käsitellään virustyyppejä mutta määritellään ensin Troijan hevonen sekä mato.
Troijan hevonen on ohjelma joka sisältää ylimääräistä piilotettua toiminto. Tämä toiminto (usein pahansuopa) on ohjelmoijan tarkoittamaa mutta piilossa käyttäjältä. Viruksen voisi ajatella erikoistapauksena Troijan hevosesta.
Sen eräs ylimääräinen toiminto on tehdä jostakin toisesta tiedostosta myös samanlainen Troijan hevonen. Kuitenkin virukset jotka vain monistuvat eivätkä tee mitään muuta eivät ole Troijan hevosia.
Mato koostuu yhdestä tai useammasta ohjelmasegmentistä jotka elävät tietoverkossa ja pystyvät liikkumaan ja kopioimaan itseään siellä. Matoja on kahdenlaisia: nettimatoja
(networkworms) ja isäntätietokonematoja (hostcomputerworms). Isäntätietokonemadot toimivat siten että kun uusi ohjelmasegmentti on
siirretty toiselle koneelle, vanha lopettaa toimintansa. Täten isäntätietokonemadon segmenttejä on olemassa vain
yksi kerrallaan. Isäntätietokonematoja kutsutaan usein myös nimellä jänis.
Nettimadot ovat hieman monimutkaisempia. Ne koostuvat useammasta ohjelmasegmentistä jotka ovat levittäytyneet verkkoon monelle
tietokoneelle. Ohjelmasegmenttien keskinäinen kommunikaatio tapahtuu verkkoprotokollia hyväksikäyttäen ja
koostuu melko varmasti muustakin kuin matosegmenttien kopioimisesta koneelta toiselle. Toisin sanoen,
netti madot ovat suuri tietoturvariski. Nettimatoa, joka koostuu yhdestä pääsegmentistä jolle muut segmentit kommunikoivat, kutsutaan mustekalaksi.
Virukset voidaan jakaa kahteen tyyppiin. Ensimmäinen näistä on tiedostovirukset. Nämä ovat siis viruksia jotka liittävät itsensä viheliäisesti johonkin tiedostoon. PC koneissa nämä tiedostot ovat usein ajettavia .com ja
.exe tiedostoja. On olemassa myös viruksia jotka osaavat liittää itsensä moniin eri tiedostoihin, kuten .sys, .prg, .bat päätteisiin, sekä esim. Word-tiedostoihin. Virukset aktivoituvat kun saastunut tiedosto käynnistetään ajoympäristössään. On huomattava että esim. Word tiedosto ei ole ajokelpoinen tiedosto Windows ympäristössä. Kuitenkin mikä on pelkkää dataa yhdessä ympäristössä saattaa olla ajettavaa koodia
toisessa. On myös olemassa viruksia jotka liittävät itsensä C-kieliseen lähdekoodiin. Jos ja kun lähdekoodi
käännetään tarkoituksena tuottaa ajettava ohjelma, virus myös kääntyy ja pääsee ohjelmaa ajettaessa
valloilleen. Tiedostoviruksista mainittakoon kuuluisa Jerusalem virus. Toinen virustyyppi on
käynnistyslohkolle itsensä kirjoittavat virukset. Nämä virukset sijaitsevat kovalevyn ensimmäisellä lohkolla eli
käynnistyslohkolla. Koska tältä lohkolta luetaan ensimmäisenä kun tietokone käynnistetään virukset käynnistyvät
ennen kun käyttöjärjestelmää aletaan lataamaan. Esimerkkejä käynnistyslohkoviruksista ovat Brain,
Stoned, Empire, Azusa ja Michelangelo. On myös olemassa viruksia jotka kopioivat itsensä sekä käynnistyslohkolle että tiedostoihin. Näitä viruksia kutsutaan
monipartiitti-viruksiksi. Näiden kahden virustyypinlisäksi antivirusohjelmoijat puhuvat käsitteistä klusteri- sekä
kernelvirukset. Klusterivirukset muuttavat hakemistorakenteita siten että virus käynnistyy ennen tarkoitettua ohjelmaa. Ohjelman rakennetta virus ei
muuta, vain sen paikkaa levyllä. Aktivoituessaan virus käynnistää sitten itse ohjelman aivan kuin mitään ei olisi
tapahtunut. Klusteriviruksia oli aikoinaan paljon Amiga-tietokoneissa. Näistä mainittakoon silloin paljon pelätty
Lamer virus. Kernelviruksien kohteena ovat käyttöjärjestelmän tiedostot. Nämä ovat ne tiedostot jotka
muodostavat käyttöjärjestelmän ytimen (core). Kernelvirukset käyttävät hyväkseen tiedostojenkäyttöjärjestelmäkeskeisiä ominaisuuksia kuten sijaintia levyllä tai erikoisia latausrutiineja. Eräs DOSkernel/multipartiittivirus on virus nimeltä 3APA3A.Jotkut sanovat että itse Windows käyttöjärjestelmä on virus.
Tottahan se on että Windows pitää sisällään paljon ylimääräisiä (ehkä pahansuopiakin) toimintoja josta käyttäjillä ei ole mitään tietoa. Toisaalta Windows monistuu jollain salaperäisellä mekanismilla (TKK:lla Windows-koneet ovat lisääntyneet huimasti viime vuosien aikana). Sitten kun tietokoneen käynnistää niin
Windowsin käynnistymistä ei tunnu pystyvän millään estämään. Ehkä ainoa ero Windowsin ja viruksen välillä on se
että virukset ovat kooltaan pieniä eikä Windows yritä pysyä piilossa torjuntaohjelmilta.
Nyt kun tiedämme virusten perustyypit sekä missä ne pesivät voimme tarkastella lähemmin virusten toimintaa. Mitä
virukset tekevät? Ensimmäistä kertaa aktivoituessaan virus voi tehdä montakin asiaa. Se voi varata
itselleen pienen määrän muistia ja jäädä sinne lymyämään tekemättä sen kummempaa. Toista ääripäätä edustaa
virus joka heti käynnistyessään formatoi kovalevyn. Tällainen virus ei ole kovinkaan pitkäikäinen ja onnistuu
harvoin leviämään laajalle, sillä formatoidessaan kovalevyn se samalla tuhoutuu itsekin. Kolmas vaihtoehto on,
että virus lisää siihen sisäänrakennettua laskuria yhdellä ja kopioi itsensä johonkin valitsemaansa tiedostoon, jonne
se jää odottelemaan seuraavaa aktivoitumistaan. Yleistä kuitenkin on että aktivoituessaan virus ei ala heti
tekemään tuhojaan. Täten virukset yleensä havaitaan ennen kuin ne tekevät jotain peruuttamatonta, mutta toisaalta
tämä tekee virusten leviämisen estämisen vaikeammaksi. Ideaalinen tilanne viruksen kannalta on se että virus
ehtii levitä mahdollisimman monelle koneelle ennen kuin se esim. tuhoaa niiden kovalevyt.
Pysyäkseen piilossa viruksentorjuntaohjelmilta viruksen on oltava pieni ja ovela. Stealth-virusten toiminta perustuu niiden kykyyn monitoroida käyttöjärjestelmäkutsuja, joita käytetään luettaessa tiedostoja sekä lohkojalevyltä. Nämä kutsut väärennetään siten, että ohjelmat, jotka yrittävät lukea tartunnan saanutta tiedostoa,
näkevät vain alkuperäisen puhtaan tiedoston. Näin viruksen tekemät muutokset saattavat jäädä
huomaamatta viruksentorjuntaohjelmalta. Jotta tämä toimisi, pitää viruksen kuitenkin olla muistissa aktiivisena ja
näin tämä on helpompi havaita. Esimerkki stealth viruksesta on jo mainittu
Brain-virus, joka oli myös
ensimmäinen DOS virus.
Perinteiset viruksentorjuntaohjelmat käyttävät luotausmerkkijonoja etsiessään viruksia. Jos luotausmerkkijonoa
vastaava merkkijono löytyy tiedostosta tai levyn lohkolta niin viruksentorjuntaohjelma on
paikantanut viruksen. Polymorfiset virukset on kehitetty siinä toivossa että kun tehdään
viruksen tunnistaminen vaikeammaksi niin myös sen löytäminen ja tuhoaminen on vaikeampaa. Polymorfiset
virukset luovat itsestään erilaisia kopioita monistuessaan. Eräs tapa tämän toteuttamiseen on käyttää
monia erilaisia salausmenetelmiä, jotka tarvitsevat myös erilaisia purkumenetelmiä mutta joista vain yksi on
näkyvillä kuten Whale-viruksen tapauksessa. Tällöin viruksentorjuntaohjelmalla täytyy olla monia luotausmerkkijonoja yhtä virusta varten. Vielä kehittyneemmät polymorfiset virukset (esim. V2P6 virus) muuttuvat vaihtamalla riippumattomien käskyjonojen järjestystä sekä lisäämällä turhia ei mitään tekeviä käskyjä muiden väliin (tällainen käsky on esim. käsky joka lukee jotain merkityksetöntä rekisteriä). Ne osaavat myös
tehdä toiminnallisesti samankaltaisia käskyjonoja jotka kuitenkin näyttävät erilaisilta (esim. käsky A=A-A vastaa toiminnallisesti käskyä A=0). Eräs pisimmälle viedyistä tekniikoista on niin kutsuttu mutaatiomoottori.
Viruksentekijä voi rauhassa tehdä viruksensa, sen jälkeen linkittää viruksen lähdekoodit mutaatiomoottorin salaus- ja
mutaatio moduuleihin, ja hupsis, näin meillä on upouusi polymorfinen virus!
Polymorfiset virukset ovat tehneet viruksentorjunta-alan yhä vaikeammaksi ja haastavammaksi. Tavalliset luotausmerkkijonoihin perustuvat viruksentorjuntaohjelmat ovat voimattomia polymorfisten virusten
kohdalla. Tällaisen viruksen löytämiseksi ei auta lisätä hirmuisia määriä luotausmerkkijonoja tavallisiin
luotausmoottoreihin. Pitää rakentaa erikoistuneempi luotausmoottori, joka on mahdollista vasta kun viruksenläpikotainen tutkimus on suoritettu.
Olli Tuominen otuomine@cc.hut.fi
Roope Suomalainen roope.suomalainen@hut.fi
Pekka Kuismanen pkuisman@cc.hut.fi
Tämä sivu on tehty Teletekniikan perusteet -kurssin harjoitustyönä.