Tietokonevirusten historian alku

25.2.2003

Miro Lahdenmäki
Tik
Teknillinen korkeakoulu
miro.lahdenmaki [at] iki.fi

Määrittelemme aluksi termin tietokonevirus. Tutustumme alan uranuurtajaan, joka keksi nimityksen "tietokonevirus". Käymme läpi tietokonevirusten historian varhaisvaiheita yrittäen noudattaa tapahtumajärjestystä. Historiaan liittyy sekä erehdyksiä että laskelmoitua ilkivaltaa. Tutustumme tarkemmin muutamaan yksittäiseen virukseen, jotka ovat esitelleet uusia innovaatioita tai ovat muuten hyviä esimerkkejä tietyntyylisistä viruksista. Lopussa on virusohjelmien yleinen jaottelu.

1. Johdanto

Vuonna 1983 Fred Cohen keksi nimityksen "tietokonevirus". Hän oli ensimmäisiä aihetta vakavasti tutkineita ihmisiä. Monet nykyään käytettävistä suojautumismenetelmistä viruksia vastaan perustuvat Cohenin kehittämiin ja esittelemiin ideoihin. Cohenin tohtorin väitöskirjan otsikkona vuonna 1986 oli "Computer Viruses". Hän todisti, että virushyökkäys on teknisesti mahdollinen missä tahansa tietokonejärjestelmäympäristössä. Samoin hän todisti, että yleispätevä viruksentunnistus on ratkeamaton ongelma. Ilman Cohenin varhaista perustutkimusta varmasti vielä nykyäänkin jotkut saattaisivat tavoitella täydellistä virussuojausta. [4] [3]

2. Määritelmä

Tietokonevirus yleisimmillään on pieni ohjelmanpätkä, joka yrittää levittäytyä mahdollisimman laajalle monistaen itseään ja tehden samalla usein tuhoja. Analogia biologisiin viruksiin on selkeä. Molemmat koostuvat pienestä pätkästä koodia ja päästyään kohdesysteemiin ne aktivoituvat ja alkavat monistua. Molemmista on yleensä haittaa kohdesysteemille. Tohtori Fred Cohenin määritelmä tietokoneviruksesta on:

"ohjelma joka voi 'tartuttaa' muita ohjelmia muuntaen niitä sisältämään - - version itsestään" [3]

Ylläoleva määritelmä hyväksytään yleisesti normiksi. Joskin tiettyjä tapauksia määritelmä ei täysin kata, kuten käynnistyssektoriviruksia tai matoja. Myöskään troijalaiset hevoset eivät tämän määritelmän alle mene, mutta yleisesti niistäkin käytetään nimitystä virus.

3. Varhaiset tietokonevirukset

3.1 Virusten esihistoriaa

Ensimmäisinä virustyyppisinä ohjelmina voidaan nähdä muistinläpikäyntiohjelmat. Ne siirtyivät tietystä muistipaikasta eteenpäin kopioiden itsensä seuraavaan muistipaikkaan ja täyttäen kaikki läpikäydyt muistipaikat tunnetulla arvolla. Tällä pyyhittiin toisten ohjelmien jäänteet muistista sotkemasta.

Kun tuli mahdolliseksi ajaa useampaa ohjelmaa samaan aikaan koneella, oli tärkeää, että jokainen ohjelma ja siihen liittyvä data pysyivät tiettyjen rajojen sisällä. Väistämättä tuli ohjelmia, jotka eivät noudattaneet rajoja. Ne joko suorittivat operaatioita toisten proseduurien datalle tai ohjelmille tai siirsivät kontrollin satunnaiselle alueelle ja yrittivät suorittaa dataa ohjelmakäskyinä. Tuloksena oli satunnaisia operaatioita sekä vahinkoa. Jos ohjelman muistijälkiä yritti jäljittää ja tulostaa ruudulle, näytti kuva madonsyömältä puulta. Niinpä näitä tuholaisohjelmia alettiin kutsua madoiksi. Samaa nimitystä alettiin myöhemmin käyttää tietokoneviruksista, jotka levisivät tietokoneesta toiseen. [3]

3.2 Keskustietokonevirukset

Keskustietokoneissa esiintyi 1960-luvun loppupuolella sekä 1970-luvun alkupuolella ohjelmia, joita kutsuttiin nimellä "the rabbit". Ne kopioivat itseään ja varasivat järjestelmäresursseja alentaen näin järjestelmän tuottavuutta. Luultavimmin nämä ohjelmat eivät kopioituneet järjestelmästä toiseen vaan olivat koneita ylläpitävien järjestelmäohjelmoijien erehdyksiä tai jekkuja. Ensimmäinen tapaus jota voidaan kutsua virus-epidemiaksi tapahtui Univax 1108 järjestelmässä. Pervading Animal niminen virus sulautti itsensä suoritettavien ohjelmien perään, kuten sadat virukset kotitietokoneilla paljon myöhemmin. [2]

3.3 Ensimmäinen virussuojausohjelma

1970-luvun ensimmäisellä puoliskolla Tenex käyttöjärjestelmälle kehitetty The Creeper niminen virus käytti maailmanlaajuisia tietokoneverkkoja levitäkseen. Virus pystyi liittymään verkkoon itsenäisesti modeemilla sekä siirtämään itsestään kopion etäjärjestelmään. Ohjelma nimeltä The Reaper luotiin taistelemaan tätä virusta vastaan. Se oli ensimmäinen tunnettu virussuojausohjelma. [2]

3.4 Ensimmäinen käynnistyssektorivirus

Vuonna 1981 Elk Cloner käynnistyssektorivirus aloitti epidemian Apple II kotitietokoneissa. Sen kirjoitti Pittsburghin tiede- ja taideopiston ensimmäisen vuoden opiskelija Richard Skrenta. Se oli ensimmäinen käynnistyssektorivirus kotikoneilla. Käynnistysektorivirukset, kuten Cloner, latautuvat levykkeeltä muistiin ja jatkavat levykkeiden tartuttamista kunnes kone sammutetaan ja muisti tyhjenee. Elk Cloner esitti joka 50. käynnistyskerralla pienen Skrentan runon tyhjällä ruudulla varustettuna. Muuta vahinkoa se ei "ainakaan Apple II käyttöjärjestelmässä" aiheuttanut. [7]

3.5 Purkkien nousu

1980-luvun alussa tietokoneet tulivat yhä yleisemmiksi ja yksityiset henkilöt kirjoittivat ohjelmia kasvavassa määrin ohjelmistoyritysten sijaan. Näitä ohjelmia levitettiin vapaasti modeemipurkeissa sillä seurauksella, että tuolloin esiintyi mittava määrä erilaisia troijalaisia hevosia, jotka aiheuttivat milloin mitäkin vahinkoa järjestelmälle käynnistettäessään. [2]

3.6 Madot

Varhaisessa tietokoneiden verkossa 1980-luvun alkupuolella Xerox kehitti alunperin verkon huoltoon matomaista ohjelmaa. Ohjelmaan pääsi bugi, joka kaatoi koneita. Xerox worm ei tyytynyt rikkomaan pelkästään koneen sisäisiä rajoja vaan levisi myös tietokoneesta toiseen. Tämä on johtanut termin "mato" käyttämiseen virus-ohjelmista, jotka leviävät verkkojen yli itsenäisesti. Termiä käytetään joskus myös viruksista, jotka leviävät käyttäen jotain muuta tapaa kuin kiinnittäytyen ohjelmatiedostoihin. Ensimmäinen laajalle levinnyt pahantahtoinen mato, Morris worm, hyökkäsi verkkojen kimppuun 1988, jolloin internet oli vielä vallankumouksellinen eikä vielä laajassa käytössä. [5] [3]

3.7 Salasanankaappausohjelmat

Troijalaiset salasanankaappausohjelmat olivat suhteellisen yleisiä korkeakouluissa ja yliopistoissa. Hyvin yksinkertaisella ohjelmalla voitiin ruudulle lavastaa sisäänkirjautumiskuvaruutu, johon pahaa aavistamaton käyttäjä kirjoitti tunnuksensa ja salasanansa. Nämä tiedot voitiin tallentaa helposti johonkin tiedostoon kyseisellä koneella tai jopa lähettää sähköpostina viruksen kirjoittajalle. Useimmiten nämä ohjelmat näyttivät tämän jälkeen käyttäjälle ilmoituksen, että kirjautuminen oli epäonnistunut. Jotkut olivat jopa niin kehittyneitä, että syöttivät nämä tiedot edelleen varsinaiselle sisäänkirjautumisohjelmalle, jolloin kaikki vaikutti toimivan normaalisti. [3]

3.8 Viruksia PC:lle - Brain-virukset

Ensimmäinen IBM-PC -virus Brain ilmestyi vuonna 1986. Virus levisi erittäin laajalle, sillä virusta ei tietenkään osattu pelätä. Yleisesti viruksen kirjoittajina pidetään pakistanilaisia veljeksiä Basit ja Amjad Farooq Alvia, jotka sisällyttivät nimensä, osoitteensa ja puhelinnumeronsa viruksen koodiin, mutta täyttä varmuutta viruksen kirjoittajista ei ole. Brain oli myös ensimmäinen stealth-käynnistyssektorivirus. Tartuttaessaan levykkeen virus varasi kaksi vapaata sektoria itselleen sekä kolmannen alkuperäistä käynnistyssektoria varten. Nämä sektorit se merkitsi huonoiksi, jotta virusta ei ylikirjoitettaisi. Kun levykkeen tartutettua käynnistysektoria yritettiin lukea, virus korvasi sen alkuperäisellä sektorilla. Alkuperäinen virus tartutti vain 360 kilotavun levykkeitä, mutta Brainin jälkeläiset saattoivat tartuttaa myös muita levykkeitä sekä kiintolevyjä.

Jokainen laajalle levinnyt virus synnyttää leegion muunnelmia, kun viruksen kirjoittajaksi havittelevat jäljittelijät käyttävät virusta pohjana omille viruksilleen. Den Zuk ja Ohio muunnelmat Brain-viruksesta käyttivät trapping-tekniikkaa, jonka avulla virus voitiin saada selviämään lämpimästä käynnistyksestä eli Ctrl-Alt-Del näppäinyhdistelmän painamisesta. Vaikkakaan virus ei oikeasta resetoinnista selviä, se voi lavastaa koneen uudelleenkäynnistyksen. Den Zuk ja Ohio muunnelmat olivat myös toimivia esimerkkejä viruksista, jotka metsästävät toisia viruksia. Samalla ne ovat myös todisteita siitä, kuinka huono tämä menetelmä on. Muunnelmat olivat nimittäin moninverroin pahempia viruksia kuin mitä alkuperäinen Brain oli. [3]

3.9 Ensimmäinen tiedostovirus DOS-käyttöjärjestelmälle

Ohjelmoija nimeltä Ralph Burger keksi vuonna 1986, että ohjelma voi luoda kopioita itsestään lisäämällä koodinsa suorituskelpoisiin tiedostoihin DOS:ssa. Hänen ensimmäinen viruksensa VirDem esitteli tätä keksintöä. Sen jälkeen lukuisat virukset ovat käyttäneet samaa tekniikkaa. [8]

3.10 Virustenkirjoittamisesta kansanhuvia

Vienna on muistissapysymätön loisvirus, joka ilmestyi vuonna 1987. Ralph Burger tutki tätä virusta ja julkaisi tulokset kirjassaan Computer Viruses: a High-tech Disease. Kirjan ansiosta virusten kirjoittamisesta tuli laajalle levinnyttä "huvia". Burger kertoi kirjassaan, miten viruksia tehdään, ja näin kirja antoi eväät tuhansien virusten kirjoittamiselle.

Vuonna 1987 eräs saksalainen ohjelmoija kirjoitti ensimmäisen viruksen, jossa käytettiin viruksen naamioimiseksi koodausta. Viruksen nimi on Cascade. Suurin osa viruksesta oli koodattu ajon aikana ja vain purkuun tarvittava osa oli luettavissa. Viruksen tunnistamiseksi voitiin käyttää vain muutamia ensimmäisiä tavuja. Tekniikka teki myös viruksen saastuttamien tiedostojen korjaamisen hankalaksi. Mark Washburn vei tämän idean vielä pidemmälle hänen kirjoittamassaan viruksessaan Chameleon, joka oli ensimmäinen polymorfinen virus ja ilmestyi vuonna 1990. Tämäkin virus pohjautui Ralph Burgerin kirjassa tutkitulle Vienna-virukselle. [8]

3.11 Frodo.4096

Yksi tehokkaimmista stealth-tiedostoviruksista kirjoitettiin Israelissa ennen vuotta 1990. Muistissa pysyvä virus käyttää häivealgoritmeja peittääkseen jälkensä käyttöjärjestelmässä. Se verhoaa itsensä tehokkaasti. Kun DOS yrittää päästä käsiksi tartunnan saaneeseen tiedostoon, virus korvaa sen alkuperäisen koon sekä viimeisen muutospäivämäärän. Luettaessa tai ladattaessa tiedostoa muistiin, se muokkaa informaatiota siten, että kaikki näyttää normaalilta. Tartunnan saanutta tiedostoa avattaessa virus korjaa tiedoston, jottei virusta ylikirjoitettaisi, ja tartuttaa tiedoston uudelleen, kun tiedosto suljetaan. Jos tartunnan saaneen levykkeen käynnistää tiettyyn aikaan vuodesta, virus tulostaa näytölle viestin "FRODO LIVES!". [6]

3.12 Polymorfiset virukset nousevat

Vuosi ensimmäisen polymorfisen viruksen Chameleonin jälkeen vuoden 1991 huhtikuussa ilmestynyt toinen polymorfinen virus Tequila onnistui leviämään maailmanlaajuisesti. Tequila-sukuiset virukset ovat muistissapysyviä harmittomia polymorfisia stealth-viruksia. Ne tarttuvat .EXE -päätteisiin tiedostoihin. Näitä tiedostoja ajettaessa ne kopioivat pääkäynnistyslohkon tilalle oman versionsa. Alkuperäisen pääkäynnistyslohkon ne kopioivat C-aseman loppuun ja pienentävät C-aseman osiotaulukon kokoa piilottaakseen viruksen. Virukset latautuvat muistiin vain tartutetulta pääkäynnistyslohkoilta käynnistettäessä. Sisäisen laskurinsa avulla virukset esittävät jollain käynnistyskerralla värikkään Mandelbrot-fraktaalin sekä viestin.

Hyvänä esimerkkinä polymorfisesta viruksesta voisi mainita erään vaarallisen muistissa pysyvän polymorfisen loisviruksen, joka on nimetty Trout2.6804:ksi. Se kirjoitettiin ilmeisesti Italiassa 1995. Virus kirjoittaa itsensä COM-tiedostojen loppuun. Tämän jälkeen se yrittää poistaa löytämänsä virussuojatietokannat. Virus tarkistaa ajettavien ohjelmien nimet ja kiinnittää erityistä huomiota virussuojaohjelmiin. Kun se havaitsee, että virussuojaohjelma aiotaan käynnistää, se koodaa muistissa olevan kopionsa polymorfisella moottorilla salakieliseksi ja kiinnittää purkukäskyn lopetusosoitteeseen. Sitten virus pyyhkii pois sen koodaamattoman kopion muistista ja palauttaa ohjauksen DOS:lle. Näin virussuojaohjelman toiminnan ajan virusta ei löydy muistista eikä mitään virukselle ominaisia osoitteita ole kiinnitetty. Kun virussuojaohjelma palauttaa ohjauksen DOS:lle, virus purkaa itsensä sekä lataa itsensä uudelleen muistiin. [6]

4. Virustyypit

Virukset jaetaan usein perinteisiin viruksiin, sähköpostiviruksiin, matoihin sekä trojalaisiin hevosiin.

Lähdeluettelo

  1. Brain, Marshall, Howstuffworks, How Computer Viruses Work
    < http://computer.howstuffworks.com/virus.htm > (viitattu 2.2.2003) [1]
  2. AVP Virus Encyclopedia * Swiss site - AVPVE: What are computer viruses and how to fight them - Chronology of Events
    < http://www.avp.ch/avpve/entry/entry3.htm > (viitattu 3.2.2003) [2]
  3. Slade, Robert M., History of Computer Viruses, 1992
    < http://www.bocklabs.wisc.edu/~janda/sladehis.html > (viitattu 3.2.2003) [3]
  4. Cohen, Fred, Dr., Statement of Dr. Fred Cohen, Sandia National Laboratory, For the Joint Economic Committee, 23. helmikuuta, 2000
    < http://www.cdt.org/security/dos/000223senate/cohen.html > (viitattu 3.2.2003) [4]
  5. Cella, Julio, Antivirus at SMTP Gateways Level, 9. huhtikuuta, 2001
    < http://www.sans.org/rr/malicious/gateway.php > (viitattu 4.2.2003) [5]
  6. Kaspersky, Eugene, Computer Viruses - Computer Virus Classification
    < http://www.viruslist.com/eng/viruslistbooks.html?id=21 > (viitattu 4.2.2003) [6]
  7. The Computer Virus - an incomplete history
    < http://www.kheper.auz.com/resources/computers/security/virus-history.htm > (viitattu 22.2.2003) [7]
  8. Solomon, Dr. Alan, A Brief History of PC Viruses, S&S International, syyskuu, 1995
    < http://www.bocklabs.wisc.edu/~janda/solomhis.html > (viitattu 23.2.2003) [8]

Lisätietoja

Miro Lahdenmäki ( http://www.iki.fi/miro.lahdenmaki/ )
Tämän esseen kirjoittajan kotisivu.

Valid XHTML 1.1!