[Translated by Sampsa Suvivuo (KYBS2001EN23K2 course assignment at JYU.FI)]
*35c3 alkumusiikki*
Johdatus tietoverkkoturvallisuuteen
Seuraavan esityksen "Johdatus tietoverkkoturvallisuuteen" pitää nomaster.
Nomaster on osa Chaosdorfia, aktiivinen jäsen ja lähestyy ongelmia käytännönläheisesti.
Uskon että saamme käytännönläheisen johdatuksen tietoverkkoturvallisuuteen.
Tervetuloa, nomaster.
Kiitos. Tämä on ensimmäinen puheeni kongressissa ja olen niin innoissani, että
toivon pysyväni kasassa. Olen iloinen, että olette täällä. Minua pyydettiin
pitämään esitys, joka on mahdollisesti enemmän aloittelijoille suunnattu.
Toivon, että voitte nauttia esityksestä ja pysytte kyydissä, mutta ettette myöskään
ole kuullut kaikkea jo aiemmin. Katsotaan miten sujuu.
Ajatus on antaa käytännöllisiä esimerkkejä tietoverkkoturvallisuuden ongelmista.
Saamme paljon kyselyjä, onko tähän verkkoon turvallista yhdistää? Yleensä vastaus on,
ettei verkko itsessään ole turvallinen. Sinun järjestelmäsi ja kannettavasi tulisi
olla turvallisia.
Mikä on realistinen esimerkki, mitä voisi tapahtua? Sen haluan näyttää teille ja
minulla on kolme esimerkkiä sitä varten. Toivottavasti saatte oivalluksia.
*Verkkopino*
Tarvitsemme hieman pohjustusta ennen kuin aloitamme. Tässä on
yliyksinkertaistettu verkkopino. Kuten olette voineet kuulla, verkkopino perustuu kerroksiin.
Jokaisella tietokoneella on MAC-osoite, joka ei liity millään tavalla Applen tuotteisiin.
Lisäksi on IP-osoite.
Näiden päällä meillä on sovellus, joka käyttää TCP tai UDP sockettia ja sille
määriteltyä protokollaa kuten HTTPS.
Millä on merkitystä meille ovat nämä kaksi kerrosta tässä (TCP/IP), koska tämä on
käyttämäsi verkko ja sen toimintaan osallistuvat protokollat.
Muu on osa järjestelmää, käyttäjän laitetta tai palvelinta ja mihin data virtaa. Mitä
haluamme saavuttaa on, ettei kukaan muu pääse käsiksi sovellukseen kuin käyttäjä
ja palvelin.
Yksityisyytesi on vaarassa, kun kolmansilla osapuolilla on pääsy sovellukseen.
Voimme puhua HTTPS:stä myöhemmin.
Jotta olisimme samalla sivulla, helppo esimerkki. IP-osoite IPv4-muodossa,
esimerkiksi kotireitittimen, ja IPv6-muodossa, joka on vain pidempi ja usein kirjoitettu
heksadesimaalina. Sitten on MAC-osoite eli jokaiselle tietokoneelle uniikki osoite verkossa.
Tavanomaisesti tämä on "poltettu" laitteeseesi. Käynnistyessään tietokoneesi käyttää
MAC-osoitettaan verkon kanssa viestimiseen ja esimerkiksi IP-osoitteen saamiseksi.
Pahoja asioita voi tapahtua tässä kohtaa.
*ARP-väärennös*
Ensimmäinen esimerkki on ARP-väärennös. Kuka on kuullut siitä?
Eli ei mitään mieltä selittää sitä. Luulen, ettei takarivi nostanut käsiään.
Yleensä pidän valkotauluista. Minulla ei ole sellaista täällä, joten tein koneellani
viime yönä muutaman. Toivottavasti pystytte lukemaan ne. Käsialani on huono.
Käytämme ARP-protokollaa selvittämään IP-osoitetta vastaavan MAC-osoitteen.
Kuten tiedätte, kerroin sen juuri, MAC-osoite on "poltettu" laitteeseen ja
IP-osoite, jota tietokone käyttää verkon kanssa viestimiseen, määritetään laitteelle erikseen.
Tarvitsemme tämän osoitteen pakettien lähettämiseksi koneellesi. Paketin täytyy
todennäköisesti matkustaa maailman ympäri saavuttaakseen määränpäänsä. Tämän takia
meillä on kaksi täysin erilaista osoiteavaruutta.
Yksi, joka antaa tietokoneellesi aina käytetyn uniikin osoitteen eli MAC-osoitteen.
Ja toinen, IP-osoite, joka on aina yksilöllinen sijainnillesi.
Nopeimmat tajusivat, ettei IPv4-osoite, jonka näytin aiemmin, ole todellisuudessa
uniikki, mutta yksinkertaistamme asioita.
Paikallisverkossa reitittimesi on välitettävä paketit tietokoneellesi. Voidakseen tehdä
sen, tietokoneen MAC-osoitteeseen kytketyn IP-osoitteen, johon paketti lähetettiin, on
oltava reitittimen tiedossa.
Tässä tapauksessa asiakasohjelma kysyy reitittimen IP-osoitetta. Se lähettää
broadcast-viestin verkolle ARP-taulukon kautta kysyen "Kenellä on IP-osoite?"
Reititin vastaa IP-osoitteen olevan sen MAC-osoitteessa.
Jos katsotte tarkkaan, reititin lähettää paketin sanoen IP-osoitteen olevan tässä
MAC-osoitteessa. Pysyttekö mukana?
Jos joku yrittää varastaa liikennettänne, nämä voivat lähettää vastauksen sanoen
"Joku kysyi reitittimen MAC-osoitetta", ja MAC-osoite on heidän osoitteensa. He
lähettävät oman väärennetyn MAC-osoitteensa verkolle, jolloin asiakasohjelma oppii
osoitteen ja lähettää paketit hyökkääjälle. Katsomme tätä hyökkääjän näkökulmasta.
Asiakasohjelman ongelma on, että se näkee vain tavanomaisen datavirran. Asiakasohjelma
lähettää datan hyökkääjälle, joka välittää liikenteen reitittimelle ja takaisin. Näin
ollen, hyökkääjä voi tarkkailla verkossa tapahtuvaa liikennettä.
Luonnollisesti, jos saat kaapattua paketin, pystyt muokkaamaan sitä. Tämä on hyvin
perinteinen verkkohyökkäys. Kun tiedätte, miten se toimii, pystytte toivottavasti
myös estämään sen. Tämän päivän verkkokytkimissä on turvaominaisuuksia,
mutta teidän on oltava tietoisia, että kaikissa verkoissa näin ei aina ole. Jokainen
kohtaamanne verkko on luultavasti haavoittuvainen tämän kaltaiselle hyökkäykselle.
*DNS-kaappaus*
Seuraavaksi DNS-kaappaus.
Tämä hyökkäys tapahtuu toisella verkon kerroksella perustuen DNSään.
DNS yhdistää isäntänimen (hostname) IP-osoitteeseen, joten meillä on tässä
uusi kerros. Ei IP:stä MAC-osoitteeseen vaan isäntänimestä IP-osoitteeseen.
Tämä mahdollistaa samankaltaisen hyökkäyksen, muttei vain paikallisverkossa
vaan myös jokaiselle isäntänimelle internetissä.
Yritämme päästä käsiksi DNS-serverin IP-osoitteeseen. Tavallisesti asiakasohjelma
kysyy osoitetta DNS-serveriltä, johon se yrittää yhdistää. Tässä tapauksessa
IPv4-osoitteeseen, jonka DNS-palvelin palauttaa.
Asiakasohjelma yhdistää serveriin ja saa vastauksen takaisin. Päivänselvästi,
jos saamme haltuumme DNS-serverin osoitteen, voimme tehdä kuten viimeksi.
Emme voi lähettää MAC-osoitettamme, koska emme ole samassa lähiverkossa, mutta
voimme lähettää oman IP-osoitteemme, johon asiakasohjelma ottaa yhteyttä.
Mikä tahansa isäntänimi internetissä.
Sitten asiakasohjelma lähettää, vastaamme omalla IP-osoitteellamme, liikennettä
meidän kauttamme. Välitämme liikenteen serverille ja näemme, jokaisen kyselyn.
Emme näe serveriltä asiakasohjelmalle menevää liikennettä. Se vaatisi palvelimen
haltuun ottamista.
Muistakaa, ettei liikenteen sisältö ole välttämättä hyökkääjää kiinnostavaa.
He haluavat tietää, mitä osoitteita pyydät. Monet yksityisyysongelmat juontuvat
pakettien metadatasta. Tosin tässä tapauksessa muu data on kiinnostavampaa.
Eli mitä isäntänimeä pyydät.
Voitte kuvitella joidenkin isäntänimien olevan pahempia paljastaa kuin toiset.
*Valvomaton/villi yhteyspiste*
Siinä oli esimerkit tavanomaisista verkoista.
Saamme myös paljon kyselyitä yhteyspisteistä.
Ne ovat monimutkaisempi kuvio.
Kun yhdistämme tietokoneen kytkimeen, otamme kaapelin ja yhdistämme sen kytkimeen.
Tietokone on kytketty siihen kytkimeen. Langaton järjestelmä toimii hyvin samalla
tavalla. Insinöörit kehittivät wifin toimimaan langattomana ethernettinä.
Eli se toimii aivan kuten yhdistäisin tietokoneeni kytkimeen, mutta kytkimen
sijaan se on yhdistetty yhteyspisteeseen.
Tietokoneeni valitsee automaattisesti yhteyspisteen, johon muodostaa yhteys.
Ikään kuin minulla olisi avustaja, joka yhdistäisi johdon kytkimestä toiseen
liikkuessani, jottei minun tarvitse välittää asiasta, kunhan yhteys pysyy päällä.
Kun ajattelemme asiaa näin, voimme nähdä ongelmia.
Mitä meidän on tiedettävä ensin on, että verkko tunnistetaan SSID:llä.
Eli tiedän, mihin kytkinten ryhmään haluan yhdistää. Konferenssin verkko on
nimeltään 35C3 Network" ja olette todennäköisesti valinneet jonkin siistin
nimen kotiverkollenne.
Kotiverkossanne on yksi yhteyspiste ja täällä meillä on satoja. Tietokoneenne
vaihtaa yhteyspistettä jatkuvasti. Estääksemme naapureitasi liittymästä
verkkoosi, käytämme salausprotokollia.
Aiemmin oli WEP, joka on suoraan sanottuna rikki ja vanhentunut. Tänä
päivänä meillä on WPA-protokolla, joka hyödyntää ennakkoon jaettua avainta,
wifi-salasanaa. Tavanomaisesti menet naapurisi tai kaverisi luokse tai kahvilaan
ja pyydät heiltä wifin salasanaa.
Yksi ongelma on, että se vain estää muita tahoja käyttämästä verkkoasi. Jokainen,
jolla on hallussa ennakkoon jaettu avain, pystyy yhdistämään verkkoosi ja mahdollisesti
purkamaan liikenteen salauksen.
Toinen ongelma on, että voin asettaa toisen yhteyspisteen, jolla on sama SSID,
kuin olemassa olevalla verkolla. Se ei ole kuitenkaan virallinen yhteyspiste.
Mitä tapahtuu seuraavaksi on, että käyttäjä yhdistää yhteyspisteeseeni, esimerkiksi
koska yhteys on vahvempi. Hyökkääjä voi siirtää pistettä lähemmäksi kohdetta ja
lähettää saman SSID:n kuin oikea yhteyspiste. Käyttäjä ottaa yhteyden väärään yhteyspisteeseen
ja lähettää liikennettä sen kautta. Ja totta kai myös vastaanottaa.
Voisit tehdä sen tässä verkossa. Pyydämme painokkaasti, ettet tee niin.
Yksi syy, miksi emme halua liian monia yhteyspisteitä ja kanavia tänne.
Toinen on, ettei sinun pitäisi hyökätä toisten ihmisten tietokoneisiin.
Selitän miten tämä toimii, jotta voitte estää sen. Onko selvä?
Tässä kongressissa meillä on käytössä yrityskäyttöön tarkoitettu järjestelmä,
joka käyttää ylimääräistä salauskerrosta estämässä teitä tekemästä niin.
Yhteyspiste tarvitsee sertifikaatin todistaakseen, että se on virallinen yhteyspiste.
Mitä tapahtuu seuraavaksi on, että tietokoneesi tarkastaa salaustekniikan
avulla, että yhteyspiste on oikea. Kun kytket Android-sovelluksesi langattomaan
verkkoon täällä, vain virallisella yhteyspisteellä on sovelluksessa
oleva sertifikaatti. Tietokoneesi eli tässä tapauksessa älypuhelimesi,
varmistaa automaattisesti yhteyspisteen aitouden.
Kannettavallasi sinun on tehtävä tämä käsin.
Kokeilkaa sitä. Menkää Wikiin. Sieltä löytyy tiedot yhteyden konfiguroimiseksi.
Hieman kättelyprotokollaa, hieman salaustunnelointia.
Domain nimi, sertifikaatin tunniste. Ja voit sanoa,
"varmista sertifikaatin olevan virallinen."
Vasta sitten tämä hyökkäys ei toimi enää. Kotonasi sinulla ei todennäköisesti ole
yritystason autentikaatiojärjestelmiä, joka tarvitsee serverin ja joka
pitää konfiguroida. Tavallisesti kotiverkoilla ei ole näitä.
Tulevaisuudessa WPA3 tuo vastaavanlaisen suojan.
*Yhteenveto*
Mitä on tehtävissä?
Suositukseni sinulle.
Varmista, että sinulla on perustiedot protokollista ja standardeista.
Tutki netissä RFC:eitä, Request For Comments, protokolladokumentteja, jotka kertovat,
miten ne oikeasti toimivat. Kun luet ne huolella, opit samalla,
mikä kaikki voi mennä vikaan.
Internetistä löytyy runsaasti esitelmääni selkeämpiä selostuksia näistä ja monista
muista asioista. Nämä antavat laajemman käsityksen siitä, miten asiat toimivat.
Tämä antaa myös näkemystä itsesi suojelemiseen.
Jos haluat tehdä vain sen, käytä HTTPS:ää, joka on turvallinen protokolla sovellukselle.
Eli asiakasohjelma varmistaa, että se on yhteydessä oikeaan palvelimeen ja salaa liikenteen.
Suurin osa liikenteestäsi ei ole havaittavissa, vaikka nämä hyökkäykset olisivatkin käynnissä,
mikä on tärkeää.
Salattu HTTPS-liikenne on onneksi lisääntynyt kiitos Let's Encrypt
organisaation ja olemme kiitollisia siitä
Halutessasi voit kokeilla oman yritystason WPA-autentikointijärjestelmän luomista.
Käytännönläheisempi asia kannettavallasi kongressin verkossa on tarkastella
liikennettä sudo tcpdump -komennolla ja näet pakettien virtavaan sisään ja ulos
kannettavastasi.
Voit tarkistaa pakettien käyttämän reitin traceroute ohjelmistolla tai
kehittyneemmällä mtr:llä.
Voit oppia paljon käyttämällä Scapyn kaltaista ohjelmaa.
Suosittelen. Se on yksinkertainen python komentotulkki, jonka avulla voit väärentää
paketteja. Voit luoda paketin, jolla on tietty lähtöosoite ja määränpää ja näyttää
tietynlaiselta.
Kunnioittakaa muita. Olkaa mainioita toisillenne.
Käyttäkää näitä työkaluja oppiaksenne kuinka liikenne järjestelmienne välillä
tai mahdollisesti ystävänne järjestelmään toimii.
Kokeile yhdessä muiden paikallaolijoiden kanssa.
Toivottavasti sain herätettyä mielenkiintonne.
Aikani on lopussa eikä meillä valitettavasti ole aikaa kyselyosiolle.
Kiitos.
*35c3 loppumusiikki*
[Translated by Sampsa Suvivuo (KYBS2001EN23K2 course assignment at JYU.FI)]