- COMP.SEC.100
- 7. Haittaohjelmat ja hyökkäystekniikat
- 7.1 Haittaohjelmat
Haittaohjelmat¶
Haittaohjelmalla (engl. malware = malicious software) tarkoitetaan ohjelmaa, joka tekee tarkoituksellisesti jotain haitallista. Haittaohjelmatyyppejä ovat mm. virukset, madot, Troijan hevoset, vakoiluohjelmat (spyware), botnet-haittaohjelmat ja kiristyshaittaohjelmat (ransomware)
Viruksen ja madon määritelmä on lähes yksiselitteinen: Ohjelma (tai koodinpätkä) kykenee tekemään itsestään rekursiivisesti ja itsenäisesti leviäviä kopioita. Huomaa, että kopioiden ei tarvitse olla identtisiä eikä jokaisen kopion tarvitse kyetä leviämään. Huomaa myös, että määritelmä ei ota sellaisenaan kantaa haitallisuuteen.
Troijan hevosella tarkoitetaan ohjelmaa, joka sisältää tai vaikuttaa sisältävän jonkin hyödyllisen toiminnon, mutta siihen on tarkoituksella piilotettu jokin haitallinen toiminto. Toisin kuin virus ja mato, Troijan hevonen ei leviä itsenäisesti.
Botnet-haittaohjelmalla tarkoitetaan mitä tahansa haittaohjelmaa, joka on osa botnetin muodostavaa verkkoa. Botnet-verkolla puolestaan tarkoitetaan joukkoa tietokoneita tai laitteita, jotka yhdessä pystyvät tekemään ohjattuja hyökkäyksiä. Botnet-verkko on tyypillisesti muodostettu murretuista koneista, joista osa on ohjauskoneita (master) ja osa ohjattavia koneita (slave).
Haittaohjelmien luokittelu¶
Haittaohjelmia on monenlaisia ja niiden tarkka määrittely ei ole aina edes mahdollista. Haittaohjelma edellyttää tahallista haitallista tarkoitusta, mutta tekijän mieltä ei voi tietää. Toisaalta alun perin normaaliin käyttötarkoitukseen kehitettyä ohjelmaa voidaan käyttää haitallisesti. Tästä esimerkkinä on vaikka ohjelma, joka poistaa tiedostoja. On kuitenkin tärkeää luokitella haittaohjelmia, jotta niitä pystyy ymmärtämään sekä käyttämään ja kehittämään suojautumiskeinoja. Siksi tässä esitetään Cybokin mukainen luokittelu. (Toimituksen huomautus: Tämä on yksi luokittelu ja on siis muitakin hieman eriäviä tapoja luokitella haittaohjelmia. Eroavaisuuksia käsitellään tekstin ohessa.)
Yksi luokittelu on, onko haittaohjelma itsenäinen vai osa jotain toista ohjelmakoodia. Tämä on yksi tapa erotella madot ja virukset: molemmat kykenevät tekemään rekursiivisesti leviäviä kopioita itsestään. Madot ovat itsenäisiä, kun taas virukset ovat osa jotain toista ohjelmakoodia. (Toimituksen lisäys: Tästä eroava määritelmä on luokitella madot virusten osajoukoksi.) Itsenäinen tiedostossa oleva haittaohjelma on helpompi löytää, koska tiedoston sormenjälki on löydettävissä. Viruksen lisäksi isäntäohjelmaa edellyttäviä haittaohjelmia ovat mm. haitalliset selainten liitännäiset, selaimissa ajettavat skriptit ja ohjelmien makrot.
Haittaohjelma voi olla myös pysyvä tai poistuva. Useimmat haittaohjelmat ovat pysyviä eli tyypillisesti osa tiedostojärjestelmää. Haittaohjelma voi olla myös poistuva silloin, kun se on asennettu osaksi poistuvaa muistia, kuten tietokoneen tai laitteen keskusmuisti. Esimerkiksi osa IoT-laitteita tartuttavista haittaohjelmista poistuu, kun laitteen käynnistää uudestaan.
Haittaohjelma voi olla myös muistiin jäävä (memory resident), jolloin se jää keskusmuistiin. Tällöin haittaohjelma myös poistuu, kun laitteen virta katkaistaan. (Toimituksen lisäys: Esimerkiksi viruksiin on usein rakennettu sekä keskusmuistiin jäävä osa, että pysyvä tiedostossa oleva osa, jolloin haittaohjelma ei poistu.)
Haittaohjelma | Isäntäohjelma tai ilman | Pysyvä vai poistuva | Järjestelmän kerros | Automaattisesti leviävä | Päivitettävissä | Koordinoitu |
---|---|---|---|---|---|---|
Virukset | Isäntäohjelma | Pysyvä | Laiteohjelmistosta ylöspäin | Kyllä | Kyllä | Ei |
Haitalliset selainlaajennukset | Isäntäohjelma | Pysyvä | Sovellus | Ei | Kyllä | Kyllä |
Botnet-haittaohjelma | Isäntäohjelma | Molemmat | Kernelistä ylöspäin | Kyllä | Kyllä | Kyllä |
Muistiinjäävä haittaohjelma | Isäntäohjelma | Poistuva | Kernelistä Ylöspäin | Kyllä | Kyllä | Kyllä |
Monet haittaohjelmat sisältävät hämäännyttämistä (obfuscation). Tavoitteena on löytämisen vaikeuttaminen sekä manuaalisesti että automaattisesti. Tähän on useita tekniikoita ja haittaohjelmien tekijät voivat käyttää valmiita työkaluja. Yksi jo 1990-luvulla joidenkin virusten käyttämä tekniikka on muuntuvuus eli polymorfisuus. Tämä tarkoittaa, että haittaohjelman kopiot poikkeavat toisistaan. Toteuttamiseen on erilaisia tekniikoita, kuten ohjelmakäskyjen järjestyksen muuttaminen, saman toiminnon eri käskyillä toteuttaminen, tyhjät käskyt, pakkaaminen ja salakirjoitus. Salakirjoitettaessa voidaan käyttää esim. vaihtuvaa avainta. Kun haittaohjelma on joka kerralla riittävän erilainen perinteinen tapa verrata binäärikoodia tai sen osia ennalta tallennettuun bittijonoon ei enää toimi tunnistamisessa.
Haittaohjelman pysyvää bittijonoa tai bittijonojen yhdistelmää kutsutaankin sormenjäljeksi (fingerprint). Kyseessä voi olla bittijonojen yhdistelmä, sillä joissain haittaohjelmissa polymorfisuus kattaa osia koodista, mutta jotkin osat ovat pysyviä. Polymorfisen haittaohjelman sormenjälki voi siis olla joka kerta erilainen. Haittaohjelman purku on kuitenkin oltava viruksen itsensä tehtävissä, joten koodia analysoimalla sen purkumekanismi on mahdollista jäljittää. Torjuntaohjelma voi myös virtuaalisesti suorittaa haittaohjelman koodia riittävän pitkälle ja saa näin salauksen purettua ja ohjelman tunnistettua.
Virus liittyy osaksi isäntäohjelmaa lisäämällä haitallisen koodin isäntäohjelmaan. Kun isäntäohjelma suoritetaan, myös viruskoodi ajetaan. Virus etsii muita tartutettavia kohteita ja liittää itsensä osaksi niitä. Virus voi olla myös päivitettävissä, jos se pystyy ottamaan internet-yhteyden.
Mahdollisesti ei-toivotut ohjelmat¶
Mahdollisesti ei-toivottu ohjelma (Potentially Unwanted Program, PUP) on yksi luokitus, joka myös kuvaa sitä, että ohjelma voi olla jossain tilanteessa haitallinen, mutta toisessa haluttu. Raja ei siis itsestään selvä, sillä ohjelman käyttöyhteys ja käyttäjä vaikuttavat. PUP-ohjelma on tyypillisesti jokin hyödyllinen ohjelma, joka sisältää haitallisen toiminnon. PUP-ohjelmat sisältävät usein tiedon toiminnastaan käyttöehdoissaan. Harva kuitenkaan huomaa, mitä käyttöehdoissa kerrotaan.
Yksi esimerkki PUP-ohjelmasta on ohjelma, joka sisältää mainoksia (Adware). Tyypillisesti PUP-ohjelma myös kerää tietoa käyttäjästä. Jos tämä tapahtuu ilman käyttäjän lupaa, on kyseessä vakoiluohjelma (Spyware). Vakoiluohjelma voi olla tietoisesti tehty keräämään laajakin joukko tietoa, kuten yhteystietoja ja salasanoja. Tällöin kyse onkin selkeästä haittaohjelmasta.