-
Translated by Mikko Heikkinen (ITKST56 course assignment at JYU.FI)
-
[Musiikkia]
-
OK. Seuraavaksi puhuu Timo Longin,
-
joka tunnetaan myös nimellä Timo Login.
-
Hän tietoturvakonsultti ja tutkija. Hän tulee puhumaan uudesta tekniikasta
-
nimeltään SMTP Smuggling,
-
jolla voidaan väärentää sähköposteja
-
ja hyväksikäyttää eräitä eniten käytettyjä palveluita internetissä.
-
Kiitos. Annetaan Timolle applodit.
-
[Applodeja]
-
Kiitos esittelystä.
-
Ensinnäkin, pulskat pahoittelut omasta ja SEC Consult:n puolesta
-
tämän katastrofaalisen haavoittuvuuden julkaisemisesta.
-
Erityisesti pahoittelut Wietselle ja Viktorille korjausten jälkikorjauksesta
-
sekä kaikille järjestelmävalvojille ympäri maailman,
-
jotka ovat joutuneet asentamaan korjauksia joululoman aikana.
-
Ja lisäksi, joka tapauksessa,
-
suuret kiitokset Wietselle ja Viktorille
-
heidän sitoutumisestaan.
-
Ja lisäksi suuret kiitokset yhteisölle
-
tämän ongelman viemisestä julkaisujärjestelmiin ja niin edelleen.
-
Ja kaikille... Okei...
-
[Applodeja]
-
Ja kaikille niille,
-
joilla ei ole mitään hajua tästä.
-
Joten minäpä autan teidät samalle sivulle.
-
Noin vuosi sitten olin juuri
-
lopettanut tutkimukseni DNS:n parissa.
-
ja etsin uutta tutkimuskohdetta,
-
kun löysin todennäköisesti helpoimman
-
tavan hakkeroida yrityksen
-
ja kaikki tämä vain yhdellä
-
yksinkertaisella Google-haulla.
-
[Yleisön naurua]
-
Ja tämä saattaa kuulostaa tyhmälle,
-
mutta tämä johdatti minut suuntaan,
-
jonka jo tiesin, mutta en ollut ymmärtänyt.
-
Ja se on, että tietojen kalastelu on edelleen
-
numero 1 ensipääsyvektori yritykseen
-
ja sitten minulla välähti:
-
Miksen tutkisi SMTP:tä,
-
simple mail transfer protocol:aa
-
jota käytetään miljardien sähköpostien
-
lähettämiseen joka päivä ympäri maailman
-
kuten on tehty viimeisen 40 vuoden ajan.
-
Joten matkani eteni DNS:stä SMTP:hen
-
ja tänään esittelen uuden
-
SMTP Smuggling -tekniikan
-
sähköpostien väärentämiseksi.
-
Kuka olenkaan? OIen Timo Longin
-
ja työskentelen tietoturvakonsulttina
-
SEC Consult -yhtiössä ja
-
päivisin teen penetraatiotestausta
-
ja öisin teen haavoittuvuustutkimusta.
-
Ja viimeisen kolmen vuoden aikana olen
-
tutkinut paljon DNS-haavoittuvuuksia.
-
Ja olen julkaissut paljon blogikirjoituksia ja työkaluja.
-
Ja minun täytyi siirtyä eteenpäin.
-
Edellisen kerran, kun joku SEC Consult:sta puhui CCC:ssä...
-
se oli... dildoista.
-
[Yleisön naurua]
-
Ja tiedän, että joudun tuottamaan osalle
-
teistä pettymyksen,
-
mutta tämä esitys ei kerro
-
ihmiseen penetroitumisesta.
-
Not Synced
Esitys kertoo tunkeutumisesta SMTP-protokollan muurien läpi.
-
Not Synced
Joten nähdäksemme miten tämä toimii
-
Not Synced
on meidän ensin ymmärrettävä
-
Not Synced
miten sähköpostien lähetys yleensäkin toimii.
-
Not Synced
Joten tässä meillä on melko yksinkertainen sähköposti-infrastuktuuri.
-
Not Synced
Meillä on sähköpostikäyttäjäagentti,
-
Not Synced
kuten Thunderbird, ja Thunderbird haluaa lähettää sähköpostin
-
Not Synced
esimerkiksi käyttäjänä user@outlook.com.
-
Not Synced
Joten jos haluamme lähettää sähköpostin tällä tavalla
-
Not Synced
meidän täytyy ensin tunnistautua
-
Not Synced
Outlook mail transfer agentille tai
-
Not Synced
ulospäin menevälle SMTP palvelimelle.
-
Not Synced
Ja kun olemme tunnistautuneet,
-
Not Synced
voimme lähettää sähköpostin käyttäjänä user@outlook.com.
-
Not Synced
Ja vain käyttäjänä user@outlook.com.
-
Not Synced
Tämän jälkeen viesti siirretään vastaanottajan
-
Not Synced
SMTP-palvelimelle ja tämä palvelin
-
Not Synced
tarkistaa viestin aitouden.
-
Not Synced
Ja kaikkein yleisen tapa tehdä tämä on SPF.
-
Not Synced
Vastaanottava SMTP-palvelin saa SPF-tietueen
-
Not Synced
DNS-palvelun kautta outlook.com osoitteelle.
-
Not Synced
Ja tarkistaa sen jälkeen, että tämä IP-osoite
-
Not Synced
ja IP-alue on sallittu lähettää sähköpostiviestejä
-
Not Synced
outlook.com osoitteelle.
-
Not Synced
Tässä tapauksessa todellinen Outlook SMTP-palvelin
-
Not Synced
tai ulospäin lähtevä SMTP-palvelin lähetti viestin,
-
Not Synced
vastaanottava SMTP-palvelin
-
Not Synced
hyväksyy viestin.
-
Not Synced
Ja nyt luonnollisesti tässä on erittäin
-
Not Synced
mielenkiintoinen kysymys.
-
Not Synced
Ja kysymys on: onko hyökkääjän mahdollista
-
Not Synced
lähettää sähköpostiviesti
-
Not Synced
esimerkiksi osoitteesta admin@outlook.com tai
-
Not Synced
väärennetystä sähköpostiosoitteesta?
-
Not Synced
Tätä me selvitämme tänään
-
Not Synced
ja se on enemmän tai vähemmän
-
Not Synced
tämän tutkimuksen tavoitteista.
-
Not Synced
En tiedä oletteko huomanneet,
-
Not Synced
mutta näiden palvelimien värit
-
Not Synced
muistuttavat minusta Paavo Pesusieneä
-
Not Synced
ja Patrik Tähtöstä.
-
Not Synced
Ja sen vuoksi kutsumme niitä niiksi.
-
Not Synced
Tutkimuksen yleinen tavoite ja
-
Not Synced
tutkimuksen peruste oli löytää
-
Not Synced
tapa väärentää sähköposteja.
-
Not Synced
Ja ajattelin, että miksi en ottaisi haavoittuvuuksia
-
Not Synced
muista tekstipohjaisista protokollista,
-
Not Synced
kuten HTTP:stä, ja soveltaisi niitä SMTP:hen.
-
Not Synced
Ja oli yksi HTTP haavoittuvuus, joka sopi kuvaan
-
Not Synced
ja se oli HTTP-pyynnön käpelöinti.
-
Not Synced
Tässä meillä on taas Paavo ja Patrik,
-
Not Synced
mutta tällä kertaa HTTP-maailmassa.
-
Not Synced
Joten, mitä tässä tapahuu? Paavo Pesusieni saa
POST-tyyppisen pyynnön internetin yli
-
Not Synced
Mielenkiintoista tässä pyynnössä on se,
että siinä on kaksi otsikkoa
-
Not Synced
kuinka käsitellä POST-pyynnön data.
-
Not Synced
Siinä on Content-Length -otsikko, jonka arvona
43 tavua.
-
Not Synced
Ja siinä on myös Transfer-Encoding -otsikko.
-
Not Synced
Nyt Paavo Pesusienen täytyy päättää,
miten käsittelen pyynnön ja Paavo päättää
-
Not Synced
käyttää Content-Length otsikkoa, koska se on
43 tavua.
-
Not Synced
Joten kaikki punaisella kehystetty data
on välitetty Patrikille.
-
Not Synced
Patrikilla ei ole mitään hajua mitä tehdä - pitäisikö
minun tulkita Content-Lenth otsikkoa vai
-
Not Synced
Transfer-Encoding -otsikko? Patrik päättää
tulkita Transfer-Encoding otsikkoa ja
-
Not Synced
nyt meillä on eriävät tulkinnat:
-
Not Synced
Paavo Pesusieni käyttää Content-Length -otsikkoa
ja Patrik Tähtönen käyttää Transfer-Encoding -otsikkoa.
-
Not Synced
Ja koska Transfer-Encoding on määritetty "chunked" ("paloiteltu") ja
ja ensimmäinen pala on 0,
-
Not Synced
on loput Paavo Pesusienen lähettämästä datasta
tulkittu toiseksi pyynnöksi.
-
Not Synced
Itse asiassa tämä tarkoittaa, että Paavo näkee
yhden pyynnön ja Patrik kaksi pyyntöä.
-
Not Synced
Ja toinen pyyntö voidaan kohdistaa mielivaltaiseen
resurssipolkuun, kuten "Admin",
-
Not Synced
joka tässä esimerkissä on avoin vain sisäisesti
palvelimella.
-
Not Synced
Joka on tietenkin ongelma.
-
Not Synced
Joten ajattelin, että miksi en ottaisi
näitä tulkintaeroja
-
Not Synced
ja laittaisi niitä SMTP:hen.
-
Not Synced
Ymmärtääksemme... tai ainakin päästäksemme
lähemmäs ymmärrystä miten tämä toimii,
-
Not Synced
täytyy meidän katsoa ensin itse SMTP
protokollaa.
-
Not Synced
Joten, SMTP näyttää kuta kuinkin tältä.
-
Not Synced
Meillä on kaksi komponenttia: SMTP komennot
punaisella ja sinisellä viestin data.
-
Not Synced
Lähettääksemme viestin, meidän tulee ensin
lähettää SMTP komennot:
-
Not Synced
Meidän pitää esitellä itsemme, kertoa lähettäjän
osoite, yksi tai useampi vastaanottajan osoite ja
-
Not Synced
sitten lähetämme "data" komennon
kertoaksemme vastaanottavalle SMTP-palvelimelle
-
Not Synced
että olemme nyt vastaanottamassa varsinaista
viestin dataa.
-
Not Synced
Ja sitten lähetämme viestin datan: määrittelemme
lähettäjän osoitteen uudelleen, vastaanottajan osoitteen
ja viestin aiheen.
-
Not Synced
Ja sitten tulee viestin leipäteksti.
-
Not Synced
Ja kun jossain vaiheessa haluamme
lopettaa viestin datan lähettämisen,
-
Not Synced
meidän tulee lähettää jotain. jota kutsumme
datan lopetussekvensiksi.
-
Not Synced
Se on "<paluu rivin alkuun><rivinvaihto> piste <paluu rivin alkuun><rivinvaihto>"
[kääntäjän kommentti: jatkossa .]
-
Not Synced
Tässä vaiheessa ajattelin, että ehkä voisimme
hämätä tällä jotenkin SMTP-palvelinten toteutuksia.
-
Not Synced
Ajatus oli siis, että meillä on jälleen Paavo Pesusieni
ja lähetämme sähköpostin Paavo Pesusienelle [SIC].
-
Not Synced
Ja tämä sähköposti sisältää jotain
todella outoa, jotain joka näyttää
-
Not Synced
lopetussekvensille, mutta se ei ole sitä.
-
Not Synced
Koska se ei ole yhdenmukainen RFC:n kanssa, joku
voisi virheellisesti tulkita sen datan lopetussekvensiksi.
-
Not Synced
Joten Paavo Pesusieni katsoo tätä ja ajattelee
ettei tämä ole RFC:stä, en tulkitse tätä
"end-of-data" sekvensiksi
-
Not Synced
Ja seuraavaksi... tai viestin data siihen saakka,
kunnes varsinainen datan lopetussekvenssi tulee.
-
Not Synced
Sitten Paavo Pesusieni lähettää viestin Patrikille
-
Not Synced
Ja Patrik on "Jeah, en välitä mistään RFC:stä ja
ja tulkitsen väärän datan lopetussekvenssi
-
Not Synced
varsinaiseksi datan lopetusmerkiksi."
-
Not Synced
Ja ongelmaksi tässä tulee, että kaikki väärin
tulkitun lopetussekvenssin tulkitaan SMPT-komennoiksi
-
Not Synced
Ja nyt hyökkääjänä voimme luoda SMTP-komentoja,
jotka lähettävät toisen sähköpostiviestin.
-
Not Synced
Vaikka Paavo Pesusieni näki yhden ison
sähköpostiviestin, Patrik näkee kaksi pienempää viestiä.
-
Not Synced
Ja ongelma on se, että toinen viesti voi sisältää
mielivaltaisia SMTP-komentoja.
-
Not Synced
Kuten, että viesti tulee osoitteesta admin@outlook.com
tai mitä tahansa.
-
Not Synced
Näin ainakin teoriassa.
-
Not Synced
Nähdäkseni toimiiko tämä todella.
-
Not Synced
Tutkin muutamia SMTP-palvelinten
toteutuksia yksinkertaisesti
-
Not Synced
ottamalla niihin yhteyttä telnet:llä tai
netcat:lla.
-
Not Synced
Kun tein tämän, se näytti aluksi RFC:n mukaiselta.
-
Not Synced
Kun lähetät datakomennon, palvelin pyytää
lopettamaan datan lähettämisen . merkeillä.
-
Not Synced
Sitten löysin myös palvelimia, jotka sanoivat:
"lähetä minulla rivi, jossa on vain piste"
-
Not Synced
Ja tämä asia riippuu paljon käytettävästä
käyttöjärjestelmästä.
-
Not Synced
Windows:ssa tämä voi olla <CR><LF>.<CR><LF>
ja se voi olla .
-
Not Synced
Siinä kohtaa ajattelin, että tässä voisi
olla jotain.
-
Not Synced
Ja kokeilin jotain.
-
Not Synced
Ensimmäiseksi kokeilin työntää <CR>-, <LF>- ja piste-
merkkejä Paavo Pesusienen kautta.
-
Not Synced
Joten kirjoitin SMTP analyysisovelluksen, joka
lähettää virheellisiä data lopetussekvenssejä,
-
Not Synced
kuten <LF>.<LF> Ja lähetin viestejä eri SMTP-
ohjelmistoilla,
-
Not Synced
sisältäen sähköpostipalveluita Gmail, Outlook, GMX
-
Not Synced
ja lisäksi sähköpostiohjelmistoja kuten Postfix,
Exim, Microsoft Exchange Server ja niin edelleen.
-
Not Synced
Vastaanottavalla puolella tutkin, että mitkä
vääristä sekvensseistä menee itse asiassa läpi.
-
Not Synced
Voinko lähettää komennon <LF>.<LF> lähtevän palvelimen
kautta?
-
Not Synced
Ja useimmissa tapauksissa se ei toiminut.
-
Not Synced
<LF>.<LF> on usein suodatettu tai poistettu
alkuperäisestä viestistä.
-
Not Synced
Mutta jossain tapauksissa se menee läpi muuttumattomana.
-
Not Synced
Tämä oli tilanne GMX:n kohdalla. Lähetin sähköpostin
GMX:stä analyysipalvelimelleni
-
Not Synced
ja <LF>.<CR><LF> merkkejä ei poistettu.
-
Not Synced
Seuraavaksi tein proof-of-concept:n, jossa on
väärennetty datan lopetussekvenssi
-
Not Synced
ja sen jälkeen toinen sähköpostiviesti.
-
Not Synced
Jos tämä proof-of-concept toimii,
-
Not Synced
meidän pitäisi saada kaksi viestiä
vastaanottajan puolella.
-
Not Synced
Lähetin tämän kaiken Gmailiin.
-
Not Synced
Ja Gmail oli sitä mieltä,
että "tämä ei ei ole datan lopetussekvenssi".
-
Not Synced
Ja sen näkee siitä, että datan lopetussekvenssin
jälkeen kaikki on edelleen tulkittu viestin dataksi.
-
Not Synced
Mutta joissain tapauksissä tämä itse asiassa toimi.
-
Not Synced
Tämä oli ensimmäinen onnistunut
SMTP Smuggling tapaus, GMX:stä Fastmail:iin.
-
Not Synced
Me näemme, että se toimii. Meillä on ensin
viesti käyttäjältä user@gmx.net
-
Not Synced
ja toinen viesti käyttäjältä admin@gmx.net,
-
Not Synced
jotka läpäisevät SPF ja DMARC tarkistukset,
koska ne tulevat GMX:n palvelimelta.
-
Not Synced
[Applodeja]
-
Not Synced
Minä olin, että "tämä on aivan sairasta!"
-
Not Synced
Ajattelin, että meillä on tämä toinen viesti
ja siinä voi olla mitä tahansa.
-
Not Synced
Kuten lähettäjän osoite voi olla mitä vaan.
-
Not Synced
Joten miksi en kokeilisi muita domaineja,
jotka osoittavat GMX:n palvelimeen?
-
Not Synced
Sitten analysoin SPF tietueen ja tajusin...
-
Not Synced
Tässä on GMX:n SPF-tietue, mutta se on hyvin
samankaltainen web.de:n tietueen, joka puolestaan
-
Not Synced
on hyvin samankaltainen Ionoksen tietueen kanssa.
-
Not Synced
Ja jeah, tilanne on nyt se, että tällä me voimme
väärentää 1.35 miljoonaa domainia.
-
Not Synced
Jos ette tiedä mikä Ionos on, niin se on superiso
hosting- ja sähköpostipalveluiden tarjoaja.
-
Not Synced
Ja heillä on nämä 1.35 miljoonaa domainia
kytketty tähän.
-
Not Synced
Joten, minun täytyi tietenkin kokeilla tätä.
-
Not Synced
Tässä on sähköposti osoitteesta admin@web.de
-
Not Synced
Nyt kysymys on tietysti, että toimiiko
tämä kaikkialla?
-
Not Synced
Kuten sanoin, niin tämä palvelimilla,
jotka tulkitsevat lopetussekvenssit
-
Not Synced
tavalla, joka ei ole RFC:n mukainen,
kuten .
-
Not Synced
Voimme siis väärentää 1.35 miljoonaa domainia.
-
Not Synced
Joten pohjimmiltaan meillä on 1.4 miljoonaa Postifix instansia
ja 150 tuhatta Sendmail instanssia.
-
Not Synced
Ja tämä toimii, koska ne tulkitsevat...
-
Not Synced
[puhuja sekoilee sanoissaan]
-
Not Synced
Ne tulkitsevat <LF>.<CR><LF>, sekoilen itsekin sanoissani,
lopetussekvensiksi.
-
Not Synced
Ja olin, että OK, tämä on aika vakavaa.
-
Not Synced
Mutta tässä on muutakin.
-
Not Synced
Katsoin outlook.comia myös ja Outlook
palautti todella oudon virheilmoituksen
-
Not Synced
koska siinä on, että pelkät rivinvaihdot
eivät ole sallittuja.
-
Not Synced
Olin siinä kohtaa, että pahus, ne tietää
mitä olen tekemässä.
-
Not Synced
[Yleisöän naurua]
-
Not Synced
Siksi analysoin sen tarkemmin, ette pysty
minua tuolla pelottelemaan.
-
Not Synced
Joten löysin, että <LF>.<CR><LF>
on mahdollinen täällä.
-
Not Synced
[Yleisön applodeja]
-
Not Synced
Jeah, pidetään vähän hauskaa.
-
Not Synced
Tässä kohtaa en ollut varma, että
olenko tulossa hulluksi
-
Not Synced
vai toimiiko tämä todella.
-
Not Synced
Joten tarvitsin jonkinlaisen tarkistuksen.
-
Not Synced
Ja niinpä lähetin sähköpostin
osoitteesta admin@outlook.com
-
Not Synced
yhdelle kollegoistani. Idea oli siinä,
että jos he reagoivat tähän,
-
Not Synced
se toimii, muutoin olen tullut hulluksi.