Locked Shields 2017 – sinine seestvaade
Aprilli lõpus toimus kaheksandat korda NATO CCDCOE korraldatud Locked Shields küberkaitseõppus: pea 900 osalejat 25 riigist ning 19 meeskonda kaitsmas ja puhastamas fiktiivse Berylia-nimelise saareriigi simuleeritud lennuvälja infosüsteeme.
Eesti – ja eriti kaitsva ehk sinise meeskonna kokku kutsunud CERT-EE – taktikaks on aastaid olnud kõigi osapoolte pidev harimine ja kaasamine. Lisaks RIA ja CERT’i meeskondadele said seekordsest õppusest osa Elektrilevi, Kaitseministeeriumi, Kaitseväe, Linx Telecomi, SEB panga, Starmani, Telia ja meie ehk Zone Media eksperdid, kes konservatiivse hinnangu kohaselt panustasid kokku vähemalt ühe inim-aasta jagu tööaega. Meie vaatest andis iga kulutatud päev vastu mitme tavalise tööpäeva jagu kogemust ning vähim, mida me teha saame, on õpitut edasi jagada.
Selleks paneme Andrisega kogetu järjejutuna kirja, püüdes vältida järgmistel õppustel väärtust omavate ülesannete täpsete lahenduskäikude lahtiseletamist, ent tuues välja laiemat rakendust omavad nipid ja selle, mida õppisime.
- Osa 1 – sissejuhatus ja taust (seda sa just loed)
- Osa 2 – üks jube tudengiprojekt “väikse” tagauksega
- Osa 3 – põhjalikult iganenud WordPress ja tööstuslikud kaitsemeetmed
- Osa 4 – veebipood, millest meil oli ainult kompileeritud java
Veidi tausta
Meie mängu-võrk koosnes ligemale 150st seadmest ja oli mängu alguseks vägagi põhjalikult vastase ehk punase meeskonna poolt üle võetud.
Mängu-võrgus olid tulemüürid, avalikud ja sisekasutuseks mõeldud serverid, sadakond tööjaama erinevate operatsioonisüsteemidega, paar SCADA-lahendust (näiteks: kogu lennujaama elektrivarustus ja lennukikütuse tankimine), parasjagu lennus olev droon ning kõrged pealikud, kes tahavad näha liikuvat pilti ja saada 2x päevas raportit toimuva kohta. Lisaks tähelepanu nõudev meedia ja fake news, strateegiline kommunikatsioon ja juriidiline nõustamine… ning kõige tipuks reaalsed ja simuleeritud tavakasutajad, kellega meil oli 15-minutiline SLA (teenustasemeleping) ehk mistahes neid häiriv probleem, sealhulgas kaitsemeetmest tingitu, pidi saama selle aja jooksul mitte ainult vastatud, vaid ka lahendatud.
Kahepäevane õppus … mis kestis kaks nädalat
Eesti meeskonna kokku pannud CERT-EE (ametlikult tuntud kui Riigi Infosüsteemi Ameti intsidentide käsitlemise osakond) jaoks oluliselt kauem, aga ülejäänutele nägi ametlik ajaplaan välja selline:
- Nädal enne õppust teisipäeva hommikust kolmapäeva õhtuni saame ligipääsu mängu-võrgule ning võimaluse kaardistada kõik puhastamist vajav ning katsetada oma kaitselahendusi (teades, et ükski meie tehtud muudatus ei jää kehtima, sest süsteemid viiakse algseisu… ja korraldajad võivad enne õppust omapoolseid muutusi teha)
- Õppuse nädala teisipäeval ehk 0-päeval saame “üheksast viieni” näha lõplikku mängu-võrku ning katsetada oma lahenduste kiiret paigaldamist, sest…
- Kolmapäeva ehk esimese päeva hommikuks on kõik uuesti algseisus ja meil tuleb esimese 30 minutiga ehk enne kui ründed peale hakkavad see ära lappida, mäng ise kestab tööpäeva lõpuni, siis on õnneks timeout …
- … kuni neljapäeva hommikuni, mil kõik läheb uue hooga lahti teadmises, et iga tunniga muutuvad punaste ründed julmemaks ja sa ootad kell viis saabuvat lõppu rohkem, kui mistahes tavalisel tööpäeval.
Ja see on muidugi vaid ametlik ajakava – tegelikult läksid paljudel mängu ka ööd ja nädalavahetused ning isegi kui sa parasjagu ei tegelenud oma vastutusalas oleva süsteemi putitamisega, siis nägid sa sellest vähemalt und.
Väga konservatiivselt paneks ma kirja kaks täispikka töönädalat – korrutades selle 23 osalejaga saame tulemuseks umbes ühe inim-aasta.
Respekt siinkohal kõigile asutustele ja ettevõtetele, kes oma töötajate aega Eesti tiimi panustasid. See oli meile kaks nädalat väga pingelist koolitust, millega võrreldes tavamõistes väga vinged hands-on-hacking koolitused on nagu jalutuskäik rannapromenaadil koos tüdruk- (või poiss-)sõbra ja jaheda rosèga. Raha eest sellist asja ei osta.
Kas kõik tiimid olid niimoodi kokku toodud?
Ei, iga sinine ehk kaitsev meeskond sai VPN-seadme, mis võimaldas mängu-võrguga liitumist neile sobilikust kohast. Meie jaoks sobisid väga hästi RIA kontori ühendatud nõupidamisteruumid-õppeklassid.
Korraldav meeskond – rohelised (infra ehitajad ja tehniline tugi), valged (mängujuhid, rollimängijad nagu tavakasutajad ja ajakirjanikud, hindajad jne), kollased (situational awareness ehk hindasid suutlikkust toimuvast õigesti aru saad) ning punased (ründajad) asusid aga ühes Tallinna konverentsikeskuses, mille sisevaadet näeb õppuse korraldaja NATO CCD COE ametlikust pildigaleriist Flickris (sealt on lingitud ka pildid). Kõik need tiimid koosnesid osalevate maade lähetatud ekspertidest.
Sealtsamast on pärit ka näiteks selline huvitav pilt:
Selline võrguskeem oli teil olemas – või pidite ise kõik välja nuhkima?
Olemas. Selle väikse vahega, et pildil on suur sõjasaladus ehk see on “not for blue eyes” versioon, kus on peal ka mõned täielikult punaste kontrolli all olnud süsteemid lennujaama toitesüsteemi ja droonijuhtimise võrgu segmentides, mis tõesti tuli ise avastada.
Kokku oli meie süsteemide tabelis üle 50 nimetuse, seejuures erinevatel operatsioonisüsteemidel põhinevaid tööjaamu kümnete kaupa, kokku ligemale 150 ühikut.
Lihtsustatud pilt kübermänguplatsist on aga selline:
Üsna tavapärane mitme segmendiga võrk, kus eraldi “demilitariseeritud tsoonis” ehk DMZis on kõik avalikud veebi- ja postiserverid, eraldi OPSis lennuvälja juhtimine serverite ja tööjaamadega, LABis kõik R&D tegevus… sealhulgas üks eksperimentaalne veebileht ja kurat-teab-kelle-poolt paigaldatud DSL ühendus. Lisaks kenasti eraldatuna ICS lennukitesse kütuse pumpamiseks, PWR elektitoite halduseks ja GDT droonide lennutamiseks. Kaks ruuterit tõrkekindlaks ühenduseks kahe eraldi ISPga – ja kolm tulemüüri, üks neist MicroTIK (eelmine aasta olla ühe tulemüüriga liiga igav olnud, ilmselt punastel).
Vastavalt vajadusele oli jagatud sise- ja välisvõrgu-aadresse (nii IPv4 kui IPv6) ning lisaks oli igal seadmel eraldi aadress haldusvõrgus, mille kaudu käisime tööd tegemas meie. Nagu videost näha, siis igaüks oma läpakaga ja kahe suure government grade monitoriga.
Kui realistlik see olukord tundus?
Sinu ja minu võrgus on mõistagi kõik tip-top korras 24/7/365…
Aga kui meid kõrvale jätta, siis üsna realistlik. Iga võrk peegeldab organisatsiooni vanust, arengut ja aja jooksul tehtud otsuseid. On paratamatu, et kõrvuti toimetavad Windows 7, 8.1 ja 10 – õnneks päris NT4 Service Pack 1’ni asjad ei läinud, küll aga oli sinna-tänna sokutatud lahendusi, mida kohe kuidagi ei andnud turvalisena tunduva versioonini uuendada, sest nende peal jooksvad rakendused läksid lihtsalt katki. Life is hard – and then you die.
Lisaks olid kõik süsteemid punaste poolt hoole ja armastusega – sügav respekt nende põhjalikkusele – ära ussitatud. Oli äärmiselt põnev otsida, avastada ja proovida mõista kavandatud ründevektorit ning mõelda välja teostatavaid ja võimalusel ettearvamatuid kaitseviise. Nii teadaolev kui ainult selleks õppuseks loodud pahavara, rootkit’id, muutmata vaikeparoolid, juurkasutaja õigustes veebirakendused, turvaprobleeme loovad seadistused, kellegi poolt CRONi unustatud käsurida ja kompilaatorid serverites, kus neid teps mitte vedelema ei peaks. Ehk siis süsteemi haldamisel tehtud vead + vastane, kes on nende kaudu sisse tunginud ja ennast korralikult sisse kaevanud.
Meie ainsaks lohutuseks oli teadmine, et oleme appi kutsutud rapid response team, kes ei ole masendavas olukorras vähemalt ise süüdi. Me lihtsalt peame sellest aastatega kogunenud kultuurikihist minimaalse ajaga probleemid üles leidma.
Mida hinnati – ja kas punased kah punkte said?
Meie lõppskoor nägi välja selline, üleval summa ja selle all juppideks jagatuna:
- Attack – miinused õnnestunud rünnete eest
- Availability – süsteemide kättesaadavus hindamisrobotitele (algsest punktihulgast tiksusid punktid maha, nt kui veeb ei olnud IPv4 või IPv6 võrgust kättesaadav või Selenium-test ei leidnud lehelt elementi mida otsis)
- Inject – mängujuhtide poolt ette sokutatud tegevused, nt ajakirjaniku kiri või juriidilise abi vajadus
- Report – 2x päevas tehtav sitrep “riiklikule kaitsekomiteele”
- Revert – roheliste abi vajamine, peamiselt täielikult üle võetud virtuaalmasinate viimine algolekusse
- Special – kategoriseerimata miinused tegevuste (või tegevusetuste) eest, mis mujale ei mahu
- Usability – kasutatavus ehk sa ei saa oma kasutajatel kraane nii kinni keerata, et nad oma äärmiselt turvalises keskkonnas enam mõnuga tööd teha (sh epostis olevaid linke klikkida ja manuseid avada) ei saa, sest kohe hakkavad miinused jooksma
Tegemist siis tasakaalustava süsteemiga kus igal otsusel on hind – ning osad skaalad nagu availability logaritmilised, ehk mida kõrgemal punktitasemel oled seda suurem väärtus on igal uptime’i lisaminutil.
Punased tegutsesid ühe meeskonnana ja punkte ei teeninud (ega kaotanud) – küll oli neil ees pikk nimekiri rünnetest mis tuli läbi viia, võrdselt kõigi siniste tiimide vastu. Aga ka rünnete skaalat võiks lugeda logaritmiliseks, st olid eesliinihäkkerid kes lammutasid nii kaugele kui suutsid, kui sinised neid sisse lasta ei tahtnud oli olemas ka “teise taseme tugiüksus” ning kui vaja, toodi tagatoast välja raskekahurvägi kuni clientside-rünneteks kasutatava Cobalt Strike’i autori Raphael Mudge ehk Raffini välja.
Mis me siis ikkagi täpselt tegime?
Kogu meeskond pidi katma ära rollid alates võrgust, Win ja Linux platvormidest, automaatikast ja logianalüüsist kuni juhtimise, juristide ja strateegilise kommunikatsioonini. Minu ja Andrise nurk olid veebid.
Ja kuigi veebe oli tegelikult hulgim – sh RoudCube veebimeil koos nurka ununenud iidse SquirrelMailiga, MediaWiki mõnede indutseeritud turvaprobleemidega jpm – siis peamiseks huvitavaks sihtmärgiks oli “scheduler” ehk avalikkusele mõeldud droonilendude registreerimise süsteem, mille saime kätte 0-päeval ja mis nägi välja nagu tundegitest programmeerijate grupitöö ainsa eesmärgiga funktsionaalsuse teostatuse pealt arvestus kirja saada. Nagu ilmnes oli see mulje veidi petlik, sest turvaprobleemide õpikunäidete taha oli sokutatud väga huvitavat kraami. Seda kaitses Andris ja järgmises osas võtabki ta nähtu tehnilisest vaatest kokku ja räägib sellest, mida tegi kaitseks.
Avalik veeb oli WordPress ja väidetavasti oli selle peamine roll kontrollida, kas kaitsjad üldse midagi uuendada ja paigata viitsivad – aga loomulikult oli seal sees ka kavalamaid auke, ainult pahavarast koosnevaid pluginaid ja iganenud komponente, millest paigatud versiooni polnud mõtetki otsida. Selle sain endale mina.
Ja siis oli veel üks päris custom veeb ehk pood – Tomcat’i peal jooksev Java-rakendus millest meil sortsu põld… küll aga olid punased näinud vaeva, et selle kaitsmine liiga lihtne ei oleks ja osa funktsionaalsust mh websocketite peale viinud. See saab olema neljas järjejutt, kah minult.
Et neid osasid mitte maha magada… võib meldida ennast meie FB-kanalile või Twitterisse. Või panna monitori peale kleepsu ning käia blogi kontrollimas.
Järjejutu kõik osad:
- Osa 1 – sissejuhatus ja taust (seda sa just lugesid)
- Osa 2 – üks jube tudengiprojekt “väikse” tagauksega
- Osa 3 – põhjalikult iganenud WordPress ja tööstuslikud kaitsemeetmed
- Osa 4 – veebipood, millest meil oli ainult kompileeritud java (ilmumata)