- COMP.SEC.100
- 7. Haittaohjelmat ja hyökkäystekniikat
- 7.3 Haittaohjelmien havaitseminen
Haittaohjelmien havaitseminen¶
On tärkeää ymmärtää tavat, joilla haittaohjelma pääsee järjestelmään. Haittaohjelma tulee usein sähköpostin liitetiedostosta. Tällöin hyökkääjän etuna on, että liite läpäisee palomuurit eikä fyysisiä turvallisuusmekanismeja tarvitse usein ohittaa. Riittää, että sähköposti saavuttaa käyttäjän ja käyttäjä saadaan suorittamaan liitteen haittakoodi. Vastaavan kaltainen tilanne on verkkosivuille istutetuilla haittaohjelmilla. Ne läpäisevät suojauksia tehokkaasti. Lisäksi ne voivat aktivoitua jopa ilman käyttäjän aktiivisia toimia.
Haittaohjelma voi tulla myös suoraan haavoittuvuuden kautta. Internetissä on jatkuvasti käynnissä automatisoituja hyökkäyksiä, jotka etsivät haavoittuvia laitteita. Sellaisen löydettyään ne tunkeutuvat laitteeseen ilman käyttäjän aktiivisia toimia. Erityisesti IoT-laitteet ovat olleet haavoittuvia niiden puutteellisten oletusasetusten sekä heikon päivitettävyyden vuoksi.
Haittaohjelma voi tulla myös ulkoisesta laitteesta. Erityisesti USB-portin kautta tulevat haittaohjelmat ovat osoittautuneet vaarallisiksi. Haittaohjelma voi olla rakennettu kytkettävään laitteeseen. Esimerkiksi latauslaite, tuuletin tai USB-tikku voi olla rakennuttu sisältämään haittaohjelman. Tämäntyyppinen hyökkäys ohittaa myös eristetyn verkon. Tästä on esimerkkinä Stuxnet-madon leviäminen Iranin ydinvoimalaitokseen, jossa USB-tikulla päästiin sisään suljettuun verkkoon.
Joskus haittaohjelma on jo valmiiksi asennettuna. Tällöin hyökkääjä on ohittanut laadun tarkastusketjun tai tuote itsessään saattaa olla suunniteltu sisältämään haitallista koodia.
Päästyään järjestelmään haittaohjelma voi olla muistissa, tiedostoissa, levätä odottaen komentoja tai ohjelmoitua toimintoa, tarkkailla, levitä, tehdä aktiivisia toimia tai päivittää itsensä. Tämä kaikki riippuu siitä, miten haittaohjelma on rakennettu. Haittaohjelma havaitaan tietojärjestelmästä sen aiheuttamien oireiden, muutosten, monitoroinnin tai torjuntaohjelmien avulla. Torjuntaohjelmista tyypillisiä ovat virustentorjuntaohjelmat sekä tunkeutumisen havainnointijärjestelmät (IDS, Intrusion Detection System).
Arkipäiväistä haittaohjelmaturvaa
Yksityishenkilön tärkein työkalu haittaohjelmilta suojautumiseen on ehdottomasti maalaisjärki. Kun jättää epäilyttävät hyperlinkit tai sähköpostit avaamatta sekä arveluttavat ohjelmat lataamatta ja suorittamatta, on haittaohjelmilta suojautuminen jo varsin hyvällä mallilla.
Kaikki kuitenkin tekevät virheitä, esimerkiksi kiireisenä tai väsyneenä, joten jonkinlainen virustentorjuntaohjelma on koneelta hyvä löytyä. Mikäli käytät Windows-konetta etkä aio sijoittaa virustentorjuntaohjelmaan rahaa, voidaan Windows 10/11:stä löytyvän Windows Defenderin katsoa olevan parempi vaihtoehto kuin jonkun muun tarjoajan ilmaisversio. Näin on ainakin sikäli, että siinä on enemmän ominaisuuksia eikä se jatkuvasti mainosta maksullista versiota. Virustentorjuntaohjelmaa täydentävä torjuntakeino on asentaa selaimeen vihamielisiä sivustoja estävä lisäosa, kuten uBlock Origin (HUOM. Ei pelkkä uBlock).
Aikaisemmin kohtalaisen suosittu menetelmä saada uhri suorittamaan haittaohjelma oli naamioida se joksikin toiseksi tiedostomuodoksi, eli tyypillisesti ohjelmatiedosto (executable, Windowsissa .exe) tai komentorivin kautta toimiva komentosarja (batch-file, Windowsissa .bat) naamioitaisiin vaikkapa kuvatiedostoksi (esim. .jpg). Näin ollen haittaohjelman nimeltään “haittaohjelma.bat” nimi muutettaisiin esimerkiksi muotoon “lomatervehdys.jpg.bat”. Ongelman tästä tekee se, että Windowsissa tiedostopäätteet ovat vakiona piilotettuja, eli uhrille tiedosto näkyy “lomatervehdys.jpg”:nä. Kyseistä haittaohjelmaa voisi levittää vaikkapa sähköpostitse, kuten kuuluisaa ILOVEYOU-matoa. Vaikka esimerkkimato on vuodelta 2000, Windowsin vakioasetukset mahdollistavat samankaltaisen harhautuksen edelleen. Sähköpostin liitetiedostojen turvallisuutta on onneksi parannettu. Ohjeet tiedostopäätteiden näyttämiseen löydät täältä.
Tiedostopäätteiden havainnollistamiseksi ensimmäisessä kuvassa tiedostopäätteet ovat näkyvillä, eli “.bat”-päätteestä näkee heti, ettei kyseessä ole kuvatiedosto.
Toisessa kuvassa tiedostopäätteet ovat piilotettu, jolloin vain tiedoston nimi on näkyvissä. “.jpg” on lisätty nimeen hämäämään niitä, jotka tunnistavat päätteen kuvatiedostoksi.
Tiedostoa klikkaava uhri saisi riesakseen haarukkapommin. Maailmaa se ei kaada, mutta tietokoneen kylläkin. Kyseinen haittaohjelma kuitenkin toimii kokonaan keskusmuistissa eikä sellaisenaan leviä muihin tiedostoihin, eli tietokone toimii normaalisti uudelleenkäynnistyksen jälkeen. Tästä huolimatta muista, että haittaohjelmien levittäminen on rikos.
Haittaohjelmahyökkäysten paljastaminen¶
Sormenjäljillä ja muulla staattisella tunnistamisella voidaan tunnistaa entuudestaan tunnettu haittaohjelma. Tämä ei kuitenkaan riitä, sillä haittaohjelmia kehitetään jatkuvasti lisää ja myös entuudestaan tuntemattomia haittaohjelmia on tarpeen tunnistaa. Tarvitaan siis staattisen tunnistamisen lisäksi dynaamista tunnistusta.
Monitorointi työasemassa ja verkossa (syventävä)¶
Yksi keino tunnistaa haittaohjelmia on poikkeavuuksien tunnistaminen (anomaly detection). Poikkeavuus on jotain, mikä eroaa järjestelmän normaalista toiminnasta. Näin voidaan tunnistaa haittaohjelmien aiheuttamia muutoksia, mutta poikkeavuudet voivat johtua myös jostain muusta.
Tehokas tapa havaita haittaohjelmien vaikutuksia on käyttää tunnettujen hyökkäyksien sormenjälkiä. Hyökkäyksen sormenjäljellä tarkoitetaan tunnistettavia toimia, jotka ovat hyökkäykselle tyypillisiä. Tätä kutsutaan väärinkäytösten tunnistamiseksi (misuse detection). Esimerkkinä on vaikka sähköpostin liitetiedostona tulleen ohjelman pyrkimys poistaa tiedostoja.
Hyökkäyksiä voidaan pyrkiä tunnistamaan sekä työasemalla että verkossa. Näitä kannattaa käyttää yhdessä, sille ne täydentävät toisiaan. Verkossa pystytään tunnistamaan asioita verkon laajuisesti, mutta toisaalta salattua verkkoliikennettä ei pystytä avaamaan. Työasemalla salaus pystytään purkamaan ja päästään sovellustasolle, mutta verkon laajuinen analysointi ei ole mahdollista.
Tarkastellaan seuraavaksi muutamia esimerkkejä:
Roskapostia lähdettiin alkuun tunnistamaan analysoimalla sähköpostin sisältöä ja erottelemalla roskaposti muista sähköposteista. Myöhemmin kehitettiin lisäksi verkkopohjaista analysointia, jolla pystytään tunnistamaan roskapostia mm. lähetysmäärien ja lähetyslähteen perusteella.
(Toimituksen lisäys: Roskaposti ilman ajettavaa koodia ei ole haittaohjelma. Voidaan ajatella, että roskapostia lähetetään kuitenkin haittaohjelmalla, jos se on erikseen suunniteltu roskapostin lähetystä varten. Toisaalta roskaposti voi myös sisältää haitallista koodia tai se voi linkittää sellaiseen.)
Palvelunestohyökkäyksiä voidaan tunnistaa analysoimalla verkkoliikennettä, sen voimakkuutta, liikenteen sisältöä ja lähteitä. Kun liikenteen lähde saadaan selville, se voidaan sulkea pois. Useita lähteitä voidaan tunnistaa tietoliikenteen samankaltaisuudella. Toisaalta edistyneitä hyökkäyksiä voi olla vaikea havaita, sillä tietoliikenteen voimakkuus ja muoto voivat vaihdella.
Kiristyshaittaohjelmia voidaan tunnistaa muutoksilla suureen määrään tiedostoja. Tiedoston salakirjoitus havaitaan siitä, että tiedoston sisältö muuttuu kokonaisuudessaan.
Tietovuoto voidaan tunnistaa ja estää, jos verkkoliikenteessä havaitaan epäilyttäviä tunnisteita, kuten tilitietoja, salasanoja jne. Työasemassa olevalla analysointityökalulla voidaan tarkemmin jäljittää hyökkäyksen tapahtumia ja vaikutuksia.
Botnet-ohjelmia voidaan jäljittää verkkoliikennettä analysoimalla sekä työasemakohtaisilla tunnistusohjelmilla.
Koneoppimiseen perustuva turva-analytiikka (syventävä)¶
Koneoppimista on kehitetty 1990-luvulta lähtien automaattiseen haittaohjelmien ja hyökkäysten tunnistamiseen. Koneoppimista voidaan käyttää haittaohjelmien tunnistamiseen käyttämällä suurta määrää haittaohjelmia ja ei-haittaohjelmia tekoälyn opetusaineistona. Aineiston perusteella opitaan tunnistamaan uusia haittaohjelmia. Koneoppimista voi käyttää myös dynaamiseen tunnistamiseen: opetusaineistona voi olla esim. järjestelmäkutsut, tietovirrat ja verkkoliikenne. Koneoppimista on käytetty menestyksekkäästi myös bottiverkkojen jäljittämiseen. Tämä on perustunut DNS-nimien, DNS-liikenteen ja muun verkkoliikenteen analysointiin.
Hyökkäykset koneoppimista vastaan (syventävä)¶
Koneoppimisen yleiset rajoitteet ovat mukana myös haittaohjelmien tunnistuksessa. On tärkeää, että oppimisaineiston on laajaa ja oikein luokitettua. Tunnistamisessa tulee helposti vääriä positiivisia ja negatiivisia.
Haittaohjelmien tekijät ovatkin oppineet kiertämään tunnistusta. Tämä tapahtuu tekemällä toimenpiteitä, jotka vaikuttavat sallituilta. Tällöin koneoppiminen luokittelee hyökkäyksen tai koodin väärin, mikä vaikeuttaa edelleen vastaavien hyökkäysten oikeata tunnistusta. Hyökkääjät voivat myös harhauttaa koneoppimista sisällyttämällä haittakoodin sekaan toimintoja, jotka ovat yleisiä tavallisissa ohjelmissa. Tällöin tapahtuu vääränlaista oppimista: tavalliset operaatiot vaikuttavat haittaohjelmien signaalilta. Tätä kutsutaan myös opetusdatan myrkyttämiseksi (data poisoning).
Hyökkääjät voivat lisäksi lieventää hyökkäyksen aktiivisuutta niin, että tunnistuksen raja-arvo ei ylity. Tietoliikennettä saatetaan lähettää ainoastaan samalla, kun sitä on muutenkin. Hyökkäystoimet saattavat jäljitellä käyttäjän tai järjestelmän normaalia toimintaa. Hyökkäyksen tai haittaohjelman muuntuvuus toimii myös koneoppimisen harhauttamisessa, sillä hyökkäysmallit vaikuttavat erilaisilta.