-
[Translated by {Iikka}{Yli-Kuivila}
(ITKST56 course assignment at JYU.FI)]
-
33C3 preroll-musiikkia
-
Herald: Tervetuloa takaisin festivaali-
lavalle, yhä kakkospäivänä minun kelloni
-
mukaan vaikka olenkin kadottanut ajanta-
juni jo nyt. En tiedä, tuntuu olevan kii-
-
reinen vuosi niin monen hyvän esityksen
kanssa ja seuraavana meillä on super-mah-
-
tava estiys Jiskalta, Gerberiltä ja Matt-
hiakselta. Nämä kolme ihanaa ihmistä näyt-
-
tävät meille jotain VPN:stä, niin kutsu-
tuista Very Pwnable Networkeista, ja
-
miksi sinun VPN:si ei ole välttämättä
yhtä turvallinen kuin sinulle on sanottu.
-
Ja tämä ei ole pelkästään tärkeää ihmi-
sille jotka istuvat 7:n proxyn takana aja-
-
tellen: ettepä nappaa minua. Mutta myös
vaikka jos työantajasi sanoo, että käytä
-
tätä VPN-asiakasohjelmistoa: sinua voi
odottaa yllätys tai pari. Ja tämä on
-
ennalta nauhoitettu esitys, jonka jälkeen
voin jo nähdäkin heidät täällä työkaluis-
-
samme mutta esityksen jälkeen on Q&A-
sessio. Jos teillä on kysymyksiä,laittakaa
-
niitä IRCissä, Twitterissä tai Mastodon:sa
hashtaillä #rc3cwtv ja meidän ihana
-
Signaalienkeli kerää ne ja näemme
toisemme tallenteen jälkeen.
-
Jiska: Kaikki ja tervetuloa esitykseen
-
Very Pwnable Network Gerbertin, Matthiak:
sen ja minun toimesta. Mistä tämä alkoi?
-
No, minusta tuli vähän vainoharhainen vii-
me vuonna ja ajattelin että olisi hyvä
-
idea salata paljon koska Wi-Fi, LTE, TLS
voidaan kaikki kaapata, ne voidaan purkaa.
-
Joten meidän tulisi salata kuten kaikki
katselisivat ja sen vuoksi minun pitäisi
-
käyttää VPN:ää. Ja seuraava luottamusolet-
tamus oli että yhdistän yliopistoni verk-
-
koon joka päivä, joten minun pitäisi luot-
taa tähän joka tapauksessa. Ja jos minä
-
luotan tähän verkkoon, voisin käyttää tätä
verkkoa ja heidän ammattilais-VPN-palvelua
-
Kuulen teidän nauravan, kuulen naurua,
mutta tämä oli minun ideani, koska sitten
-
minun ei tarvitse asentaa enää mitään
lisää verkkoselaukseni aikana. Ja myös,
-
tämä AnyConnect mitä he käyttivät niin se
oli hieno ja toimi jokaisella käyttöjär-
-
jestelmällä. Ja se kuulostaa hyvältä, tur-
valliselta tuotteelta: AnyConnect.
-
Jep. Ja sitten rupesin käyttämään mobiili-
laitteitani ja yhtäkkiä minulle tulee
-
kaatumislokeja, jotka näyttivät tältä. eli
kun olet vainoharhainen, katsot kuitenkin
-
kaatumislokisi lävitse joka toinen päivä,
ja yksi niistä näytti tällaiselta.
-
Tämä ei näyttänyt oikein mukavalta osoit-
teelta, se näytti vähän omituiselta, ja
-
tässä näkyy vähän kaatuneesta säikeestä.
Jos tämän pistää IDA:an ja tekee vähän
-
takaisinmallinnusta voi myös liittää Any-
Connectin ekstension funktioiden nimiä,
-
AC-ekstensio ja kaatuminen tapahtuu jos-
sain kun se pistää VPN-konfiguraatiota
-
pystyyn, jossakin tunnelipuskurissa. En
tiedä. Joten, ja sitten ajattelin myös,
-
että tuo osotie näyttää omituiselta koska
se on IPv4 väärin päin, ja pari päivää
-
myöhemmin se kaatui uudestaan ja tässä
luki 68k Uusi Rivi. Se näytti todellakin
-
joltain konfiguraatiostringeiltä, jotka
kaatuilivat tietyissä osoitteissa,
-
ja se ei todellakaan näyttänyt hyvältäaikaa..
Mutta minulla ei myöskään ollut iakaa.
-
Joten kirjoitin Ciscolle ja sanoin, että
oletteko tosissanne, teidän ohjelmisto
-
kaatuu näin usein? Koska aina kun teen
pyykkiäni minulla on huono Internet-yhteys
-
joten minun AnyConnect-ohjelmisto alkaa
kaatuielmaan omituisissa osoitteissa.
-
Ja vaikka tämä on koodin ajamisen ongelma,
toinen ongelma olisi että jos pistetään
-
pari pakettia menemään ilmasta, hyökkääjä
voi onnistua uhrin VPN-yhteyden katkaise-
-
misessa. Se on myös onelma. Joten koska
AnyConnect-ohjelmisto ei ole kunnolla osa
-
käyttöjärjestelmää, iOS:ää, se tarkoittaa
että se vain uudelleenyhidstää sinut ja
-
sitten kaikki viestisi lähetetään selvä-
kielisenä verkon yli ja käyttäjä ei saa
-
tästä mitään ilmoitusta. Se on vain VPN-
symboli, joka on kadonnut, ja kaikki lähe-
-
tetään selväkielisenä. Ja halusin analy-
soida tätä pidemmälle ja siellä on debug-
-
valinta siinä ohjelmistossa. Mutta koska
Ohjelmisto itse katuu, lokit myöskin
-
katoavat sen sileän tien. Jos se kaatuu ja
sinulla on debuggaus-valinta päällä, niin
-
myös käyttöjärjestelmän kaatumislokit
iOS:ssä ovat menneet, niitä ei ole.
-
He vastasivat: "Emme saa tätä toistettua".
No, siis tietenkään he eivät
-
ole auttaneet minua pyykinpesussa tai
missään muussakaan niin tietnkään he eivät
-
saa sitä toistettua. Ja mikä vielä pahem-
paa, he jättivät tiketin istumaan pitkäksi
-
aikaa kunnes sanoimme, että esittelemme
tämän tänä vuonna CCC-kongressissa. Ja
-
sitten 10 päivää ennen puhetta he väittä-
vät että he ovat korjanneet kaksi kolmesta
-
kaatumisesta, ja he kysyivät että saammeko
kaatumista enää aikaan vai ei. Mutta vain
-
päivää ennemmin he sanoivat etteivät
olleetkaan varmoja ja niin edelleen. Se
-
oli hyvin omituinen tiketti, ja minulla ei
ollut tietoa että oliko se korjattu vai ei
-
koska tietenkin toistaakseni sen, minulla
pitäisi olla tinapaperia, pari AnyConnect:
-
lla varustettua älypuhelinta ja sitten
minun pitäisi odotella että Internet-
-
yhteyteni menee rikki tavalla, joka saa
sen kaatumaan. Joten tämä oli ihan liian
-
satunnaista. Kerroin myös Applelle, mutta
he vain sanoivat että vika on ohjelmassa,
-
eikä silloin kuulu heille, vaikka se on
verkkoekstensio, mikä kaatuu. Joten se
-
ei ole heidän tehtävänsä ilmoittaa käyttä-
jälle siitä, koska se on vain VPN mikä on
-
poissa. Ja sitten data lähteekin selväkie-
lisenä ja se on ihan ok. Se oli odotettua
-
käytöstä. Rupesin ärsyyntymään tästä ja
lopetin VPN:n käyttämisen, mutta minulla
-
oli myös idea etsiä opiskelijoita, jotka
tutkisivat tätä. Ja tiedättekin mitä
-
tapahtuu kun löytää erittäin motivoitunei-
ta opiskelijoita: he löytävät haavoittu-
-
vuuksia. Ja tämä esitys on siitä.
-
Gerbert: Niin me tutkimme Cisco:n AnyCon-
nect-ohjelmistoa Linuxille ja löysimme
-
pari mielenkiintoista asiaa. Vähän sen
jälkeen kun julkaisimme löydöksemme, usei-
-
ta lehtiartikkeleita ilmaantui. Mutta mitä
tapahtui Jiskan kaatumisten ja näiden ar-
-
tikkeledein välillä? VPN on mielenkiintoi-
nen sillä se on niin vanha tutkimuskohde.
-
Kuitenkin, tuon teknologian merkitys ko-
rostui myöhemmin korona-pandemian myötä.
-
Monet yritykset joutuivat uudelleensijoit-
tumaan kotitoimistoille turvallisuustoi-
-
mien vuoksi. VPN mahdollistaa käyttäjille
pääsyn ulkopuolelta firman tai yliopiston
-
sisäisiin resursseihin. Yleensä tarvitaan
VPN-asiakasohjelmistoa, jotta VPN-palveli-
-
meen saadaan yhteys. Avoimen lähdekoodin
ohjelmistojen kuten OpenVPN:n lisäksi saa-
-
tavilla on monia suljetun lähdekoodin tuot
-teita, erityisesti yrityssektorilla.
-
Käyttäjät joutuvat luottamaan tähän ohjel-
mistoon, asentamaan tämän mustan laatikon
-
koneilleen päästäkseen verkkoon. AnyCon-
nect secure liikkuvuus-ohjelmisto Ciscolta
-
on yrityskäyttöön tarkoitettu. Se voidaan
luokitella etäpääsyohjelmistoksi, joka
-
mahdollistaa loppukäyttäjille pääsyn verk-
koon, joka tukee SSL VPNää tai IPsec:iä.
-
Käytettäessä SSL VPN:ää autentikaatio ja
tunnelin muodostaminen tapahtuu SSL/TLS-
-
tunnelin lävitse. Ohjelmisto toimii paksu-
na clientina joka kommunikoi VPN-serverin
-
kanssa HTTPS:n yli. Kuten jo mainittiin,
AnyConnectin lähdekoodi ei ole julkisesti
-
saatavilla. Sovellus jaellaan käännettyjen
binäärien ja kirjastojen kanssa.
-
Vaikka sovellus on dokumentoitu, se ei
kata sisäistä toiminnallisuutta. Edes haa-
-
voittuvuustiedotteissa, jotka jaellaan
julkisina, ei mennä kovin syvälle tekni-
-
siin yksityiskohtiin. Sen vuoksi tiedämme
vain rajoitetusti sovelluksesta, ja sen
-
sisäisestä käyttäytymisestä. Olemme aset-
taneet itsellemme tavoitteksi tutkia Any-
-
Connectin äskettäisiä Linux ja iOS-sovel-
luksia. AnyConnectin päätoiminnallisuus
-
tulee VPN-yhteyksien muodostamisesta,
mutta se on vain jäävuoren huippu.
-
AnyConnect:ssa on myös muita ominaisuuksia
joista nimetään pari: skriptien jakelu
-
ja suorittaminen kohdelaitteilla, auto-
maattinen ohjelmiston päivittäminen kysy-
-
mättä käyttäjän lupaa siihen, ja yksi omi-
naisuuksista on laiteskannaus: se ei
-
integroidu AnyConnectiin, vaan sitä pide-
tään erillisenä ohjelmana. Se toimii Any-
-
Connect-infran kanssa yhdessä ja mahdol-
listaa laajan asiakaslaitteiden järjestel-
-
mätiedon lukemisen ja välittämisen VPN-
palvelimelle. AnyConnectiin liittyvät
-
työt perustuvat Cisco:n julkisiin tiedot-
teihin ja blogimerkintöihin tietyiltä tur-
-
vallisuustutkijoilta. Sen vuoksi päätimme
listata ja kategorisoida kaikki
-
haavoittuvuudet vuodesta 2011 lähtien.
Tässä kuvassa näemme listan haavoittuvuuk-
-
sista per vuosi, pistettynä järjestykseen
vakavuuden perusteella. Eniten raportoi-
-
tiin keskitason haavoittuvuuksia, mutta
myös kriittisiä haavoittuvuuksia julkais-
-
tiin vuosina 2011 ja 2012. 2015 ja 2016
vuosien korostuminen määrissä johtuu kir-
-
jastoissa kuten OpenSSL, olleista haavoit-
tuvuuksista. Haavoittuvuudet jaoteltiin
-
vielä edelleen kategorioihin, jotka näky-
vät tässä kuvassa. Kryptografiset haa-
-
voittuvuudet ovat yleisimpiä, sillä Any-
Connect käyttää OpenSSL:ää, ja OpenSSL:n
-
haavoittuvuudet ovat AnyConnectin haavoit-
tuvuuksia. Kun kolmansien osapuoletan haa-
-
voittuvuudet suljetaan pois, eniten Any-
Connectilla on käyttöoikeuksien laajennuk-
-
sen haavoittuvuuksia. Sitä seuraa lähellä
palvelunestohyökkäykset, jotka on usein
-
kohdistettu päällä olevaan ohjelmaan, jot-
ta voidaan häiritä VPN-yhteyttä. Ylivuoto-
-
ja versioiden alentamishaavoittuvuuksia.
-
Nämä tulokset antavat meille vähän tietoa
menneisiin vikoihin.
-
Matthias: Ennen kuin mennään takaisinmal-
linnukseen, haluamme antaa teille pienen
-
katsauksen Cisco:n lisensointitukeen.
Cisco ASA on tyypillinen palvelinpääte
-
Cisco:n AnyConnect:ille, ja sitä on saata-
villa rautalaitteistona sekä myös virtuaa-
-
lisena versiona esim. VMwaren päällä ajet-
tavaksi. Tutkimuksemme alussa yritimme
-
saada virallista arviointilisenssiä
Ciscolta ASAv:tä varten, ilman että pii-
-
lotimme tarkoituksenamme olleen
käyttää sitä turvallisuustutkimukseen.
-
Sen vuoksi naiivi lähestymistapamme oli
vain lähestyä Ciscon lisensointitukea. Se
-
oli enemmän tai vähemmän: Hei, teemme
turvallisuustutkimusta Ciscon AnyConnect-
-
asiakasohjelmistoon. Voitteko antaa meille
ilmaisia arviointilisenssejä ASAv:lle?
-
Cisco vastasi: okei. Montako tarvitsette?
Tässä kohdassa olimme hieman yllättyneitä
-
kuinka kivuttomasti kaikki tuntui menevän.
Mutta sitten saimme kolme 60-päivän li-
-
senssiä tilillemme. Mutta heti kun kokei-
limme ladata Cisco ASAv-imagea Virtual-
-
Box:lle, saimme tämän virheen. Ehkä jon-
kinlainen ongelma lisenssin aktivoinnissa,
-
sillä jos sinulla on lisenssi tuotteisiin
tietenkin voit ladata sen, eikös joo?
-
Mutta joo, se todellakin vaikutti siltä
että lähestymistapamme oli hivenen naiivi
-
ja olimme aliarvioineet yrityssovelluksien
lisenssoinnnin monimutkaisuutta.
-
Se oli vähän epätyydyttävää. Mutta meillä
oli idea. Pyytäisimme yliopistomme data-
-
keskuksen apua koska hekin käyttivät
Ciscon AnyConnectia. Mutta me emme
-
ikinä saaneet vastausta. Meillä oli vielä
joitakin vaihtoehtoja jäljellä, mutta jos-
-
sakin kohtaa annoimme vain periksi.
G: Koska saatavilla ei ole kunnollista
-
dokumentaatiota, oli tarpeen ihan alkuun
ymmärtää sovellusta ja selvittää sen kes-
-
keiset komponentit. Sen vuoksi meillä ei
ollut muuta mahdollisuutta, kuin takaisin-
-
mallintaa sovellus. Analysoimme sovellus-
tiedostoja ja verkkoliikennettä. Jotta
-
saisimme paremman ymmärryksen ohjelmasta,
käytimme perustyökaluja kuten Ghidraa
-
staattiseen koodianalyysiin. Ghidra kyke-
nee takaisinkääntämään lähdekoodin kään-
-
netystä binääristä tai kirjastosta. Dynaa-
mista sovellustestausta varten käytimme
-
työkaluja kuten Fridaa, Burppia ja Wire-
sharkkia. Frida voidaan liittää ajossa
-
oleviin prosesseihin, jotta ymmärretään
ohjelman virtausta. Burpia käytettiin pro-
-
xynä HTTPS-viestien muuttamiseen, ja Wire-
sharkkia käytettiin verkkoliikenteen kuun-
-
teluun ja purkamiseen. Otetaan lähempi
katsaus tiedostojen binääreihin. AnyCon-
-
nectin mukana tulee iso joukko binäärejä.
Takaisinmallintaessamme tunnistimme kolme
-
keskeistä sovelluksen osaa: vpnui on
binääri, jonka kanssa käyttäjä on vuoro-
-
vaikutuksessa. Se tarjoaa GUI:n, jossa
käyttäjä tekee yksinkertaisia asetuksia ja
-
käynnistää VPN-yhteyden. Toinen binääri on
vpnagentd. Se ajaa daemonia taustalla
-
kaikkina aikoina, jopa silloin kun VPN-
yhteys ei ole auki. Erikoista vpnagentd:sä
-
on se, että sitä ajetaan root-prosessina
ja se kuuntelee aina staattisella portilla
-
Sen tarkoituksena on pystyttää VPN-tunneli
ja verkkokonfiguraatio asiakaslaitteessa.
-
Se sisältää asetuksia kuten reitit tai DNS
-palvelimet. Kolmas ja viimeinen binääri
-
on vpndownloader. Kuten nimi vihjaa, sen
tarkoitus on ladata lisätiedostoja, joita
-
tarvitaan VPN-yhteyden muodostamiseen.
Se sisältää sellaisia kuten VPN-profiilit,
-
aputiedostot ja skriptit. Binäärit vaihta-
vat dataa keskenään prosessienvälisen kom-
-
munikaation (IPC:n) keinoin. IPC tapahtuu
TCP socket:ien välityksellä. Binääridata-
-
formaatti, jonka Cisco on IPC:lle määri-
tellyt, käytetään viestien vaihtoon TCP-
-
socketien akutta. Binäärien lisäksi Any-
Connect sisältää paljon kirjastoja.
-
Monet niistä ovat porttauksia olemassa-
olevista avoimen lähdekoodin kirjastoista
-
kuten OpenSSL:stä. Tärkein seikka niistä
on tällä dialla: libvpnapi.so sisältää
-
interfacet ja funktiot käyttäjäkäyttöliit-
tymien taustalogiikalle. Kirjaston tavoit-
-
teena on että yritykset voivat rakentaa
omat VPN-sovelluksensa AnyConnect:n infran
-
päälle. Se on ainoa krijasto, jolle doku-
mentaatio on saatavilla Ciscon
-
toimittamana. Libvpncommoncrypt on wrapper
OpenSSL ja NSS-kirjastoille. NSS on saman-
-
kaltainen OpenSSL:n kanssa ja sitä käy-
tetään selainten, kuten Mozilla Firefox:n
-
toimesta SSL/TLS-yhteyksien kytkemiseen.
Se myös tarjoaa oman sertifikaattivaras-
-
tonsa. Libvpncommon on toinen keskeinen
kirjasto, jota kaikki binäärit käyttävät.
-
Se tarjoaa luokkia ja funktioita IPC-
logiikalle. Sillä voidaan luoda, lähettää
-
ja validoida IPC-viestejä. Seuraava kir-
jasto, libvpnagentutilities, sisältää
-
luokkia ja funktioita, jotka käsittelevät
kriittisiä operaatioita, kuten verkkoase-
-
tuksia. Sitä käyttää ainoastaan vpnagentd.
Binäärien ja kirjastojen lisäksi on monia
-
muita tiedostoja, joilla on merkitystä
ja joita tutkimme tarkemmin. AnyConnect
-
tarjoaa AnyConnect local policy XML-tie-
doston. Tämä tiedosto sääntelee useita
-
turvallisuusasetuksia. Esimerkiksi sitä
voidaan käyttää määrittämään, että muita
-
tiedostoja ei enää ladata, tai että VPN-
palvelin voi suorittaa versiopäivityksiä.
-
Oletusasetuksillaan se on hyvin salliva ja
lähes mikä tahansa on sallittua. Tiedostoa
-
ei ylikirjoiteta päivitysten toimesta eikä
sitä voida muuttaa VPN-palvelimen toimesta
-
VPN-profiili on myös XML-formaatissa: se
sisältää lisäasetuksia. Vihreällä on ko-
-
rostettu EnableScripting-tagirivi, jossa
on boolean-arvo epätosi. Se indikoi, että
-
skriptejä ei tule suorittaa laitteella.
-
VPN-palvelin jakelee profiilitiedostoja,
ja ne ylikirjoitetan seuraavan kerran kun
-
käyttäjä yhdistää ja muuttaa niitä. Vii-
meinen tiedosto on VPNManifet.dat mikä on
-
binääridatamuodossa sisältäen AnyConnect:n
versiotiedoton. Tätä tiedostoa käytetään
-
kun tarkistetaan mikä on AnyConnectin
versio ennen päivitystä. Näiden tiedosto-
-
jen lisäksi viestinvälitys näyttelee kes-
keistä roolia. VPN-yhteyden muodostus
-
rakentuu kolmeen vaiheeseen. Ensimmäinen
vaihe on autentikointi.
-
Käyttäjä syöttää VPN-palvelimen IP/Domain-
tiedot vpnui:ssä. Kohdepalvelin lähete-
-
tetään sitten IPC-viestinä vpnagentd:lle.
Vastauksena vpnui saa erinäisiä järjestel-
-
mätietoja takaisin. Se sisältää käyttöjär-
jestelmätietoja tai kokonaisen tietovaran-
-
non. Myöhemmin tämä tieto ja tunnukset
lähetetään VPN-palvelimelle HTTPS:n väli-
-
tyksellä. ASA palauttaa palvelinparametrit
HTTPS-vastauksessa. Otetaan lähempi kat-
-
saus pyyntöön ja vastaukseen. Vasemmalla
puolen näette tämän pyynnön. Se on nor-
-
maali post-pyyntö, jossa on XML jossa
tunnustiedot välitetään. Tunnustiedot
-
on merkitty vihreällä.
-
Vasemmalla näemme vastauksen. Vastaus si-
sältää sessio-tokenin, mikä on myös mer-
-
kitty vihreällä. Lisäksi vastaus sisältää
URLt kaikkiin ladattaviin tiedostoihin ja
-
niiden hash-arvot. Oranssilla korostettu
string on yksi ladattavista tiedostoista.
-
Lataus-vaihe on toinen vaihe VPN-yhteyden
muodostamisessa. Ensiksi vpnui suorittaa
-
vpndownloader-binäärin. Sitten palvelin-
paramterit edellisestä HTTPS-vastauksesta
-
siirretään vpndownloaderille IPC:n väli-
tyksellä. URLt poimitaan IPC-viesteistä
-
ja kun tiedostot ladataan ne ladataan
väliaikaiseen kansioon HTTPS:n välityk-
-
sellä. Lataajaprosessi tiedottaa vpnagentd
:lle IPC:n välityksellä että sen tulee
-
siirtää tiedostot varsinaiseen sovellus-
kansioon. Kolmannessa ja viimeisessä
-
vaiheessa VPN-yhteyden muodostamista vpnui
lähettää IPC-viestin vpnagentd:lle, jossa
-
on pyyntö muodostaa VPN-tunneli. Sen
jälkeen tunneliparamterit vaihdetaan käyt-
-
täen HTTPS:ää. Kun vpnagentd on asettanut
parametrit, VPN-sessio jatkuu.
-
Otetaan tarkempi katsaus tunneliparamet-
reihin.
-
Vasemmalla puolella näemme pyynnön.
Ensimmäisellä rivillä näette HTTP-connect
-
-metodin. Normaalisti proxyt käyttävät
tätä metodia edelleenvälittääkseen pyynnöt
-
kohdepalvelimelle. Pyynnön sisällä näemme,
että sessio-token annetaan cookie:n
-
header:issä. Tämä on se sama sessio-token,
joka saatiin autentikaatiovaiheessa.
-
Eri tunneliparamterit välitetään eri HTTP-
headereissä. Osio, joka on merkitty
-
punaisella edustaa paikallisen laitteen
IP-osoitetta. Oikealla puolella näette
-
vastauksen tään pyyntöön. Esimerkiksi X-
CSTP-Address-header sisältää IP-osoitteen,
-
jonka laitteen tulee antaa tunneli-inter-
facelleen.
-
Punaisella merkatussa osiossa näemme nyt
myös DNS-palvelimen VPN-yhteydelle.
-
Lisäksi osoiteavaruudet, jotka pitää rei-
tittää VPN-palvelimen kautta on määritelty
-
X-CSTP-Split-Include-headerissä. Nyt kun
meillä on yleispätevä ymmärrys
-
ohjelmistosta, mennään haavoittuvuustutki-
mukseen. Me suoritimme design-analyysiä
-
AnyConnectille, jossa tarkastelimme IPC-
viestejä paljon yksityiskohtaisemmin.
-
Meidän täytyy määritellä tiettyjä oletuk-
sia turvallisuudesta ja hyökkääjästä,
-
ennne kuin etsimme haavoittuvuuksia. Tämä
dia näyttää useita oletuksistamme.
-
Kryptografiset algoritmit sovelluksen
sisällä ovat turvallisia, eikä niitä voida
-
murtaa eksponentiaalisessa ajassa. Hyök-
kääjä ei voi lukea tai muokata viestejä
-
huolimatta heidän sijainnistaan, ja me
oletamme että VPN-palvelin ei ole pahan-
-
tahtoinen, ja viestii vain valideja vies-
tejä, jotka noudattavat protokollaa.
-
Oletamme, että hyökkääjällä on paikalli-
nen pääsy ja hän voi suorittaa komentoja
-
laitteella, ja hänen tavoitteena on vaa-
rantaa järjestelmän tai sovelluksen
-
luottamuksellisuus, eheys tai saatavuus.
Käyttöoikeuksien laajennushaavoittuvuudet
-
käsitellään, sillä ne mahdollistavat hyök-
kääjälle tavoitteisiin pääsyn.
-
Cisco päätti sisällyttää sovellukseensa
automaattisten päivitysten ominaisuuden.
-
AnyConnect pystyy saamaan AnyConnect-päi-
vityksiä VPN-palvelimelta ilman mitään
-
käyttäjävuorovaikutusta. Oletusasetuksil-
laan AnyConnectia voi päivittää VPN-pal-
-
velin, joka tarjoaa uudempaa versiota.
Turvallisuustutkijan näkövinkkelistä täl-
-
lainen automaattinen päivittäminen kuulos-
taa lupaavalta, eikös vain? Katsotaan sitä
-
ominaisuutta tarkemmin. Ensiksi vpndown-
loader lataa suoritettavan asennustiedos-
-
ton ja shell-skriptin nimeltä vpndownloa-
der.sh. Sitten vpndownloader.sh suorite-
-
taan. Shell-skripti sisältää arkiston,
joka puretaan jotta saadaan uusi versio
-
vpndownloaderista ulos. Sitten IPC-viesti
lähetetään vpnagentd:lle, jossa sitä
-
pyydetään suorittamaan tämä asennustie-
dosto. Vpnagentd ei suorita sitä suoraan,
-
vaan se kutsuu vpnagentdownloader:ia root-
oikeuksin, joka puolestaan kutsuu tuota
-
asennustiedostoa. Ennen asennustiedoston
suorittamista vpndownloader verifioi ja
-
validoi tiedoston. Me saimme idean: onko
mahdollista asentaa vanhentunut versio
-
väärennetyn IPC-viestin avulla? Kuten
kuvassa näkyy, hyökkääjä tarvitsee vanhan
-
allekirjoitetun asennustiedoston ja se
lähettää IPC-viestin vpnagentd:lle pyytäen
-
sitä suorittamaan vanhentuneen asentajan.
Vpnagentd kutsuu vpndownloaderia kuten
-
normaalistikin, joka puolestaan kutsuu
hyökkääjän asennustiedostoa. Ei ole mitään
-
tarkistusta sille, onko asennustiedosto
uudempi kuin jo asennettu versio. Tämä
-
mahdollistaa versionalennushyökkäyksen.
Version alentamisen tavoitteena hyökkää-
-
jällä on pakottaa vanhentuneen version
asennus, version joka sisältää haavoittu-
-
vuuksia , joita hyökkääjä voisi hyö-
dyntää.
-
Raportoimme tämän haavoittuvuuden
Ciscon tuoteturvallisuustiimille ja se
-
korjattiin syyskuun lopussa. Haavoittuvuus
sai vain CVSS-pisteytyksen 3.1, ja oli
-
siten luokiteltu matalan vakavuuden
haavoittuvuudeksi. Haavoittuvuus oli
-
hyödynnettävissä vain Linux-versiossa.
Windows- ja Mac-versiot oli jo turvattu
-
tuollaiselta hyökkäykseltä. Toinen toimin-
nollisuus, jota tarkastelimme oli
-
skriptien jakelu ja suoritus. He kutsuvat
sitä "Bring your own Script":ksi.
-
Toiminnon tarkoituksena on helpottaa
skriptien jakelua tietokoneille. Jotta
-
skripti suoritetaan, sen pitää täyttää
kaksi vaatimusta.
-
Ensikin, sen pitää sijaita skriptit-kan-
siossa ja tiedostonimen tulee alkaa sa-
-
noilla OnConnect tai OnDisconnect. Toisek-
si, VPN-palvelimen lähettämässä profiilis-
-
ssa EnableScripting-tagin tulee olla ase-
tettuna tosi-arvoon.Riippuen tiedosto-
-
nimestä skriptit ajetaan VPN-yhteyden
muodostamisen ja terminoinnin jälkeen.
-
VPN-palvelin kun voi jaella profiileja,
joissa skriptien jakelu on päällä ja se
-
voi myös jaella skriptit: nämä kaksi yh-
dessä amhdollistvat VPN-palvelimelle etä-
-
ajettavan koodin siihen yhdistävillä lait-
teilla. Tämä toiminnollisuus muodostaa
-
suuren ongelman, sillä ihmiset joutuvat
usein luottamaan yliopsiton VPN-palveli-
-
miin ja heillä ei ole muuta vaihtoehtoa.
Mutta katsotaan tarkemmin skriptien jake-
-
lua. Tässä näemme klassisen skriptijakelun
esimerkin. Latausvaiheessa vpndownloader
-
lataa OnConnect- tai OnDisconnect-
skriptit. Vpndownloader sitten kysyy IPC-
-
viestillä ladatun skriptin siirtoa skrip-
tit-kansioon.
-
Vpnagentd-prosessi kutsuu vpndownloaderia,
joka sitten siirtää tiedoston.
-
Tarkastelimme järjestelmällisesti IPC-
viestejä ja löysimme pystysuuntaisen käyt-
-
töoikeuksien laajennuksen. Hyökkääjä voi
lähettää saman viestin vpnagentd-proses-
-
sille. Mikä tahansa hyökkääjän skrip-
teistä voidaan siirtää skriptit-kansioon.
-
Jos seillä on jo skripti, niin se ylikir-
joitetaan. Jos hyökkääjä siirtää On-, tai
-
OnDisconnect-skriptin kun käyttäjällä on
VPN-yhteys avoinna, skripti jaetaan käyt-
-
täjän oikeuksilla. Kun VPN-yhteys sulje-
taan, ensimmäinen valtuuttamaton käyttäjä
-
voi saavuttaa toisen käyttäjän kontekstin
koodiajoa.
-
Mikä häiritsi metiä tässä hyökkäyksessämme
oli se että se oli sidottu esiehtoihin.
-
Yksi ehdoista oli, että EnableScripting-
tagissa oli arvo "Tosi". Harkitsimme muita
-
hyökkäysskenaarioita ja saimme idean jael-
la profiileja itse. Eli, tsekkaamme tagin
-
uudestaan, mutta emme luo vain skriptiä
vaan myös VPN-profiilin joka sallii
-
skriptien ajamisen. Hyökkäys toimii näin:
kun paikallsiella käyttäjällä on VPN-
-
sessio aktiivisena, toinen käyttäjä jär-
jestelmässä luo pahantahtoisen skriptin ja
-
uuden profiilin. Uudessa profiilissa Ena-
bleScripting-tagiin on asetettu arvoksi
-
"Tosi". Hyökkääjä sitten lähettää IPC-
viestin vpnagentd:lle pyytäen skriptin ko-
-
pioimista skriptit-kansioon. Vpndownloader
käynnistetään sitten root-oikeuksin suo-
-
rittamaan kopiointi. Hyökkääjä voi myös
lähettää lisäksi IPC-viestin vpnaentd:lle
-
pyytäen olemassaolevan profiilin yli-
kirjoittamista pahantahtoisella profii-
-
lilla. Vaikka profiili ylikirjoitettaan,
uuden profiilin asetuksia kytketä vielä
-
päälle koska vanha profiili on yhä aktii-
visena.
-
Kuitenkin, me pystyimme määrittämään että
uusi profiili ladataan kun VPN-sessiossa
-
tapahtuu uudelleenyhdistäminen. Neovat
itse asiassa aika yleisiä AnyConnectissa.
-
Jos uudelleenyhdistys tapahtuu, uusi pro-
fiili ladataan ja kytketään päälle. Meidän
-
tapauksessamme se mahdollistaa skripti-
toiminnon. VPN-yhteyden alasajon jälkeen,
-
pahantahtoinen OnDisconnect-skripti aje-
taan VPN-sovellusta ajavan käyttäjän
-
oikeuksin. Kummatkin ongelmat raportoitiin
Ciscolle, mutta niitä ei voitu korjata
-
julkistamispäivään mennessä, vaikka an-
noimme lisäaikaa deadlinelle. Vielä
-
tänäänkin haavoittuvuus on yhä läsnä Any-
Connectin oletusasetuksissa.
-
Cisco julkisti tämän haavoittuvuuden CVSS-
pisteytyksellä 7.1, mitä pidetään
-
korkeana vakavuutena. Koska se julkaistiin
4. marraskuuta 2020 ilman korjausta, haa-
-
voittuvuus sai paljon huomiota monilla
uutissivustoilla.
-
Eri sivustot raportoivat haavoittuvuudesta
Raportoinnin laatu vaihteli.
-
Joissakin artikkeleissa oli väärää tietoa,
kuten että hyväksikäyttömenetelmä olisi
-
julkisesti saatavilla. Tämä ei ollut
yhtään tarkkaa, koska me olimme ainoat,
-
joilla oli toimiva haavoittuvuus emmekä
julkistaneet sitä vielä. Emme löytäneet
-
mitään muuta hyväksikäyttömenetelmää
Interntistäkään. Luulen että tällainen
-
raportointi - tämä tapa raportoida pitää
harkita uudelleen koska se aiheutti niin
-
paljon väärää tilannekuvaa haavoittuvuu-
desta. Meitä jopa kontaktoitiin huolestu-
-
neiden poikkeamavastetiimien toimesta,
sillä he olivat huolissaan infrastaan.
-
Kaikki löydetyt ja raportoidut haavoittu-
vuudet on listattu tässä taulukossa. Nämä
-
kolme haavoittuvuutta löydettiin design-
analyysin keinoin. Vain yksi haavoittu-
-
vuuksista on korjattu Ciscon mukaan. Eri
toten Bring Your Own Script-haavoittu-
-
vuudet on jo julkistettu. Vaikka korjausta
niihin ei vielä ole, kiertävä meaknismi
-
on jo julkaistu näitä haavoittuvuuksia
vastaan. Muokkaamalla paikallista poli-
-
tiikka-tiedostoa latausvaihe voidaan ohit-
taa kokonaan. Viimeisimmän päivityksen
-
myötä on myös mahdollista estää lataus- ja
jakelutoimintoja modulaarisesti.
-
M: Ja entäs sitten mobiilialustat? Vai-
kuttavatko löytämämme haavoittuvuudet
-
niissä? Pidetään tämä lyhyenä: ei. Mobiili
-alustoista puuttuu monia ominaisuuksia
-
verrattuna Linux, Windows ja macOS-ver-
sioihin. On tietenkin mahdollista muodos-
-
taa TLS ja IPsec-yhteyksiä, kuten kaikilla
muillakin versioilla. Mutta koska ominai-
-
suudet kuten skriptien jakelu tai auto-
maattinen päivitys puuttuvat, ei ole
-
mitään keinoa käyttää näitä hyväksikäyttö-
menetelmiä mobiilialustoilla. Meillä on
-
meineillään tarkastelu AnyConnect:n iOS-
versioon, ja sen vuoksi haluamme antaa
-
teille nopean ja korkean tason yleiskat-
sauksen arkkitehtuuriin. Koska olemme
-
Applen aknssa tekemisissä tässä, vakavat
asiat kuten VPN:n implementointi on vähän
-
erilaista verrattuna esimerkiksi Linux-
versioon. Jos haluaa leikkiä notifikaa-
-
tioilla, lisätä jakamisnappeja tai tehdä
widgetin aloitusnäytölle, pitää käyttää
-
sovellusekstensiota. Myös VPN-toiminnolli-
suuksia varten pitää käyttää verkkoeksten-
-
siokehystä. Verkkoekstensiot sisältävät
providereita ja ominaisuuksia kaikenlai-
-
siin verkkoon liittyviin toimintoihin,
kuten sisällönsuodatukseen, DNS:ään, Wi-
-
Fiin ja muuhun. Jos haluaa rakentaa oman
VPN-sovelluksen, pitää valita Personal
-
VPN:n, Packet Tunnel Provider:n ja App
Proxy Provider:n välillä. Meidän tapauk-
-
sessamme AnyConnect iOS:lle käyttää Packet
Tunnel Provideria, koska he käyttävät omaa
-
pakettiorientoitunutta protokollaansa.
Tässä näemme AnyConnect-sovelluspaketin
-
sisällön, mikä on periaatteessa .zip-tie-
dosto, joka sisältää kaikki suoritettavat
-
tiedostot ja assetit kuten kuvat jne. Pää-
tiedosto on nimeltään eplkkä AnyConnect.
-
Verkkoekstensio on implementoitu ACExten-
sion-binäärissä. Näiden lisäksi on monia
-
muita sovellusekstensioita, joilla imp-
lemenntoidaan iOS:n jakamis- ja Siri-toi-
-
minnollisuuksia. Joten mitä tapahtuu kun
painetaan connect-slideria? Kun painaa
-
slideriä, network-ekstensio suoritetaan,
ja VPN-session neuvottelu alkaa. Sen
-
jälkeen kun verkkotietoja kuten IP-osoit-
tieta, aliverkkomaski, reitit, DNS, MTU ja
-
muuta on saatu, ne annettaan iOS-järjes-
telmälle, joka suorittaa neuvottelun lop-
-
puun. Lopussa yhteys on muodostunut, ja
toivottavasti sinulla on toimiva tunneli-
-
interface nimeltä utun. Joten, uusi lii-
kenne sovelluksilta menee network-pinon
-
läpi kunnes se saapuu tunneli-interfacel-
le. Sitten network-ekstension Packet
-
Tunnel Provider voi käsitellä sitä. Joka
kerta kun paketti saapuu tunneli-inter-
-
facelle se luetaan network-ekstension toi-
mesta ja kapseloidaan tunnelointiproto-
-
kollalla. Joka kerta kun paketti saapuu
tunneliin, network-ekstensio lukee sen ja
-
kapseloi sen tunnelointiprotokollalla.
Kun se saapuu VPN-palvelimelle, paketin
-
kapselointi puretaan, ja se lähetetään
kohdeosoitteseensa. Samalla tavalla client
-
:lle lähetettävät vastaukset kapseloidaan,
jossa niiden kapselointi vasta poistetaan
-
ja se syötetään takaisin verkkopinoon.
Tässä iOS-clienteista, ihan vain että
-
annetaan teille nopea yleiskatsaus ja
korostetaan tiettyjä avaineroja eri
-
arkkitehtuurien välillä. Tutkimme yhä sekä
Linux- että iOS-alustoja, mutta tähän men-
-
nessä löydöksemme voidaan yhteenvetää
näin: AnyConnect yleisesti ottaen on laaja
-
sovellus jossa on paljon koodia ja myös
käyttämätöntä kirjastokoodia. Olemme löy-
-
täneet kolme haavoittuvuutta design-ana-
lyysillä. Vpnagentd:tä ajetaan root-
-
oikeuksin ja se vastaanottaa komentoja ja
operaatioita vähempiarvoisilta prosesseil-
-
ta autentikoimattomien ICP-viestien väli-
tyksellä, mikä on yleensä ottaen aika
-
riskialtista. Kaikkia turvamekanismeja ja
-korjauksia ei ole kaikilla alustoilla.
-
Esimerkiksi versioalennushyökkäys oli
mahdollinen vian Linuxilla, ja se oli jo
-
korjattu Windowsilla ja macOS-versioilla
Ciscon mukaan. Mobiililla se ei ole mah-
-
dollinen johtuen siitä että automaattinen
päivitystoiminto on rajoitettu Linux:lle,
-
Windows:lle ja macOS:lle. Samalla lailla,
Bring Your Own Script ei päde mobiiliin,
-
koska OnConnect ja OnDisconnect-skriptien
jakelu on myös rajoitettu vain ei-mobii-
-
leille alustoille. Liittyen local policy-
tiedostoon Linuxilla, meidän näkemyksemme
-
on että siitä pitäisi tehdä niin rajoitet-
tu kuin mahdollista, ehkä vaatia opt-in:iä
-
skriptaus-toiminnollisuudelle. Tämä vä-
hentäisi monia hyökkäyksiä, mutta tieten-
-
kin vaikuttaisi myös käytettävyyteen.
Vaikka sovellus on ollut saatavilla monia
-
vuosia, me näytämme että niissä on yhä
bugeja löydettäväksi. Bug bounty-ohjelmien
-
käyttöönotto olisi mahtava tapa motivoida
useampaa turvallisuustutkijaa tarkistamaan
-
sovellus haavoittuvuuksien varalta. VPN:n
käyttö lupaa turvallisuutta ja yksityi-
-
syyttä käyttäjille, kuitenkin tutkimuksem-
me AnyConnectiin näyttää että suljetun
-
lähdekoodin ohjelmistot mahdollistavat
uusia hyökkäysvektoreita järjestelmiin.
-
Toivomme että tulevaisuudessa tehtäisiin
tutkimusta asiakasohjelmistoihin, ja että
-
työmme tasoittaa matkaa sinne. Se oli sii-
nä. Kiitoksia ja kysykää vain jos niitä on
-
H: No niin, tervetuloa takaisin. Siinä oli
tallenne tästä supermielenkiintoisesta
-
esityksestä Very Pwnable Netwokrks. Olen
varma, että olette nähneet kuinka pwnatta-
-
via ne ovatkaan, ja onneksi meillä on
täällä tänään kanssamme Jiska, Matthias ja
-
Gerbert Internet-taikuuden avustuksella.
Jos et ole vielä kirjoittanut kysyymystäsi
-
tee se nyt, jotta voimme vielä vastata
siihen. Joko menemällä IRC-kanavalle rc3-
-
cwtv hackened-verkossa tai postaamalla
tweetin tai tootin suosikki-SoMellasi,
-
joka sisältää hashtagin #rc3cwtv ilman
väliviivaa, hyvin tärkeä huomio.
-
Signaalienkelimme on kerännyt joitakin
kysymyksiä meille, joidenka avulla nyt
-
kidutan näitä kolmea ihmistä. Katsotaan
mitä sanotte näihin.
-
Mutta aah, nämä ovat aika - aika vaisuja,
vai? No, eka kysymys on: onko mitään sivua
-
tai wikiä, jossa tämä tieto on saatavilla?
-
G: Tällä hetkellä sitä ei ole vielä jul-
kaistu. Luulen että julkaisemme sen lähi-
-
tulevaisuudessa GitHubissa tai vastaavalla
alustalla.
-
H: Onko mitään tapaa, jolla ihmiset voivat
löytää linkin tuohon kun sitten viimein
-
julkaisette sen?
G: Luulen että Jiska voi sanoa tähän.
-
J: Joo, eli SEEMOO:lla on Github-sivu ja
-
myös Twitter-tili, joten se tullaan jul-
kaisemaan. Mutta on vielä pari, pari seik-
-
kaa joista emme pitäneet, jotka eivät ole
vielä julkisia. Joten kyllä, sitten jul-
-
kaisisimme vain yhden julkaisun sen sijaan
että yksi CVE täällä, toinen tuolla.
-
H: Aivan, tekee enemmän vaikutusta ker-
ralla ja myös parempaa julkaisua. Pidän
-
tuosta. Ja seuraava kysymys on: onko tämä
VPN-tapahtuma vain Ciscosta? Joten joo,
-
olette vain katsoneet Ciscao, eikö vain?
Tässä tapauksessa ehkä haluatte kertoa
-
meille jos te olette katsoneet muita VPN-
toimittajia tai jos muilla VPN-toimitta-
-
jilla olisi myös ongelmia? Ehkä.
-
M: Joo, me olemme tehneet tätä tutkimusta
osana maisterin työtä, ja sen vuoksi se on
-
vain Ciscon AnyConnectista, ja joo meillä
ei ole ollut aikaa katsoa näitä muita VPN-
-
palveluita. Pelkästään AnyConnectia.
-
H: Aivan, tyypillinen maisterin näkymä -
kirjoitetaan sitä kahvin voimin pari viik-
-
koa ennen määräaikaa. Joo, voin kuvitella
että olette keskittyneet Ciscoon silloin.
-
Toinen erittäin hyvä kysymys: onko näitä
haavoittuvuuksia muissa AnyConnectin kal-
-
taisissa sovelluksissa, kuten niissä jotka
on integroitu Linuxin NetworkManager:iin?
-
Luulen että hän puhuu nimenomaan Open-
Connectista. Juu, tuo tuli juuri sisään.
-
Hmm, me puhuimme tästä vähän aiemmin, niin
ehkä teillä on jotain sanottavaa tästä.
-
G: Meidän tietääksemme siinä -
-
OpenConnectissa ei ole skripitoimintoja
aktvoituna tai integroituna. Joten
-
sanoisimme että tällaiset hyökkäykset
eivät ole vielä mahdollisia, mutta - hmm..
-
M: Olisi mahdollista että joku kykenevä
tarkistaa tämän, ja katsoo siihen myös,
-
OpoenConnectiin myös, joo.
H: Hmm, aivan, ei vielä tiedossa onko
-
mahdollista. Sanotaan se niin. Ikinä ei
tiedä. Onko mitään muita kysymyksiä
-
chatista, Twitteristä tai Mastodonista?
Nyt olisi aika antaa kysymyksenne. Muutoin
-
tämä olisi ollut hyvin lyhyt Q&A. joten
menkää rc3-cwtv-kanavalla hackened-IRC-
-
verkossa tai postatkaa tweet tai toot
hashtagilla #rc3cwtv mutta ilman välivii-
-
vaa. Tehkää se nyt ja toivottavasti saamme
sen vielä Signaalienkelin taikuudella,
-
joka kerää tätä tietoa minulle.
-
Ja joo, ehkä voitte kertoa onko teillä
vielä jotain lisättävää tai joitain uusia
-
aiheita joiden kanssa työskentelette, jot-
ka ovat tuloillaan. Ehkä voimme saada
-
ennakkokatselmusta. Olen varma että yhä
jatkatte tutkimustanne siihen ja -
-
J: Pahoittelut, minun piti ottaa mykistyk-
seni pois. Ei vielä
-
spoilereita mutta joo, edes yhden suljetun
koodin VPN-asiakasohjelmiston tutkinta on
-
hyvin, hyvin paljon työtä ja aikaavievää.
-
Voin kertoa teille tarinan kuinka katse-
limme binäärejä kuukausia ja se ei oikein
-
skaalaudu esim. 10:een eri asiakasohjel-
mistoon, ainakin jos haluaa saada merki-
-
tyksellisiä löydöksiä.
H: Joo, mutta eikö teillä ole sellaisia
-
jotain muita suunnitelmia, esimerkiksi
muiden ohjelmistojen katsomista tai jos
-
olette saaneet pyyntöjä katsella muita
ohjelmia tai jotain mikä ohjaa teitä
-
jokin omituisen ääreeen? Ei? Okei.
G: Ei vielä.
-
J: Jep.
G: Mutta, mutta joo Matthias yhä työsken-
-
telee sen parissa. Luulen että hän löytää
jotain tulevaisuudessa. M: Toivottavasti.
-
H: Juu, juu. No siiinä on aika pitkälti
kaikki viimeiset kysymykset, paitsi vii-
-
meinen: Jsika, takanasi on kaksi varjoa,
onko se varjokabinetti?
-
J: Ei ei ei, minulla on vain useita lamp-
puja täällä, joten -
-
H: Joo joo, aivan se on aika hauskaa
kaikki
-
J: Ainakin se näyttää vain varjoni kahtena
eikä - eikä minua.
-
H: Joo, mutta olemme aika onnekkaita että
ainakin tässä puhelussa yhteys näyttää
-
toimineen aivan hyvin. Meillä on ollut
joitakin ongelmia täällä. Mutta joo, tämä
-
on mahtavaa. Jos teillä on muita kysymyk-
siä niin luulen että lopettelemme tähän,
-
jotta emme pidä teitä kauempaa. Olen varma
että haluatte hyppiä rc3-maailmassa, ja
-
jos teillä on mitään muuta, ehkä voitte
liittyä kanssamme IRC:hen myöhemmin. Jos
-
on mitään muita kysymyksiä, ehkä he katso-
vat tänne vähän ajan kuluttua tai minä vä-
-
litän heille ne kysymykset. Ok sitten.
J: Kiitoksia.
-
H: Kiitoksia teille oikein paljon tästä
super-mielenkiintoisesta puheesta. Minäkin
-
opin jotian uutta VPN-ohjelmasta, johon
olen kans törmännyt työskennellessäni.
-
Joten tämä oli minullekin mielenkiintoista
Ja lopetellaan tähän.
-
postroll-musiikkia
-
Tekstitykset luotu c3subtitles.de:llä
vuonna 2022. Liity ja auta meitä!
-
[Translated by {Iikka}{Yli-Kuivila}
(ITKST56 course assignment at JYU.FI)]