Vaikka valmiit ohjelmat testataan, jää ohjelmiin silti joskus virheitä, joita ei ole havaittu testaamisvaiheessa. Useimmiten virheet ovat pieniä, eivätkä haittaa ohjelman käyttöä, ja vain harvoin virheistä aiheutuu käyttäjälle suoranaista vahinkoa. Usein virheen syy ei johdu suoranaisesti ohjelmasta, vaan siitä, että tekninen kehitys on tuonut markkinoille niin monta erilaista järjestelmää, ettei ohjelmoija millään voi testata ohjelmaansa kaikilla eri kokoonpanoilla. Ongelmia voi syntyä esimerkiksi, kun uusia järjestelmiä käytetään vanhoilla ohjelmilla.
Myös laitesuunnittelussa voi tapahtua virheitä. Esimerkiksi Intelin 8272A-mikropiiristä löytyi suunnitteluvirhe, joka eräissä tapauksissa saattoi aiheuttaa virheellisiä kirjoitusoperaatioita levykkeelle. Vika havaittiin vasta kun piiriä oli ehditty käyttämään jo noin 25 miljoonassa mikrossa.
3.2 Madot
Mato (worm) on ohjelma, joka leviää itsenäisenä koneen keskusmuistissa. Se lisääntyy kopioimalla itseään, kunnes keskusmuisti on tullut täyteen. Leviämisessään se käyttää hyväkseen järjestelmien turvallisuudessa olevia aukkoja.
3.3 Troijan hevoset
Muinaisen esikuvansa mukaan Troijan hevonen näyttää ulospäin kiinnostavalta ja hyödylliseltä, mutta sen sisälle on lisätty ylimääräinen ja käyttäjälle näkymätön pätkä koodia, joka aiheuttaa vahinkoa. Tämä koodi saattaa esimerkiksi laittaa muistiin käyttäjän antaman salasanan ja välittää sen tekijälleen.
Mikrojen yleistyessä Troijan hevonen sai hieman toisenlaisen merkityksen. Troijalaiseksi alettiin kutsua ohjelmaa, joka nimensä perusteella näytti hyödylliseltä, mutta joka heti käynnistyttyään tekikin pelkkää vahinkoa, esimerkiksi tyhjentämällä koko kiintolevyn. Troijan hevonen tekee tuhoa siinä missä viruskin. Viruksesta poiketen Troijan hevonen ei kuitenkaan lisäänny, eli se ei pyri levittämään itseään uusiin tiedostoihin.
3.4 Pommit
Pommit ovat Troijan hevosten erikoistapauksia. Vahinkoa aiheuttava osuus on kätketty ohjelman sisään niin, että se aktivoituu vasta ohjelmoijan asettamien ehtojen täyttyessä. Ehdot voivat liittyä esimerkiksi aikaan tai vaikkapa levyn täyttöasteeseen.
3.5 Virukset
Virus on ohjelma, joka pyrkii levittämään itsestään kopioita ja tuottamaan vahinkoa käytettäville ohjelmille ja tiedoille. Virukset voidaan jakaa kahteen eri ryhmään toimintatavan mukaan eli suoraan toimiviin viruksiin ja muistinvaraisiin viruksiin.
3.5.1 Suoraan toimivat virukset
Kun saastunut ohjelma käynnistetään, suoraan toimiva virus (direct action viruses) etsii polusta tai muualta levyltä saastumattomia tiedostoja ja saastuttaa sen. Tämän jälkeen virus käynnistää isäntäohjelmansa ja lopettaa toimintansa, kunnes jokin saastunut tiedosto ajetaan uudelleen.
3.5.2 Muistinvaraiset virukset
Muistinvaraiset virukset (Terminate and Stay Resident viruses) jäävät muistiin, kun saastunutta ohjelmaa ajetaan, tai kun kone käynnistetään saastuneelta käynnistyslohkolta. Ne kaappaavat itselleen DOSin käyttämiä keskeytyksiä. Keskeytyspyynnön tullessa virus saa kontrollin itselleen ja pystyy tekemään tarvittavat toimenpiteet ennen varsinaisen keskeytyskäsittelijän kutsumista. Virus kaappaa keskeytyksen kirjoittamalla DOSin keskeytysvektoritaulukkoon oman koodinsa osoitteen. Tätä ennen se on tallentanut alkuperäisen osoitteen muualle. Yleisesti käytettyjä keskeytyksiä ovat esimerkiksi int 08h, int 09h, int 13h ja int 21h. Näiden keskeytysten avulla voidaan lähes koko koneen toiminta kontrolloida ja näin mahdollistetaan viruksen tehokas leviäminen. Keskeytys int 08h on kellokeskeytys. Sitä käyttävät virukset, joiden aktivoituminen on jotenkin aikaan sidonnainen. Int 09h on näppäimistökeskeytys, jonka avulla pystytään muuttamaan käyttäjän painamien näppäimien koodeja tai tulostamaan näytölle eri merkki kuin on painettu.Virukset, jotka haluavat kontrolloida levyjen käsittelyä, kaappaavat keskeytyksen int 13h. Tätä keskeytystä käytetään, kun halutaan ohittaa DOSin levynkäsittelyrutiinit, jotka ovat keskeytyksen int 21h takana. Tällöin ollaan tekemisissä suoraan koneen BIOSin kanssa ja pystytään kirjoittamaan suoraan esimerkiksi osiotaulukkoon ilman että, DOS pystyy estämään sitä.
4. VIRUKSEN LEVIÄMINEN
Voidakseen toimia viruksen on päästävä työmuistiin, jossa se kiinnittyy vapaaksi jääneeseen tilaan. Kun virus saa prosessorin suorittamaan omaa koodiaan, se alkaa toimia. Muistiin pääsemiseen on kaksi tapaa. Virus voi ladata itsensä muistiin käyttöjärjestelmän mukana heti, kun kone käynnistetään. Tämä edellyttää, että virus on kiinnittynyt levyllä alueille, joita alkulataukseen käytetään. Toinen tapa päästä muistiin on jonkin sovellusohjelman mukana. Kun sovellus haetaan levyltä muistiin ja käynnistetään, käynnistyy ensiksi sovelluksen mukana oleva virus. Virus jää muistiin ja vasta sen jälkeen käynnistetään itse sovellus. Näiden kahden tavan lisäksi on olemassa kolmaskin mahdollisuus, jossa virus tarttuu suoraan levyllä olevaan tiedostoon, jolloin viruksen ei tarvitse piiloutua. Kun viruksen sisältämä ohjelma käynnistetään, virus etsii levyltä jonkin uuden ohjelman ja tarttuu siihen. Tällainen virus leviää kahta ensimmäistä tapaa hitaammin, mutta sitä on vaikeampi huomata, koska virus ei missään vaiheessa jää muistiin.
Keskusmuistissa ollessaan viruksen on helppo levitä. Se voi esimerkiksi tutkia jokaisen levykkeen ja kopioida itsensä niille, elleivät ne ole kirjoitussuojattuja. Jos kyseessä on ohjelmiin tarttuva virus, se voi tartuttaa jokaisen koneessa ajettavan ohjelman.
4.1 Viruksen leviämistavat
Leviämistavan mukaan virukset voidaan jakaa neljään ryhmään eli käynnistyslohkovirukset, tiedostovirukset, kumppanivirukset ja ryväsvirukset.
4.1.1 Käynnistyslohkovirukset
Käynnistyslohkoviruksia (boot sector viruses) on vain pieni osa kaikista tunnetuista viruksista. Silti suuri osa raportoiduista virushavainnoista, on käynnistyslohkoviruksia. Syynä lienee käyttäjien huolimattomuus levykkeiden käsittelyssä.
Käynnistyslohkon koko on 512 tavua, ja siitä on osa varattu levyn teknisille tiedoille. Tämä asettaa rajoituksia viruksen koolle. Tämän takia virukset kirjoittavat vain alun koodistaan sinne ja loput levylle normaaliin tapaan. Nämä alueet virus merkitsee viallisiksi (bad sector). Kopio alkuperäisestä käynnistyslohkosta sijoitetaan yleensä samaan paikkaan viruksen loppuosan kanssa. Kone voidaan suojata käynnistyslohkoviruksilta SETUP-toiminnolla, jolla kielletään kokonaan käynnistäminen levykkeeltä.
4.1.2 Tiedostovirukset
Tiedostoihin tarttuva virus kopioi itsensä ohjelmatiedoston loppuun tai alkuun ja käy lisäämässä alkuperäisen ohjelman koodiin hyppykäskyn, siten että virusosuus ajetaan ennen varsinaista ohjelmaa. Tälläisen viruksen tekeminen on helpompaa kuin piiloutuvan viruksen, mutta se on myös helpompi huomata. Viruksen voi havaita heti tiedoston pituuden kasvusta.
Yksinkertaisinta virukselle on tarttua COM-tiedostoon, jolloin sillä on useita eri tapoja tarttua. Viruskoodi voidaan lisätä kokonaan ohjelman alkuun, jolloin se suoritetaan kokonaan ennen varsinaista ohjelmaa. Useimmiten varsinainen viruskoodi lisätään kuitenkin ohjelman loppuun ja ohjelman alkuun lisätään vain hyppykäsky viruskoodiin. Viruskoodin jälkeen on vastaavasti hyppykäsky alkuperäiseen ohjelmaan. COM-virusten suosio perustuu tiedoston vanhanaikaiseen muotoon, jota on yksinkertaista muokata.
EXE-tiedostojen rakenne eroaa COM-tiedostojen rakenteesta, joka tekee tilanteen virusten kannalta hieman hankalammaksi. EXE-tiedostot sisältävät otsikko-osan (header), jonka avulla käyttöjärjestelmä voi pilkkoa tiedoston vaihtelevanpituisiin osiin. Virus voi tarttua tiedoston eteen tai perään. Kun se liittyy tiedoston perään, muutetaan ensin otsikko-osaa. Tiedoston kokoa ilmaiseva kenttä muutetaan uutta kokoa vastaavaksi. Tämän jälkeen suurennetaan relocation tablea, jossa on ohjelman osien muistiosoitteet. Siihen lisätään uusia osoitteita siten, että viruskoodin suorittamisen jälkeen osataan hypätä alkuperäisen ohjelman alkuun. Jos otsikko-osan tarkistussummakenttää on käytetty, täytyy se päivittää uutta tiedostoa vastaavaksi. Lopuksi muutetaan ohjelman alkuosoitetta siten, että ensimmäinen suoritettava osa on viruskoodi. Tässä tapauksessa ei siis välttämättä tarvitse koskea ollenkaan alkuperäisen ohjelman koodiin.
4.1.3 Kumppanivirukset
Jos ohjelma käynnistetään ilman tarkenninta, etsii käyttöjärjestelmä hakemistosta ja polusta BAT-, COM- ja EXE-tyyppisiä tiedostoja. Löydettäessä samannimisiä ohjelmia, joilla on eri tarkennin, suoritetaan ensiksi COM-päätteinen ohjelma.
Kumppanivirukset (companion viruses) tarttuvat vain EXE-päätteisiin ohjelmiin, luoden samaan hakemistoon kopion viruksesta COM-päätteiseksi ohjelmaksi. Kun ohjelmaa ajetaan, käynnistyy ensin virusohjelma, joka suoritettuaan omat toimenpiteensä käynnistää alkuperäisen ohjelman. Suorituksen jälkeen kontrolli palaa jälleen virukselle.
4.1.4 Ryväsvirukset
Ryväsviruksissa (cluster viruses) on erikoista se, että niiden ei tarvitse muuttaa kohteena olevia ohjelmatiedostoja, vaan ainoastaan hakemistotietoja varausyksiköiden kohdalta. Jokaisen tartutetun ohjelman ensimmäisen varausyksikön tavupari muutetaan osoittamaan levyllä viruksen koodia, joten ohjelman suorittaminen saa aikaan viruksen käynnistymisen.
Näitä viruksia on löydetty ensimmäisen kerran vuoden 1991 lopussa. Ensimmäinen ryvästekniikkaa käyttävä virus oli DIR-II, joka on yksi kaikkein tehokkaimmin leviävistä viruksista. Se tallettaa oman koodinsa kahteen viimeiseen varauslohkoon ja merkitsee ne varatuiksi. Koneen saastumisen jälkeen jokaisen ohjelman aloituslohko osoittaa viruskoodiin. Alkuperäiset aloitusosoitteet se tallettaa johonkin hakemistoalueen käyttämättömälle osalle salakirjoitettuna. Niiden avulla se voi käynnistää alkuperäisen ohjelman.
4.2 Virusten kehittyneemmät kannat
Virusten tunnistamista ja poistamista varten on kehitetty tunnistamis- ja poisto-ohjelmia. Tämän takia myös virusten tekijät ovat kehittäneet uusia viruksia, joita olisi entistä vaikeampi havaita.
4.2.1 Metatoituvat virukset
Yleinen tapa metatoituvien virusten koodin toteuttamiseen on sen salaus. Kryptauksen kehittyneempi vaihe on mutaatiovirus, joka vaihtaa käyttämäänsä salakirjoitusavainta aina saastuttaessaan uutta ohjelmaa. Tällöin viruksen voi tunnistaa vain siitä osasta, joka purkaa kryptauksen.
Polymorfiset virukset ovat kaikkein kehittynein muoto tällä osa-alueella. Ne osaavat muuttaa myös sitä osaa koodistaan, joka hoitaa muun koodin kryptauksen purkamisen. Näissä viruksissa ei ole mitään kiinteää bittisarjaa, jota virusten torjuntaohjelmat voisivat etsiä.
4.2.2 Piilovirukset
Piilovirukset (stealth viruses) ovat muistinvaraisia, sillä jos ne eivät ole muistissa, eivät ne myöskään pysty toimimaan. Muistissa ollessaan ne kaappaavata kaikki levyn käsittelykeskeytykset itselleen, jolloin ne pystyvät kontrolloimaan kaikkia levyyn kohdistuvia operaatioita. Ne ovat immuuneja levyjä tutkiville ohjelmille, myös tarkistussummalaskennalle, sillä huomatessaan lukupyynnön saastuneeseen ohjelmaan, ne piilottavat itsensä näkyvistä ja antavat pyytävälle ohjelmalle tiedoston alkuperäisen sisällön. Piiloviruksen löytämiseksi ainoa tapa on tutkia koneen keskusmuisti ja etsiä viruksen jälkiä sieltä. Torjuntaohjelmien tulisi tarkistaa koneen keskusmuisti ensin, sillä levyn tarkistaminen viruksen ollessa muistissa saattaisi pahimmassa tapauksessa saastuttaa kaikki levyllä olevat ohjelmat.
4.2.3 Retrovirukset
Nykyisin ovat yleistymässä ns. retrovirukset (retro viruses), eli virukset jotka hyökkäävät virustentorjuntaohjelmia vastaan. Alkeellisemmat aiheuttavat koneen jumiutumisen tai tuhoavat virustentorjuntaohjelman löytäessään sen. Retrovirus voi myös hämätä virustutkaa siten, että se luulee kaikkien ohjelmien olevan saastuneita. Edistyneemmät versiot pyrkivät muuttamaan torjuntaohjelmien koodia siten, etteivät ne pysty löytämään viruksia, vaikka näyttävätkin toimivan normaalisti.
4.2.4 Sovellusohjelmavirukset
Nämä virukset on tehty sovellusohjelman omalla makro- tai ohjelmointikielellä ja ne leviävät vain kyseisen ohjelman sisällä piiloutuen sen tekemiin työtiedostoihin. Erityisen vaarallisia ovat makrot, jotka käynnistyvät automaattisesti, kun ohjelma käynnistetään tai kun jokin työtiedosto avataan. Tällainen virus voi kopioida itsensä jokaiseen käytettävään työtiedostoon ja näin levittää itseään. Tämän tyyppisiä viruksia on kuitenkin lukumääräisesti vähän.
4.2.5 Moniosaiset virukset
Moniosaiset virukset (multipartition viruses) osaavat tarttua useampiin kohteisiin. Perinteiset virukset tarttuvat vain esimerkiksi johonkin tiettyyn tiedostotyyppiin. Se voi tarttua niin tiedostoihin, levykkeiden käynnistyslohkoihin, kiintolevyjen ositustauluihin kuin myös hakemistotietoihinkin. Näiden virusten poistaminen on hankalaa. Esimerkiksi jos tiedostot saadaan puhdistettua, on olemassa vaara, että käynnistyslohko jää tarkistamatta ja puhdistamatta.
5. VIRUKSEN AKTIVOITUMINEN
Kun virus alkaa käyttämään konetta muihin tarkoituksiin kuin lisääntymiseensä, virus aktivoituu. Noin puolet viruksista ei koskaan aktivoidu, vaan ne ainoastaan lisääntyvät.
Yleisesti käytetty aktivoitumistapa on aikapommin käyttö. Aprillipäivä, kuten myös kuun kolmastoista päivä, ovat olleet suosittuja. Jotkut virukset pitävät kirjaa tartuntojen määrästä ja aktivoituvat jonkun tietyn tartuntamäärän jälkeen. Yksi tapa on aktivoituminen puolen tunnin tyhjäkäynnin jälkeen, jolloin käyttäjä ei todennäköisesti ole paikalla keskeyttämässä viruksen tekosia.
Viruksen mahdollisesti aiheuttama tuho on sitä suurempi, mitä yllättävämmällä hetkellä se aloittaa toimintansa. Useat virukset pyrkivät leviämään mahdollisimman laajalle ennen tuhojen aloittamista. Toisaalta, koska vähittäinen aktivoituminen jättäisi paljon aikaa tuhojen estämiseen, viruksen liikkeellä olevat kopiot pyrkivät aktivoitumaan kaikkialla samanaikaisesti.
Toinen tapa on looginen pommi, jolloin viruksen aktivoitumisen aiheuttaa jokin laatijan mielivaltaisesti valitsema kriteeri, esimerkiksi näppäimistöltä kirjoitettu sana tai tietyn tiedostonimen käyttäminen.
Virus voi tehdä myös ns. rappeuttavan hyökkäyksen, eli se vähitellen muuttelee tietoja levyllä. Jos virus esimerkiksi muuttaa vain yhden satunnaisen bitin jostain päin levyä joka kerta käynnistyessään, vaurion havaitseminen kestää todennäköisesti pitkään. Rappeuttava hyökkäys saattaa kohdistua myös vain tietyn ohjelman tiedostoihin, aiheuttaen vaikkapa muutaman prosentin suuruisia pyöristysvirheitä taulukkolaskentaohjelman taulukon lukuihin.
6. VIRUKSEN HAVAITSEMINEN
Koska kaikki virukset ovat erilaisia, ei ole olemassa yksiselitteisiä ohjeita virusten havaitsemiseksi. Tyypillisiä virusten aiheuttamia oireita ovat mm.
Viallisen alueiden (bad sector) määrä kasvaa levyllä. Normaalikäytössä niiden määrä ei kasva. Jos vika-alueiden määrä kasvaa käytön aikana, voi asialla olla virus, joka yrittää piiloutua vialliseksi merkitsemäänsä kohtaan levyllä.
Ohjelmatiedostojen pituudet muuttuvat. Kun virus tarttuu ohjelmatiedostoon, tiedoston pituus kasvaa ja tämä on lähes varma merkki viruksen olemassaolosta.
Keskusmuistin määrä on pienentynyt. Jos virus haluaa suojata itsensä poispyyhkimiseltä, on sen varattava osa muistista pysyvästi itselleen.
Koneen toiminta hidastuu. Normaalisti viruksen ohjelmakoodin suorittamiseen kuluu niin lyhyt aika, ettei sitä havaitse ilman mittauksia. Hidastuminen voi muuttua näkyväksi silloin, kun virus tekee itsestään kopioita tai tutkii, onko asemaan laitettu levy jo saanut tartunnan, vai pitäisikö se tartuttaa nyt. Jos levyke on kirjoitussuojattu, kuluu virukselta aikaa ennen kuin se huomaa yrityksensä turhaksi ja luopuu. Tällöin näennäisesti ilman syytä saadaan kirjoitussuojauksesta virheilmoitus.
Ohjelma ei mahdu enää muistiin. Jos aiemmin moitteettomasti toiminut ohjelma antaa äkkiä ilmoituksen "Insufficient memory", eikä suostu enää käynnistymään, voi syynä olla virus. Virus on voinut kasvattaa ohjelmatiedoston koon niin suureksi, ettei se enää mahdu muistiin. Normaalisti virukset tarttuvat vain kerran kuhunkin ohjelmatiedostoon, mutta jostain viruksista tämä tarkistus puuttuu. Esimerkiksi Jerusalem-viruksen B-versiossa on ohjelmointivirhe, jonka vuoksi se kasvattaa ajettavan ohjelman kokoa jokaisella ajokerralla 1813 tavua. Viruksesta on liikkeellä myös versio, jossa tämä virhe on korjattu.
Viruksen aiheuttamat oireet ovat kuitenkin usein niin huomaamattomia, että niitä ei normaalikäyttäjä huomaa, ennen kuin virus on siirtynyt toimintavaiheeseen. Silloin virus ilmoittaa itsestään joskus hyvinkin näkyvällä tavalla, esimerkiksi näyttämällä tekstiviestejä, kuvia tai aiheuttamalla ääniefektejä. Edellä mainittu Jerusalem B-virus poistaa kaikki ohjelmat, joita käyttäjä yrittää ajaa 13. päivä perjantaina. On olemassa myös viruksia, jotka vaativat käyttäjää osallistumaan. Esimerkiksi Casino vaatii käyttäjää pelaamaan erän Blackjackia. Jos käyttäjä voittaa, palautetaan levyn sisältö.
7. VIRUSTEN TORJUNTA
Paras tapa torjua viruksia on ennaltaehkäisy, sillä jos viruksen on kerran saanut, voi siitä olla hyvinkin hankalaa päästä eroon. Ennaltaehkäisyn kaksi perusasiaa ovat levykkeen poistaminen A-asemasta ennen koneen käynnistämistä ja vieraiden levykkeiden käytön välttäminen ainakin ilman asianmukaista virustarkistusta. Jos virus kuitenkin on päässyt saastuttamaan koneen, niin silloin on tärkeää tartunnan tunnistaminen riittävän ajoissa, eli ennen kuin korvaamatonta tuhoa on päässyt syntymään. Tämän lisäksi pitää huolehtia riittävästä varmuuskopioinnista tiedostojen turvaamiseksi.
Viruksien torjuntaan ja etsimiseen on kehitetty erilaisia suojausohjelmia. Nämä virusten ja troijalaisten torjuntaan tarkoitetut ohjelmat voidaan jakaa seitsemään ryhmään niiden toimintaperiaatteiden mukaisesti.
Yleiset apuohjelmat, joita voidaan muiden toimintojen ohella käyttää virusten etsintään ja havaitsemiseen. Esimerkiksi Norton Utilities-paketti tarjoaa levynkäytön apuohjelmia, joiden avulla voidaan katsoa suoraan päähakemistoon, levyn käynnistyslohkoon, tai levyn nollauralle ja muuttaa niissä olevia tietoja. Jos virus pääsee tuhoamaan levyn, on jonkin levytyökalun käyttö ainoa tapa pelastaa edes osa tiedostoista.
Virusten etsintäohjelmat, jotka etsivät levyltä viruksia niiden "sormenjälkien" perusteella. Ohjelman muistissa on pätkiä tunnettujen virusten ohjelmakoodista. Jos näitä merkkejä havaitaan levyllä olevista tiedostoista, annetaan virusvaroitus. Väärien hälytysten välttämiseksi on etsintäohjelmien käyttämät ohjelmakoodien pätkät koodattu, jotta toiset etsintäohjelmat eivät luule niitä viruksiksi. Koska virukset kehittyvät ja uusia viruksia ilmestyy koko ajan, pitää virustorjuntaohjelmia päivittää säännöllisesti. Yleisten ohjelmien lisäksi on olemassa suuri joukko tiettyä virusta varten tehtyjä etsintä- ja tuhoamisohjelmia.
Tarkistussumman käyttöön perustuvat ohjelmat, jotka antavat varoituksen mikäli ohjelmatiedoston pituus tai sisältö muuttuu. Tutkimisohjelma kirjaa tietokantaansa kaikkien levyllä olevien ohjelmien nimet, pituudet, tekoajat sekä ohjelmatiedostojen sisällöstä lasketun tarkistussumman. Ohjelman toimintaa voidaan laajentaa siten, että se tarkistaa myös nollauran, osiotaulukon ja käynnistyslohkon sisällön.
Tarkistussummaan perustuvien ohjelmien hyvänä puolena on niiden kattavuus. Ne toimivat sellaisiakin viruksia vastaan, joista ohjelman tekijällä ei ole ollut aavistustakaan. Heikkoina puolina on ison levyn tutkimiseen, summien laskemiseen ja tulosten vertaamiseen kuluva aika, joka saattaa olla kohtuuttoman pitkä. Ohjelmien kopioinnin ja poistamisen jälkeen tietokannan ylläpitäminen on myös työlästä.
Muistinvaraiset torjuntaohjelmat, jäävät muistiin virusten tavoin ja yrittävät sieltä käsin havaita mahdolliset virukset. Havaitseminen perustuu keskeytysten tarkkailuun. Muistinvarainen tarkkailuohjelma voi seurata mm. levylle meneviä kirjoituspyyntöjä. Hälytys annetaan, eikä pyyntöä viedä loppuun asti, mikäli kutsussa annetut parametrit osoittavat esimerkiksi suoraa kirjoittamista varatuille alueille.Ne voivat tarkastaa suoritettavat ja kopioitavat ohjelmat, sekä käytettyjen levykkeiden käynnistyslohkot. Joissakin ohjelmissa on mahdollista tarkistaa myös levykeasema.
Tutkimisohjelmat, joiden avulla ohjelma voidaan analysoida virusten ja troijalaisten havaitsemiseksi ennen sen ajamista. Ne pyrkivät selvittämään ohjelmatiedoston toimintaa lukemalla sen suoraan levyltä normaalin tiedoston tavoin ja ja analysoimalla ohjelmasta löytyviä konekielisiä käskyjä. Näiden käytössä on rajoituksena mm. se, ettei ohjelma voi tietää mikä kohta tutkittavasta koodista on dataa ja mikä varsinaista ohjelmakoodia. Koodianalyysin lisäksi tutkimisohjelmat tulostavat myös ohjelmakoodista löytämänsä selväkieliset merkkijonot. Viruksista vain harvat ( kuten Disk Killer ja Dark Avenger ) sisältävät selväkielisiä tekstejä.
Tietoturvaohjelmat, jotka pyrkivät estämään koneen asiatonta käyttöä ja sallivat vain ennalta tutkittujen ja hyväksyttyjen ohjelmien käynnistämisen.
Muihin ohjelmiin kuuluvat mm. levykkeiden ja tiedostojen "rokottamiseen" tarkoitetut ohjelmat, sekä virusten poisto-ohjelmat.
Jokaisella ohjelmatyypillä on omat hyvät ja huonot puolensa, eikä mikään ohjelma yksinään riitä antamaan täydellistä suojaa viruksia vastaan. Nykyisin virustentorjuntaohjelmat sisältävät yleensä useita edellä mainituista tavoista.
7.1 Torjuntaohjelmia
IBM julkaisi oman virusten etsintäohjelmansa VIRSCANin syksyllä 1989. Sen tuntemat virukset luetellaan kahdessa tekstitiedostossa, SIGBOOT.LST (levykevirukset) ja SIGFILE.LST (tiedostovirukset). Tiedostossa on lueteltu kunkin viruksen nimi, sekä etsintään käytetyt "sormenjäljet" heksadesimaalimuodossa.
Virscanin ensimmäiset versiot eivät tunteneet kovinkaan monta virusta. Ne saattoivat jopa levittää muistissa olevaa Dark Avengeria huomaamatta sitä lainkaan. Uudemmissa versioissa asia on korjattu. Ohjelma tarkistaa ensiksi keskusmuistin ja jos se havaitaan puhtaaksi, aloitetaan tiedostojen tutkiminen. Myös tunnettujen virusten määrää on lisätty päivittämällä LST-tiedostoja.
McAfeen ohjelmista tunnetuin on VIRUSCAN eli lyhyemmin SCAN. Se on virusten etsimisohjelma, jossa etsiminen voidaan rajoittaa yhteen tiedostoon, yhteen hakemistoon tai kohdistaa koko levyyn. Käynnistettäessä Scan tarkistaa ensin itsensä. Jos ohjelmaan on tarttunut virus, tai Scanin koodia on muutettu muulla tavoin, tulostuu virheilmoitus, eikä virusten etsimistä aloiteta.
Muita McAfeen virustentorjuntaohjelmia ovat mm. CLEAN-UP, joka on virusten saastuttamien tiedostojen ja levykkeiden puhdistusohjelma. VSHIELD on muistinvarainen ohjelma, joka tarkistaa jokaisen käynnistettävän ohjelman ennen sen muistiin pääsyä.
Tunnetuin pohjoismaalainen virustentorjuntaohjelma on islantilaisen Fridrik Skulasonin F-PROT- niminen paketti. Siihen kuuluu useita erilaisia apuohjelmia. Muistinvaraisena tarkistusohjelmana toimii DOSissa VIRSTOP ja Windowsissa F-PROT Gatekeeper VxD. Näiden lisäksi pakettiin kuuluu mm. tarkistussummaohjelma ja rokotusohjelma.
8. TUNNETTUJA VIRUKSIA
Jerusalem-viruksesta tunnetaan useita, hieman toisistaan poikkeavia versioita, joten kyseessä ei ole ainoastaan yksi virus. Ensimmäisen kerran virus havaittiin Jerusalamin yliopistolla vuonna 1987. Virus tarttui sekä COM- että EXE-tiedostoihin kasvattaen näiden pituutta1813 ja 1808 tavulla. Kun virus oli ollut muistissa 30 minuuttia, se siirsi osan kuvaruudusta kaksi riviä ylöspäin ja hidasti sen jälkeen koneen toimintaa, koska virus alkoi kiertämään ylimääräisessä silmukassa. Alkuperäinen virus aktivoitui 13. päivä perjantaina ja tuhosi kaikki sinä päivänä ajetut ohjelmat.
Dark Avenger-viruksesta on liikkeellä useita eri muunnelmia. Tämä tarttuu myös sekä COM-, että EXE-tiedostoihin. Muistinvaraisena ollessaan se ajettavien ohjelmien lisäksi saastuttaa myös luettavat ohjelmatiedostot. Jos virustentorjuntaohjelma ei huomaa sitä, niin se tartuttaa viruksen jokaiseen EXE- ja COM-ohjelmaan levyn tarkistuksen yhteydessä. Kun saastunutta ohjelmaa suoritetaan, on kuudestoistaosan mahdollisuus, että virus kirjoittaa satunnaisesti valitulle sektorille osan koodistaan mahdollisesti jonkun tiedon päälle.
Yankee doodle-virus tarttuu COM- ja EXE-tiedostoihin, jolloin ohjelman pituus kasvaa 2881-2897 tavua. Yleensä kello 17 se soittaa muutaman tahdin nimikkosävelmästään. Muuten tämä virus on harmiton, sillä se ei poista tiedostoja.
Finnish Sprayer-virus on tehty Suomessa ja ensimmäisen kerran se havaittiin vuonna 1993. Finnish Sprayer on käynnistyslohkovirus, joten se tarttuu vain, kun kone yritetään käynnistää saastuneelta levykkeeltä. Sen ollessa aktiivisena muistissa, ainut mahdollisuus sen toteamiseen on löytää se suoraan muistista. Aktivoituessaan se kirjoittaa yli ensimmäisen osion (tavallisesti C-levy) satunnaisella datalla. Lopuksi se kirjoittaa viestinsä näytölle.
9. VIRUSTEN AIHEUTTAMIA VAHINKOJA
Aktivoituneiden virusten aiheuttamat taloudelliset menetykset voivat olla huomattavia. Seuraavaksi on esitelty joitakin virusten ja Troijan hevosten aiheuttamia vahinkoja.
9.1 Lehigh-yliopisto
Lehigh-yliopistossa lokakuussa vuonna 1987 sattunut virustartunta oli ensimmäisiä laajoja virustartuntoja. Virus tuhosi kaikki tiedostot viidestäsadasta MS-DOS-käyttöjärjestelmälle pohjautuvasta koneesta ja tarttui noin 3000 levykkeelle.
Yliopiston kirjastolla oli tapana lainata opiskelijoille tietokoneohjelmia käytettäväksi kotitehtävissä ja muissa harjoituksissa. Muutaman päivän sisällä suuri osa kirjastoon palautetuista ohjelmista oli käyttökelvottomia.
Tartunta levisi yliopiston alueella lähes kaikkiin mikrotietokoneisiin. Tartunnan poistamisen kulut arvioitiin yli sadaksituhanneksi markaksi ja tuhoutuneen tiedon arvoksi yli miljoona markkaa.
9.2 AIDS-levyke
Joulukuussa vuonna 1989 tuhannet PC Business World-lehden lukijat saivat mainospostituksen. Lähetys sisälsi tuote-esitteen ja levykkeen. Esitteen mukaan levyke sisälsi laajan AIDS-tietokannan ja ohjelman, jonka avulla saattoi testata omaa riskiään saada tartunta.
Levykkeen mukana tuli myös ohjelman lisenssiehdot sisältävä paperi. Jotkut lukivat ehdot huolellisesti ja päättivät sen perusteella olla asentamatta ohjelmaa. Tuhannet muut eivät niitä lukeneet tai eivät välittäneet niistä ja asensivat ohjelman.
Levyke sisälsi troijalaisen, joka piilotti itsensä kiintolevylle ja jonkin ajan kuluttua salakirjoitti sen sisällön käyttökelvottomaksi. Samalla käyttäjälle tulostettiin järjestelmän oletuskirjoittimella valmis tilauslomake, jonka täyttämällä ja tietyn summan maksamalla saattoi ohjelman laatijalta saada koodin, jonka avulla levyllä olevat tiedot voitiin saada jälleen esiin. Kyseessä oli siis eräänlainen kiristys.
Levykkeen lähettäjä, PC Cyborg Corporation, paljastui Panamalaiseksi postilaatikkoyritykseksi. PC Business Wold-lehdellä ei ollut mitään tekemistä itse levykkeen kanssa. Se oli vain vuokrannut PC-Cyborg-yhtiölle oikeuden käyttää postituslistaansa. Lehti otti kuitenkin vastuun Troijan hevosen tutkimisesta ja sen poistamiseen tarvittavan ohjelman "AIDSOUT.EXE" kehittämisestä.
9.3 Joulupuuvirus
Joulupuuvirus oli troijan hevosen sisältävä sähköpostiviesti, joka levisi IBM:n sisäisessä verkossa ja IBM:n tukemassa akateemisessa verkossa joulun 1987 alla. Viestin sisältönä oli ohjelma, jonka alkukommenteissa pyydettiin tallentamaan se tiedostoon ja sen jälkeen suorittamaan.
IBM:n perinteenä oli ollut lähettää ihmisille joulukortteja sähköpostilla, joten kukaan ei ihmetellyt joulupuuviruksen sisältävän viestin saapumista.
Kun ohjelman ajoi, se toivotti hauskaa joulua muodostamalla päätteelle joulupuun kuvan. Sivuvaikutuksena ohjelma lähetti itsensä kaikille, joiden tunnus löytyi käyttäjän elektronisesta postiluettelosta.
Ohjelma aiheutti verkon ylikuormituksen moneksi päiväksi. Se kopioi itseään noin puoli miljoonaa kertaa kahden tunnin sisällä. Sen arvioidaan aiheuttaneen kuuden miljoonan dollarin arvoisen häiriön, vaikka se ei tehnyt mitään tahallisen pahantahtoista.
10. LÄHDELUETTELO
Hyppönen Ari, Turtiainen Esa, Virus - tietokone sairastaa, Suomen Atk-kustannus Oy, 1990
Järvinen Petteri, Tietokonevirukset, WSOY, 1990
Toikkanen Tarmo, Virukset - Miten mikro sairastuu?, Mikrobitti 8/96
Ukkonen Sami, Luk-tutkielma, Jyväskylän yliopisto, Matematiikan laitos