Tietoturva : Think Like a Hacker

Tietoturva-arjen kysymyksiä ja vastauksia kirjan perusteella

Ohje: Valitse nimikoimaton tehtävä (sellaisen numero) alla olevasta luettelosta. Nimikoi se eli kirjoita nimesi sen alkuun numeron jälkeen ja nimen jälkeen toteutuskerran tunnus muodossa (201*-x), missä x=s tai k. Tämän voit tehdä aiheen varauksena jo ennen kuin saat kirjaa haltuusi. Laadi noin 150 sanan mittainen vastaus tehtävän alle. Jos käytät myös jotain muuta kuin omaa ja kirjan tietämystä, merkitse lähdeviite.

Michael J. Melone: Think Like a Hacker: A Sysadmin's Guide to Cybersecurity

Kirja on hyvin suppea, ja sen ehtii hyvin lukea viikossa kokonaankin. Tehtävät keskittyvät kirjan nimessä esiintyvään perusideaan, hakkerin ajatusmaailman - ja yleisemmin hyökkäävän tahon strategian - soveltamiseen. Tämä ei tule yhtä selvästi  esille kaikissa kirjan luvuissa, mutta sielläkin missä käsitellään turvamekanismeja ja niiden arkkitehtuuria, taustalla ovat tietenkin hyökkäykset.

Tehtävät on otsikoitu kirjan lukujen mukaan, paitsi yksi kirjan keskeinen sanoma (palvelukeskeisyys) on erotettu loppuun viimeiseksi.

Tutki siis kirjaa kokonaisuutena ja keskity sitten valitsemasi tehtävän mukaiselle alueelle ja selitä, miten järjestelmän ylläpitäjä (tai yleisemmin puolustaja) voi siinä soveltaa hyökkääjän näkökulmaa. Kirjoitettuasi tekstin, keksi sille naseva otsikko tai edes käännös ja sijoita se luvun otsikon perään.

1. What is Cybersecurity?

2. Noora Hartikainen (2017-s)  Access and Authorization

Kirjan luku Access and Authorization käsittelee näiden sanojen merkitystä. Hyökkääjät yrittävät aina löytää uusia keinoja saavuttaa pääsy tai valtuudet järjestelmiin ja organisaatioihin.

Pääsyllä (access) tarkoitetaan kykyä olla yhteydessä johonkin tai johonkuhun. Hyökkääjältä suojautuvan on tärkeää huomioida, että pääsyllä voidaan tarkoittaa muutakin kuin vain pääsyä tietokoneelle. Tietokoneen kanssa voi keskustella monia eri reittejä pitkin. Näitä ovat verkkoliittimet, osoitinlaitteet, langattomat syötelaitteet, erilaiset portit, sensorit ja monitorit. Nämä kaikki tarjoavat hyökkääjälle mahdollisuuden esimerkiksi tietojen keräämisen tai ohjelmakoodin ajamiseen.

Saadakseen pääsyn hyökkääjän ei tarvitse päästä kohdeorganisaation tietokoneelle. Hyökkääjä voi ottaa yhteyttä työntekijään ja manipuloida tämä tekemään haluttuja toimintoja hyökkääjän puolesta. Epäsuoralla pääsyllä voidaan saavuttaa yhtä onnistunut hyökkäys kuin suoralla. Yksi esimerkki epäsuorasta pääsystä on Stuxnet-haittaohjelman levittäminen USB-tikkujen välityksellä. Hyökkääjät luottivat siihen, että käyttäjät kytkisivät muistitikun tietokoneeseen ja haittaohjelma tartuttaisi kohteen. Kun pääsy on saavutettu, hyökkääjä haluaa todennäköisesti pitää sitä yllä. Tämä yleensä tarkoittaa takaoven avaamista kohdeorganisaatioon. Tällainen takaovi voi olla haittaohjelma, jota kutsutaan tavallisemmin implantiksi tai Troijan hevoseksi.

Valtuutuksella tarkoitetaan kykyä suorittaa toiminto kohteeseen. Tämä toiminto voi olla laillinen tai laiton. Erilaisia valtuuksia voi olla fyysisen avaimen hallussapito lukkoon, käyttäjälle voidaan myöntää oikeudet käyttää resursseja tai käyttäjällä voi olla PIN-koodi portin avaamisen. Valtuuden laillisuus riippuu aina näkökulmasta. Jos henkilö on varastanut avaimen, voi hän avata lukon laittomasti, mutta lukon näkökulmasta se on avattu laillisesti. Lukon kannalta laitonta olisi tiirikan käyttäminen lukon avaamiseen. Suojatakseen järjestelmänsä hyökkääjiltä ylläpitäjän ei pidä jakaa valtuuksia liian. Ylläpitäjän tulisi myös pitää huolta siitä, että käyttäjälle turhat valtuudet poistetaan ajoittain, jotta yhdelle henkilölle ei kerry liian laajoja oikeuksia.

3. Ville Koljonen (2018-s): Vulnerability Chaining

Epäsuora luonne on ominainen useille erilaisille kyberhyökkäyksille. Yksittäisellä tietomurrolla voi olla pitkälle kantava ketjumainen vaikutus, joka on osattava ennakoida organisaation tietoturvallisuutta rakennettaessa. Kirjan luvussa Vulnerability Chaining käsitellään ketjuttuneiden haavoittuvuuksien rakenteita esimerkkien avulla, sekä määritellään keskeisimpiä pääsynvalvontajärjestelmän turvallisuuteen liittyviä käsitteitä.

Ketjutettu haavoittuvuus syntyy, kun jollakin järjestelmän toimijalla on oikeuksien kertymisen, vajavaisen suunnittelun tai jopa laiskuuden vuoksi tarkoituksenmukaista laajemmat käyttöoikeudet. Tämäkin voi olla suoraa tai epäsuoraa: eri roolien oikeuksia kerryttäneellä käyttäjällä on selvästi mahdollisuus monenlaisiin toimenpiteisiin, mutta vain sopiva kirjoitusoikeuskin voi sallia jopa admin-tason operaatioita (vrt. SQL-injektio). Hyökkääjä pyrkii aktiivisesti etsimään tällaisia toimijoita kohteestaan, joten hänen näkökulmansa valitseminen voi auttaa löytämään ja ehkäisemään haavoittuvuuksia.

Alla on esitelty kolme esimerkkiä ketjutetusta haavoittuvuudesta kasvavan linkkien määrän mukaisessa järjestyksessä. Tilanteet ovat varsin vahvasti yksinkertaistettuja, eivätkä sellaisenaan toivottavasti löydy oikeasta maailmasta, mutta ne kuvaavat hyvin ketjujen luonnetta.

  1. Työaseman käyttäjällä on admin-oikeudet. Social engineering -hyökkäyksen avulla on tällöin mahdollista saada haitallinen ohjelma asennettua ja päästä käsiksi suojattuun tietoon.
  2. Käyttäjä kuuluu organisaation tietokoneista vastaavien ryhmään. Tämän ryhmän jäsenillä on oikeus vaihtaa muiden tunnusten salasanoja. Toimitusjohtajalla on pääsy omaan työsähköpostiinsa. Varastamalla alkuperäisen käyttäjän tunnukset on siis mahdollista päästä käsiksi toimitusjohtajan sähköpostiin.
  3. Käyttäjä kuuluu järjestelmänvalvojien ryhmään. Tämän ryhmän jäsenillä on admin-oikeudet organisaation palvelimelle. Toisen käyttäjän kirjautumistiedot ovat tallentuneena tälle palvelimelle. Tämä käyttäjä kuuluu yrityksen verkkoalueen ylläpitäjien ryhmään, jonka jäsenillä on admin-oikeudet kaikille alueen tietokoneille. Yhden keskitason toimijan tunnukset varastamalla on siis mahdollisuus kaapata koko organisaation tietojärjestelmä.

Monet haavoittuvuusketjuista liittyvät jollakin tavoin järjestelmänvalvojan oikeuksiin yhdellä tai useammalla päätelaitteella. Tästäkin syystä näiden oikeuksien jakaminen tulee minimoida ja käyttöä valvoa keskitetysti. Jälkimmäinen voidaan lisäksi räätälöidä kunkin käyttäjän työtehtävien ja profiilin mukaisesti. Ketjuille tyypillistä on myös, että yhden haavoittuvuuslinkin eliminoiminen katkaisee sen etenemisen. Tällöin parhaassa tapauksessa löydetyt ketjut katkaistaisiin jo alussa, mutta tämän toteuttaminen on paitsi hankalaa, myös mahdollisesti haitallista käyttäjien normaalille sallitulle toiminnalle. Niinpä valvontaa ja käyttöoikeuksien tarkkaa rajoittamista on kannattavaa järjestää lähinnä arvokkaiden toimijoiden kohdalla.

4. Tero Mielikäinen (2019-k) Backdoors and Implants - Takaportit ja niiden istuttaminen

Kun hyökkääjä pääsee käsiksi kohdekoneeseen, yleensä ensimmäisiä toimenpiteitä on takaporttien tai niin kutsuttujen implanttien istuttaminen. Implanttien avulla hyökkääjä saa varmistettua pääsyn ja hankittua oikeudet kohdeympäristöön. Luku "Backdoors and Implants" käsittelee näiden implanttien rakennetta, suojelemista, yhteyksiä hyökkääjään, sekä miten niitä voidaan istuttaa ja ajaa kohdeympäristöihin.

Jokainen implantti tarvitsee koodin tai käännetyn suoritustiedoston toimiakseen. Monesti nämä ovat suoritettavia binäärejä. Jotkin käyttävät tulkattua koodia, jolloin se on hankalampi havaita. Koska koodi määrittelee implantin toiminnan, sitä halutaan suojella.

Implantin suojeluun voidaan käyttää neljää eri tekniikkaa. Ensimmäinen tekniikka on harhauttaminen, joka tarkoittaa, että implantin analysointia tai takaisinmallintamista vaikeutetaan merkittävästi. Seuraava tekniikka on monimuotoistaminen, tarkoittaen, että implantin tiivistettä muutetaan jatkuvasti asennuskertojen välillä, vaikeuttaen sen tunnistamista aiemmista tapauksista. Kolmas tekniikka on säieinjektio, joka tarkoittaa implantin injektointia olemassa olevaan prosessiin. Tällöin implantti ylikirjoittaa ja ajaa koodia sen muistiavaruudessa. Viimeinen tekniikka on piilottaminen, jolloin implantti pyritään piilottamaan lähinnä järjestelmävalvojilta ja käyttäjiltä.

Implantit pyrkivät pitämään yhteyttä hyökkääjään ulospäin, koska palomuurit estävät melko tehokkaasti ulkoapäin tulevat yhteydet. Yhteyksiin käytetään mm. protokollia HTTP/S, SMTP, ICMP ja DNS. 

Jotta takaporteista on hyötyä, ne täytyy siirtää kohdejärjestelmään jotenkin. Tyypillisiä toimitustapoja ovat Troijalainen, haitallisen tiedoston kautta tai sovellusniputtajalla (SoftwareBundler). 

5. Tero Holopainen (2017-s) Strengths and Weaknesses - Vahvuudet ja heikkoudet

Luku Strengths and Weaknesses käsittelee hyökkääjän ja puolustajan vahvuuksia ja heikkouksia. Molempien ymmärtäminen on tärkeää tietojärjestelmien ylläpidossa. Hyökkääjät ovat yleensä hyvin tietoisia vahvuuksistaan ja puolustajien heikkouksista. Hyökkääjän vahvuutena on sitoutumattomuus käyttösääntöihin, ja tämä tuo ketteryyttä hyökkäyksiin. Hyökkääjän on myös helppo ennustaa puolustajan toimet, koska puolustusta sitovat käyttösäännöt ja komentoketjut. Hyökkääjä voi myös käyttää järjestelmää toisin kuin tarkoitettu, ja siten aiheuttaa ennakoimattomia muutoksia.

Toinen hyökkääjän vahvuus on yhteyksien kuuntelu. Kun yhteys kohdejärjestelmään on saatu, hyökkääjän on kohtuullisen helppo pysyä selvillä vastatoimista, jos ne tehdään samassa verkossa. Näin hyökkääjä voi vaihtaa hyökkäystapaa tai kohdetietokonetta/järjestelmää aina, kun edellinen havaitaan. On myös huomattava, että kun hyökkääjä on saanut yhteyden järjestelmään, hän voi käyttää kaikkia sen resursseja, kuten mikrofonia, kameraa ja syöttölaitteita. Näistä erityisesti mikrofoni jää yleensä vähälle huomiolle, vaikka sen kautta yleensä selviää enemmän salaisuuksia kuin kameran, joka yleensä kuvaa koneen käyttäjää

Puolustuksen vahvuuksia ovat hyvä järjestelmän ja verkon tuntemus sekä poikkeuksien havaitseminen. Hyökkääjä tarvitsee kommunikointikanavan, joka voidaan tunnistaa, jos verkon tuntemus on tarpeeksi hyvällä tasolla. Puolustuksen kannattaa myös pitää keskustelu verkon rakenteesta ja havaituista poikkeuksista erillisessä verkossa, niin hyökkääjä ei saa suoraan tietoa havaitsemisestaan.

6. Nico Ahola (2019-k) So you got Pwned

Vaikka tietoturvasta pidettäisiin kuinka paljon huolta, sitä on käytännössä mahdotonta saada täydelliseksi. Tämän takia on syytä osata reagoida asianmukaisesti silloin, kun oma järjestelmä pettää. Luvussa ”So you got Pwned” käsitellään onnistuneesta hyökkäyksestä toipumista erityisesti kohdistetun hyökkäyksen tapauksessa.

Hyökkäyksestä toipuminen tulisi tapahtua kolmessa askeleessa. Ensimmäiseksi kartoitetaan koituneet vahingot, toiseksi tehdään suunnitelma hyökkääjän karkottamiseksi ja viimeiseksi toteutetaan suunniteltu karkotus. Tunnistettaessa vahinkoja pitää tietää, mihin hyökkääjä voi iskeä ja mitä asioita hyökkääjä tarvitsee hyötyäkseen hyökkäyksestä tai pitääkseen sitä yllä. Kun nämä asiat ovat tiedossa, voidaan niitä alkaa etsiä puolustussuunnitelman laatimiseksi.

Kun hyökkääjä on päässyt verkkoon, ei hän todennäköisesti halua sieltä lähteä. Hyökkääjä myös tulee todennäköisesti reagoimaan puolustajan toimiin heti niitä havaittuaan. Puolustajan on tärkeää tiedostaa tämä ja toteuttaa kattava sekä nopea vastaisku, jotta hyökkääjälle jää mahdollisimman vähän aikaa reagoida puolustukseen. Tässä kirjan nimi tulee parhaiten esille: kun osaat ajatella kuten hakkeri, osaat laatia riittävän puolustussuunnitelman hakkerin karkottamiseksi.

Suunnitelman laatimisen jälkeen tulee se pistää käytäntöön ja karkottaa hakkeri verkosta. Karkottamisessa tulee tiedostaa, että hyökkääjän yhteys verkkoon tapahtuu takaovien tuottamien kanavien kautta, joten näiden kanavien tukkiminen johtaa parhaimmillaan hakkerin eristämiseen kokonaan pois verkosta. Tämän jälkeen otetaan takaisin haltuun kaikki järjestelmät ja pääsytiedot mahdollisimman nopeasti. Järjestelmien ja pääsytietojen takaisin haltuunoton tulisi alkaa tärkeimmistä kohteista, sillä niillä hakkeri voi saada pahinta tuhoa aikaan. Viimeisenä toimenpiteenä on enää verkon valvonta ja suojautuminen mahdollisilta uusilta hyökkäyksiltä.

7. Designing an Access and Authorization Strategy (luvun alkupuoli sivuun 58 asti)


8. Mikko Ollila (2019-k) Designing an Authentication Strategy – Autentikointijärjestelmän suunnittelu

Tämä kirjan luku antoi neuvoja siihen, miten autentikointijärjestelmä tulisi suunnitella. Tarkoituksena on löytää tilanteeseen sopiva tapa niin turvallisuuden kuin käytettävyydenkin kannalta.

Symmetriset tunnistautumiset, kuten salasana tai sen tiiviste ovat helppo toteuttaa. Niiden heikkoutena on kuitenkin se, että ne täytyy säilöä jossain keskitetysti. Tähän tietovarastoon tunkeutuminen saattaa vaarantaa koko järjestelmän. Tällaiset tunnukset ovat myös alttiita salakuuntelulle ja uudelleenkäytölle. Tunnusten siirron verkossa pitäisi siis tapahtua aina suojatusti ja sisältää ylimääräistä suojaavaa tietoa, kuten sessioavaimen ja aikaleiman.

Epäsymmetriset tunnistautumiset, eli yleisesti yksityisen ja julkisen avaimen järjestelmät vastaavat moniin symmetristen heikkouksiin. Data on luettavissa vain avainten haltijoiden välillä ja avaimia ei tarvitse säilöä keskitetysti. Kolmatta osapuolta voidaan kuitenkin käyttää varmentamaan avaimia (Certification Authority). Koska yksityistä avainta ei siirretä, sitä ei voida myöskään kaapata. Avain on myös mahdollista purkaa etänä. Avaimen käsittely voi tapahtua erillisessä moduulissa (TPM) tai avain voi olla sirukortilla.

Autentikointiin voidaan käyttää myös monivaiheista tunnistautumista, jossa yleensä yhdistetään kaksi tai useampaa tunnistustapaa. Jotain mitä käyttäjä tietää, omistaa tai on. Esimerkiksi salasana, avainkortti ja sormenjälki.

Tiivistettynä ylläpitäjien kannattaisi toteuttaa autentikointijärjestelmät siten, että verkossa tapahtuva autentikointi tapahtuisi epäsymmetrisesti ja käytettäisiin erillisiä turvamoduuleja tai avainkortteja, jotka on liitetty yksittäiseen laitteeseen. Laitteen vaarantuminen ei silloin vaarantaisi koko järjestelmää. Pääsy näihin moduuleihin tai kortteihin voidaan suojata vahvalla symmetrisellä salauksella, sillä tunnukset ovat vain paikallisia.

9. Patrik Aalto (2018-k) A Case for the Cloud

Kirjan luku “A Case for the Cloud” käsittelee riskien näkökulmasta työmäärän siirtymistä pilvipalvelun tarjoajalle ja vertailee tapahtuman hyötyjä ja riskejä. Kirja jakaa pilvipalvelut kolmeen eri kategoriaan, jotka ovat SaaS, PaaS ja IaaS.

Ensimmäinen huoli pilvipalveluiden käytössä liittyy siirtyvään haavoittuvuuteen. Onnistuneen pilvipalveluhyökkäyksen seurauksena hyökkääjä voi päästä käsiksi pilvipalvelun tarjoajan asiakkaiden tietoihin, jos tarjoajalla on asiakasorganisaation valtuudet tai se ylläpitää niitä. Toinen pilvipalveluiden käyttöä koskeva huoli liittyy käyttäjiin, jotka voivat hallita pilvipalvelua.  Nämä käyttäjät voivat kiertää turvallisuustoimet ja tarjota oikeuksia pilvessä olevaan materiaaliin.

SaaS-palvelut ovat täysin ulkoistettuja pilvipalveluratkaisuja, joissa etuja ovat vähäinen kontakti asiakasorganisaatioon ja skaalautuvuus. Riskejä ovat puolestaan suuri luottamus pilvipalvelun tarjoajan toimiin ja mahdollisesti valtuuksien antaminen palvelun tarjoajalle. 

PaaS-palvelut tarjoavat asiakasorganisaatiolle ylläpidetyn alustaratkaisun, joka sallii asiakkaan kehitystyön. PaaS-palvelun riskeinä voidaan pitää palvelun kehittäjien puutteellista ymmärrystä ohjelmistokehityksen elinkaaren menettelyistä tai vastaavasti menettelyiden huomiotta jättämistä. IaaS-palvelut tarjoavat asiakasorganisaatiolle verkkoinfrastruktuurin ja koneiston. IaaS-palvelujen riskit liittyvät pääosin siirtyvään haavoittuvuuteen.

10. Service Centered Architecture (sivulta 59-)