1 00:00:18,000 --> 00:00:24,000 Translated by Matti Lassila (ITKST56 course assignment at JYU.FI) Vuonna 2001 järjestetystä 28C3-tapahtumasta alkaen olemme järjestäneet vähintään yhden CTF-haasteen, 2 00:00:24,000 --> 00:00:32,000 ja kolme seuraavaa puhujaa ovat olleet mukana järjestämässä niitä. 3 00:00:32,000 --> 00:00:42,000 Toivotamme tervetulleeksi suosionosoituksin Andyn, Zahilun ja Marleaun 4 00:00:42,000 --> 00:00:48,000 Tervedys kaikille ja tervetuloa meidän puolestamme 5 00:00:48,000 --> 00:00:58,000 Mitä CTF tarkoittaa? Tässä puheessa kerromme perusteista: mitä CTF on, kuinka pelata sitä ja mitä eri pelitapoja on olemassa. 6 00:00:58,000 --> 00:01:02,000 Tämä on esityksemme ensimmäinen osa, hieman johdantoa asiaan. 7 00:01:02,000 --> 00:01:08,000 Sen jälkeen esittelemme kolme haastetta jotka valmistelimme tämän vuoden CTF-kisaa varten 8 00:01:08,000 --> 00:01:12,000 joten jos puheemme myötä herää kiinnostus CTF-kisaamiseen 9 00:01:12,000 --> 00:01:18,000 on jokin käsitys mitä odottaa 10 00:01:18,000 --> 00:01:23,000 Muutama sana meistä. Joukkueemme nimi on Eat Sleep Pwn Repeat. 11 00:01:23,000 --> 00:01:27,000 tai lyhennettynä ESPR. Olemme CTF-joukkue. 12 00:01:27,000 --> 00:01:34,000 En oikeastaan tiedä kauon joukkueemme on ollut olemassa, kolmen neljän vuoden luokkaa; mahdollisesti jopa viisi. 13 00:01:34,000 --> 00:01:40,000 Olemme joukko henkilöitä jotka ovat vapaa-ajallaan kiinnustuneita tietoturvallisuudesta. 14 00:01:40,000 --> 00:01:48,000 Tutustuimme toisiimme hackerspacessa tai yliopistolla ja me vain ryhdyimme pelaamaan CTF-kisoja ja kaikki osallistuivat 15 00:01:48,000 --> 00:01:54,000 Näin ryhmämme sai alkunsa. 16 00:01:54,000 --> 00:02:00,000 Siinäpä se. Olen nyt puhunut CTF-kisoista 17 00:02:00,000 --> 00:02:07,000 mutta on mahdollista että kaikki eivät vielä tiedä mikä CTF on. CTF on lyhenne sanoista Capture the Flag, tämä ei kuitenkaan 18 00:02:07,000 --> 00:02:11,000 tarkoita samaa asiaa kuin samanniminen Unreal Touramentin pelimoodi. 19 00:02:11,000 --> 00:02:18,000 CTF on joukkuekilpailu 20 00:02:18,000 --> 00:02:25,000 jossa joukkueen ratkaisevat tehtäviä jotka jollain tavalla liittyvät tietoturvaan 21 00:02:25,000 --> 00:02:33,000 CTF-kisaamiseen on kaksi päätapaa, joista on olemassa variaatioita. 22 00:02:33,000 --> 00:02:40,000 Ensimmäinen on hyökkäys ja puolustus -pelitapa ja toinen Jeopardy-pelitapa, josta kerrotaan tarkemmin seuraavilla esityskalvoilla. 23 00:02:40,000 --> 00:02:50,000 Vuosien mittaan CTF-pelaajayhteisö on kasvanut valtavasti. Kun me aloitimme, CTF-kisoja oli vuodessa oli vain kourallinen. 24 00:02:50,000 --> 00:02:54,000 Nyt jos käy katsomassa kuinka monia CTF-tapahtumia on olemassa 25 00:02:54,000 --> 00:03:01,000 niitä on miltei joka viikonloppu, yleensä toisten CTF-joukkueiden järjestämänä 26 00:03:01,000 --> 00:03:05,000 joten tarjolla on paljon tehtävää 27 00:03:05,000 --> 00:03:10,000 Käytännöllisesti katsoen kaikki CTF-tapahtumat ovat pelaajayhteisön järjestämiä 28 00:03:10,000 --> 00:03:14,000 halukkaiden on melko helppo päästä tähän mukaan. 29 00:03:14,000 --> 00:03:22,000 Esityksemme tavoite onkin juuri tämän. Aikaisemmin mainitsin Jeopardy-tyylisen CTF-pelitavan. 30 00:03:22,000 --> 00:03:27,000 Se on helpoin pelitavoista 31 00:03:27,000 --> 00:03:34,000 ja se on myös helpoin järjestää, sillä se muistuttaa Jeopardy TV-ohjelmaa 32 00:03:34,000 --> 00:03:44,000 Se on yhdysvaltalainen TV-visailu, jossa on eri kategorioihin ja vaikeusasteisiin kuuluvia tehtäviä. 33 00:03:44,000 --> 00:03:50,000 Visailussa myönnetään pisteitä tehtävien vaikeusasteen mukaan 34 00:03:50,000 --> 00:03:56,000 Pisteiden määrä voi olla kiinteä 35 00:03:56,000 --> 00:04:05,000 Esimerkiksi tehtävästä voi saada 100, 200 300, 400 tai 500 pistettä vaikeusasteen mukaan. Nykyään usein käytetään dynaaminen pisteytystä 36 00:04:05,000 --> 00:04:14,000 jolloin mitä useampi henkilö ratkaisee tehtävän, sitä vähemmän pisteitä tehtävästä saa 37 00:04:14,000 --> 00:04:24,000 Etukäteen on melko vaikeaa määritellä kuinka paljon pisteitä mistäkin tehtävästä on syytä antaa. 38 00:04:24,000 --> 00:04:29,000 CTF-pelaaminen on periaatteessa helppoa. Valitaan tehtävä ja yritetään ratkaista se. 39 00:04:29,000 --> 00:04:39,000 Ratkaistu tehtävä ilmoitetaan verkon kautta. Tästä saadaan pisteitä ja tätä toistetaan, kunnes kaikki tehtävät on ratkaistu tai joukkue on ensimmäisellä sijalla 40 00:04:39,000 --> 00:04:43,000 Pisteitä eniten kerännyt joukkue voittaa 41 00:04:43,000 --> 00:04:52,000 Tasatilanteessa voittaa joukkue joka keräsi ensimmäisenä voittoon vaaditut pisteet 42 00:04:52,000 --> 00:04:57,000 Tyypillisimmät tehtäväkategoriat Jeopardy-tyylisessä CTF-kisassa ovat 43 00:04:57,000 --> 00:05:02,000 Haltuunotto (ownaaminen) joka on klassinen binääritasolla tehtävä hyökkäys 44 00:05:02,000 --> 00:05:08,000 jossa hankitaan oikeus ajaa omaa koodia palvelimella 45 00:05:08,000 --> 00:05:15,000 Crypto-haasteessa hyökätään huonosti suunniteltuja salaustoteutuksia 46 00:05:15,000 --> 00:05:22,000 tai väärin käytettyjä salausalgoritmeja vastaan 47 00:05:22,000 --> 00:05:29,000 tehtävässä voi olla tarkoituksena purkaa salaus tai luoda salausavaimn kopio 48 00:05:29,000 --> 00:05:36,000 Web-haasteet ovat tavanomaisia, käytetään erilaisia verkkosovelluksia 49 00:05:36,000 --> 00:05:41,000 sovelluksia jotka eroavat toteutustekniikoiltaan palvelin ja selaintoteutuksen osalta. 50 00:05:41,000 --> 00:05:48,000 ESPR-joukkueessa meillä on tehtäväkategoria, jossa hyödynnetään selainhaavoittuvuuksia 51 00:05:48,000 --> 00:05:53,000 mutta näissä ei oikeastaan ole kyse web-haavoittuvuuksista. 52 00:05:53,000 --> 00:05:58,000 Takaisinmallinnushaasteessa tehtävänä voi olla selvittää mitä jokin sovellus tekee 53 00:05:58,000 --> 00:06:07,000 esimerkiksi takaisinmallintaa sovelluksen tekemää laskentaa. 54 00:06:07,000 --> 00:06:10,000 Seuraava pelimoodi on hyökkäys ja puolustus. Tämä on klassinen pelimoodi. 55 00:06:10,000 --> 00:06:20,000 Näitä on vain muutama vuodessa sillä se on erittäin vaativa järjestää, koska toiminta tapahtuu aidossa palvelin- ja verkkoympäristössä. 56 00:06:20,000 --> 00:06:29,000 Jokainen joukkue saa virtuaalikoneen joka käytännöllisesti katsoen on palvelin joka sisältää kilpailua varten suunnitellut ja konfiguroidut palvelut 57 00:06:29,000 --> 00:06:38,000 Nämä virtuaalikoneet ovat yhteydessä toisiinsa VPN:n kautta eli lipuunryöstöön osallistuvien palvelimet ovat toistensa ulottuvulla. 58 00:06:38,000 --> 00:06:46,000 Tavoitteena on hyökätä muiden palvelimille ja ladata dataa näiltä haavoittuvaiseksi konfiguroiduista palvelimilta. 59 00:06:46,000 --> 00:06:52,000 Joukkue lähettää lataamansa datan pelipalvelimelle ja tästä myönnetään pisteitä. 60 00:06:52,000 --> 00:06:59,000 Ja tietysti, jos käytössä olevaan koneeseen on täydet oikeudet, tehtävänä on hyökkäämisen lisäksi 61 00:06:59,000 --> 00:07:03,000 korjata oman palvelimen haavoittuvuuksia ja tehdä muiden hyökkäykset vaikeammiksi 62 00:07:03,000 --> 00:07:11,000 ja oman palvelimen palvelut on myös pidettävä ylhäällä sillä mikäli palvelut ovat alhaalla 63 00:07:11,000 --> 00:07:16,000 muilta pelaajilta ladatuista tiedoista ei myönnetä pisteitä 64 00:07:16,000 --> 00:07:21,000 Joten pelaajilla on kolme päätehtävää hoidettavana. Oman palvelimen tietoturvaa on suojausta on parannettava 65 00:07:21,000 --> 00:07:30,000 On löydettävä muiden palvelimen suojauksesta heikkouksia ja osattava hyödyntää niitä ja on pidettävä oman palvelimen palvelut ylhäällä 66 00:07:30,000 --> 00:07:35,000 Ja kuten sanoin pisteitä myönnetään pääkategorioissa hyökkäys, puolustus ja palvelun saatavuus. 67 00:07:35,000 --> 00:07:43,000 Joko hyökätään toisten palveluita kohtaan tai puolustetaan omia palveluita ja pidetään ne verkossa. 68 00:07:43,000 --> 00:07:50,000 Tätä pelataan useimmiten kierroksina. Joka kierros alkaa alkutilasta ja pisteitä myönnetään kierroksittain. 69 00:07:50,000 --> 00:07:58,000 Viimeisen kierroksen jälkeen pisteet lasketaan yhteen ja eniten pisteitä kerännyt joukkue on voittaja. 70 00:07:58,000 --> 00:08:03,000 Jokaisessa hyökkäys-puolustus -kisassa on eroja säännöissä 71 00:08:03,000 --> 00:08:12,000 mutta nämä ovat pääperiaatteet. Tässä on tyypillinen hyökkäys-puolustus CTF-kisan tuloslista 72 00:08:12,000 --> 00:08:18,000 Kyseessä ovat RUCTFE-kisan tulokset. Ja kyllä vaan, otin tuloslistan missä meidän joukkueemme on ensimmäisellä sijalla. 73 00:08:18,000 --> 00:08:23,000 Eri sarakkeista näkee palvelimilla käynnissä olleet palvelut 74 00:08:23,000 --> 00:08:25,000 Kuten esimerkiksi, Crash, Bin 75 00:08:25,000 --> 00:08:35,000 Weather, Cartographer ja niin edelleen. Punaiset ja vihreät sarakkeet tarkoittavat että palvelu on alhaalla tai ylhäällä. 76 00:08:35,000 --> 00:08:39,000 Taulukosta näkee keräämämme pisteet, palvelun ylhäälläoloprosentti. 77 00:08:39,000 --> 00:08:43,000 Eli nähdään että palvelumme olivat jonkin aikaa alhaalla. Ja tästä näkee kuinka monta lippua hävisimme 78 00:08:43,000 --> 00:08:49,000 Tämä on luku jokaisen sarakkeen oikeassa alareunassa, eli Crash-palvelulle -32. 79 00:08:49,000 --> 00:08:54,000 Eli hävisimme 32 lippua ja keräsimme 15000 lippua- 80 00:08:54,000 --> 00:09:05,000 FP muodostuu näistä kolmesta osa-alueesta ja tämän luvun perusteella joukkueet asetetaan järjestykseen. 81 00:09:05,000 --> 00:09:11,000 Nyt teillä on käsitys kuinka pelata CTF:ää. Mutta miksi sitä kannattaa pelata, no se on miltei itsestäänselvää. 82 00:09:11,000 --> 00:09:19,000 Pelaaminen on hienoa, koska silloin on tilaisuus hakkeroida eri asioita täysin laillisesti koska se kuuluu asiaan 83 00:09:19,000 --> 00:09:24,000 CTF-pelaaminen on hauskaa ja on hauskaa oppia uusia asioita. 84 00:09:24,000 --> 00:09:32,000 CTF-pelatessa oppii paljon uusia asioita, kuten myöskin pelin jälkeen 85 00:09:32,000 --> 00:09:38,000 keskustellessa muiden joukkueiden kanssa ratkaisuista 86 00:09:38,000 --> 00:09:49,000 Pelaamisen kautta syntyy myös uusia kaverisuhteita. Esimerkiksi, joukkueemme on kavereita puolalaisen Dracon Sector -joukkueen kanssa. 87 00:09:49,000 --> 00:09:53,000 Aina kun tapaamme, otamme muutaman oluen ja juttelemme CTF-pelaamisesta ja kaikenlaisesta muusta. 88 00:09:53,000 --> 00:09:59,000 Olemme tosiaan saaneet monia hyviä ystäviä peleistä. Ja saattaa olla että pelaamisen myötä pääsee myös matkustamaan eri puolilla maailmaa. 89 00:09:59,000 --> 00:10:01,000 pelaamaan paikan päälle 90 00:10:01,000 --> 00:10:12,000 Joissain tapauksissa on joitain ennakkokarsintoja jonka jälkeen voidaan osallistua kansainvälisiin kisoihin ja matkustaa paikan päälle pelaamaan ja mahdollisesti jopa voittamaan. 91 00:10:12,000 --> 00:10:21,000 Nyt järjestämämme C3CTF on järjestetty joka vuosi 28C3-konferenssista (vuodesta 2011) alkaen. 92 00:10:21,000 --> 00:10:28,000 Pyrkimyksemme on noudattaa tehtävissä kongressin teemaa. 93 00:10:28,000 --> 00:10:36,000 Tämän vuoden CTF-kisassa meillä oli 636 joukkuetta jotka palauttivat vähintään yhden lipun. 94 00:10:36,000 --> 00:10:40,000 Kyseessä oli pieni lippu, pienen pieni tehtävä, eräänlainen järkevyystesti. 95 00:10:40,000 --> 00:10:48,000 Tarvitsi vain leikata ja liimata merkkijono tekstikenttään jotta näemme kuinka monta joukkuetta on mukana. 96 00:10:48,000 --> 00:10:56,000 Joukkueita oli 636. Kisassa oli 30 tehtävää 97 00:10:56,000 --> 00:11:02,000 ja joukkueet ratkaisivat tehtäviä yhteensä 1457 kertaa. 98 00:11:02,000 --> 00:11:06,000 Tänä vuonna oli lisäksi muutamia vierailijoiden suunnittelemia tehtäviä 99 00:11:06,000 --> 00:11:10,000 joten paljon kiitoksia Kokjo, Tethys, jvoisin, Qubasa ja joernchen 100 00:11:10,000 --> 00:11:18,000 ideoista ja kokonaisista tehtävistä joita saatoimme käyttää 101 00:11:18,000 --> 00:11:26,000 Kolme voittajaa ovat KJC+MHackeroni ensimmäisellä sijalla, toisena pasten ja kolmantena Dragon Sector. 102 00:11:26,000 --> 00:11:44,000 Vielä kerran onnittelut heille. Koska vuosi vuodelta C3CTF on tullut aloittelijoiden kannalta vaikeammaksi 103 00:11:44,000 --> 00:11:52,000 viime vuonna järjestimme ensimmäisen kerran Junior CTF -pelin jossa on helpompia tehtäviä jotka ovat lähempänä 104 00:11:52,000 --> 00:11:59,000 sitä tehtävien vaikeustasoa kun me aloitimme. 105 00:11:59,000 --> 00:12:09,000 Kisaan osallistui 520 joukkuetta, joten ei kovin montaa mutta he ratkaisivat pelin 33 haastetta kaikkiaan 2761 kertaa 106 00:12:09,000 --> 00:12:15,000 eli pelissä ratkaistiin enemmän tehtäviä kuin C3CTF:ssä. 107 00:12:15,000 --> 00:12:20,000 myös tässä CTF:ssä oli hienoja vierailijoiden suunnittelemia haasteita, joten kiitokset gehaxelt, domenukk, pr0me ja Trolldemorted 108 00:12:20,000 --> 00:12:24,000 ja voittajat ovat mahtavia! 109 00:12:24,000 --> 00:12:34,000 Voittajia ovat Made in MIM, toisella sijalla sno ja kolmantena ZenHack 110 00:12:34,000 --> 00:12:42,000 Ja nyt kun tiedossa on mitä CTF-kisassa tapahtuu niin mitä tarvitse tehdä että pääsee pelaamaan? 111 00:12:42,000 --> 00:12:48,000 Ensimmäinen asia jota tarvitaan on CTF-tapahtuma. On olemassa hieno verkkosivusto ctftime.org 112 00:12:48,000 --> 00:12:52,000 sieltä näkee kaikki tulossa olevat CTF-tapahtumat 113 00:12:52,000 --> 00:12:58,000 ja sivustolla voi rekisteröityä tulossa oleviin peliin. Kun peli käynnistyy, pääsee mukaan. Mitä taitoihin tulee 114 00:12:58,000 --> 00:13:03,000 niitä ei tarvitse kovin paljon. Tarvitsee kuitenkin osata ohjelmoida 115 00:13:03,000 --> 00:13:06,000 Jonkin skriptauskielen osaaminen on tarpeen, sitä tarvitaan työkaluksi 116 00:13:06,000 --> 00:13:15,000 esimerkiksi jonkin tiedoston parserointia varten tai verkkoliikenteen käsittelyyn ja niin edelleen. Takaisinmallinnusta ja binäärihaavoittuvuuksien hyväksikäyttöä varten 117 00:13:15,000 --> 00:13:22,000 on ehdottomasti - valitettavasti - tunnettava assembly-kieltä ja takaisinmallinnustaitoja. Kaiken tämän yhdistämistä varten 118 00:13:22,000 --> 00:13:28,000 tarvitaan perustason Linux-taitoja, koska tarvittavat työkalut ovat parempia Linuxissa kuin Windowsissa 119 00:13:28,000 --> 00:13:33,000 mutta toki tarvittaessa voidaan käyttää Windowsin Linux-alijärjestelmää 120 00:13:33,000 --> 00:13:38,000 joka nykyään toimii samoin. Haltuunoton ja binäärihaavoittuvuuksien hyväksikäyttöä 121 00:13:38,000 --> 00:13:41,000 oppii niin sanotuista sotapeleistä. Viimeisessä esityskalvossa on joitain linkkejä 122 00:13:41,000 --> 00:13:46,000 Niistä kannattaa aloittaa. Sotapeli on CTF joka on jatkuvasti saatavilla verkossa. 123 00:13:46,000 --> 00:13:51,000 Sotapelejä voi pelata läpi omaan tahtiin ilman aikarajoitusta. 124 00:13:51,000 --> 00:13:59,000 Myös vanhoja CTF-haasteita voi tutkia. Näiden arkistoja löytyy verkosta. Arkistoidun CTF:n voi ladata, ajaa paikallisesti ja koittaa hyväksikäyttää niistä löytyviä haavoittuvuuksia. 125 00:13:59,000 --> 00:14:04,000 Ja on ollut 126 00:14:04,000 --> 00:14:12,000 muiden joukkueiden laatimia yhteenvetoja CTF-haasteista 127 00:14:12,000 --> 00:14:17,000 eli joku saattaa kirjoittaa ratkaistusta haasteista esimerkiksi blogikirjoituksen, kuinka haasteet ratkaistiin 128 00:14:17,000 --> 00:14:22,000 Nämä yhteenvedot auttavat oppimaan. Mikäli oppiminen videon kautta tuntuu sopivan paremmin 129 00:14:22,000 --> 00:14:29,000 Youtubessa on tili nimeltä Life Overflow jolla julkaistaan todella hienoja videoita erilaisista CTF-haasteista 130 00:14:29,000 --> 00:14:35,000 videoijen julkaisija käy haasteita läpi, kertoo kuinka hän ratkaisi haasteen ja mikä idea haasteeen takana on ollut. 131 00:14:35,000 --> 00:14:42,000 Toki, tätä ei ole syytä tehdä yksin sillä CTF-haasteita on hauskempi ratkaista yhdessä 132 00:14:42,000 --> 00:14:47,000 Verkosta voi löytää ryhmiä, samanhenkisiä ihmisiä ja mene käymään hackespacessa ja kysele 133 00:14:47,000 --> 00:14:54,000 olisiko joku kiinnostunut osallistumaan porukalla CTF-tapahtumaan tai pelaamaan sotapeliä, juuri niin kuin me teimme. 134 00:14:54,000 --> 00:15:02,000 Nyt kerromme mitä äskeinen CTF piti sisällään. Annan vuoron Martinille joka käy läpi pelin haasteita 135 00:15:02,000 --> 00:15:09,000 [ohjaajan kommentti] 136 00:15:09,000 --> 00:15:17,000 Aion kertoa kuinka lähestyä CTF-haasteita 137 00:15:17,000 --> 00:15:23,000 Voin lämpimästi suositella Polyan kirjaa (How to solve it), joka kertoo ongelmanratkaisusta 138 00:15:23,000 --> 00:15:30,000 Käytän esimerkkinä Junior CTF -pelin tehtävää nimeltään Blind. 139 00:15:30,000 --> 00:15:34,000 Tämä on tehtäväkuvaus, hakkerointia sokeana 140 00:15:34,000 --> 00:15:37,000 ja tässä on polku tehtävään, eli ryöstettävään lippuun 141 00:15:37,000 --> 00:15:44,000 vaikeustasteeltaan tehtävä on keskitasoa, suhteessa Junior CTF -pelin yleiseen vaikeustasoon 142 00:15:44,000 --> 00:15:59,000 Haaste perustuu bugiin joka löytyi 2017 ja nyt kerron, kuinka haastetta voi lähestyä. Ongelman ratkaiseminen vaatii 143 00:15:59,000 --> 00:16:10,000 että ongelma täytyy ymmärtää aluksi. Jep, eli kun menee tuohon osoitteeseen näytetään tämä lähdekoodi. 144 00:16:10,000 --> 00:16:15,000 Tämä on PHP-koodia. Nyt käymme sen läpi. 145 00:16:15,000 --> 00:16:18,000 Ensimmäinen osa lähdekoodia on itse asiassa vihje. 146 00:16:18,000 --> 00:16:26,000 Sitä ei tarvitse haasteen ratkaisuun, mutta se vihjaa PHP Object Injection haavoittuvuuteen 147 00:16:26,000 --> 00:16:30,000 joka oli bugi 148 00:16:30,000 --> 00:16:36,000 jonka avulla saattoi sisällyttää paikallisia tiedostoja käytettäessä PHP 5.3 -versiota tai vanhempaa 149 00:16:36,000 --> 00:16:45,000 Haasteessa kuitenkin käytetään PHP 7-versiota. Seuraava koodilohko on täytettä. 150 00:16:45,000 --> 00:16:56,000 Käytössä on kaksi luokkaa, luokat Black ja Green. Ne asettavat syntaksikorostuksen väriasetuksia 151 00:16:56,000 --> 00:17:06,000 ja jos funktiolle tarjoaa store-parametrin, voidaan teema-asetukset tallentaa evästeeseen, tämä on tärkeää myöhempää ajatellen. 152 00:17:06,000 --> 00:17:15,000 Seuraava osio on kiinnostava sillä se vihjaa polusta joka johtaa haavoittuvuuden hyväksikäyttöön 153 00:17:15,000 --> 00:17:20,000 Ensimmäinen askel on URL-osoite teemaan 154 00:17:20,000 --> 00:17:27,000 Otetaan GET-parametri ja tallennetaan se $_ -muuttujaan 155 00:17:27,000 --> 00:17:37,000 Seuraavalla rivillä tarkistetaan onko muuttuja joko merkkijono "Black" tai "Green". 156 00:17:37,000 --> 00:17:48,000 Sitten tarkistetaan onko tällainen luokka olemassa. Seuraavaksi asetetaan muuttuja arvoon joka riippuu URL-parametrista. 157 00:17:48,000 --> 00:17:59,000 Tämä on kiinnostava osa, nyt luodaan objekti joka edustaa jompaa kumpaa luokkaa, Black tai Green. 158 00:17:59,000 --> 00:18:08,000 tässä on täysi kontrolli parametreista joita annetaan luokan alustajalle 159 00:18:08,000 --> 00:18:17,000 Seuraava osa koodia käsittelee myös teemaa mutta tällä kertaa evästeen kautta 160 00:18:17,000 --> 00:18:27,000 tässä tarkastetaan onko evästeen ensimmäinen osa olemassaoleva luokka. 161 00:18:27,000 --> 00:18:36,000 ja sen jälkeen välitetään evästeeseen tallennetut parametrit luokan alustajalle. 162 00:18:36,000 --> 00:18:43,000 Näin luodaan olio tästä luokasta. Viimeinne osa koodia tulostaa tietoa ladatuista moduuleista 163 00:18:43,000 --> 00:18:59,000 Bugissa on kyse siitä että on mahdollisuus luoda mielivaltainen objekti siten että on täysi kontrolli luokan alustajan parametreista. 164 00:18:59,000 --> 00:19:13,000 Joten seuraava askel on suunnitelman laatiminen. Kerätään yhteen kaikki mitä tehtävässä on annettuna ja mitä pitää saavuttaa. 165 00:19:13,000 --> 00:19:22,000 Eli nyt meillä on täysi kontrolli evästeeseen tallennettavasta datasta ja voimme luoda olemassaolevasta PHP-luokasta olion 166 00:19:22,000 --> 00:19:23,000 ja luokan rakentajalle annettaviin argumentteihin on täysi kontrolli 167 00:19:23,000 --> 00:19:37,000 Seuraavaksi täytyy löytää luokka joka tekee haluttuja asioita, kuten lukee tiedoston kun luokalle annetaan tietyt argumentit. 168 00:19:37,000 --> 00:19:50,000 Ja tässä meillä on kätevä luokka, SimpleXML, jolla on mahdollista lukea tiedostoja verkon yli. 169 00:19:50,000 --> 00:19:57,000 Jos option-muuttujan asettaa arvoon kaksi, sitä voi käyttää XML-elementtien korvaamiseen toisella 170 00:19:57,000 --> 00:20:02,000 Tämä on tärkeää myöhemmin. 171 00:20:02,000 --> 00:20:08,000 Nyt meidän täytyy vain toteuttaa suunnitelma 172 00:20:08,000 --> 00:20:16,000 Tämä on helppo eksploitaatio. Luodaan theme-eväste 173 00:20:16,000 --> 00:20:21,000 siten että ensimmäinnen osa evästettä on luokan nimi, SimpleXMLElement 174 00:20:21,000 --> 00:20:32,000 ja toinen osa evästettä on lipun polku. Ja kuten näkyy, lippu tulostuu PHP-varoitusviesteihin 175 00:20:32,000 --> 00:20:41,000 joten tämä toimii koska varoitukset olivat päällä. Seuraava askel ongelman ratkaisussa on katsominen taaksepäin 176 00:20:41,000 --> 00:20:48,000 ja miettiä kuinka haastetta voisi lähestyä toisella tavalla tai toisenlaisten rajoitteiden ollessa voimassa. 177 00:20:48,000 --> 00:20:54,000 Eli jos varoitukset eivät olisi päällä 178 00:20:54,000 --> 00:20:58,000 olisimme melko sokeita. Haasteen nimi tulee tästä. 179 00:20:58,000 --> 00:21:11,000 Emme saa tulostetta. XML:ään voi sisällyttää ulkoisia entiteettejä, jotka toimivat näin. Määritellään elementti 180 00:21:11,000 --> 00:21:17,000 ja polku johon elementti viittaa. 181 00:21:17,000 --> 00:21:25,000 eli sisällytetään polku XML.ään. Haavoittuvuuden hyväksikäyttö tapahtuu näin. 182 00:21:25,000 --> 00:21:36,000 Omassa hallussa olevalta palvelimelta sisällytetään XML-tiedosto joka näkyy esityskalvon alareunassa 183 00:21:36,000 --> 00:21:43,000 joka ottaa lipun ja lähettää sen sisällön omalle palvelimelle. 184 00:21:43,000 --> 00:21:52,000 Tämänkaltainen yksinkertainen exploit-koodi ajetaan käynnistämällä PHP-palvelinprosessi ja tekemällä 185 00:21:52,000 --> 00:21:59,000 pyyntö tähän osoitteeseen, palvelin antaa tälläisen vastauksen 186 00:21:59,000 --> 00:22:07,000 Näyttää tältä. Ja koska lippu on Base64-enkoodattu, se täytyy dekoodata. 187 00:22:07,000 --> 00:22:15,000 Ja näin saamme lipun. Seuraava osa kertoo 188 00:22:15,000 --> 00:22:24,000 CTF-pääkisasta. Kiitokset! 189 00:22:24,000 --> 00:22:33,000 Näitte juuri esimerkin melko tyypillisesti verkossa tapahtuvasta CTF-haasteesta 190 00:22:33,000 --> 00:22:37,000 mutta tiedämme että on olemassa paljon joukkueita jotka ovat todella, todella taitavia 191 00:22:37,000 --> 00:22:44,000 jotka ovat harrastaneet CTF-tapahtumia useita vuosia. Jotkut työskentelevät tietoturvan parissa päivätyönään 192 00:22:44,000 --> 00:22:50,000 joten, tottakai, halusimme luoda erittäin haastavan CTF-kisan myös näille joukkueille 193 00:22:50,000 --> 00:23:02,000 Yksi tavoitteemme oli luoda suhteellisen realistisia haasteita jotka perustuvat todellisessa maailmassa käytössä oleviin ohjelmistoihin ja haavoittuvuuksiin 194 00:23:02,000 --> 00:23:10,000 Joten tässä kalvossa näkyy joidenkin niiden ohjelmistojen logoja joihin nyt järjestämämme CTF:n haasteet perustuivat. 195 00:23:10,000 --> 00:23:18,000 Hauskana yksityiskohtana tällä kertaa kolme joukkuetta käytti kukin eriä nollapäivähaavoittuvuutta 196 00:23:18,000 --> 00:23:22,000 ja ratkaisivat tehtävän käyttäen näitä haavoittuvuuksia sen sijaan että olisivat ratkaisseet tehtävän kuten oli aiottu 197 00:23:22,000 --> 00:23:30,000 mutta tämä kuuluu pelin henkeen. En tiedä mitä tämä kertoo meidän CTF:stä mutta tämä oli mielenkiintoista. 198 00:23:30,000 --> 00:23:34,000 Aion nyt esitellä kaksi pelissä olutta haastetta 199 00:23:34,000 --> 00:23:45,000 Esittelen selainhaavoittuvuudmen hyväksikäytön, peliympäristön pystytyksen ja kuinka järjestää tämänkaltainen haaste ja niin edelleen.st such a challenge, cetera. 200 00:23:45,000 --> 00:23:51,000 Jo kahtena viime vuonna meillä oli selainhaavoittuvuden hyväksikäyttöön liittyvä haaste 201 00:23:51,000 --> 00:23:56,000 Selaimissa on jo useita vuosia ollut oletuksena käytössä sandbox-ominaisuus 202 00:23:56,000 --> 00:24:03,000 Joka tarkoittaa sitä, että jos haavoittuvuus on selaimen sisältörenderoinnissä 203 00:24:03,000 --> 00:24:12,000 se ei yksin riitä selaimen haltuunottoon. Viime vuonna haasteessa oli vain selaimen renderöinnissä olevan haavoittuvuuden hyväksikäyttö 204 00:24:12,000 --> 00:24:20,000 ilman sandboxia. Tänä vuonna päätimme ottaa haasteeseen koko selaimen sandboxin kanssa haasteeseen jossa on kaksi osaa 205 00:24:20,000 --> 00:24:24,000 Yksi osa on sisältörenderöinti, WebKit-komponentin hyväksikäyttö. 206 00:24:24,000 --> 00:24:27,000 ja toinen osa on 207 00:24:27,000 --> 00:24:37,000 sandboxista ulos murtautuminen. Perustimme haasteen todelliseen haavoittuvuuksien hyväksikäyttöketjuun joka esiteltiin tänä vuonna tai viime vuonna 208 00:24:37,000 --> 00:24:45,000 Kuinka tällainen haaste järjestestetään? Mitä me teimme, liittyi Webkitiin tällä kertaa. 209 00:24:45,000 --> 00:24:54,000 Viime vuonna oli Chrome ja sitä aikaisemmin Firefox, joten tänä vuonna käytimme WebKitiä joka on muun muassa Safarissa käytetty selainmoottori. 210 00:24:54,000 --> 00:25:01,000 ja me muutimme sitä niin että muutimme selaimen implementaatiota Javascript-toteutuksen osalta lisäämällä huonosti toteutettua optimointikoodia 211 00:25:01,000 --> 00:25:05,000 Tämä oli ensimmäinen osa, eli nyt Webkitissä on haavoittuvuus. 212 00:25:05,000 --> 00:25:12,000 Seuraavaksi ohjelmoimme MacOS-järjestelmäpalvelun joissa on haavoittuvuuksia 213 00:25:12,000 --> 00:25:17,000 perustuen haavoittuvuuksiin joita on esitelty tänä vuonna 214 00:25:17,000 --> 00:25:21,000 joten järjestelmäpalvelut sisältävät bugeja 215 00:25:21,000 --> 00:25:31,000 Niissä oli haavoittuvuuksia. Ja sen jälkeen otimme käyttöön muokatun Safarin ja haavoittuvat järjestelmäpalvelut käyttöön MacOSX-virtuaalikoneessa. 216 00:25:31,000 --> 00:25:35,000 Oikealla ylhäällä näkyy miten CTF-kilpailijat näkevät tämän 217 00:25:35,000 --> 00:25:39,000 Kilpailijoita varten on verkkosivu jota kautta he voivat lähettää osoitteen eksploitaatiomenetelmäänsä. 218 00:25:39,000 --> 00:25:43,000 Kyseessä on selainhaavoittuvuus eli eksploitaatiomenetelmä on jokin verkkosivu. 219 00:25:43,000 --> 00:25:47,000 Kilpailijat voivat kirjoittaa 220 00:25:47,000 --> 00:25:56,000 ja lähettää URL-osoitteen eksploitaatiokoodiin. Tällöin meidän palvelimella käynnistyy virtuaalikone. 221 00:25:56,000 --> 00:26:04,000 jossa avautuu käyttäjän antama URL-osoite Safari-selaimessa. Käyttäjät saavat palautteena videon selaimen käynnistymisestä. 222 00:26:04,000 --> 00:26:09,000 Haasteen tavoite on lukea palvelimelta tiedosto ./flag.txt 223 00:26:09,000 --> 00:26:18,000 Kilpailijat tekevät minkä pystyvät saadakseen tiedoston näkymään palvelimen näytöllä ja siten päätymään videolle. 224 00:26:18,000 --> 00:26:23,000 Eli tältä haaste näytti pelaajan näkökulmasta. 225 00:26:23,000 --> 00:26:29,000 Ratkaisua varten pelaajat saivat tässä haasteessa meiltä WebKit-patchin 226 00:26:29,000 --> 00:26:34,000 ja haavoittuvaisten systeemipalvelut binääreinä, joten pelaajien täytyi käyttää takaisinmallinnusta 227 00:26:34,000 --> 00:26:39,000 jonka jälkeen he voivat etsi koodista haavoittuvuuksia, toivottavasti löytäen joitain. 228 00:26:39,000 --> 00:26:44,000 Sen jälkeen on mahdollista kirjoittaa haavoittuvuuksia varten eksploit, tässä tapauksessa haittakoodia sisältävän verkkosivun. 229 00:26:44,000 --> 00:26:56,000 Joukkue laittaa haittakoodia sisältävän verkkosivun jollekin julkisen verkon palvelimelle jolle heillä on pääsy ja sen jälkeen lähettävät osoitteen haittakoodiin CTF-tulospalveluun. 230 00:26:56,000 --> 00:27:03,000 Ja kuten totesin, tämän jälkeen virtuaalikone käynnistyy, tallentaa videon ja näyttää sen pelaajille 231 00:27:03,000 --> 00:27:14,000 Video näyttää tältä, toivottavasti se toimii. Hyvä. Pelaajat näkevät juuri tämänkaltaisen videon kun he ovat lähettäneet haittakoodiosoitteen tulospalveluun. 232 00:27:14,000 --> 00:27:18,000 Pelaajat näkevät tämän videon. Tutkitaan seuraavaksi mitä tässä tapahtui. 233 00:27:18,000 --> 00:27:24,000 Taustalla näkyy modifioitu Safari, johon on avautunut pelaajien lähettämä verkko-osoite 234 00:27:24,000 --> 00:27:29,000 ja se on tulostanut joitain asioita eksploitista 235 00:27:29,000 --> 00:27:37,000 eli se ajaa WebKit-eksploitin. Joten nyt hyökkääjät voivat ajaa koodia Webkit-prosessissa 236 00:27:37,000 --> 00:27:43,000 ja käyttää sandboxin ulkopuolella olevia haavoittuvaksi ohjelmoituja järjestelmäpalveluita 237 00:27:43,000 --> 00:27:48,000 eli se voi ajaa mitä tahansa komentoja sandboxin ulkopuolella 238 00:27:48,000 --> 00:27:55,000 Eli tässä tapauksessa, eksploit avaa ./flag.txt -tiedoston tekstieditorissa 239 00:27:55,000 --> 00:27:56,000 tiedosto on todennäköisesti melko pieni 240 00:27:56,000 --> 00:28:06,000 Vasemmalla yläkulmassa näkyy tekstieditorissa avattu lippu jonka sisältö täytyy kirjoittaa tulospalveluun jonka jälkeen järjestelmä antaa haasteeseen kuuluvat pisteet. 241 00:28:06,000 --> 00:28:12,000 Eli näin se toimii. Miksi meidän mielestämme tämä on hieno haaste 242 00:28:12,000 --> 00:28:17,000 ja miksi kilpailijoiden kannattaa ratkaista tämä. Tietty, tästä saa paljon pisteitä. 243 00:28:17,000 --> 00:28:20,000 Kyseessä ei ole yksi, vaan kolme haastetta. 244 00:28:20,000 --> 00:28:29,000 Suunnittelimme haasteen niin että sandbox-ulosmurtautumisen voi ratkaista, riippumatta siitä onnistuiko WebKit-hyväksikäytön toteutus. 245 00:28:29,000 --> 00:28:34,000 Eli tarjolla oli yksi lippu jos ainoastaan WebKit-osio onnistui 246 00:28:34,000 --> 00:28:41,000 Eli pelkästään Safari-osuus. Toinen lippu oli mahdollista saada jos andbox-ulosmurtautuminen onnistui 247 00:28:41,000 --> 00:28:47,000 ja kolmas lippu, jos onnistui yhdistämään nämä kaksi. 248 00:28:47,000 --> 00:28:56,000 Lisäksi tavoitteemme oli suunnitella haasteet siten, että ne tarjoavat mahdollisuuden oppia jotain uutta. 249 00:28:56,000 --> 00:29:04,000 WebKit-osuus mahdollisesti opetti jotain lisää Javascriptistä 250 00:29:04,000 --> 00:29:13,000 tai JIT-kääntäjien haavoittuvaisuuksista ratkaistaessa haastettau tai MacOSX-järjestelmäpalveluista. 251 00:29:13,000 --> 00:29:18,000 Eli tämän kautta pääsee alkuun MacOSX-tietoturva-asioissa 252 00:29:18,000 --> 00:29:23,000 Eli oppimisnäkökulma on myös hyvä muistaa. Olemme julkaisemassa lähdekoodit. 253 00:29:23,000 --> 00:29:33,000 Tämän haasteen siis. Koodit tulevavat olemaan muutaman tunnin päästä Github-tililläni 254 00:29:33,000 --> 00:29:42,000 tämänkaltaiset haasteet kenties helpottavat siirtymää CTF-kisaamisesta tietoturva-alan töihin. 255 00:29:42,000 --> 00:29:46,000 Lähdekoodi antaa toivottavasti mukavan johdannon, jep. 256 00:29:46,000 --> 00:29:51,000 Ja tässä oli osuuteni. Seuraavaksi Andy jatkaa. 257 00:29:51,000 --> 00:29:57,000 Kiitokset. Minäkin suunnittelin pari haastetta. 258 00:29:57,000 --> 00:30:03,000 Te jotka olette riittävän vanhoja, muistanevat tämän puhelimen 259 00:30:03,000 --> 00:30:12,000 Tarina minun haasteeni takana on että aikaisemmin olin kiinnostunut GSM-asioista, halusin tietää miten se toimii 260 00:30:12,000 --> 00:30:19,000 Joten pystytin kotiin oman ohjelmistoradioon perustuvan GSM-verkon ja käytin vanhoja Nokia-puhelimia 261 00:30:19,000 --> 00:30:25,000 Sain sitten idean rakentaa oman puhelimen. 262 00:30:25,000 --> 00:30:32,000 Tässä näkyy toteuttamani Nokia-puhelimen käyttöliittymä 263 00:30:32,000 --> 00:30:38,000 joka ottaa yhteyttä GSM-verkkoon joka ei kuitenkaan käytä radioaaltoja 264 00:30:38,000 --> 00:30:48,000 vaan GSM-liikennöinti tapahtuu UDP-paketteina, multicast-liikenteenä 265 00:30:48,000 --> 00:30:53,000 ja lisäksi käytössä on ohjelmistoradio, joten itse toteuttamani puhelin voi kommunikoida aidon puhelimen kanssa 266 00:30:53,000 --> 00:31:01,000 Näitte juuri sen. Tämä ominaisuus, jolloin radioaaltoja ei käytetä 267 00:31:01,000 --> 00:31:06,000 GSM-verkossa on yleensä käytetty sovelluskehitystyössä yksikkötestatessa 268 00:31:06,000 --> 00:31:15,000 GSM-verkon palveluita omassa verkossa koska silloin ei ole järkevää sotkea tähän mukaan radioaaltoja ja kaikkea muuta vain sovellustestausta varten 269 00:31:15,000 --> 00:31:21,000 Joten he toteuttivat GSM-verkon Ethernetissä 270 00:31:21,000 --> 00:31:29,000 Tämä on täydellistä CTF-haastett ajatellen koska pelaajat eivät ole pelkästään paikallisia 271 00:31:29,000 --> 00:31:38,000 Joten teoriassa, voisin pystyttää ohjelmistoradion ja lähettää omaan GSM-verkkoni kautta jos käytössä on oikeanlaiset lisenssit 272 00:31:38,000 --> 00:31:44,000 jolloin tämän voisi tehdä radioaalloilla. 273 00:31:44,000 --> 00:31:50,000 Mutta teoriassa tämän voisi tehdä. Mutta tällöin joku USA:ssa tai muualla ei voisi osallistua haasteeseen 274 00:31:50,000 --> 00:31:56,000 ja olemme aina halunneet että kisaan voi osallistua myös muuten kuin paikan päällä 275 00:31:56,000 --> 00:32:01,000 Joten pystytin OpenVPN-tunnelin jossa hyökkäyksen kohteena oleva puhelin on 276 00:32:01,000 --> 00:32:10,000 jolloin puhelimeen pääsee UDP monilähetyksen kautta 277 00:32:10,000 --> 00:32:19,000 Eli tämä soveltuu tarkoitukseen täydellisesti. Haastetta varten toteutin puhelintoteutukseen bugin yhteenliitettävien SMS-viestien käsittelyyn. 278 00:32:19,000 --> 00:32:25,000 Puhelintoteutuksessa on vain kaksi toimintoa. Se voi lähettää viestejä ja voi vastaanottaa viestejäThe phone only has two features. 279 00:32:25,000 --> 00:32:34,000 Haasteessa puhelin oli verkossa ja sitä saattoi käyttää vain verkon yli 280 00:32:34,000 --> 00:32:38,000 Puhelimella pystyi vain lähettämään viestejä mutta käytännöllisesti katsoen 281 00:32:38,000 --> 00:32:40,000 minkälaisia viestejä vain 282 00:32:40,000 --> 00:32:47,000 Viesteissä voi pitäytyä standardeissa, mutta voi myös lähettää viestejä jotka eivät ole standardin mukaisia ja tehdä kaikenlaisia erikoisia asioita. 283 00:32:47,000 --> 00:32:55,000 SMS viesteihin on käytössä vain 160 merkkiä ja vanhoissa Nokia-puhelimissa oli ominaisuus 284 00:32:55,000 --> 00:33:01,000 laskuri oikealla jossa näkyi kuinka monta merkkiä viestiin voi vielä käyttää 285 00:33:01,000 --> 00:33:05,000 ja kauttaviiva, jonka jälkeen kuinka moneen viestiin pitkän tekstin sisältävä viesti jakaantui 286 00:33:05,000 --> 00:33:10,000 koska puhelin jakaa viestin osiin 287 00:33:10,000 --> 00:33:15,000 muutaman sadan merkin mittaisiin osiin ja sisällyttää otsaketiedot viestin alkuun. 288 00:33:15,000 --> 00:33:19,000 Yksi, kaksi tai kolme tekstiviestiä lähetetään toiseen puhelimeen. 289 00:33:19,000 --> 00:33:26,000 ja vastaanottajapuhelin ryhtyy yhdistämään viestejä 290 00:33:26,000 --> 00:33:31,000 SMS-viesti jaetaan maksimissaan kolmeen osaan 291 00:33:31,000 --> 00:33:34,000 mutta standardin mukaan osia voi olla jopa 250 292 00:33:34,000 --> 00:33:41,000 Kaikki nämä viestit sisältävät header-tietoja 293 00:33:41,000 --> 00:33:45,000 ja indeksinumeron, kuinka monennesta viestistä on kyse 294 00:33:45,000 --> 00:33:51,000 indeksi alkaa ykkösestä ja jatkuu 225:een. Tässä tapauksessa voi käyttää numeroita yksi, kaksi ja kolme 295 00:33:51,000 --> 00:33:58,000 Nyt koostettava SMS on jossain päin paikallista pinopuskuria 296 00:33:58,000 --> 00:34:03,000 Sijainti jossa purettu teksti ensimäisestä viestistä on 297 00:34:03,000 --> 00:34:10,000 ja viesti rakennetaan uudelleen järjestysnumeroiden pohjalta 298 00:34:10,000 --> 00:34:16,000 Haasteessa ei tarkasteta viestin järjestysnumeroa, onko numero yksi, kaksi tai kolme 299 00:34:16,000 --> 00:34:22,000 joten numeroksi voi asettaa minkä vain, jolloin kirjoittaminen menee pinopuskurin ulkopuolelle 300 00:34:22,000 --> 00:34:33,000 prosessit pitävät kirjaa tilastaan pinossa 301 00:34:33,000 --> 00:34:39,000 esim tietoa siitä missä kohtaa prosessi oli menossa ennen funktiokutsua jotta kohtaan voidaan palata tehtävän suorittamisen jälkeen 302 00:34:39,000 --> 00:34:46,000 Tämän arvo ylikirjoittamalla kontrollivuo voidaan kaapata ja tämän jälkeen voidaan käyttää ROB-nimellä tunnettua tekniikkaa 303 00:34:46,000 --> 00:34:52,000 ohjelmakoodin ajo-oikeuden saamiseksi ja ajaa koodia puhelimessa 304 00:34:52,000 --> 00:34:57,000 Samaan tapaan kun Zeiler äskettäin havainnollisti kuinka selainta käyttäen avattiin tekstieditori 305 00:34:57,000 --> 00:35:06,000 voidaan ottaa yhteys toiseen laitteeseen, saada auki Linux-shell puhelimeen jonka kautta haasteen lippu voidaan ottaa haltuun 306 00:35:06,000 --> 00:35:12,000 Siinäpä se, puheeni oli tässä. Haluan kiittää koko CTF-yhteisöä 307 00:35:12,000 --> 00:35:18,000 CTF-kisaamme osallistuneita pelaajia ja muita joukkueita jotka järjestävät pelejä 308 00:35:18,000 --> 00:35:23,000 CTF-yhteisölle panostaen paljon ei ainoastaan 309 00:35:23,000 --> 00:35:30,000 pelaamiseen vaan myöskin järjestelyihin jotka antavat muille mahdollisuuden pelata 310 00:35:30,000 --> 00:35:35,000 Haluan myös kiittää 3C-konferenssin järjestäjiä 311 00:35:35,000 --> 00:35:42,000 koska saimme tänä vuonna oman alueen käyttöömme jossa paikan päällä pelanneet joukkueet saattoivat kokoontua yhteen 312 00:35:42,000 --> 00:35:52,000 Se oli todella hienoa. Oli mahtavaa nähdä 200 hakkeria istumassa yhdessä pöytien ääressä ja ratkaisemassa suunnittelemiamme haasteita 313 00:35:52,000 --> 00:35:57,000 Se oli aivan mahtavaa. Haluan vielä uudelleen kiittää vierailijahaasteiden suunnittelijoita. 314 00:35:57,000 --> 00:36:07,000 Nyt voisi olla kysymys-vastausosion aika. 315 00:36:07,000 --> 00:36:15,000 Yksi asia vielä. Jos CTF-kisaaminen kiinnostaa tässä on linkkejä resursseihin jotka mainitsin aikaisemmin. 316 00:36:20,000 --> 00:36:26,000 Vilkaiskaa niitä jos olette kiinnostuneita. Tokitoivon että tulette mukaan CTF-yhteisöön 317 00:36:26,000 --> 00:36:34,000 Näen että yleisössä on jo joitain kysymyksiä. 318 00:36:34,000 --> 00:36:41,000 Aloitetaan mikrofonista numero kaksi. 319 00:36:41,000 --> 00:36:47,000 Kiitokset puheesta. Yliopistoni IT-turvallisuuskurssi oli arvosteltu CTF. 320 00:36:47,000 --> 00:36:52,000 saimme arvosanat CTF-haasteesta keräämiemme pisteiden perusteella 321 00:36:52,000 --> 00:36:57,000 Mikä on mielipiteenne tämäntyyppisestä arvostelusta? 322 00:36:57,000 --> 00:37:07,000 Mitä ajattelett kun yliopistot järjestävät CTF:n arviointitarkoituksessa- 323 00:37:07,000 --> 00:37:12,000 Meille tämä on harrastus ja hieno tapa oppia uusia asioita 324 00:37:12,000 --> 00:37:15,000 Henkilökohtaisesti en vastusta tällaista arvostelua 325 00:37:15,000 --> 00:37:26,000 En ole varma laittaisinko itse arvosanan riippuvaiseksi pisteistä mutta ajatttelen että itsessään tämä on hieno asia tehdä oppimiskokemuksena. 326 00:37:26,000 --> 00:37:32,000 Ei ole väliä osallistuuko CTF:ään osana opintoja tai yksityiselämässä. 327 00:37:32,000 --> 00:37:40,000 Aina kun me ratkaisemme muiden joukkueiden suunnittelemia haasteita, opimme aina uutta, uusia kikkoja 328 00:37:40,000 --> 00:37:46,000 Eli en ajattele että se on huono idea. 329 00:37:46,000 --> 00:37:55,000 Kiitoksia kysymyksestä. Seuraava kysymys tulee mikrofonista numero kolme. Mitä tehdä kun johonkin tehtävään jumittuu? 330 00:37:55,000 --> 00:38:00,000 Hyvä kysymys. Yleensä auttaa kun pyytää jonkun muun joukkueesta apuun. 331 00:38:00,000 --> 00:38:06,000 Pidä tauko ja pyydä jotakuta muuta joukkueesta jolla ei ole mitään käsitystä työn alla olevasta haasteesta 332 00:38:06,000 --> 00:38:10,000 käymään läpi löydöksesi tai vain juttelemaan kanssasi haasteesta 333 00:38:10,000 --> 00:38:13,000 Toisella henkilöllä voi olla uusia ideoita joita kokeilla 334 00:38:13,000 --> 00:38:22,000 vaikka hän ei ole edes tutustunut haasteeseen aikaisemminen tai kun kerrot toiselle mitä olet tehnyt lähituntien aikana 335 00:38:22,000 --> 00:38:29,000 jo yksin selittämällä asia jollekuulle muulle saatat saada uuden idean miten jatkaa 336 00:38:29,000 --> 00:38:35,000 Tai vain ryhdy googlailemaan aihetta. Saattaa olla että jonkin muun ohjelmiston tapauksessa on ollut samankaltainen bugi, eli on monia asioita tehtäväksi. 337 00:38:35,000 --> 00:38:40,000 Mutta niinkin käy useasti ettemme saa ratkaistua haastetta 338 00:38:40,000 --> 00:38:45,000 Eli CTF-pelaaminen voi olla myös turhauttavaa, sillä puolen vuorokauden istumisen jälkeen 339 00:38:45,000 --> 00:38:51,000 ratkaisua ei saa toimimaan tai ei ole mitään ideaa kuinka ratkaista se 340 00:38:51,000 --> 00:38:54,000 Tätäkin tapahtuu kun ei huomaa jotain tiettyä jippoa. 341 00:38:54,000 --> 00:39:03,000 Mutta tällöin voi kysyä jälkikäteen muilta joukkueilta esimerkiki IRC:issä kuinka he ratkaisivat tehtävän 342 00:39:03,000 --> 00:39:06,000 Voi kysyä yhteenvetoa ratkaisusta ja lukea yhteenvetoja jos niitä on saatavissa. 343 00:39:06,000 --> 00:39:12,000 Voi myös kysyä kun seuraavan kerran näkee toiset paikan päällä, esimerkiksi täällä konferenssissa ja niin edelleen. 344 00:39:12,000 --> 00:39:19,000 Näin tietämys ja kokemus karttuu ajan myötä. 345 00:39:19,000 --> 00:39:24,000 Voimme ottaa vielä yhden kysymyksen. Mikrofoni kaksi on jälleen valmiina. 346 00:39:24,000 --> 00:39:28,000 Toimiikohan tämä? OK, anteeksi. 347 00:39:28,000 --> 00:39:34,000 Aluksi, paljon kiitoksia CTF-kisan järjestämisestä. Arvostan sitä paljon ja myös sitä, että toteutitte selainhaavoittuvuutta hyväksikäyttävän haasteen 348 00:39:34,000 --> 00:39:40,000 Ottaen huomioon että on todella vaikeaa pystyttää selainta hyödyntävä haaste ja pitää haaste verkossa kaikkien pelaajien saatavilla. 349 00:39:40,000 --> 00:39:51,000 Kysymykseni on, mikä on teidän kantanne haasteisiin jossa ratkaistaan ongelmia sellaisten ohjelmistojen kanssa joita ei ole modifioitu, jolloin implisiittisesti paljastuu bugeja ohjelmistoista. 350 00:39:51,000 --> 00:40:00,000 En ole varma ymmärsinkö kysymyksen oikein. Tarkoitatko että pelaajat käyttävät nollapäivähaavoittuvuuksia haasteiden ratkaisemisesessa? 351 00:40:00,000 --> 00:40:05,000 Me emme teen näin. Tarkoitan että kaikissa pelissä käyttämissämme sovelluksissa on modifikaatioita 352 00:40:05,000 --> 00:40:11,000 eli niille löytyy tunnettu ratkaisu. Mutta ne ovat todellisesta maailmasta peräisin olevia haasteita 353 00:40:11,000 --> 00:40:14,000 Jolloin ei ole sen todellisempaa kuin käyttää nollapäivähaavoittuvuutta ratkaisuna 354 00:40:14,000 --> 00:40:21,000 Kunhan nollapäivähaavoittuvuutta ei käytetä CTF:n hallinnoinnissa käytettyä infrastruktuuria vastaan 355 00:40:21,000 --> 00:40:30,000 Eli meidän kannaltamme tämä on reilua peliä. Uskon että pelaajat luottavat meihin ja he luottavat siihen että heidän käyttämänsä nollapäivähaavoittuvuudet eivät karkaa 356 00:40:30,000 --> 00:40:33,000 Siksi he ovat käyttäneet niitä, tai ainakin jotkin. 357 00:40:33,000 --> 00:40:39,000 Mutta ajattelen myös että jos meillä on nollapäivähaavoittuvuus, olemme kaikki samaa mieltä että on oikein 358 00:40:39,000 --> 00:40:44,000 vastuullisesti julkaista bugi eikä laittaa sitä verkkoon jakoon jolloin muut joutuisivat vaaraan. 359 00:40:44,000 --> 00:40:53,000 Tarkoitan että en ole koskaan nähnyt CTF:n aikana että jokin 360 00:40:53,000 --> 00:40:58,000 haavoittuvuus olisi karannut ja vaarantanut tavalliset käyttäjät 361 00:40:58,000 --> 00:41:03,000 Tätä ei ole tähän mennessä tapahtunut ja toivotaan että tilanne säilyy samanlaisena. Olisi ikävä asia jos näin tapahtuisi. 362 00:41:03,000 --> 00:41:06,000 Olet oikeassa. 363 00:41:06,000 --> 00:41:13,000 Paljon kiitoksia. Valitettavasti kysymys-vastausosion aika on ohi mutta olen melko varma että puhujat mielellään vastaavat kysymyksiinne myöhemmin. 364 00:41:13,000 --> 00:41:18,000 Isot aplodit esiintyjille! 365 00:41:18,000 --> 00:41:23,900 Kiitoksia! Translated by Matti Lassila (ITKST56 course assignment at JYU.FI) 366 00:41:23,900 --> 00:41:45,000 Subtitles created by c3subtitles.de in the year 2021. Join, and help us!