1 00:00:00,000 --> 00:00:03,730 [Translated by {Iikka}{Yli-Kuivila} (ITKST56 course assignment at JYU.FI)] 2 00:00:03,730 --> 00:00:31,339 *33C3 preroll-musiikkia* 3 00:00:31,339 --> 00:00:35,200 Herald: Tervetuloa takaisin festivaali- lavalle, yhä kakkospäivänä minun kelloni 4 00:00:35,200 --> 00:00:40,970 mukaan vaikka olenkin kadottanut ajanta- juni jo nyt. En tiedä, tuntuu olevan kii- 5 00:00:40,970 --> 00:00:45,440 reinen vuosi niin monen hyvän esityksen kanssa ja seuraavana meillä on super-mah- 6 00:00:45,440 --> 00:00:52,640 tava estiys Jiskalta, Gerberiltä ja Matt- hiakselta. Nämä kolme ihanaa ihmistä näyt- 7 00:00:52,640 --> 00:00:59,780 tävät meille jotain VPN:stä, niin kutsu- tuista Very Pwnable Networkeista, ja 8 00:00:59,780 --> 00:01:05,989 miksi sinun VPN:si ei ole välttämättä yhtä turvallinen kuin sinulle on sanottu. 9 00:01:05,989 --> 00:01:10,909 Ja tämä ei ole pelkästään tärkeää ihmi- sille jotka istuvat 7:n proxyn takana aja- 10 00:01:10,909 --> 00:01:15,829 tellen: ettepä nappaa minua. Mutta myös vaikka jos työantajasi sanoo, että käytä 11 00:01:15,829 --> 00:01:21,179 tätä VPN-asiakasohjelmistoa: sinua voi odottaa yllätys tai pari. Ja tämä on 12 00:01:21,179 --> 00:01:26,350 ennalta nauhoitettu esitys, jonka jälkeen voin jo nähdäkin heidät täällä työkaluis- 13 00:01:26,350 --> 00:01:32,490 samme mutta esityksen jälkeen on Q&A- sessio. Jos teillä on kysymyksiä,laittakaa 14 00:01:32,490 --> 00:01:40,859 niitä IRCissä, Twitterissä tai Mastodon:sa hashtaillä #rc3cwtv ja meidän ihana 15 00:01:40,859 --> 00:01:46,366 Signaalienkeli kerää ne ja näemme toisemme tallenteen jälkeen. 16 00:01:46,366 --> 00:01:48,459 Jiska: Kaikki ja tervetuloa esitykseen 17 00:01:48,459 --> 00:01:56,170 Very Pwnable Network Gerbertin, Matthiak: sen ja minun toimesta. Mistä tämä alkoi? 18 00:01:56,170 --> 00:02:02,369 No, minusta tuli vähän vainoharhainen vii- me vuonna ja ajattelin että olisi hyvä 19 00:02:02,369 --> 00:02:08,510 idea salata paljon koska Wi-Fi, LTE, TLS voidaan kaikki kaapata, ne voidaan purkaa. 20 00:02:08,510 --> 00:02:14,420 Joten meidän tulisi salata kuten kaikki katselisivat ja sen vuoksi minun pitäisi 21 00:02:14,420 --> 00:02:20,110 käyttää VPN:ää. Ja seuraava luottamusolet- tamus oli että yhdistän yliopistoni verk- 22 00:02:20,110 --> 00:02:26,740 koon joka päivä, joten minun pitäisi luot- taa tähän joka tapauksessa. Ja jos minä 23 00:02:26,740 --> 00:02:30,710 luotan tähän verkkoon, voisin käyttää tätä verkkoa ja heidän ammattilais-VPN-palvelua 24 00:02:30,710 --> 00:02:36,060 Kuulen teidän nauravan, kuulen naurua, mutta tämä oli minun ideani, koska sitten 25 00:02:36,060 --> 00:02:42,570 minun ei tarvitse asentaa enää mitään lisää verkkoselaukseni aikana. Ja myös, 26 00:02:42,570 --> 00:02:47,610 tämä AnyConnect mitä he käyttivät niin se oli hieno ja toimi jokaisella käyttöjär- 27 00:02:47,610 --> 00:02:53,250 jestelmällä. Ja se kuulostaa hyvältä, tur- valliselta tuotteelta: AnyConnect. 28 00:02:53,250 --> 00:03:00,180 Jep. Ja sitten rupesin käyttämään mobiili- laitteitani ja yhtäkkiä minulle tulee 29 00:03:00,180 --> 00:03:06,440 kaatumislokeja, jotka näyttivät tältä. eli kun olet vainoharhainen, katsot kuitenkin 30 00:03:06,440 --> 00:03:11,840 kaatumislokisi lävitse joka toinen päivä, ja yksi niistä näytti tällaiselta. 31 00:03:11,840 --> 00:03:17,170 Tämä ei näyttänyt oikein mukavalta osoit- teelta, se näytti vähän omituiselta, ja 32 00:03:17,170 --> 00:03:21,850 tässä näkyy vähän kaatuneesta säikeestä. Jos tämän pistää IDA:an ja tekee vähän 33 00:03:21,850 --> 00:03:25,540 takaisinmallinnusta voi myös liittää Any- Connectin ekstension funktioiden nimiä, 34 00:03:25,540 --> 00:03:31,540 AC-ekstensio ja kaatuminen tapahtuu jos- sain kun se pistää VPN-konfiguraatiota 35 00:03:31,540 --> 00:03:37,160 pystyyn, jossakin tunnelipuskurissa. En tiedä. Joten, ja sitten ajattelin myös, 36 00:03:37,160 --> 00:03:44,220 että tuo osotie näyttää omituiselta koska se on IPv4 väärin päin, ja pari päivää 37 00:03:44,220 --> 00:03:52,020 myöhemmin se kaatui uudestaan ja tässä luki 68k Uusi Rivi. Se näytti todellakin 38 00:03:52,020 --> 00:03:56,670 joltain konfiguraatiostringeiltä, jotka kaatuilivat tietyissä osoitteissa, 39 00:03:56,670 --> 00:04:02,110 ja se ei todellakaan näyttänyt hyvältäaikaa.. Mutta minulla ei myöskään ollut iakaa. 40 00:04:02,110 --> 00:04:06,940 Joten kirjoitin Ciscolle ja sanoin, että oletteko tosissanne, teidän ohjelmisto 41 00:04:06,940 --> 00:04:13,180 kaatuu näin usein? Koska aina kun teen pyykkiäni minulla on huono Internet-yhteys 42 00:04:13,180 --> 00:04:20,370 joten minun AnyConnect-ohjelmisto alkaa kaatuielmaan omituisissa osoitteissa. 43 00:04:20,370 --> 00:04:26,889 Ja vaikka tämä on koodin ajamisen ongelma, toinen ongelma olisi että jos pistetään 44 00:04:26,889 --> 00:04:30,950 pari pakettia menemään ilmasta, hyökkääjä voi onnistua uhrin VPN-yhteyden katkaise- 45 00:04:30,950 --> 00:04:38,360 misessa. Se on myös onelma. Joten koska AnyConnect-ohjelmisto ei ole kunnolla osa 46 00:04:38,360 --> 00:04:44,010 käyttöjärjestelmää, iOS:ää, se tarkoittaa että se vain uudelleenyhidstää sinut ja 47 00:04:44,010 --> 00:04:48,130 sitten kaikki viestisi lähetetään selvä- kielisenä verkon yli ja käyttäjä ei saa 48 00:04:48,130 --> 00:04:52,440 tästä mitään ilmoitusta. Se on vain VPN- symboli, joka on kadonnut, ja kaikki lähe- 49 00:04:52,440 --> 00:04:58,030 tetään selväkielisenä. Ja halusin analy- soida tätä pidemmälle ja siellä on debug- 50 00:04:58,030 --> 00:05:01,590 valinta siinä ohjelmistossa. Mutta koska Ohjelmisto itse katuu, lokit myöskin 51 00:05:01,590 --> 00:05:07,480 katoavat sen sileän tien. Jos se kaatuu ja sinulla on debuggaus-valinta päällä, niin 52 00:05:07,480 --> 00:05:12,340 myös käyttöjärjestelmän kaatumislokit iOS:ssä ovat menneet, niitä ei ole. 53 00:05:12,340 --> 00:05:19,180 He vastasivat: "Emme saa tätä toistettua". No, siis tietenkään he eivät 54 00:05:19,180 --> 00:05:23,520 ole auttaneet minua pyykinpesussa tai missään muussakaan niin tietnkään he eivät 55 00:05:23,520 --> 00:05:30,230 saa sitä toistettua. Ja mikä vielä pahem- paa, he jättivät tiketin istumaan pitkäksi 56 00:05:30,230 --> 00:05:37,100 aikaa kunnes sanoimme, että esittelemme tämän tänä vuonna CCC-kongressissa. Ja 57 00:05:37,100 --> 00:05:40,520 sitten 10 päivää ennen puhetta he väittä- vät että he ovat korjanneet kaksi kolmesta 58 00:05:40,520 --> 00:05:44,400 kaatumisesta, ja he kysyivät että saammeko kaatumista enää aikaan vai ei. Mutta vain 59 00:05:44,400 --> 00:05:51,510 päivää ennemmin he sanoivat etteivät olleetkaan varmoja ja niin edelleen. Se 60 00:05:51,510 --> 00:05:55,040 oli hyvin omituinen tiketti, ja minulla ei ollut tietoa että oliko se korjattu vai ei 61 00:05:55,040 --> 00:05:59,949 koska tietenkin toistaakseni sen, minulla pitäisi olla tinapaperia, pari AnyConnect: 62 00:05:59,949 --> 00:06:04,250 lla varustettua älypuhelinta ja sitten minun pitäisi odotella että Internet- 63 00:06:04,250 --> 00:06:08,060 yhteyteni menee rikki tavalla, joka saa sen kaatumaan. Joten tämä oli ihan liian 64 00:06:08,060 --> 00:06:17,030 satunnaista. Kerroin myös Applelle, mutta he vain sanoivat että vika on ohjelmassa, 65 00:06:17,030 --> 00:06:21,590 eikä silloin kuulu heille, vaikka se on verkkoekstensio, mikä kaatuu. Joten se 66 00:06:21,590 --> 00:06:28,840 ei ole heidän tehtävänsä ilmoittaa käyttä- jälle siitä, koska se on vain VPN mikä on 67 00:06:28,840 --> 00:06:33,300 poissa. Ja sitten data lähteekin selväkie- lisenä ja se on ihan ok. Se oli odotettua 68 00:06:33,300 --> 00:06:41,170 käytöstä. Rupesin ärsyyntymään tästä ja lopetin VPN:n käyttämisen, mutta minulla 69 00:06:41,170 --> 00:06:47,240 oli myös idea etsiä opiskelijoita, jotka tutkisivat tätä. Ja tiedättekin mitä 70 00:06:47,240 --> 00:06:52,369 tapahtuu kun löytää erittäin motivoitunei- ta opiskelijoita: he löytävät haavoittu- 71 00:06:52,369 --> 00:06:54,590 vuuksia. Ja tämä esitys on siitä. 72 00:06:54,590 --> 00:06:59,930 Gerbert: Niin me tutkimme Cisco:n AnyCon- nect-ohjelmistoa Linuxille ja löysimme 73 00:06:59,930 --> 00:07:04,460 pari mielenkiintoista asiaa. Vähän sen jälkeen kun julkaisimme löydöksemme, usei- 74 00:07:04,460 --> 00:07:09,929 ta lehtiartikkeleita ilmaantui. Mutta mitä tapahtui Jiskan kaatumisten ja näiden ar- 75 00:07:09,929 --> 00:07:17,810 tikkeledein välillä? VPN on mielenkiintoi- nen sillä se on niin vanha tutkimuskohde. 76 00:07:17,810 --> 00:07:23,110 Kuitenkin, tuon teknologian merkitys ko- rostui myöhemmin korona-pandemian myötä. 77 00:07:23,110 --> 00:07:29,639 Monet yritykset joutuivat uudelleensijoit- tumaan kotitoimistoille turvallisuustoi- 78 00:07:29,639 --> 00:07:36,240 mien vuoksi. VPN mahdollistaa käyttäjille pääsyn ulkopuolelta firman tai yliopiston 79 00:07:36,240 --> 00:07:42,690 sisäisiin resursseihin. Yleensä tarvitaan VPN-asiakasohjelmistoa, jotta VPN-palveli- 80 00:07:42,690 --> 00:07:49,020 meen saadaan yhteys. Avoimen lähdekoodin ohjelmistojen kuten OpenVPN:n lisäksi saa- 81 00:07:49,020 --> 00:07:55,400 tavilla on monia suljetun lähdekoodin tuot -teita, erityisesti yrityssektorilla. 82 00:07:55,400 --> 00:08:01,930 Käyttäjät joutuvat luottamaan tähän ohjel- mistoon, asentamaan tämän mustan laatikon 83 00:08:01,930 --> 00:08:09,009 koneilleen päästäkseen verkkoon. AnyCon- nect secure liikkuvuus-ohjelmisto Ciscolta 84 00:08:09,009 --> 00:08:13,650 on yrityskäyttöön tarkoitettu. Se voidaan luokitella etäpääsyohjelmistoksi, joka 85 00:08:13,650 --> 00:08:21,550 mahdollistaa loppukäyttäjille pääsyn verk- koon, joka tukee SSL VPNää tai IPsec:iä. 86 00:08:21,550 --> 00:08:29,510 Käytettäessä SSL VPN:ää autentikaatio ja tunnelin muodostaminen tapahtuu SSL/TLS- 87 00:08:29,510 --> 00:08:35,650 tunnelin lävitse. Ohjelmisto toimii paksu- na clientina joka kommunikoi VPN-serverin 88 00:08:35,650 --> 00:08:42,329 kanssa HTTPS:n yli. Kuten jo mainittiin, AnyConnectin lähdekoodi ei ole julkisesti 89 00:08:42,329 --> 00:08:48,500 saatavilla. Sovellus jaellaan käännettyjen binäärien ja kirjastojen kanssa. 90 00:08:48,500 --> 00:08:54,210 Vaikka sovellus on dokumentoitu, se ei kata sisäistä toiminnallisuutta. Edes haa- 91 00:08:54,210 --> 00:08:59,160 voittuvuustiedotteissa, jotka jaellaan julkisina, ei mennä kovin syvälle tekni- 92 00:08:59,160 --> 00:09:04,630 siin yksityiskohtiin. Sen vuoksi tiedämme vain rajoitetusti sovelluksesta, ja sen 93 00:09:04,630 --> 00:09:10,890 sisäisestä käyttäytymisestä. Olemme aset- taneet itsellemme tavoitteksi tutkia Any- 94 00:09:10,890 --> 00:09:19,649 Connectin äskettäisiä Linux ja iOS-sovel- luksia. AnyConnectin päätoiminnallisuus 95 00:09:19,649 --> 00:09:25,380 tulee VPN-yhteyksien muodostamisesta, mutta se on vain jäävuoren huippu. 96 00:09:25,380 --> 00:09:31,680 AnyConnect:ssa on myös muita ominaisuuksia joista nimetään pari: skriptien jakelu 97 00:09:31,680 --> 00:09:37,230 ja suorittaminen kohdelaitteilla, auto- maattinen ohjelmiston päivittäminen kysy- 98 00:09:37,230 --> 00:09:43,470 mättä käyttäjän lupaa siihen, ja yksi omi- naisuuksista on laiteskannaus: se ei 99 00:09:43,470 --> 00:09:49,310 integroidu AnyConnectiin, vaan sitä pide- tään erillisenä ohjelmana. Se toimii Any- 100 00:09:49,310 --> 00:09:54,180 Connect-infran kanssa yhdessä ja mahdol- listaa laajan asiakaslaitteiden järjestel- 101 00:09:54,180 --> 00:10:00,550 mätiedon lukemisen ja välittämisen VPN- palvelimelle. AnyConnectiin liittyvät 102 00:10:00,550 --> 00:10:08,870 työt perustuvat Cisco:n julkisiin tiedot- teihin ja blogimerkintöihin tietyiltä tur- 103 00:10:08,870 --> 00:10:14,660 vallisuustutkijoilta. Sen vuoksi päätimme listata ja kategorisoida kaikki 104 00:10:14,660 --> 00:10:21,470 haavoittuvuudet vuodesta 2011 lähtien. Tässä kuvassa näemme listan haavoittuvuuk- 105 00:10:21,470 --> 00:10:27,430 sista per vuosi, pistettynä järjestykseen vakavuuden perusteella. Eniten raportoi- 106 00:10:27,430 --> 00:10:33,290 tiin keskitason haavoittuvuuksia, mutta myös kriittisiä haavoittuvuuksia julkais- 107 00:10:33,290 --> 00:10:44,010 tiin vuosina 2011 ja 2012. 2015 ja 2016 vuosien korostuminen määrissä johtuu kir- 108 00:10:44,010 --> 00:10:51,380 jastoissa kuten OpenSSL, olleista haavoit- tuvuuksista. Haavoittuvuudet jaoteltiin 109 00:10:51,380 --> 00:10:57,420 vielä edelleen kategorioihin, jotka näky- vät tässä kuvassa. Kryptografiset haa- 110 00:10:57,420 --> 00:11:04,370 voittuvuudet ovat yleisimpiä, sillä Any- Connect käyttää OpenSSL:ää, ja OpenSSL:n 111 00:11:04,370 --> 00:11:10,050 haavoittuvuudet ovat AnyConnectin haavoit- tuvuuksia. Kun kolmansien osapuoletan haa- 112 00:11:10,050 --> 00:11:15,770 voittuvuudet suljetaan pois, eniten Any- Connectilla on käyttöoikeuksien laajennuk- 113 00:11:15,770 --> 00:11:21,510 sen haavoittuvuuksia. Sitä seuraa lähellä palvelunestohyökkäykset, jotka on usein 114 00:11:21,510 --> 00:11:26,110 kohdistettu päällä olevaan ohjelmaan, jot- ta voidaan häiritä VPN-yhteyttä. Ylivuoto- 115 00:11:26,110 --> 00:11:33,110 ja versioiden alentamishaavoittuvuuksia. 116 00:11:33,110 --> 00:11:37,920 Nämä tulokset antavat meille vähän tietoa menneisiin vikoihin. 117 00:11:37,920 --> 00:11:43,279 Matthias: Ennen kuin mennään takaisinmal- linnukseen, haluamme antaa teille pienen 118 00:11:43,279 --> 00:11:50,540 katsauksen Cisco:n lisensointitukeen. Cisco ASA on tyypillinen palvelinpääte 119 00:11:50,540 --> 00:11:55,589 Cisco:n AnyConnect:ille, ja sitä on saata- villa rautalaitteistona sekä myös virtuaa- 120 00:11:55,589 --> 00:12:03,430 lisena versiona esim. VMwaren päällä ajet- tavaksi. Tutkimuksemme alussa yritimme 121 00:12:03,430 --> 00:12:08,089 saada virallista arviointilisenssiä Ciscolta ASAv:tä varten, ilman että pii- 122 00:12:08,089 --> 00:12:14,270 lotimme tarkoituksenamme olleen käyttää sitä turvallisuustutkimukseen. 123 00:12:14,270 --> 00:12:21,290 Sen vuoksi naiivi lähestymistapamme oli vain lähestyä Ciscon lisensointitukea. Se 124 00:12:21,290 --> 00:12:25,880 oli enemmän tai vähemmän: Hei, teemme turvallisuustutkimusta Ciscon AnyConnect- 125 00:12:25,880 --> 00:12:32,130 asiakasohjelmistoon. Voitteko antaa meille ilmaisia arviointilisenssejä ASAv:lle? 126 00:12:32,130 --> 00:12:38,220 Cisco vastasi: okei. Montako tarvitsette? Tässä kohdassa olimme hieman yllättyneitä 127 00:12:38,220 --> 00:12:43,290 kuinka kivuttomasti kaikki tuntui menevän. Mutta sitten saimme kolme 60-päivän li- 128 00:12:43,290 --> 00:12:50,170 senssiä tilillemme. Mutta heti kun kokei- limme ladata Cisco ASAv-imagea Virtual- 129 00:12:50,170 --> 00:12:55,940 Box:lle, saimme tämän virheen. Ehkä jon- kinlainen ongelma lisenssin aktivoinnissa, 130 00:12:55,940 --> 00:13:00,930 sillä jos sinulla on lisenssi tuotteisiin tietenkin voit ladata sen, eikös joo? 131 00:13:00,930 --> 00:13:06,209 Mutta joo, se todellakin vaikutti siltä että lähestymistapamme oli hivenen naiivi 132 00:13:06,209 --> 00:13:11,090 ja olimme aliarvioineet yrityssovelluksien lisenssoinnnin monimutkaisuutta. 133 00:13:11,090 --> 00:13:20,939 Se oli vähän epätyydyttävää. Mutta meillä oli idea. Pyytäisimme yliopistomme data- 134 00:13:20,939 --> 00:13:26,120 keskuksen apua koska hekin käyttivät Ciscon AnyConnectia. Mutta me emme 135 00:13:26,120 --> 00:13:32,829 ikinä saaneet vastausta. Meillä oli vielä joitakin vaihtoehtoja jäljellä, mutta jos- 136 00:13:32,829 --> 00:13:38,540 sakin kohtaa annoimme vain periksi. G: Koska saatavilla ei ole kunnollista 137 00:13:38,540 --> 00:13:44,230 dokumentaatiota, oli tarpeen ihan alkuun ymmärtää sovellusta ja selvittää sen kes- 138 00:13:44,230 --> 00:13:49,690 keiset komponentit. Sen vuoksi meillä ei ollut muuta mahdollisuutta, kuin takaisin- 139 00:13:49,690 --> 00:13:58,649 mallintaa sovellus. Analysoimme sovellus- tiedostoja ja verkkoliikennettä. Jotta 140 00:13:58,649 --> 00:14:03,980 saisimme paremman ymmärryksen ohjelmasta, käytimme perustyökaluja kuten Ghidraa 141 00:14:03,980 --> 00:14:09,560 staattiseen koodianalyysiin. Ghidra kyke- nee takaisinkääntämään lähdekoodin kään- 142 00:14:09,560 --> 00:14:15,899 netystä binääristä tai kirjastosta. Dynaa- mista sovellustestausta varten käytimme 143 00:14:15,899 --> 00:14:22,740 työkaluja kuten Fridaa, Burppia ja Wire- sharkkia. Frida voidaan liittää ajossa 144 00:14:22,740 --> 00:14:28,470 oleviin prosesseihin, jotta ymmärretään ohjelman virtausta. Burpia käytettiin pro- 145 00:14:28,470 --> 00:14:35,899 xynä HTTPS-viestien muuttamiseen, ja Wire- sharkkia käytettiin verkkoliikenteen kuun- 146 00:14:35,899 --> 00:14:41,390 teluun ja purkamiseen. Otetaan lähempi katsaus tiedostojen binääreihin. AnyCon- 147 00:14:41,390 --> 00:14:45,890 nectin mukana tulee iso joukko binäärejä. Takaisinmallintaessamme tunnistimme kolme 148 00:14:45,890 --> 00:14:52,160 keskeistä sovelluksen osaa: vpnui on binääri, jonka kanssa käyttäjä on vuoro- 149 00:14:52,160 --> 00:14:58,570 vaikutuksessa. Se tarjoaa GUI:n, jossa käyttäjä tekee yksinkertaisia asetuksia ja 150 00:14:58,570 --> 00:15:05,339 käynnistää VPN-yhteyden. Toinen binääri on vpnagentd. Se ajaa daemonia taustalla 151 00:15:05,339 --> 00:15:11,670 kaikkina aikoina, jopa silloin kun VPN- yhteys ei ole auki. Erikoista vpnagentd:sä 152 00:15:11,670 --> 00:15:17,680 on se, että sitä ajetaan root-prosessina ja se kuuntelee aina staattisella portilla 153 00:15:17,680 --> 00:15:25,130 Sen tarkoituksena on pystyttää VPN-tunneli ja verkkokonfiguraatio asiakaslaitteessa. 154 00:15:25,130 --> 00:15:32,899 Se sisältää asetuksia kuten reitit tai DNS -palvelimet. Kolmas ja viimeinen binääri 155 00:15:32,899 --> 00:15:38,040 on vpndownloader. Kuten nimi vihjaa, sen tarkoitus on ladata lisätiedostoja, joita 156 00:15:38,040 --> 00:15:43,570 tarvitaan VPN-yhteyden muodostamiseen. Se sisältää sellaisia kuten VPN-profiilit, 157 00:15:43,570 --> 00:15:51,020 aputiedostot ja skriptit. Binäärit vaihta- vat dataa keskenään prosessienvälisen kom- 158 00:15:51,020 --> 00:15:59,819 munikaation (IPC:n) keinoin. IPC tapahtuu TCP socket:ien välityksellä. Binääridata- 159 00:15:59,819 --> 00:16:05,840 formaatti, jonka Cisco on IPC:lle määri- tellyt, käytetään viestien vaihtoon TCP- 160 00:16:05,840 --> 00:16:15,670 socketien akutta. Binäärien lisäksi Any- Connect sisältää paljon kirjastoja. 161 00:16:15,670 --> 00:16:20,960 Monet niistä ovat porttauksia olemassa- olevista avoimen lähdekoodin kirjastoista 162 00:16:20,960 --> 00:16:29,620 kuten OpenSSL:stä. Tärkein seikka niistä on tällä dialla: libvpnapi.so sisältää 163 00:16:29,620 --> 00:16:35,670 interfacet ja funktiot käyttäjäkäyttöliit- tymien taustalogiikalle. Kirjaston tavoit- 164 00:16:35,670 --> 00:16:41,089 teena on että yritykset voivat rakentaa omat VPN-sovelluksensa AnyConnect:n infran 165 00:16:41,089 --> 00:16:47,240 päälle. Se on ainoa krijasto, jolle doku- mentaatio on saatavilla Ciscon 166 00:16:47,240 --> 00:16:54,420 toimittamana. Libvpncommoncrypt on wrapper OpenSSL ja NSS-kirjastoille. NSS on saman- 167 00:16:54,420 --> 00:17:01,430 kaltainen OpenSSL:n kanssa ja sitä käy- tetään selainten, kuten Mozilla Firefox:n 168 00:17:01,430 --> 00:17:07,860 toimesta SSL/TLS-yhteyksien kytkemiseen. Se myös tarjoaa oman sertifikaattivaras- 169 00:17:07,860 --> 00:17:16,709 tonsa. Libvpncommon on toinen keskeinen kirjasto, jota kaikki binäärit käyttävät. 170 00:17:16,709 --> 00:17:23,189 Se tarjoaa luokkia ja funktioita IPC- logiikalle. Sillä voidaan luoda, lähettää 171 00:17:23,189 --> 00:17:30,290 ja validoida IPC-viestejä. Seuraava kir- jasto, libvpnagentutilities, sisältää 172 00:17:30,290 --> 00:17:36,700 luokkia ja funktioita, jotka käsittelevät kriittisiä operaatioita, kuten verkkoase- 173 00:17:36,700 --> 00:17:45,150 tuksia. Sitä käyttää ainoastaan vpnagentd. Binäärien ja kirjastojen lisäksi on monia 174 00:17:45,150 --> 00:17:51,720 muita tiedostoja, joilla on merkitystä ja joita tutkimme tarkemmin. AnyConnect 175 00:17:51,720 --> 00:17:59,420 tarjoaa AnyConnect local policy XML-tie- doston. Tämä tiedosto sääntelee useita 176 00:17:59,420 --> 00:18:04,420 turvallisuusasetuksia. Esimerkiksi sitä voidaan käyttää määrittämään, että muita 177 00:18:04,420 --> 00:18:11,740 tiedostoja ei enää ladata, tai että VPN- palvelin voi suorittaa versiopäivityksiä. 178 00:18:11,740 --> 00:18:15,840 Oletusasetuksillaan se on hyvin salliva ja lähes mikä tahansa on sallittua. Tiedostoa 179 00:18:15,840 --> 00:18:20,911 ei ylikirjoiteta päivitysten toimesta eikä sitä voida muuttaa VPN-palvelimen toimesta 180 00:18:20,911 --> 00:18:30,830 VPN-profiili on myös XML-formaatissa: se sisältää lisäasetuksia. Vihreällä on ko- 181 00:18:30,830 --> 00:18:36,960 rostettu EnableScripting-tagirivi, jossa on boolean-arvo epätosi. Se indikoi, että 182 00:18:36,960 --> 00:18:43,820 skriptejä ei tule suorittaa laitteella. 183 00:18:43,820 --> 00:18:50,200 VPN-palvelin jakelee profiilitiedostoja, ja ne ylikirjoitetan seuraavan kerran kun 184 00:18:50,200 --> 00:19:00,450 käyttäjä yhdistää ja muuttaa niitä. Vii- meinen tiedosto on VPNManifet.dat mikä on 185 00:19:00,450 --> 00:19:05,940 binääridatamuodossa sisältäen AnyConnect:n versiotiedoton. Tätä tiedostoa käytetään 186 00:19:05,940 --> 00:19:11,800 kun tarkistetaan mikä on AnyConnectin versio ennen päivitystä. Näiden tiedosto- 187 00:19:11,800 --> 00:19:19,290 jen lisäksi viestinvälitys näyttelee kes- keistä roolia. VPN-yhteyden muodostus 188 00:19:19,290 --> 00:19:24,870 rakentuu kolmeen vaiheeseen. Ensimmäinen vaihe on autentikointi. 189 00:19:24,870 --> 00:19:33,750 Käyttäjä syöttää VPN-palvelimen IP/Domain- tiedot vpnui:ssä. Kohdepalvelin lähete- 190 00:19:33,750 --> 00:19:41,490 tetään sitten IPC-viestinä vpnagentd:lle. Vastauksena vpnui saa erinäisiä järjestel- 191 00:19:41,490 --> 00:19:48,679 mätietoja takaisin. Se sisältää käyttöjär- jestelmätietoja tai kokonaisen tietovaran- 192 00:19:48,679 --> 00:19:53,790 non. Myöhemmin tämä tieto ja tunnukset lähetetään VPN-palvelimelle HTTPS:n väli- 193 00:19:53,790 --> 00:20:04,160 tyksellä. ASA palauttaa palvelinparametrit HTTPS-vastauksessa. Otetaan lähempi kat- 194 00:20:04,160 --> 00:20:10,150 saus pyyntöön ja vastaukseen. Vasemmalla puolen näette tämän pyynnön. Se on nor- 195 00:20:10,150 --> 00:20:15,840 maali post-pyyntö, jossa on XML jossa tunnustiedot välitetään. Tunnustiedot 196 00:20:15,840 --> 00:20:22,220 on merkitty vihreällä. 197 00:20:22,220 --> 00:20:28,130 Vasemmalla näemme vastauksen. Vastaus si- sältää sessio-tokenin, mikä on myös mer- 198 00:20:28,130 --> 00:20:33,420 kitty vihreällä. Lisäksi vastaus sisältää URLt kaikkiin ladattaviin tiedostoihin ja 199 00:20:33,420 --> 00:20:40,210 niiden hash-arvot. Oranssilla korostettu string on yksi ladattavista tiedostoista. 200 00:20:40,210 --> 00:20:47,580 Lataus-vaihe on toinen vaihe VPN-yhteyden muodostamisessa. Ensiksi vpnui suorittaa 201 00:20:47,580 --> 00:20:55,620 vpndownloader-binäärin. Sitten palvelin- paramterit edellisestä HTTPS-vastauksesta 202 00:20:55,620 --> 00:21:03,144 siirretään vpndownloaderille IPC:n väli- tyksellä. URLt poimitaan IPC-viesteistä 203 00:21:03,144 --> 00:21:09,620 ja kun tiedostot ladataan ne ladataan väliaikaiseen kansioon HTTPS:n välityk- 204 00:21:09,620 --> 00:21:18,310 sellä. Lataajaprosessi tiedottaa vpnagentd :lle IPC:n välityksellä että sen tulee 205 00:21:18,310 --> 00:21:24,320 siirtää tiedostot varsinaiseen sovellus- kansioon. Kolmannessa ja viimeisessä 206 00:21:24,320 --> 00:21:31,010 vaiheessa VPN-yhteyden muodostamista vpnui lähettää IPC-viestin vpnagentd:lle, jossa 207 00:21:31,010 --> 00:21:36,850 on pyyntö muodostaa VPN-tunneli. Sen jälkeen tunneliparamterit vaihdetaan käyt- 208 00:21:36,850 --> 00:21:44,145 täen HTTPS:ää. Kun vpnagentd on asettanut parametrit, VPN-sessio jatkuu. 209 00:21:44,145 --> 00:21:50,640 Otetaan tarkempi katsaus tunneliparamet- reihin. 210 00:21:50,640 --> 00:21:57,970 Vasemmalla puolella näemme pyynnön. Ensimmäisellä rivillä näette HTTP-connect 211 00:21:57,970 --> 00:22:03,990 -metodin. Normaalisti proxyt käyttävät tätä metodia edelleenvälittääkseen pyynnöt 212 00:22:03,990 --> 00:22:10,080 kohdepalvelimelle. Pyynnön sisällä näemme, että sessio-token annetaan cookie:n 213 00:22:10,080 --> 00:22:15,530 header:issä. Tämä on se sama sessio-token, joka saatiin autentikaatiovaiheessa. 214 00:22:15,530 --> 00:22:22,330 Eri tunneliparamterit välitetään eri HTTP- headereissä. Osio, joka on merkitty 215 00:22:22,330 --> 00:22:30,160 punaisella edustaa paikallisen laitteen IP-osoitetta. Oikealla puolella näette 216 00:22:30,160 --> 00:22:35,660 vastauksen tään pyyntöön. Esimerkiksi X- CSTP-Address-header sisältää IP-osoitteen, 217 00:22:35,660 --> 00:22:43,470 jonka laitteen tulee antaa tunneli-inter- facelleen. 218 00:22:43,470 --> 00:22:50,060 Punaisella merkatussa osiossa näemme nyt myös DNS-palvelimen VPN-yhteydelle. 219 00:22:50,060 --> 00:22:56,090 Lisäksi osoiteavaruudet, jotka pitää rei- tittää VPN-palvelimen kautta on määritelty 220 00:22:56,090 --> 00:23:04,402 X-CSTP-Split-Include-headerissä. Nyt kun meillä on yleispätevä ymmärrys 221 00:23:04,402 --> 00:23:09,569 ohjelmistosta, mennään haavoittuvuustutki- mukseen. Me suoritimme design-analyysiä 222 00:23:09,569 --> 00:23:15,919 AnyConnectille, jossa tarkastelimme IPC- viestejä paljon yksityiskohtaisemmin. 223 00:23:15,919 --> 00:23:21,729 Meidän täytyy määritellä tiettyjä oletuk- sia turvallisuudesta ja hyökkääjästä, 224 00:23:21,729 --> 00:23:26,400 ennne kuin etsimme haavoittuvuuksia. Tämä dia näyttää useita oletuksistamme. 225 00:23:26,400 --> 00:23:33,020 Kryptografiset algoritmit sovelluksen sisällä ovat turvallisia, eikä niitä voida 226 00:23:33,020 --> 00:23:39,460 murtaa eksponentiaalisessa ajassa. Hyök- kääjä ei voi lukea tai muokata viestejä 227 00:23:39,460 --> 00:23:44,679 huolimatta heidän sijainnistaan, ja me oletamme että VPN-palvelin ei ole pahan- 228 00:23:44,679 --> 00:23:51,170 tahtoinen, ja viestii vain valideja vies- tejä, jotka noudattavat protokollaa. 229 00:23:51,170 --> 00:23:56,780 Oletamme, että hyökkääjällä on paikalli- nen pääsy ja hän voi suorittaa komentoja 230 00:23:56,780 --> 00:24:01,460 laitteella, ja hänen tavoitteena on vaa- rantaa järjestelmän tai sovelluksen 231 00:24:01,460 --> 00:24:08,340 luottamuksellisuus, eheys tai saatavuus. Käyttöoikeuksien laajennushaavoittuvuudet 232 00:24:08,340 --> 00:24:13,830 käsitellään, sillä ne mahdollistavat hyök- kääjälle tavoitteisiin pääsyn. 233 00:24:13,830 --> 00:24:20,550 Cisco päätti sisällyttää sovellukseensa automaattisten päivitysten ominaisuuden. 234 00:24:20,550 --> 00:24:27,929 AnyConnect pystyy saamaan AnyConnect-päi- vityksiä VPN-palvelimelta ilman mitään 235 00:24:27,929 --> 00:24:32,470 käyttäjävuorovaikutusta. Oletusasetuksil- laan AnyConnectia voi päivittää VPN-pal- 236 00:24:32,470 --> 00:24:38,740 velin, joka tarjoaa uudempaa versiota. Turvallisuustutkijan näkövinkkelistä täl- 237 00:24:38,740 --> 00:24:44,950 lainen automaattinen päivittäminen kuulos- taa lupaavalta, eikös vain? Katsotaan sitä 238 00:24:44,950 --> 00:24:49,510 ominaisuutta tarkemmin. Ensiksi vpndown- loader lataa suoritettavan asennustiedos- 239 00:24:49,510 --> 00:24:57,010 ton ja shell-skriptin nimeltä vpndownloa- der.sh. Sitten vpndownloader.sh suorite- 240 00:24:57,010 --> 00:25:03,630 taan. Shell-skripti sisältää arkiston, joka puretaan jotta saadaan uusi versio 241 00:25:03,630 --> 00:25:09,380 vpndownloaderista ulos. Sitten IPC-viesti lähetetään vpnagentd:lle, jossa sitä 242 00:25:09,380 --> 00:25:15,740 pyydetään suorittamaan tämä asennustie- dosto. Vpnagentd ei suorita sitä suoraan, 243 00:25:15,740 --> 00:25:21,429 vaan se kutsuu vpnagentdownloader:ia root- oikeuksin, joka puolestaan kutsuu tuota 244 00:25:21,429 --> 00:25:28,059 asennustiedostoa. Ennen asennustiedoston suorittamista vpndownloader verifioi ja 245 00:25:28,059 --> 00:25:35,100 validoi tiedoston. Me saimme idean: onko mahdollista asentaa vanhentunut versio 246 00:25:35,100 --> 00:25:40,909 väärennetyn IPC-viestin avulla? Kuten kuvassa näkyy, hyökkääjä tarvitsee vanhan 247 00:25:40,909 --> 00:25:47,780 allekirjoitetun asennustiedoston ja se lähettää IPC-viestin vpnagentd:lle pyytäen 248 00:25:47,780 --> 00:25:53,679 sitä suorittamaan vanhentuneen asentajan. Vpnagentd kutsuu vpndownloaderia kuten 249 00:25:53,679 --> 00:25:58,710 normaalistikin, joka puolestaan kutsuu hyökkääjän asennustiedostoa. Ei ole mitään 250 00:25:58,710 --> 00:26:05,289 tarkistusta sille, onko asennustiedosto uudempi kuin jo asennettu versio. Tämä 251 00:26:05,289 --> 00:26:10,720 mahdollistaa versionalennushyökkäyksen. Version alentamisen tavoitteena hyökkää- 252 00:26:10,720 --> 00:26:15,650 jällä on pakottaa vanhentuneen version asennus, version joka sisältää haavoittu- 253 00:26:15,650 --> 00:26:21,179 vuuksia , joita hyökkääjä voisi hyö- dyntää. 254 00:26:21,179 --> 00:26:28,520 Raportoimme tämän haavoittuvuuden Ciscon tuoteturvallisuustiimille ja se 255 00:26:28,520 --> 00:26:34,020 korjattiin syyskuun lopussa. Haavoittuvuus sai vain CVSS-pisteytyksen 3.1, ja oli 256 00:26:34,020 --> 00:26:42,390 siten luokiteltu matalan vakavuuden haavoittuvuudeksi. Haavoittuvuus oli 257 00:26:42,390 --> 00:26:47,959 hyödynnettävissä vain Linux-versiossa. Windows- ja Mac-versiot oli jo turvattu 258 00:26:47,959 --> 00:26:54,600 tuollaiselta hyökkäykseltä. Toinen toimin- nollisuus, jota tarkastelimme oli 259 00:26:54,600 --> 00:26:59,720 skriptien jakelu ja suoritus. He kutsuvat sitä "Bring your own Script":ksi. 260 00:26:59,720 --> 00:27:05,730 Toiminnon tarkoituksena on helpottaa skriptien jakelua tietokoneille. Jotta 261 00:27:05,730 --> 00:27:11,350 skripti suoritetaan, sen pitää täyttää kaksi vaatimusta. 262 00:27:11,350 --> 00:27:16,880 Ensikin, sen pitää sijaita skriptit-kan- siossa ja tiedostonimen tulee alkaa sa- 263 00:27:16,880 --> 00:27:24,150 noilla OnConnect tai OnDisconnect. Toisek- si, VPN-palvelimen lähettämässä profiilis- 264 00:27:24,150 --> 00:27:31,760 ssa EnableScripting-tagin tulee olla ase- tettuna tosi-arvoon.Riippuen tiedosto- 265 00:27:31,760 --> 00:27:37,002 nimestä skriptit ajetaan VPN-yhteyden muodostamisen ja terminoinnin jälkeen. 266 00:27:37,002 --> 00:27:42,980 VPN-palvelin kun voi jaella profiileja, joissa skriptien jakelu on päällä ja se 267 00:27:42,980 --> 00:27:48,289 voi myös jaella skriptit: nämä kaksi yh- dessä amhdollistvat VPN-palvelimelle etä- 268 00:27:48,289 --> 00:27:54,410 ajettavan koodin siihen yhdistävillä lait- teilla. Tämä toiminnollisuus muodostaa 269 00:27:54,410 --> 00:27:59,299 suuren ongelman, sillä ihmiset joutuvat usein luottamaan yliopsiton VPN-palveli- 270 00:27:59,299 --> 00:28:05,539 miin ja heillä ei ole muuta vaihtoehtoa. Mutta katsotaan tarkemmin skriptien jake- 271 00:28:05,539 --> 00:28:11,850 lua. Tässä näemme klassisen skriptijakelun esimerkin. Latausvaiheessa vpndownloader 272 00:28:11,850 --> 00:28:19,171 lataa OnConnect- tai OnDisconnect- skriptit. Vpndownloader sitten kysyy IPC- 273 00:28:19,171 --> 00:28:25,419 viestillä ladatun skriptin siirtoa skrip- tit-kansioon. 274 00:28:25,419 --> 00:28:32,570 Vpnagentd-prosessi kutsuu vpndownloaderia, joka sitten siirtää tiedoston. 275 00:28:32,570 --> 00:28:36,670 Tarkastelimme järjestelmällisesti IPC- viestejä ja löysimme pystysuuntaisen käyt- 276 00:28:36,670 --> 00:28:43,100 töoikeuksien laajennuksen. Hyökkääjä voi lähettää saman viestin vpnagentd-proses- 277 00:28:43,100 --> 00:28:48,350 sille. Mikä tahansa hyökkääjän skrip- teistä voidaan siirtää skriptit-kansioon. 278 00:28:48,350 --> 00:28:52,970 Jos seillä on jo skripti, niin se ylikir- joitetaan. Jos hyökkääjä siirtää On-, tai 279 00:28:52,970 --> 00:28:58,620 OnDisconnect-skriptin kun käyttäjällä on VPN-yhteys avoinna, skripti jaetaan käyt- 280 00:28:58,620 --> 00:29:04,610 täjän oikeuksilla. Kun VPN-yhteys sulje- taan, ensimmäinen valtuuttamaton käyttäjä 281 00:29:04,610 --> 00:29:13,220 voi saavuttaa toisen käyttäjän kontekstin koodiajoa. 282 00:29:13,220 --> 00:29:18,450 Mikä häiritsi metiä tässä hyökkäyksessämme oli se että se oli sidottu esiehtoihin. 283 00:29:18,450 --> 00:29:24,040 Yksi ehdoista oli, että EnableScripting- tagissa oli arvo "Tosi". Harkitsimme muita 284 00:29:24,040 --> 00:29:29,020 hyökkäysskenaarioita ja saimme idean jael- la profiileja itse. Eli, tsekkaamme tagin 285 00:29:29,020 --> 00:29:34,620 uudestaan, mutta emme luo vain skriptiä vaan myös VPN-profiilin joka sallii 286 00:29:34,620 --> 00:29:41,210 skriptien ajamisen. Hyökkäys toimii näin: kun paikallsiella käyttäjällä on VPN- 287 00:29:41,210 --> 00:29:45,580 sessio aktiivisena, toinen käyttäjä jär- jestelmässä luo pahantahtoisen skriptin ja 288 00:29:45,580 --> 00:29:50,539 uuden profiilin. Uudessa profiilissa Ena- bleScripting-tagiin on asetettu arvoksi 289 00:29:50,539 --> 00:29:57,059 "Tosi". Hyökkääjä sitten lähettää IPC- viestin vpnagentd:lle pyytäen skriptin ko- 290 00:29:57,059 --> 00:30:03,029 pioimista skriptit-kansioon. Vpndownloader käynnistetään sitten root-oikeuksin suo- 291 00:30:03,029 --> 00:30:10,990 rittamaan kopiointi. Hyökkääjä voi myös lähettää lisäksi IPC-viestin vpnaentd:lle 292 00:30:10,990 --> 00:30:17,039 pyytäen olemassaolevan profiilin yli- kirjoittamista pahantahtoisella profii- 293 00:30:17,039 --> 00:30:24,809 lilla. Vaikka profiili ylikirjoitettaan, uuden profiilin asetuksia kytketä vielä 294 00:30:24,809 --> 00:30:29,109 päälle koska vanha profiili on yhä aktii- visena. 295 00:30:29,109 --> 00:30:34,950 Kuitenkin, me pystyimme määrittämään että uusi profiili ladataan kun VPN-sessiossa 296 00:30:34,950 --> 00:30:41,503 tapahtuu uudelleenyhdistäminen. Neovat itse asiassa aika yleisiä AnyConnectissa. 297 00:30:41,503 --> 00:30:46,329 Jos uudelleenyhdistys tapahtuu, uusi pro- fiili ladataan ja kytketään päälle. Meidän 298 00:30:46,329 --> 00:30:51,230 tapauksessamme se mahdollistaa skripti- toiminnon. VPN-yhteyden alasajon jälkeen, 299 00:30:51,230 --> 00:30:56,490 pahantahtoinen OnDisconnect-skripti aje- taan VPN-sovellusta ajavan käyttäjän 300 00:30:56,490 --> 00:31:03,010 oikeuksin. Kummatkin ongelmat raportoitiin Ciscolle, mutta niitä ei voitu korjata 301 00:31:03,010 --> 00:31:07,580 julkistamispäivään mennessä, vaikka an- noimme lisäaikaa deadlinelle. Vielä 302 00:31:07,580 --> 00:31:12,020 tänäänkin haavoittuvuus on yhä läsnä Any- Connectin oletusasetuksissa. 303 00:31:12,020 --> 00:31:18,029 Cisco julkisti tämän haavoittuvuuden CVSS- pisteytyksellä 7.1, mitä pidetään 304 00:31:18,029 --> 00:31:25,910 korkeana vakavuutena. Koska se julkaistiin 4. marraskuuta 2020 ilman korjausta, haa- 305 00:31:25,910 --> 00:31:32,340 voittuvuus sai paljon huomiota monilla uutissivustoilla. 306 00:31:32,340 --> 00:31:42,410 Eri sivustot raportoivat haavoittuvuudesta Raportoinnin laatu vaihteli. 307 00:31:42,410 --> 00:31:47,410 Joissakin artikkeleissa oli väärää tietoa, kuten että hyväksikäyttömenetelmä olisi 308 00:31:47,410 --> 00:31:52,820 julkisesti saatavilla. Tämä ei ollut yhtään tarkkaa, koska me olimme ainoat, 309 00:31:52,820 --> 00:31:57,990 joilla oli toimiva haavoittuvuus emmekä julkistaneet sitä vielä. Emme löytäneet 310 00:31:57,990 --> 00:32:03,190 mitään muuta hyväksikäyttömenetelmää Interntistäkään. Luulen että tällainen 311 00:32:03,190 --> 00:32:09,539 raportointi - tämä tapa raportoida pitää harkita uudelleen koska se aiheutti niin 312 00:32:09,539 --> 00:32:15,450 paljon väärää tilannekuvaa haavoittuvuu- desta. Meitä jopa kontaktoitiin huolestu- 313 00:32:15,450 --> 00:32:21,370 neiden poikkeamavastetiimien toimesta, sillä he olivat huolissaan infrastaan. 314 00:32:21,370 --> 00:32:25,130 Kaikki löydetyt ja raportoidut haavoittu- vuudet on listattu tässä taulukossa. Nämä 315 00:32:25,130 --> 00:32:30,350 kolme haavoittuvuutta löydettiin design- analyysin keinoin. Vain yksi haavoittu- 316 00:32:30,350 --> 00:32:37,980 vuuksista on korjattu Ciscon mukaan. Eri toten Bring Your Own Script-haavoittu- 317 00:32:37,980 --> 00:32:42,760 vuudet on jo julkistettu. Vaikka korjausta niihin ei vielä ole, kiertävä meaknismi 318 00:32:42,760 --> 00:32:49,860 on jo julkaistu näitä haavoittuvuuksia vastaan. Muokkaamalla paikallista poli- 319 00:32:49,860 --> 00:32:54,450 tiikka-tiedostoa latausvaihe voidaan ohit- taa kokonaan. Viimeisimmän päivityksen 320 00:32:54,450 --> 00:32:59,679 myötä on myös mahdollista estää lataus- ja jakelutoimintoja modulaarisesti. 321 00:32:59,679 --> 00:33:05,309 M: Ja entäs sitten mobiilialustat? Vai- kuttavatko löytämämme haavoittuvuudet 322 00:33:05,309 --> 00:33:11,720 niissä? Pidetään tämä lyhyenä: ei. Mobiili -alustoista puuttuu monia ominaisuuksia 323 00:33:11,720 --> 00:33:15,740 verrattuna Linux, Windows ja macOS-ver- sioihin. On tietenkin mahdollista muodos- 324 00:33:15,740 --> 00:33:20,730 taa TLS ja IPsec-yhteyksiä, kuten kaikilla muillakin versioilla. Mutta koska ominai- 325 00:33:20,730 --> 00:33:24,649 suudet kuten skriptien jakelu tai auto- maattinen päivitys puuttuvat, ei ole 326 00:33:24,649 --> 00:33:30,010 mitään keinoa käyttää näitä hyväksikäyttö- menetelmiä mobiilialustoilla. Meillä on 327 00:33:30,010 --> 00:33:35,000 meineillään tarkastelu AnyConnect:n iOS- versioon, ja sen vuoksi haluamme antaa 328 00:33:35,000 --> 00:33:41,430 teille nopean ja korkean tason yleiskat- sauksen arkkitehtuuriin. Koska olemme 329 00:33:41,430 --> 00:33:45,570 Applen aknssa tekemisissä tässä, vakavat asiat kuten VPN:n implementointi on vähän 330 00:33:45,570 --> 00:33:51,929 erilaista verrattuna esimerkiksi Linux- versioon. Jos haluaa leikkiä notifikaa- 331 00:33:51,929 --> 00:33:56,399 tioilla, lisätä jakamisnappeja tai tehdä widgetin aloitusnäytölle, pitää käyttää 332 00:33:56,399 --> 00:34:01,740 sovellusekstensiota. Myös VPN-toiminnolli- suuksia varten pitää käyttää verkkoeksten- 333 00:34:01,740 --> 00:34:08,429 siokehystä. Verkkoekstensiot sisältävät providereita ja ominaisuuksia kaikenlai- 334 00:34:08,429 --> 00:34:14,099 siin verkkoon liittyviin toimintoihin, kuten sisällönsuodatukseen, DNS:ään, Wi- 335 00:34:14,099 --> 00:34:18,940 Fiin ja muuhun. Jos haluaa rakentaa oman VPN-sovelluksen, pitää valita Personal 336 00:34:18,940 --> 00:34:25,839 VPN:n, Packet Tunnel Provider:n ja App Proxy Provider:n välillä. Meidän tapauk- 337 00:34:25,839 --> 00:34:30,079 sessamme AnyConnect iOS:lle käyttää Packet Tunnel Provideria, koska he käyttävät omaa 338 00:34:30,079 --> 00:34:38,279 pakettiorientoitunutta protokollaansa. Tässä näemme AnyConnect-sovelluspaketin 339 00:34:38,279 --> 00:34:43,469 sisällön, mikä on periaatteessa .zip-tie- dosto, joka sisältää kaikki suoritettavat 340 00:34:43,469 --> 00:34:49,819 tiedostot ja assetit kuten kuvat jne. Pää- tiedosto on nimeltään eplkkä AnyConnect. 341 00:34:49,819 --> 00:34:56,209 Verkkoekstensio on implementoitu ACExten- sion-binäärissä. Näiden lisäksi on monia 342 00:34:56,209 --> 00:35:01,799 muita sovellusekstensioita, joilla imp- lemenntoidaan iOS:n jakamis- ja Siri-toi- 343 00:35:01,799 --> 00:35:08,910 minnollisuuksia. Joten mitä tapahtuu kun painetaan connect-slideria? Kun painaa 344 00:35:08,910 --> 00:35:13,329 slideriä, network-ekstensio suoritetaan, ja VPN-session neuvottelu alkaa. Sen 345 00:35:13,329 --> 00:35:19,059 jälkeen kun verkkotietoja kuten IP-osoit- tieta, aliverkkomaski, reitit, DNS, MTU ja 346 00:35:19,059 --> 00:35:23,130 muuta on saatu, ne annettaan iOS-järjes- telmälle, joka suorittaa neuvottelun lop- 347 00:35:23,130 --> 00:35:29,390 puun. Lopussa yhteys on muodostunut, ja toivottavasti sinulla on toimiva tunneli- 348 00:35:29,390 --> 00:35:36,930 interface nimeltä utun. Joten, uusi lii- kenne sovelluksilta menee network-pinon 349 00:35:36,930 --> 00:35:41,619 läpi kunnes se saapuu tunneli-interfacel- le. Sitten network-ekstension Packet 350 00:35:41,619 --> 00:35:48,269 Tunnel Provider voi käsitellä sitä. Joka kerta kun paketti saapuu tunneli-inter- 351 00:35:48,269 --> 00:35:54,191 facelle se luetaan network-ekstension toi- mesta ja kapseloidaan tunnelointiproto- 352 00:35:54,191 --> 00:35:59,020 kollalla. Joka kerta kun paketti saapuu tunneliin, network-ekstensio lukee sen ja 353 00:35:59,020 --> 00:36:04,660 kapseloi sen tunnelointiprotokollalla. Kun se saapuu VPN-palvelimelle, paketin 354 00:36:04,660 --> 00:36:10,150 kapselointi puretaan, ja se lähetetään kohdeosoitteseensa. Samalla tavalla client 355 00:36:10,150 --> 00:36:14,690 :lle lähetettävät vastaukset kapseloidaan, jossa niiden kapselointi vasta poistetaan 356 00:36:14,690 --> 00:36:20,499 ja se syötetään takaisin verkkopinoon. Tässä iOS-clienteista, ihan vain että 357 00:36:20,499 --> 00:36:23,829 annetaan teille nopea yleiskatsaus ja korostetaan tiettyjä avaineroja eri 358 00:36:23,829 --> 00:36:30,930 arkkitehtuurien välillä. Tutkimme yhä sekä Linux- että iOS-alustoja, mutta tähän men- 359 00:36:30,930 --> 00:36:35,700 nessä löydöksemme voidaan yhteenvetää näin: AnyConnect yleisesti ottaen on laaja 360 00:36:35,700 --> 00:36:42,530 sovellus jossa on paljon koodia ja myös käyttämätöntä kirjastokoodia. Olemme löy- 361 00:36:42,530 --> 00:36:48,510 täneet kolme haavoittuvuutta design-ana- lyysillä. Vpnagentd:tä ajetaan root- 362 00:36:48,510 --> 00:36:53,529 oikeuksin ja se vastaanottaa komentoja ja operaatioita vähempiarvoisilta prosesseil- 363 00:36:53,529 --> 00:36:59,549 ta autentikoimattomien ICP-viestien väli- tyksellä, mikä on yleensä ottaen aika 364 00:36:59,549 --> 00:37:03,999 riskialtista. Kaikkia turvamekanismeja ja -korjauksia ei ole kaikilla alustoilla. 365 00:37:03,999 --> 00:37:08,619 Esimerkiksi versioalennushyökkäys oli mahdollinen vian Linuxilla, ja se oli jo 366 00:37:08,619 --> 00:37:14,369 korjattu Windowsilla ja macOS-versioilla Ciscon mukaan. Mobiililla se ei ole mah- 367 00:37:14,369 --> 00:37:19,430 dollinen johtuen siitä että automaattinen päivitystoiminto on rajoitettu Linux:lle, 368 00:37:19,430 --> 00:37:24,119 Windows:lle ja macOS:lle. Samalla lailla, Bring Your Own Script ei päde mobiiliin, 369 00:37:24,119 --> 00:37:29,180 koska OnConnect ja OnDisconnect-skriptien jakelu on myös rajoitettu vain ei-mobii- 370 00:37:29,180 --> 00:37:34,009 leille alustoille. Liittyen local policy- tiedostoon Linuxilla, meidän näkemyksemme 371 00:37:34,009 --> 00:37:39,219 on että siitä pitäisi tehdä niin rajoitet- tu kuin mahdollista, ehkä vaatia opt-in:iä 372 00:37:39,219 --> 00:37:44,140 skriptaus-toiminnollisuudelle. Tämä vä- hentäisi monia hyökkäyksiä, mutta tieten- 373 00:37:44,140 --> 00:37:48,779 kin vaikuttaisi myös käytettävyyteen. Vaikka sovellus on ollut saatavilla monia 374 00:37:48,779 --> 00:37:54,279 vuosia, me näytämme että niissä on yhä bugeja löydettäväksi. Bug bounty-ohjelmien 375 00:37:54,279 --> 00:38:00,859 käyttöönotto olisi mahtava tapa motivoida useampaa turvallisuustutkijaa tarkistamaan 376 00:38:00,859 --> 00:38:06,799 sovellus haavoittuvuuksien varalta. VPN:n käyttö lupaa turvallisuutta ja yksityi- 377 00:38:06,799 --> 00:38:11,049 syyttä käyttäjille, kuitenkin tutkimuksem- me AnyConnectiin näyttää että suljetun 378 00:38:11,049 --> 00:38:16,559 lähdekoodin ohjelmistot mahdollistavat uusia hyökkäysvektoreita järjestelmiin. 379 00:38:16,559 --> 00:38:24,460 Toivomme että tulevaisuudessa tehtäisiin tutkimusta asiakasohjelmistoihin, ja että 380 00:38:24,460 --> 00:38:29,610 työmme tasoittaa matkaa sinne. Se oli sii- nä. Kiitoksia ja kysykää vain jos niitä on 381 00:38:30,700 --> 00:38:35,599 H: No niin, tervetuloa takaisin. Siinä oli tallenne tästä supermielenkiintoisesta 382 00:38:35,599 --> 00:38:41,239 esityksestä Very Pwnable Netwokrks. Olen varma, että olette nähneet kuinka pwnatta- 383 00:38:41,239 --> 00:38:48,630 via ne ovatkaan, ja onneksi meillä on täällä tänään kanssamme Jiska, Matthias ja 384 00:38:48,630 --> 00:38:56,499 Gerbert Internet-taikuuden avustuksella. Jos et ole vielä kirjoittanut kysyymystäsi 385 00:38:56,499 --> 00:39:05,869 tee se nyt, jotta voimme vielä vastata siihen. Joko menemällä IRC-kanavalle rc3- 386 00:39:05,869 --> 00:39:12,219 cwtv hackened-verkossa tai postaamalla tweetin tai tootin suosikki-SoMellasi, 387 00:39:12,219 --> 00:39:19,490 joka sisältää hashtagin #rc3cwtv ilman väliviivaa, hyvin tärkeä huomio. 388 00:39:19,490 --> 00:39:27,629 Signaalienkelimme on kerännyt joitakin kysymyksiä meille, joidenka avulla nyt 389 00:39:27,629 --> 00:39:33,280 kidutan näitä kolmea ihmistä. Katsotaan mitä sanotte näihin. 390 00:39:33,280 --> 00:39:41,799 Mutta aah, nämä ovat aika - aika vaisuja, vai? No, eka kysymys on: onko mitään sivua 391 00:39:41,799 --> 00:39:45,839 tai wikiä, jossa tämä tieto on saatavilla? 392 00:39:45,839 --> 00:39:53,150 G: Tällä hetkellä sitä ei ole vielä jul- kaistu. Luulen että julkaisemme sen lähi- 393 00:39:53,150 --> 00:39:58,952 tulevaisuudessa GitHubissa tai vastaavalla alustalla. 394 00:39:58,952 --> 00:40:02,940 H: Onko mitään tapaa, jolla ihmiset voivat löytää linkin tuohon kun sitten viimein 395 00:40:02,940 --> 00:40:07,630 julkaisette sen? G: Luulen että Jiska voi sanoa tähän. 396 00:40:07,630 --> 00:40:10,579 J: Joo, eli SEEMOO:lla on Github-sivu ja 397 00:40:10,579 --> 00:40:16,249 myös Twitter-tili, joten se tullaan jul- kaisemaan. Mutta on vielä pari, pari seik- 398 00:40:16,249 --> 00:40:21,680 kaa joista emme pitäneet, jotka eivät ole vielä julkisia. Joten kyllä, sitten jul- 399 00:40:21,680 --> 00:40:27,420 kaisisimme vain yhden julkaisun sen sijaan että yksi CVE täällä, toinen tuolla. 400 00:40:27,420 --> 00:40:31,519 H: Aivan, tekee enemmän vaikutusta ker- ralla ja myös parempaa julkaisua. Pidän 401 00:40:31,519 --> 00:40:38,160 tuosta. Ja seuraava kysymys on: onko tämä VPN-tapahtuma vain Ciscosta? Joten joo, 402 00:40:38,160 --> 00:40:46,420 olette vain katsoneet Ciscao, eikö vain? Tässä tapauksessa ehkä haluatte kertoa 403 00:40:46,420 --> 00:40:50,729 meille jos te olette katsoneet muita VPN- toimittajia tai jos muilla VPN-toimitta- 404 00:40:50,729 --> 00:40:55,589 jilla olisi myös ongelmia? Ehkä. 405 00:40:55,589 --> 00:41:01,670 M: Joo, me olemme tehneet tätä tutkimusta osana maisterin työtä, ja sen vuoksi se on 406 00:41:01,670 --> 00:41:10,059 vain Ciscon AnyConnectista, ja joo meillä ei ole ollut aikaa katsoa näitä muita VPN- 407 00:41:10,059 --> 00:41:14,408 palveluita. Pelkästään AnyConnectia. 408 00:41:14,408 --> 00:41:19,630 H: Aivan, tyypillinen maisterin näkymä - kirjoitetaan sitä kahvin voimin pari viik- 409 00:41:19,630 --> 00:41:25,190 koa ennen määräaikaa. Joo, voin kuvitella että olette keskittyneet Ciscoon silloin. 410 00:41:25,190 --> 00:41:30,630 Toinen erittäin hyvä kysymys: onko näitä haavoittuvuuksia muissa AnyConnectin kal- 411 00:41:30,630 --> 00:41:35,039 taisissa sovelluksissa, kuten niissä jotka on integroitu Linuxin NetworkManager:iin? 412 00:41:35,039 --> 00:41:40,309 Luulen että hän puhuu nimenomaan Open- Connectista. Juu, tuo tuli juuri sisään. 413 00:41:40,309 --> 00:41:45,749 Hmm, me puhuimme tästä vähän aiemmin, niin ehkä teillä on jotain sanottavaa tästä. 414 00:41:45,749 --> 00:41:50,210 G: Meidän tietääksemme siinä - 415 00:41:50,210 --> 00:41:56,999 OpenConnectissa ei ole skripitoimintoja aktvoituna tai integroituna. Joten 416 00:41:56,999 --> 00:42:03,630 sanoisimme että tällaiset hyökkäykset eivät ole vielä mahdollisia, mutta - hmm.. 417 00:42:03,630 --> 00:42:10,559 M: Olisi mahdollista että joku kykenevä tarkistaa tämän, ja katsoo siihen myös, 418 00:42:10,559 --> 00:42:15,680 OpoenConnectiin myös, joo. H: Hmm, aivan, ei vielä tiedossa onko 419 00:42:15,680 --> 00:42:24,059 mahdollista. Sanotaan se niin. Ikinä ei tiedä. Onko mitään muita kysymyksiä 420 00:42:24,059 --> 00:42:31,439 chatista, Twitteristä tai Mastodonista? Nyt olisi aika antaa kysymyksenne. Muutoin 421 00:42:31,439 --> 00:42:40,480 tämä olisi ollut hyvin lyhyt Q&A. joten menkää rc3-cwtv-kanavalla hackened-IRC- 422 00:42:40,480 --> 00:42:49,319 verkossa tai postatkaa tweet tai toot hashtagilla #rc3cwtv mutta ilman välivii- 423 00:42:49,319 --> 00:42:56,150 vaa. Tehkää se nyt ja toivottavasti saamme sen vielä Signaalienkelin taikuudella, 424 00:42:56,150 --> 00:43:00,890 joka kerää tätä tietoa minulle. 425 00:43:00,890 --> 00:43:05,549 Ja joo, ehkä voitte kertoa onko teillä vielä jotain lisättävää tai joitain uusia 426 00:43:05,549 --> 00:43:09,339 aiheita joiden kanssa työskentelette, jot- ka ovat tuloillaan. Ehkä voimme saada 427 00:43:09,339 --> 00:43:13,589 ennakkokatselmusta. Olen varma että yhä jatkatte tutkimustanne siihen ja - 428 00:43:13,589 --> 00:43:15,799 J: Pahoittelut, minun piti ottaa mykistyk- seni pois. Ei vielä 429 00:43:15,799 --> 00:43:20,249 spoilereita mutta joo, edes yhden suljetun koodin VPN-asiakasohjelmiston tutkinta on 430 00:43:20,249 --> 00:43:25,838 hyvin, hyvin paljon työtä ja aikaavievää. 431 00:43:25,838 --> 00:43:32,630 Voin kertoa teille tarinan kuinka katse- limme binäärejä kuukausia ja se ei oikein 432 00:43:32,630 --> 00:43:37,819 skaalaudu esim. 10:een eri asiakasohjel- mistoon, ainakin jos haluaa saada merki- 433 00:43:37,819 --> 00:43:44,479 tyksellisiä löydöksiä. H: Joo, mutta eikö teillä ole sellaisia 434 00:43:44,479 --> 00:43:51,349 jotain muita suunnitelmia, esimerkiksi muiden ohjelmistojen katsomista tai jos 435 00:43:51,349 --> 00:43:56,609 olette saaneet pyyntöjä katsella muita ohjelmia tai jotain mikä ohjaa teitä 436 00:43:56,609 --> 00:44:02,309 jokin omituisen ääreeen? Ei? Okei. G: Ei vielä. 437 00:44:02,309 --> 00:44:06,010 J: Jep. G: Mutta, mutta joo Matthias yhä työsken- 438 00:44:06,010 --> 00:44:10,930 telee sen parissa. Luulen että hän löytää jotain tulevaisuudessa. M: Toivottavasti. 439 00:44:10,930 --> 00:44:21,039 H: Juu, juu. No siiinä on aika pitkälti kaikki viimeiset kysymykset, paitsi vii- 440 00:44:21,039 --> 00:44:26,339 meinen: Jsika, takanasi on kaksi varjoa, onko se varjokabinetti? 441 00:44:26,339 --> 00:44:29,629 J: Ei ei ei, minulla on vain useita lamp- puja täällä, joten - 442 00:44:29,629 --> 00:44:31,476 H: Joo joo, aivan se on aika hauskaa kaikki 443 00:44:31,476 --> 00:44:34,509 J: Ainakin se näyttää vain varjoni kahtena eikä - eikä minua. 444 00:44:34,509 --> 00:44:39,739 H: Joo, mutta olemme aika onnekkaita että ainakin tässä puhelussa yhteys näyttää 445 00:44:39,739 --> 00:44:46,089 toimineen aivan hyvin. Meillä on ollut joitakin ongelmia täällä. Mutta joo, tämä 446 00:44:46,089 --> 00:44:51,280 on mahtavaa. Jos teillä on muita kysymyk- siä niin luulen että lopettelemme tähän, 447 00:44:51,280 --> 00:44:57,420 jotta emme pidä teitä kauempaa. Olen varma että haluatte hyppiä rc3-maailmassa, ja 448 00:44:57,420 --> 00:45:03,469 jos teillä on mitään muuta, ehkä voitte liittyä kanssamme IRC:hen myöhemmin. Jos 449 00:45:03,469 --> 00:45:08,859 on mitään muita kysymyksiä, ehkä he katso- vat tänne vähän ajan kuluttua tai minä vä- 450 00:45:08,859 --> 00:45:12,239 litän heille ne kysymykset. Ok sitten. J: Kiitoksia. 451 00:45:12,239 --> 00:45:16,569 H: Kiitoksia teille oikein paljon tästä super-mielenkiintoisesta puheesta. Minäkin 452 00:45:16,569 --> 00:45:20,809 opin jotian uutta VPN-ohjelmasta, johon olen kans törmännyt työskennellessäni. 453 00:45:20,809 --> 00:45:28,169 Joten tämä oli minullekin mielenkiintoista Ja lopetellaan tähän. 454 00:45:28,169 --> 00:45:35,749 *postroll-musiikkia* 455 00:45:35,749 --> 00:45:52,559 Tekstitykset luotu c3subtitles.de:llä vuonna 2022. Liity ja auta meitä! 456 00:45:52,559 --> 00:45:59,000 [Translated by {Iikka}{Yli-Kuivila} (ITKST56 course assignment at JYU.FI)]