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. Esitys kertoo tunkeutumisesta SMTP-protokollan muurien läpi. Joten nähdäksemme miten tämä toimii on meidän ensin ymmärrettävä miten sähköpostien lähetys yleensäkin toimii. Joten tässä meillä on melko yksinkertainen sähköposti-infrastuktuuri. Meillä on sähköpostikäyttäjäagentti, kuten Thunderbird, ja Thunderbird haluaa lähettää sähköpostin esimerkiksi käyttäjänä user@outlook.com. Joten jos haluamme lähettää sähköpostin tällä tavalla meidän täytyy ensin tunnistautua Outlook mail transfer agentille tai ulospäin menevälle SMTP palvelimelle. Ja kun olemme tunnistautuneet, voimme lähettää sähköpostin käyttäjänä user@outlook.com. Ja vain käyttäjänä user@outlook.com. Tämän jälkeen viesti siirretään vastaanottajan SMTP-palvelimelle ja tämä palvelin tarkistaa viestin aitouden. Ja kaikkein yleisen tapa tehdä tämä on SPF. Vastaanottava SMTP-palvelin saa SPF-tietueen DNS-palvelun kautta outlook.com osoitteelle. Ja tarkistaa sen jälkeen, että tämä IP-osoite ja IP-alue on sallittu lähettää sähköpostiviestejä outlook.com osoitteelle. Tässä tapauksessa todellinen Outlook SMTP-palvelin tai ulospäin lähtevä SMTP-palvelin lähetti viestin, vastaanottava SMTP-palvelin hyväksyy viestin. Ja nyt luonnollisesti tässä on erittäin mielenkiintoinen kysymys. Ja kysymys on: onko hyökkääjän mahdollista lähettää sähköpostiviesti esimerkiksi osoitteesta admin@outlook.com tai väärennetystä sähköpostiosoitteesta? Tätä me selvitämme tänään ja se on enemmän tai vähemmän tämän tutkimuksen tavoitteista. En tiedä oletteko huomanneet, mutta näiden palvelimien värit muistuttavat minusta Paavo Pesusieneä ja Patrik Tähtöstä. Ja sen vuoksi kutsumme niitä niiksi. Tutkimuksen yleinen tavoite ja tutkimuksen peruste oli löytää tapa väärentää sähköposteja. Ja ajattelin, että miksi en ottaisi haavoittuvuuksia muista tekstipohjaisista protokollista, kuten HTTP:stä, ja soveltaisi niitä SMTP:hen. Ja oli yksi HTTP haavoittuvuus, joka sopi kuvaan ja se oli HTTP-pyynnön käpelöinti. Tässä meillä on taas Paavo ja Patrik, mutta tällä kertaa HTTP-maailmassa. Joten, mitä tässä tapahuu? Paavo Pesusieni saa POST-tyyppisen pyynnön internetin yli Mielenkiintoista tässä pyynnössä on se, että siinä on kaksi otsikkoa kuinka käsitellä POST-pyynnön data. Siinä on Content-Length -otsikko, jonka arvona 43 tavua. Ja siinä on myös Transfer-Encoding -otsikko. Nyt Paavo Pesusienen täytyy päättää, miten käsittelen pyynnön ja Paavo päättää käyttää Content-Length otsikkoa, koska se on 43 tavua. Joten kaikki punaisella kehystetty data on välitetty Patrikille. Patrikilla ei ole mitään hajua mitä tehdä - pitäisikö minun tulkita Content-Lenth otsikkoa vai Transfer-Encoding -otsikko? Patrik päättää tulkita Transfer-Encoding otsikkoa ja nyt meillä on eriävät tulkinnat: Paavo Pesusieni käyttää Content-Length -otsikkoa ja Patrik Tähtönen käyttää Transfer-Encoding -otsikkoa. Ja koska Transfer-Encoding on määritetty "chunked" ("paloiteltu") ja ja ensimmäinen pala on 0, on loput Paavo Pesusienen lähettämästä datasta tulkittu toiseksi pyynnöksi. Itse asiassa tämä tarkoittaa, että Paavo näkee yhden pyynnön ja Patrik kaksi pyyntöä. Ja toinen pyyntö voidaan kohdistaa mielivaltaiseen resurssipolkuun, kuten "Admin", joka tässä esimerkissä on avoin vain sisäisesti palvelimella. Joka on tietenkin ongelma. Joten ajattelin, että miksi en ottaisi näitä tulkintaeroja ja laittaisi niitä SMTP:hen. Ymmärtääksemme... tai ainakin päästäksemme lähemmäs ymmärrystä miten tämä toimii, täytyy meidän katsoa ensin itse SMTP protokollaa. Joten, SMTP näyttää kuta kuinkin tältä. Meillä on kaksi komponenttia: SMTP komennot punaisella ja sinisellä viestin data. Lähettääksemme viestin, meidän tulee ensin lähettää SMTP komennot: Meidän pitää esitellä itsemme, kertoa lähettäjän osoite, yksi tai useampi vastaanottajan osoite ja sitten lähetämme "data" komennon kertoaksemme vastaanottavalle SMTP-palvelimelle että olemme nyt vastaanottamassa varsinaista viestin dataa. Ja sitten lähetämme viestin datan: määrittelemme lähettäjän osoitteen uudelleen, vastaanottajan osoitteen ja viestin aiheen. Ja sitten tulee viestin leipäteksti. Ja kun jossain vaiheessa haluamme lopettaa viestin datan lähettämisen, meidän tulee lähettää jotain. jota kutsumme datan lopetussekvensiksi. Se on "<paluu rivin alkuun><rivinvaihto> piste <paluu rivin alkuun><rivinvaihto>" [kääntäjän kommentti: jatkossa .] Tässä vaiheessa ajattelin, että ehkä voisimme hämätä tällä jotenkin SMTP-palvelinten toteutuksia. Ajatus oli siis, että meillä on jälleen Paavo Pesusieni ja lähetämme sähköpostin Paavo Pesusienelle [SIC]. Ja tämä sähköposti sisältää jotain todella outoa, jotain joka näyttää lopetussekvensille, mutta se ei ole sitä. Koska se ei ole yhdenmukainen RFC:n kanssa, joku voisi virheellisesti tulkita sen datan lopetussekvensiksi. Joten Paavo Pesusieni katsoo tätä ja ajattelee ettei tämä ole RFC:stä, en tulkitse tätä "end-of-data" sekvensiksi Ja seuraavaksi... tai viestin data siihen saakka, kunnes varsinainen datan lopetussekvenssi tulee. Sitten Paavo Pesusieni lähettää viestin Patrikille Ja Patrik on "Jeah, en välitä mistään RFC:stä ja ja tulkitsen väärän datan lopetussekvenssi varsinaiseksi datan lopetusmerkiksi." Ja ongelmaksi tässä tulee, että kaikki väärin tulkitun lopetussekvenssin tulkitaan SMPT-komennoiksi Ja nyt hyökkääjänä voimme luoda SMTP-komentoja, jotka lähettävät toisen sähköpostiviestin. Vaikka Paavo Pesusieni näki yhden ison sähköpostiviestin, Patrik näkee kaksi pienempää viestiä. Ja ongelma on se, että toinen viesti voi sisältää mielivaltaisia SMTP-komentoja. Kuten, että viesti tulee osoitteesta admin@outlook.com tai mitä tahansa. Näin ainakin teoriassa. Nähdäkseni toimiiko tämä todella. Tutkin muutamia SMTP-palvelinten toteutuksia yksinkertaisesti ottamalla niihin yhteyttä telnet:llä tai netcat:lla. Kun tein tämän, se näytti aluksi RFC:n mukaiselta. Kun lähetät datakomennon, palvelin pyytää lopettamaan datan lähettämisen . merkeillä. Sitten löysin myös palvelimia, jotka sanoivat: "lähetä minulla rivi, jossa on vain piste" Ja tämä asia riippuu paljon käytettävästä käyttöjärjestelmästä. Windows:ssa tämä voi olla <CR><LF>.<CR><LF> ja se voi olla . Siinä kohtaa ajattelin, että tässä voisi olla jotain. Ja kokeilin jotain. Ensimmäiseksi kokeilin työntää <CR>-, <LF>- ja piste- merkkejä Paavo Pesusienen kautta. Joten kirjoitin SMTP analyysisovelluksen, joka lähettää virheellisiä data lopetussekvenssejä, kuten <LF>.<LF> Ja lähetin viestejä eri SMTP- ohjelmistoilla, sisältäen sähköpostipalveluita Gmail, Outlook, GMX ja lisäksi sähköpostiohjelmistoja kuten Postfix, Exim, Microsoft Exchange Server ja niin edelleen. Vastaanottavalla puolella tutkin, että mitkä vääristä sekvensseistä menee itse asiassa läpi. Voinko lähettää komennon <LF>.<LF> lähtevän palvelimen kautta? Ja useimmissa tapauksissa se ei toiminut. <LF>.<LF> on usein suodatettu tai poistettu alkuperäisestä viestistä. Mutta jossain tapauksissa se menee läpi muuttumattomana. Tämä oli tilanne GMX:n kohdalla. Lähetin sähköpostin GMX:stä analyysipalvelimelleni ja <LF>.<CR><LF> merkkejä ei poistettu. Seuraavaksi tein proof-of-concept:n, jossa on väärennetty datan lopetussekvenssi ja sen jälkeen toinen sähköpostiviesti. Jos tämä proof-of-concept toimii, meidän pitäisi saada kaksi viestiä vastaanottajan puolella. Lähetin tämän kaiken Gmailiin. Ja Gmail oli sitä mieltä, että "tämä ei ei ole datan lopetussekvenssi". Ja sen näkee siitä, että datan lopetussekvenssin jälkeen kaikki on edelleen tulkittu viestin dataksi. Mutta joissain tapauksissä tämä itse asiassa toimi. Tämä oli ensimmäinen onnistunut SMTP Smuggling tapaus, GMX:stä Fastmail:iin. Me näemme, että se toimii. Meillä on ensin viesti käyttäjältä user@gmx.net ja toinen viesti käyttäjältä admin@gmx.net, jotka läpäisevät SPF ja DMARC tarkistukset, koska ne tulevat GMX:n palvelimelta. [Applodeja] Minä olin, että "tämä on aivan sairasta!" Ajattelin, että meillä on tämä toinen viesti ja siinä voi olla mitä tahansa. Kuten lähettäjän osoite voi olla mitä vaan. Joten miksi en kokeilisi muita domaineja, jotka osoittavat GMX:n palvelimeen? Sitten analysoin SPF tietueen ja tajusin... Tässä on GMX:n SPF-tietue, mutta se on hyvin samankaltainen web.de:n tietueen, joka puolestaan on hyvin samankaltainen Ionoksen tietueen kanssa. Ja jeah, tilanne on nyt se, että tällä me voimme väärentää 1.35 miljoonaa domainia. Jos ette tiedä mikä Ionos on, niin se on superiso hosting- ja sähköpostipalveluiden tarjoaja. Ja heillä on nämä 1.35 miljoonaa domainia kytketty tähän. Joten, minun täytyi tietenkin kokeilla tätä. Tässä on sähköposti osoitteesta admin@web.de Nyt kysymys on tietysti, että toimiiko tämä kaikkialla? Kuten sanoin, niin tämä palvelimilla, jotka tulkitsevat lopetussekvenssit tavalla, joka ei ole RFC:n mukainen, kuten . Voimme siis väärentää 1.35 miljoonaa domainia. Joten pohjimmiltaan meillä on 1.4 miljoonaa Postifix instansia ja 150 tuhatta Sendmail instanssia. Ja tämä toimii, koska ne tulkitsevat... [puhuja sekoilee sanoissaan] Ne tulkitsevat <LF>.<CR><LF>, sekoilen itsekin sanoissani, lopetussekvensiksi. Ja olin, että OK, tämä on aika vakavaa. Mutta tässä on muutakin. Katsoin outlook.comia myös ja Outlook palautti todella oudon virheilmoituksen koska siinä on, että pelkät rivinvaihdot eivät ole sallittuja. Olin siinä kohtaa, että pahus, ne tietää mitä olen tekemässä. [Yleisöän naurua] Siksi analysoin sen tarkemmin, ette pysty minua tuolla pelottelemaan. Joten löysin, että <LF>.<CR><LF> on mahdollinen täällä. [Yleisön applodeja] Jeah, pidetään vähän hauskaa. Tässä kohtaa en ollut varma, että olenko tulossa hulluksi vai toimiiko tämä todella. Joten tarvitsin jonkinlaisen tarkistuksen. Ja niinpä lähetin sähköpostin osoitteesta admin@outlook.com yhdelle kollegoistani. Idea oli siinä, että jos he reagoivat tähän, se toimii, muutoin olen tullut hulluksi. Joten.... [Yleisön naurua] Ja ehkä nyt hieman kansainvälisempi esimerkki, koska tämä on todella itävaltalainen, luulen. Luulen, että ymmärrätte tämän, vaikka ette puhu saksaa. Ja nyt olette, okei, voimme lähettää tekstipohjaisia, väärennettyjä sähköposteja mutta ette pysty huijaamaan tällä ketään Mutta juttu on siinä, että voimme ujuttaa periaatteessa mitä tahansa, HTML mukaan luettuna Tässä lähetin viestin, kalasteluviestin, epätavallisesta kirjautumisesta osoitteesta no-reply@outlook.com todelliselta outlook.com palvelimelta itselleni. Ja se vain meni läpi. Mutta mitä tämä mahdollistaa? Pohdiskelin, että voimme väärentää outlook.comin, mutta mitä muuta voimme tehdä tällä? Katsoin SPF tietuetta ja se oli outo, oudosti tuttu. koska tämä ei ole pelkästään outlook.comin SPF tietue vaan miljoonien muiden domainien SPF tietue. Sen vuoksi, koska tämä Exchange Online palvelun SPF tietue. Outlook.com lähettää sähköpostit Exchange Online infrastruktuurin kautta, joten voimme itse asiassa väärentää ne kaikki.