Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
432 lines (227 sloc) 38.6 KB

Penetration testing - vapaamuotoinen palaute kurssitoteutuksesta

Sisällysluettelo


Opitko jotakin? - Omaa taustaa ja kyberturvallisuus

Lyhyesti:

Mitä opetti: Kurssi avasi tietoturvan ja kyberturvallisuuden maailman eteen uudella tavalla.

Kurssin aihepiiristä voisi järjestää kokonaisen koulutushaaran?

Olen käyttänyt ja ylläpitänyt eri Linux-distribuutioita vuodesta 2011 lähtien, noin 7.5 vuotta. Tästä huolimatta avasi kurssi itselleni konkreettisesti uuden maailman, mikä on pidemmällä tähtäimellä kurssin suurin anti suoritettujen harjoitusten lisäksi: Mitä enemmän penetraatiotestauksen maailmaa katsoo myös kurssin ulkopuolelta käsin, sen enemmän ymmärrän, että kyberturvallisuus on maailma, josta monet luulevat tietävänsä, ja itse tiedän, kuinka vähän tiedän. Kurssin pituus ei yksinkertaisesti riitä käsittelemään kaikkea kyberturvallisuuteen liittyvää asiasisältöä, ja loppu oppiminen onkin opiskelijan itsensä tai mahdollisten jatko-opintojen käsissä.

Kyberturvallisuudessa on yksinkertaisesti aihepiiri, josta voisi järjestää kokonaisen IT-koulutushaaran oppilaitoksessa. Kyberturvallisuus leikkaa nykymaailmassa montaa eri ammattialaa, koska maailma on monessa kolkassa työntymässä yhä enemmissä määrin IT-ratkaisujen varaan. Tämä korostaa kyberturvallisuuskoulutuksen tärkeyttä entisestään, ei vain Suomen mittakaavassa vaan globaalisti.


Opitko jotakin? - Oma oppiminen

Lyhyesti:

Mitä opetti: Kurssi avasi keskeisiä tietoturvatekniikoita todella hyvin. Ehdottomasti opin uutta.

Kurssin keskeisin hyöty oli konkreettinen hyökkäysympäristö ja käytännön hyökkäysten toteuttaminen kohdejärjestelmiä vastaan - hyökkäsimme ja tunkeuduimme järjestelmiin käytännössä, mikä avasi tietoturvaa uudella tavalla. Emme tyytyneet PowerPoint-esityksiin.

Kurssi antoi hyvän lähtölaukauksen itsensä jatkokehittämiselle sekä uusien menetelmien implementoimiseksi osaksi tietoturvaa käsittelemällä ja esittelemällä keskeisiä hyökkäystekniikoita, joita vihamieliset hyökkääjät voivat käyttää webpalveluihin hyökätessä sekä AV- ja IPS-järjestelmien ohittamisessa. Kurssi antoi jatkoeväitä myös verkostoitumiselle.

Penetraatiotestaukseen liittyviä keskeisiä työkaluja en ennen kurssia ollut juurikaan käyttänyt, lukuunottamatta Fail2Ban:ia ja Snortia (IPS).


Opitko jotakin? - Kurssin keskeinen opetus

Lyhyesti:

Suosittelen kurssia kaikille IT-alan ammattilaisille, joilla on Linux- ja palvelintaustaa. Yleisluontoisempana kurssi kävisi myös muille IT-alan ammattilaisille, mutta keskeisin konkreettinen sisältö eli hyökkäystekniikoiden toteutus jäisi puutteellisen tietotaidon vuoksi tekemättä.

Kurssin nykyinen toteutusmuoto edellyttää käytännön Linux-, palvelin- ja verkko-osaamista

Hyökkäystekniikoiden ja -työkalujen opettelu on keskeistä, koska näin voidaan sovellus- ja infrasuunnittelussa ottaa huomioon ja ymmärtää oman kokemuksen ja konkretian kautta vihamieliset hyökkäystekniikat. Kurssi antaa käytännön kykyjä miettiä vastatoimia erilaisia hyökkäyksiä vastaan laajassa skaalassa niin loppukäyttäjän kannalta kuin kriittisissäkin yritysjärjestelmissä.

On erittäin tärkeää tietää vähintään perusteet siitä, miten hyökkääjät ohittavat tietojärjestelmiä, koska tämä tieto antaa konkreettista pohjaa tehokkaiden vastatoimien suunnittelulle. Kurssi opetti käytännössä sen, että mikään järjestelmä ei ole täysin suojassa vihamielistä toimintaa kohtaan - varsinkin, jos tietoturvaa ei osata käsitellä tai ymmärretä oikein. Tämä koskee myös tietoturvallisena pidettyä Linuxia, jota vastaan löytyy myös valmiita hyökkäystyökaluja ja jotka heikosti tai väärin suojattuna ovat alttiita vihamieliselle toiminnalle niin ikään Windowsin lisäksi.

On turha tuudittautua naiivisti ajatukseen "käytän Linuxia, olen turvassa" (vinkki: suosi silti GNU/Linuxia, älä Linuxia. Lue tämän ero netistä, jos et tiedä). Tämä on väite, josta tuntuu Internetissä tulleen eräs julkilausuttu "totuus" ja johon itsekin jaksoin jossain määrin uskoa ennen kurssia. En enää.

Virallisten pakettilähteiden ja allekirjoitusavaimien todentaminen sekä tarkastussummien käyttäminen konkretisoituvat ja korostuvat, ehdottomasti. Lopulta tämänkin tarkastusketjun voi sössiä joko huolimaton/väliinpitämätön ylläpitäjä tai käyttäjä, ja monet muut syyt.


Opitko jotakin? - Hyökkäystyökalujen määrä on rajaton

Lyhyesti:

Vihamielisiä hyökkäystekniikoita on räjähdysmäinen määrä. Kurssilla käytiin läpi keskeisiä, mutta opittavaa olisi todellakin PALJON enemmän (mm. Bluetooth-hyökkäykset, MITM, Wlan-tukiasemahyökkäykset...). Lisäksi on suositeltavaa koodata itse omat hyökkäys, jos tavoite on testata järjestelmän haavoittuvuutta ja läpäistä tietoturva (valvotusti).

Mitä opetti: Ennen kurssia en ollut ymmärtänyt hyökkäystyökalujen ja tekniikoiden räjähdysmäistä määrää ja sitä, että lisää tulee koko ajan.

Linuxissa käytettävien hyökkäystyökalujen määrässä, hyödyllisten komentojen opettelussa ja hyökkäyskoodien kirjoittamisessa vain taivas on rajana: Ei tule päivää, jolloin ei oppisi jotain uutta.

Kurssilla käytettiin Kali Linux -penetraatiodistribuutiota. Itse tutustuin myös BlackArch Linux:iin, jossa väitetään olevan yli 2000 työkalua vihamieliseen tai tietoturvaan liittyviin toimintoihin. Kurssilla kävimme läpi muutamia keskeisiä näistä työkaluista, jotka löytyivät myös Kali Linux:sta (versio 2018.3).

Erittäin keskeistä hyökkääjän kannalta on lisäksi tuottaa täysin omia haittatyökaluja (lue: C/Python/...-koodia) ja hämäysmenetelmiä suojausjärjestelmien ohittamiseksi, mikä kasvattaa uhkien määrää ja heikentää torjuntakeinoja.


Opitko jotakin? - Hyöty kurssin ulkopuolella

Lyhyesti:

Kurssi on lähtölaukaus maailmaan, joka liippaa kaikkia IT:tä käyttäviä ammattialoja

Mitä opetti: Kyberturvallisuus on huomioitava monenlaisilla ammattialoilla, myös niillä, jotka eivät ole suoranaisesti IT-aloja, mutta käyttävät IT:tä toiminnassaan.

Kyberturvallisuuden tärkeys skaalautuu kaikkiin IT-pohjaisiin järjestelmiin ja käyttöympäristöihin. Kurssista on hyötyä, mistä tahansa IT-järjestelmästä puhummekin ammattialasta riippumatta.

Kurssilla ja sen ulkopuolella kurssin aikana opitut hyökkäystekniikat on yleensä rajattu tietynlaiseen käyttöympäristöön. Ympäristöjä on kuitenkin todella paljon aina verkkosivuista tietyn ammattialan laitteisto/ohjelmistokombinaatioon sekä sulautettuihin järjestelmiin saakka.

Omana esimerkkinä voisin kysyä seuraavaa: mitä tapahtuu, jos kykenemme toteuttamaan oikeilla työkaluilla (valmis tai itse koodattu) hyökkäyksen esimerkiksi sairaala- tai kaupan kassajärjestelmiä vastaan, tai pystymme hyökkäämään haavoittuvaa kommunikaatiotekniikkaa käyttävää mittauslaitetta vastaan? Kun ymmärrämme, että näitä järjestelmiä vastaan voi hyökätä niin fyysisellä kuin tietoteknisellä tasolla, voimme myös paremmin varautua hyökkäyksiin.


Opitko jotakin? - Laajasti käytettyjen ammattiratkaisujen heikko suojaus yllättää

Lyhyesti:

Luulin ja tuudittauduin uskoon, että ohjelmistokehittäjät ovat "ohjelmistotekniikan ammattilaisina" turvanneet laajasti käytetyt ammattiohjelmistot tai antaneet turvallisia ohjeistuksia niiden käyttöön liittyen. Olin väärässä - todella pahasti.

Mitä opetti: ammattikehittäjät eivät aina suojaa ratkaisujaan monenlaisia hyökkäystekniikoita vastaan. Kehittäjä ei ole jumala, kehittäjä on ihminen inhimillisine piirteineen.

Kyberturvallisuuteen perehtymättömät kehittäjät eivät ilmeisesti ymmärrä ottaa ohjelmistosuunnittelussa (backend/frontend) tietoturvaa huomioon - tai ottavat sen huomioon puutteellisesti/vajavaisin tiedoin. Esimerkkinä web-ohjelmistot sekä eräs aiempaan ammattialaani liittyvä palvelinohjelmisto, jonka ydinsuunnittelussa huomasin selkeitä tietoturvapuutteita ja laiminlyöntejä "helpomman käytön" kustannuksella.

Mainitussa palvelinohjelmistossa on huomioitu ammattialaan liittyvä keskeinen toiminnallisuus hyvin, mutta käyttöä varten annetut viralliset, julkiset ohjeet ovat suoraan sanottuna täysin epäammattimaisia ja vaarallisia kyberturvallisuuden näkökulmasta. Lisäksi ohjelmakoodissa on kyberturvallisuuden kannalta vaarallisia implementointeja. Mikä pelottavinta, näistä ei tunnu olevan julkista keskustelua missään verkossa eivätkä kehittäjät eivät tiedota käyttäjiä, vaikka vaarallisuus on täysin ilmiselvää. Käyttäjät eivät taas ymmärrä tietoturvan päälle lähtökohtaisesti paljoakaan. Kehittäjien asenteellisuus ja tekninen ymmärrys tietoturvaa kohtaan ovat ratkaisevassa roolissa.

Ohjelmisto- ja infrakehittäjien vastuu tietoturvassa on suuri: on kehittäjän vastuu tuottaa loppukäyttäjille turvallisia (ei-haitallisia) ratkaisuja, ja ottaa tietoturva huomioon jo suunnittelussa. Jos laiminlyö tietoturvaa tai ei tee penetraatiotestausta, voi vihamielinen hyökkääjä havaita haavoittuvuudet, ja tämän jälkeen Pandoran lipas on auki. Ohjelmiston suojaaminen eri murtoyrityksiä (debugger-tekniikat) vastaan on tärkeää.

Infrapuolella vastuu liittyy ennen kaikkea verkkoratkaisujen ja fyysisten tilojen suojausratkaisuihin sekä laitteistojen fyysiseen suojaukseen ja säädettyyn tietoturvapolitiikkaan sekä sen noudattamiseen.


Opitko jotakin? - Tietoturva ja käytännöllisyys

Lyhyesti:

"Tietoturva vs käytännöllisyys" vai "tietoturva ja käytännöllisyys"

Mitä opetti: Tietoturva pitäisi aina huomioida, viitsisi tai ei. Laiska lenkki on löysin ja heikoin lenkki.

Ohjelmistojen tietoturva ja käytännöllisyys kulkevat käsi kädessä. Joissain tapauksissa on niin, että tiukemmat tietoturvavaatimukset tulevat implementoiduksi käytettävyyden kustannuksella, ja päin vastoin. Tässä piilee riski siihen, että käytettävyydelle annetaan liikaa sijaa tietoturvan kustannuksella, ja vihamielinen taho huomaa sekä käyttää havaitsemaansa haavoittuvuutta (fyysistä tai tietoteknistä) hyväksi - pahimmillaan muiden tietämättä.

Takaoven saaminen uhrin tietokoneelle voi olla erittäin helppoa, ja naiivi suojauksia käyttämätön tai väliinpitämätön ja kaikenlaista binääriä kokeileva uhri ei voi välttämättä missään vaiheessa tietää, että hänen koneelleen on tunkeuduttu, ellei tietoturvasta huolehdi kukaan. (Yrityksen Windows-IT-ylläpitäjät pyrkivät usein rajaamaan järjestelmään kuulumattomien binäärien ajoa, mikä on askel oikeaan suuntaan toki...)


Opitko jotakin? - Loppukäyttäjän ohjelmat

Lyhyesti:

Kurssi antaa keskeisen ymmärryksen avoimen lähdekoodin tärkeydestä sekä suljettuihin ratkaisuihin ja epämäärisiin binääreihin liittyvistä riskeistä. Myös avoimen lähdekoodin ratkaisut tulisi auditoida, monesti lähdekoodista lähtien.

Mitä opetti: Älä luota binääriin. Luota koodiin, jonka ymmärrät ja auditoit.


Opitko jotakin? - Uhkien tunnistus

Lyhyesti:

Tunnista uhat, mitoita toimenpiteet, toteuta turvaratkaisut

Mitä opetti: Kurssi opetti itselleni paremmin sen, miten hyökkääjä voi toimia päästessään kiinni herkulliseen haavoittuvuuteen.

Tietoturvan toteuttamisessa täytyy tunnistaa uhkatekijät, järjestelmän kokonaisvaltainen ohjelmistollinen sekä konkreettinen rakenne, sijainti ja avoimuus sekä sen kehittäjä-, ylläpito- ja käyttäjäryhmät. Järjestelmän suojaus, auditointi, analysointi ja asianmukainen tietoturvapolitiikka auttavat, mutta eivät ole vedenpitäviä ratkaisuja. On silti erittäin keskeistä suojata järjestelmät, analysoida lokeja, järjestelmän toimintaa sekä verkkoliikennettä - ja mikä tärkeintä, ei saa olla naiivi ohjelmistojen, järjestelmien ja ihmisten kanssa (kyllä, ihmisetkin voivat olla uhka, myös se parhain työkaveri, ks. social engineering).

Keskeistä on olla mahdollista hyökkääjää yhden askeleen edellä ja suunnitella tehokkaat ennakkotoimenpiteet vihamielistä toimintaa kohtaan. Mikäli hyökkääjä on järjestelmässä, pitäisi hyökkääjä havaita ja pysäyttää mahdollisimman pian sekä vastatoimenpiteet suojata (kyllä: suojata, ettei niitä voi huomaamattomasti kytkeä pois). Jos hyökkääjä pääsee järjestelmään, on oltava suojakeino, jolla vahinko minimoituu ja toiminta keskeytyy (vaikkakin peli ollaan jo tässä osittain hävitty!).

Erityisen uhkaava on tilanne, jos hyökkääjä havaitsee järjestelmässä haavoittuvalle alttiin ohjelman tai ohjelmaversion, kuten palvelinohjelmiston, saa käsiinsä arkaluonteista tietoa ja/tai kykenee tekemään siirtymää kriittisessä sisäverkossa piilottaen jälkensä tunkeutumisesta ohi turvajärjestelmien. Palvelimen sijaan kyseessä voi toki olla myös ihan perinteinen asiakaspäätekonekin vailla palvelinohjelmistoa, joka saadaan porattua auki sopivalla backdoorilla, joka ujutetaan koneelle, ja sama Pandoran lipas levähtää käsiin.


Missä aiot hyödyntää taitoja kurssin ulkopuolella? - Oma oppiminen jatkossa

Lyhyesti:

On omalla vastuulla käyttää opittuja tekniikoita eettisesti

Mitä opetti: Löysin kaksi uutta peliä: HackTheBox ja VulnHub. Lisäksi sovellan oppimaani tulevissa IT-ratkaisuissa ja parannan nykyisiä. Toteutan penetraatiotestausta omiin palvelinjärjestelmiini jatkossa sekä seuraan tiiviimmin haavoittuvuuksiin liittyvää uutisointia ja CVE-havaintoja.

On välillä kiva naksutella HackTheBoxin koneiden parissa, VulnHub:n tarjontaan pitää myös tutustua paremmin. Ja ei tarvitse arvata, että vastaavia alustoja löytyy varmasti eksponentiaalisesti enemmänkin. Hyöty ja huvi samassa, mikäs siinä.

Koen kyberturvallisuuden oppimisessa tärkeänä, että kurssin aihepiiri läpäisee IT:tä yleisellä tasolla, koska osittaisena alanvaihtajana penetraatiotestaus voi tarjota itselleni uusia mielenkiintoisia ja erikoislaatuisia mahdollisuuksia kahdella eri alalla.

Kyberturvallisuus linkittyy myös fyysiseen turvallisuuteen. Olen aiemmin ollut tekemisissä fyysiseen turvallisuuteen liittyvien turvaratkaisujen parissa.


Miten voisin parantaa kurssia? - Kurssin jatkokehitys

Perustietoa: Hyvä lähtölaukaus penetraatiotestauksen maailmaan

Lyhyesti:

Kurssi opetti keskeisiä penetraatiotekniikoita

Kurssi oli mielestäni kokonaisvaltaisesti hyvin järjestetty. Kurssilla opittiin keskeisiä lähteitä ja käytäntöjä, joista kukin voi lähteä omaa osaamistaan kyberturvallisuudessa syventämään.

Sopivatasoisen lähtölaukauksen antaminen eri hyökkäys- ja suojaustekniikoista opiskelijoille on hyvin keskeistä motivaation ja itseoppimisen kannalta. Kurssi täytti hyvin nämä tarpeet ja antoi hyviä eväitä tulevalle itsekehittymiselle sekä verkostoitumiselle. Pidän kurssin lähestymistapaa penetraatiotestaukseen oikeanlaisena ihmisille, jotka eivät ole aiemmin tehneet vastaavaa käytännössä.

Perustietoa: OWASP

Lyhyesti:

Pidä tämä

OWASP Top10 ja OWASP WebGoat olivat kurssin alussa hyviä sekä keskeisiä oppimismateriaaleja, ja pitäisin ne myös jatkototeutuksilla mukana.

Perustietoa: Stuxnet ja tieteelliset artikkelit

Lyhyesti:

Pidä tämä

Tieteellisten artikkelien tutkimisen Stuxnet:sta ja vastaavista antoi hyvää tietoa, miten eri tyyppisesti ja eri tekniikoita hyödyntäen hyökkäyksiä on toteutettu. Pitäisin mukana myös tulevilla toteutuksilla.

Tekniset analyysit/dokumentaatiot ovat avainlähde lisäämään ymmärrystä siitä, miksi ja millä keskeisillä tekniikoilla jotkin hyökkäykset ovat ylipäätään onnistuneet, joskin joillekin teknisen dokumentaation lukeminen voi tuntua työläältä.

Korkattavat koneet: Walkthrough vs. DIY

Lyhyesti:

Pidä tämä, mieti toteutusta

Vaikka Walkthrough-videot voidaan mieltää "huijaamiseksi", antavat ne myös pohjaa oikeanlaiselle ajattelutavalle ja näyttävät osaltaan keskeisiä hyökkäystyökaluja- ja tekniikoita. Oikeanlaisen ajattelutavan harjaannuttaminen on keskeistä kurssilla, jossa "kurkistetaan" penetraatiotestauksen maailmaan.

Kurssin toisella toteutuksella saattaisin harkinnan mukaan ottaa ensimmäisiksi korkattaviksi koneiksi 1-2 erityyppistä HTB:n "Retired" -konetta tai Vulnhub:n konetta, ja tämän jälkeen jonkin ei-spoilatun HTB:n "Active"-koneen. Tämä täytyisi yrittää mitoittaa jotenkin työmäärän/aikataulun mukaan mieleiseksi, koska ainakaan kaikki Active-koneet eivät välttämättä heti "aukea", ja tehtävien deadline puskee päälle jättäen homman lopulta ratkaisematta.

HTB-maalikone Jerry oli sen verran helppo korkattava, ettei sen taustoittamiseksi välttämättä tarvitse "hirveää jumppaa", mutta muut HTB:n koneet voivat vaatia hieman enemmän perehtymistä aihepiiriin.

Tekniikat

Lyhyesti:

Pidä tämä

Kurssilla on hyvä pitää perustekniikoiden opiskeluosuus (nmap, hydra, dirbuster, zaproxy, sqlmap, jne.), ja mielestäni oli hyvä, että jokainen sai tutustua itse valitsemiinsa tekniikoihin jossain määrin vapaavalintaisesti, lukuun ottamatta ihan core-osaamista (OWASP, msf). Näin työkalujen ja tekniikoiden skaalaa saatiin kasvatettua opiskelijoiden keskuudessa, ja tiedonvaihto oli mahdollisimman tehokasta.

Perustyökalujen käytön harjaannuttamisella opiskelijat harjaantuvat riittävästi koneiden korkkauksiin ja saavat kohtalaisen käsityksen keskeisistä tekniikoista. Olennaista on jaksottaa työkalujen oppiminen jotenkin niin, ettei liika infoähky tapa opiskelumotivaatiota ja antaisi riittävän kuvan työkalujen sekä tekniikoiden toiminnasta.

Tiedän, että kurssilla opeteltavat työkalut ovat vain pintaraapaisu siitä, mitä offensiiviset Linux-penetraatiojakelut pitävät sisällään. Lisää työkaluja ja tekniikoiden kuvauksia löytyy myös mm. erinäisistä GitHub-repoista.

Tekniikat: Skannausten agressiivisuudesta

Lyhyesti:

Monet opiskelijat skannasivat liian agressiivisesti.

Skannaustekniikoissa (porttiskannaus, brute-force) aika moni tuntui käyttävän skannaustyökaluja hyvin agressiivisilla oletusasetuksilla. Itsekin sorruin tähän, kunnes tutustuin dokumentaatioon paremmin (esim. nmap ja hydra). Skannausten agressiivisuusasetuksen vaikutusta olisi ehkä hyvä myös käydä läpi, koska monet työkalut asettavat skannausten agressiivisuuden turhan korkealle, ja voivat kaataa kevyen testipalvelimen.

Tekniikat: Porttiskannauksen perusteet?

Lyhyesti:

Harkitse. Nmap-skannauksen tekniikan toiminta. Onko järkeä opettaa, vai meneekö opiskelijan itseopiskelun piikkiin?

Voisi olla hyvä käydä tai jättää itseopiskeltavaksi perusteet porttiskannauksesta (SYN Stealth, Xmas, Null scans jne.) sekä näyttää vaikka Wiresharkilla, kuinka konkreettisesti nämä näkyvät verkossa, sekä näyttää palomuurin vaikutus. IPTables näyttelee jossain määrin myös keskeistä roolia eräiden uhkien torjunnassa, joskaan ei ole mikään vedenpitävä ratkaisu.

Kotitehtävät

Lyhyesti:

Ei paljoa parannettavissa

Kotitehtävät olivat mielenkiintoisia, joskin itse yllätyin hieman siitä, että ne vaativat aika intensiivistä paneutumista lyhyellä aikavälillä uusiin tekniikoihin. Tämä voi muodostua joillekin hankalaksi ja yllättäväksi haasteeksi muuhun elämään sovitettuna. Joskin täytyy mainita, että on erittäin tärkeää olla läsnä tunneilla. Valtaosa kotiläksyiksi tulleista tekniikoista opetetaan riittävällä tasolla nimittäin edellisellä opetuskerralla.

Kotitehtävät: tehtävien merkitys ja tiedonsaanti

Lyhyesti:

Tiedon keräämisen, kokemusten jakamisen ja tekniikoiden kokeilun tärkeyden korostus

Kotitehtävät auttavat opiskelijaa syventymään aiheeseen. Penetraatiotestauksessa tämä on mielenkiintoista siksi, että dokumentaatiota tai "helposti saatavilla olevaa" informaatiota ei kaikesta välttämättä ole saatavilla, mikä lisää opiskelijan omaa vastuuta selvittää käytettyjen tekniikoiden toimivuus käyttöympäristössä. Monet tunnetut hyökkäystyökalut on jossain määrin dokumentoitu Kali Tools -verkkosivulla, mutta tuntemattomien työkalujen parhain referenssi on toisinaan yksi YouTube-video ja joskus pelkkä lähdekoodivarasto.

Kurssilla korostui erityisesti opiskelijoiden kotitehtävinään itsetehdyt työkalu- ja tekniikkatestaukset: monista tekniikoista käytännön toteutettavuustietoa on niukasti saatavilla tai edellyttää Walkthrough-videoiden metsästämistä, joten mikä tahansa oppia antava tietolähde on tärkeä. Tässä korostuu myös tiedon jakamisen tärkeys opiskelijoiden kesken.

Kotitehtävät: käytetty aika ja lähestymistapa

Lyhyesti:

Kotitehtävät söivät aikaa, opettivat paljon, ja antavat mahdollisuuden omien menetelmien jatkokehittämiseen. Kehkeytynyt aikapula oli ymmärrettävää kurssin luonteen vuoksi.

Tekniikoiden kokeilu, testaus ja tekninen puzzleilu olivat mielenkiintoisia. Hyökkäystekniikoiden selvitystyö ja analysointi veivät valtaosan ajasta, jotka itse käytin kotitehtävien tekoon. Monissa hyökkäystekniikoiden selvitystyössä aikaa vei ennen kaikkea raporttien teko, ei niinkään tekninen testaus (tein testauksen yleensä minuuteissa, mutta raporttien kirjoitteluun perusteluineen meni tunteja). Noudatin jokseenkin joissakin tehtävissä seuraavanlaista työjärjestystä:

Kotitehtävän osa 1: toteuta asia X

Ratkaisu:
    -> toteutetaan asia X tavalla A, ajankäyttö: 1-2h
        -> epäonnistuminen
            -> havaintojen kirjaus, analyysi
    -> toteutetaan asia X tavalla B, ajankäyttö: 1-2h
        -> epäonnistuminen
            -> havaintojen kirjaus, analyysi
    ...
    -> toteutetaan asia X tavalla D, ajankäyttö: 1-3h
        -> onnistuminen
            -> havaintojen kirjaus, analyysi. Lopetus

    -> Kohdan vastauksen laatiminen ja ollennaiset havainnot.

    Ajankäyttö yhteensä, kotitehtävän osa 1: 3-9h

Joidenkin tehtävien tekoa olisin voinut nopeuttaa jättäen yksinkertaisesti väliraportoinnin tekemättä ja keskittyä maksimaalisesti onnistuneeseen walkthrough:n, mutta koin tärkeäksi käydä myös epäonnistumistilanteet läpi. Tämä lisää ymmärrystä tekniikoista itsestään paremmin verrattuna "tein hyökkäyksen, mutta en oikeastaan tajua mitä edes tein" -tyyliseen tilanteeseen. Lisäksi: hyökkäystekniikoiden jatkokehittämiseen kurssin ulkopuolella on nyt kattavampi tietous, kun myös selvät epäonnistumiset on kirjattu ylös kertomuksineen ja havaintoineen.

Edellä kerrotun syklin vuoksi koin erittäin tärkeänä jaksottaa tehtävien tekoa pitkin viikkoa. Pyrin parhaani mukaan deadlineen "vuorokausi ennen tunteja". Arvioisin viikkotyömääräksi yhden kotitehtävän osalta keskimäärin 10-25 tuntia, mutta vaihtelua oli paljon tehtävän luonteesta riippuen.

Kurssin opetuslinjaus: huolellisesti opeteltu tekniikka vs. uuden oppiminen

Lyhyesti:

Vaihtoehdot: 1) Paljon oppia vähässä ajassa, 2) vähän oppia paljossa ajassa vai 3) ratkaisuna kurssin pidentäminen kahden periodin mittaiseksi? Siinä pähkinä purtavaksi.

Itselläni jäi osa tehtävistä sellaiseen vaiheeseen, että käytetyissä menetelmissä olisi jatkokehityksen ja hienosäädön paikka. Päädyin monesti ratkaisuihin, jotka olivat aikataulun puitteissa mahdollisia, mutta eivät olleet parhaita mahdollisia. Väljemmällä aikataululla olisin voinut tehdä hyökkäysten toteutuksen paremmin ja voinut yrittää esimerkiksi virustorjunnan ohittamiskeinoja koodin obfuskointimenetelmillä (mikä olisi edellyttänyt monien AV-ohjelmistojen kanssa testailua jne.).

Penetraatiotestauksessa myös huolellisesti tehty hyökkäys on tärkeää hyökkäyksen onnistumisen kannalta, ja tavoitteeseen pääsyn sekä syvän oppimisen kannalta. Esimerkkinä troijalainen, jonka tehtävänä on tunkeutua järjestelmään AV:n huomaamatta. Tämä saattanee edellyttää haasteellisia obfuskointitekniikoita, ja obfuskointitekniikoiden implementointi vastaavasti tekniikoihin syventymistä, koodauksen tuntemista ja troijalaisen analyyttista testausta AV:ta vastaan (ei VirusTotalia). Muutaman päivän aikataululla tämän kaiken tekeminen ja aiheeseen riittävän syvästi perehtyminen menee erittäin tiukaksi, ellei opiskelijalla ole ennakkotietoa tai -käsitystä aiheesta ja jotain valmista menetelmää toteuttaa em. skenaario.

Aikataulupaineista huolimatta tehtävät olivat mielenkiintoisia, ja niiden olennainen anti on ennen kaikkea siinä, mitä ne antavat tulevaisuuteen ja opettavat, kuinka huonoja tietoturvaratkaisuja olen joskus päätynyt tekemään. Tulen käyttämään oppimaani tietotaitoa tietoturvaratkaisujen kehittämisessä ja yleisessä tietoturvan parantamisessa sekä omassa että muussa käyttöympäristössä.

Kurssirakenteesta on pääteltävissä, että eräs opettamistavoite on ollut mahdollisimman laajan skaalan opettaminen opiskelijoille, valitettavasti vain kovin lyhyen aikataulun puitteissa.

Vaikka kotitehtävien tekoon varattu aika oli lyhyt, koen silti kurssin aikataulun huomioon ottaen tärkeämpänä itse asiassa, että kurssilla käydään mahdollisimman laaja skaala penetraatiotestauksen keskeisimpiä oppeja - vaikkakin sillä hinnalla, että epäonnistumisia ja säheltämisiä voi sattua. Jostakin pitää saada alkusysäys keskeisten tekniikoiden ymmärtämiseksi. On opiskelijan omalla vastuulla parantaa toteuttamiaan menetelmiä ja muuttaa epäonnistumiset onnistumisiksi paremmalla ajalla ja kurssisisältöä tukevalla jatko-oppimisella (joskaan se ei vaikuta tämän kurssin arviointiin).

Koko kurssin ajatus lienee antaa alkusysäys penetraatiotestauksen maailmaan, ja siihen tarpeeseen kurssi vastasi hyvin. Saattaisin harkita kurssin myöhempiä toteutuksia kahden periodin mittaisena opettajan ja Haaga-Helian harkinnan mukaan.

Tehtävät ja tekniikat: yksi ohje ei päde

Lyhyesti:

Oman oppimisen, Linux-tietämyksen sekä soveltamisen tärkeyden korostus opiskelijoille niin työkaluissa, tekniikoissa kuin kotitehtävissäkin.

Niin kuin Linux-maailmassa yleisestikin, ei yhden ihmisen ohje välttämättä täysin päde toisen ihmisen ympäristöön. Varsinkin ihmisillä, joille käytetty tekniikka ei ole tuttu, ohjeiden orjallinen noudattaminen korostuu eikä opittua tietoa osata soveltaa.

Orjallisella noudattamisella on riski törmätä seinään ja mystisiin virhetilanteisiin toisessa käyttöympäristössä. Varsinkin, kun kurssilla opetellaan tekniikoita, joista ei aina ole kattavaa informaatiota saatavilla, niin itseoppimisen ja sovellettavuuden merkitys korostuu. Kaikkea ei voi syöttää kädestä suuhun, vaan joskus opiskelijan on osattava soveltaa oppimaansa tietoa ilman step-by-step -ohjeistusta.

Opiskelijoiden käyttämät ympäristöt poikkeavat toisistaan, mikä on yksi syy heidän toteuttamiensa hyökkäysten onnistumiseen tai epäonnistumiseen. Kurssin ensimmäisen toteutuksen aikana tehtyjen olennaisten havaintojen korostus voisi olla keskeistä kurssisisällön jatkokehittämisen kannalta. Esimerkkinä Windows 7 ilman Defenderiä (hyökkäys onnistuu) vs. Windows 10 Defenderillä (hyökkäys epäonnistuu). Jos joku jää näiden kanssa tappelemaan, tuhrautuu aikaa näiden selvittämiseen, ja itse kotitehtävän toteutus voi jäädä heikommalle tolalle.

Kurssilla voisi olla lisävarmistus opiskelijan perustyökalujen käyttötasosta: oli kyseessä Oracle VirtualBox, VMWare, Vagrant (jokin näistä) tai vaikkapa ohjelmien asennus, poisto, pakettivarastojen lisäys ym. Kali Linux -ympäristössä (apt/dpkg + PPA jne.).

Hieman yllättävästi koetilanteessa joillakin ihmisillä oli hukassa esim. SaltStack:n PPA:n lisäys Kali Linux:iin, vaikka ohjeet ovat suoraan netissä pienen etsimisen takana ja riittävällä Linux-ymmärrystasolla sovellettavissa.

Muuta: Kurssin opintopistemäärän kasvattaminen?

Lyhyesti:

Harkitse. Opintopisteitä enemmän. Kurssi oli työläs.

Edellä mainittujen ajankäyttöön liittyvien perusteluiden takia harkitsisin kurssin opintopistemäärän kasvattamista: Kurssi on omalta osaltani ollut ehdottomasti syksyn 2018 työläin (+ aikaavievin) 5 op:n kurssi itselläni. Jätän tämän opettajan ja Haaga-Helian harkinnan varaan, ja ymmärrän, että ennakkoon määrätyistä opintopistemääristä ei välttämättä kovin helpolla (jos lainkaan) jousteta.

Muuta: kurssille jatkoa?

Lyhyesti:

Harkitse. Kaikkea ei pysty opettamaan yhdessä periodissa.

Vaihtoehto A)

Kurssilla opittiin paljon penetraatiotestauksen keskeisiä menetelmiä, mutta havaitsin, että lisätiedolle olisi tarvetta. Ennen kaikkea omien troijalaisten/virusten tuottaminen sekä virustorjunnan ohittamisen tarve korostuivat. Jos kurssista koskaan järjestetään jatkototeutusta, harkitsisin em. osa-alueiden (koodaus + AV bypass) siirtämistä kyseisen jatkototeutuksen piiriin.

Nämä jatkototeutukset edellyttävät jonkintasoista ohjelmointiosaamista (C/Python), ja liittyy siten laajempaan Haaga-Helian -kurssitoteutusten kontekstiin. Toisin sanoen: järjestetäänkö opiskelijoille kyseisten kielien opetusta?

Vaihtoehto B)

Varsinaisesti kurssin ulkopuolisen materiaalin katsominen sai minut havahtumaan, että tästä saisi helposti myös toisenlaisen työkaluihin ja olemassa oleviin hyökkäystekniikoihin liittyvän jatkototeutuksen tehtyä, kysynnästä riippuen. Bluetooth-hyökkäykset, MITM, palvelunesto, sulautetut järjestelmät...

Kurssikoe

Kurssikoe oli mielenkiintoinen ja otti saman asenteen kuin kurssin opetuskin: käytäntöä ja teoriaa. Kiitos aikataulun kanssa venymisestä (sähköpostien timestampeista on jotain pääteltävissä) ja panostamisesta kokeeseen!

Kokeen tehtävänannot olivat vähintäänkin "mielenkiintoisia", ja mukavaa naksuttelua kurssin oppien mukaisesti. Haastetaso oli sopiva ja olit tehnyt mielestäni hyvän ja moniulotteisen kokeen, joita ei aina näe joka kursseilla. Jätetään kokeen tarkempi sisältö puimatta, että olisi myös jatkossakin käytettävissä, mutta oli hyvä!

Viihdyitkö kurssilla?

Lyhyesti:

Kyllä

Kurssilla oli hyvä "me"-ryhmähenki, ja jään kaipaamaan osaa porukasta kurssin jälkeen.

Kurssilla korostui tekemisen meininki, sekä opettajan reippaus ja innostuneisuus aiheesta. Nämä ovat piirteitä, joita arvostan missä tahansa opinnoissa oppilaitoksesta ja ammattialasta riippumatta: Opettajan suhtautuminen aiheeseen ja osallistuminen tiiviisti opiskelijoiden kanssa kurssisisällön ajamiseen on todella tärkeää jokaisen opiskelijan motivaation kannalta.

Arvostan kurssin toteutuksessa käytännön tekemistä yhdistettynä teoriaan. En kaipaa PowerPoint-esityksiä, jos tarjolla on tällaista. Kalvot voi lukea muulloinkin. Syvää oppimista tukee paljon paremmin konkreettinen soveltaminen, onnistuminen ja virheistä oppiminen.

Kurssi jätti paljon itse oppimisen varaan, mutta tämä mahdollisti sen, että lähiopetuskerrat olivat vastaavasti erittäin mielenkiintoisia ja mahdollistivat käytännön harjoitusten teon ja olennaiseen asiaan keskittymisen. Lähiopetuskerroilta ei tällä kurssilla olla pois yhtäkään kertaa, eikä se haittaa menoa.

Viihdyin kurssilla. Jokaisella lähiopetuskerralla tuli jotain uutta tai vähintään hyvää oppimisen arvoista tietoa, eikä mitään "olen tiennyt tämän jo 10 vuotta" -tyylistä vanhaa kauraa, jota joillakin kursseilla tulee nähtyä. Uusi aihesisältö myös kasvatti omaa motivaatiotani sen lisäksi, että koen aihepiirin muutenkin tärkeänä ja ehdottomasti oppimisen arvoisena ammattialasta riippumatta.

Suosittelisitko kurssia? Kenelle? Koulutoverille tai kollegalle?

Suosittelen kurssia kaikille, joilla on nämä kyvyt/piirteet:

  • riittävä Linux/verkko/ohjelmointiosaaminen

  • riittävä tietotekninen ajattelukyky ja kiinnostus aihepiiriä kohtaan

  • into ja motivaatio kasvattaa osaamista tietoturvassa käytännön keinoin

  • riittävästi aikaa, intoa kooditason tiedonhakuun ja tietoteknistä ongelmanratkaisukykyä

  • hyvää englannintaitoa (itsestäänselvyys)

Konkreettisimpana esimerkkinä tulisi ne Haaga-Helian ja muiden oppilaitosten opiskelijat, jotka kykenevät osaamisen, motivaation ja aikataulun puitteissa suorittamaan kurssin.

Tämä oli Haaga-Helian ensimmäinen pentesting-kurssi koskaan. Kannattaako Pentesting-kurssia järjestää tulevaisuudessa?

Kyllä!

Kyberturvallisuuteen liittyvän osaamisen harjaannuttaminen myös hyökkäyksen näkökannasta korostuu maailmassa, jossa kaikki ammattialat tuntuvat työntyvän etenevissä määrin IT-pohjaisiin ratkaisuihin, ja joissa implementaatiot eivät ole aina siitä tietoturvallisimmista päästä.

Hyökkäysaspektin tunteminen ja vihamieliseen toimintaan tutustuminen on erittäin tärkeää perustiedon hankkimiseksi vihamielisestä toiminnasta, joka uhkaa monia IT-järjestelmiä. Monet voivat suhtautua epäillen moiseen lähestymisnäkökulmaan ("miten te kehtaatte opettaa hyökkäämään!"), mutta ilman sitä tuntemus tietoturvasta jää mielestäni liian vajavaiseksi johtaen puutteellisesti suojattuihin tietoteknisiin ratkaisuihin. Siksi suosittelen kurssin toteuttamista myös tulevaisuudessa.

You can’t perform that action at this time.