TKK | Tietoverkkolaboratorio | Opetus
Johdanto Suojautuminen Virustyypit Langattomat Wap/Epoc Onko minulla virus? Lähteet Tekijät

Virustyypit


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


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


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.


Tiedosto-, käynnistyslohko-, klusteri-, ja kernel-virukset


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.


Piilossa lymyävät pikku pirulaiset


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.

 


Tekijät:

 

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ä.
Sivua on viimeksi päivitetty 08.12.2000 13:48
URL: http://www.netlab.tkk.fi/opetus/s38118/s00/tyot/72/virustyypit.shtml