-
Translated by Robert Ylitalo
(KYBS2001 course assignment at JYU.FI)
-
♪ (38C3 intromusiikki) ♪
-
Korvaamme jo menetettyä aikaa.
-
Tervetuloa kaikki meidän esitykseen:
"Matka menneisyyteen: RCE faksikoneen kautta, koska miksei?"
-
Tämä projekti vaati paljon enemmän työtä kuin osasimme odottaa,
joten toivottavasti olette valmiita hyppäämään kyytiin.
-
Nimeni on Rick de Jaeger ja vieressäni on kollegani Carla Meyer tässä 80-luvun henkisessä kuvassa.
-
Ja ennen kuin menemme liian pitkälle, haluamme aloittaa kiitoksella.
-
Suurin osa tästä työstä on saanut inspiraationsa aiemmasta CCC-esityksestä.
-
Fax-laitteiden hakkeroimisesta, jonka pitivät Eyal Itkin ja Yannif Balmas.
-
He tekivät hienoa työtä, ja se todella laittoi ajatuksen päähämme:
-
jos löydämme kirjan, jonka voi lukea faksin kautta, katsotaan kuinka vaikeaa se olisi ja hauskaa.
-
Eli vaikka uutuuden viehätys ei ollutkaan varsinainen motivaattori, miksi sitten juuri faksikone?
-
No, tämä kaunis faksilaite on ollut yksi Pwn2Own-kilpailun kohteista jo neljän vuoden ajan.
-
Olemme osallistuneet Pwn2Own-kilpailuun jo kolmena niistä vuosista.
-
Pwn2Own on nollapäiväkilpailu, jossa yritys julkaisee kohdelistan, ja kolme kuukautta
etukäteen kilpailijat alkavat etsiä uusia haavoittuvuuksia.
-
Kilpailijat yrittävät löytää uusia nollapäivähaavoittuvuuksia, joilla saa ajettua koodia.
-
Pwn2Ownissa on eri kilpailusarjoja.
-
On työpöytäohjelmistoja kuten selaimet, virtuaalikoneet.
-
On autoihin liittyvä sarja, esimerkiksi autohakkerointi.
-
Ja sitten on IoT-sarja, jossa me kilpailimme, pääasiassa kulutuselektroniikkaa.
-
Syy miksi päätimme tutkia tulostimia oli se, että näimme jotain ZDI-blogissa.
-
Jos hakkeroit reitittimen ja siirryt toiseen laitteeseen,
-
kuten tulostimeen, saat 100K palkinnon.
-
Ajattelimme, että 100K, kuulostaa hyvältä, otetaanpa se kohteeksi.
-
Mutta palkintoraha ei lopu siihen.
-
Se ei ole pelkkä kiinteä 100K.
-
Pwn2Ownissa palkkio pienenee huomattavasti,
-
jos sinulla on sama haavoittuvuus kuin jollain toisella.
-
Ja tulostimilla on suuri hyökkäyspinta-ala.
-
Joten on epätodennäköisempää, että joku muu löytää saman bugin.
-
Voimme siis valita vaikeamman kohteen,
-
kuten muistinkorruptiobugin, vähentääksemme
kilpailua
-
Moni voi tehdä "Command Injection"-bugin, mutta muistinkorruptio on tarkempi ja vaatii enemmän työtä.
-
Joten toiset eivät välttämättä tee samaa.
-
Meillä oli useita tulostimia valittavana, mutta valitsimme sellaisen, joka oli halpa mutta käytti salattua laiteohjelmistoa.
-
Joten sisääntulokynnys oli korkeampi.
-
Ensin piti ostaa laite, purkaa se ja samoin myös itse firmware.
-
Toivoimme, että muut kilpailijat...
-
valitsisivat helpomman kohteen eivätkä tekisi samaa kuin me.
-
Joten tässä on meidän päähenkilömme.
-
Lexmark 331 -sarja.
-
Se on ollut Pwn2Own-kohteena vuodesta 2021.
-
Aloitimme osallistumaan Pwn2Owniin vuonna 2022 ja olemme tehneet exploitin tähän jo kolme kertaa.
-
Se perustuu Yocto Linuxiin.
-
Kyseessä on varsin raskas käyttöjärjestelmä.
-
Siinä pyörii Rust-komponentteja ja Qt-sovelluksia.
-
Se on aika hieno.
-
Ja verrattuna muihin tulostimiin, sanoisin että Lexmark on tehnyt kohtalaista työtä
-
turvallisuuden suhteen.
-
Järjestelmässä on useita käyttäjiä.
-
Kaikki on melko hyvin ajan tasalla.
-
On myös yritetty käyttää sandboxausta systemd-komponenteilla.
-
Kaiken kaikkiaan suoriutuvat melko hyvin.
-
Silti hakkeroimme sen kolme kertaa, joten se ei ole täydellinen.
-
Ja mikä tärkeintä tälle päivälle, tässä laitteessa on faksituki, mitä emme valinneet tarkoituksella, mutta se vain sattui olemaan...
-
Sattumalta huomasimme sen.
-
Joten...
-
Rahan lisäksi, tekisimmekö tätä silti?
-
No, faksien kulta-aika taisi olla vuoteen 1999 asti.
-
Itse olen 25-vuotias, joten tuntuu että jäin fax-aikakaudesta paitsi.
-
En ollut koskaan lähettänyt faksia ennen tätä projektia.
-
Tässä vaiheessa niitä on varmaan satoja takana.
-
Joten miten tätä oikein lähestyisi käytännössä?
-
No niin.
-
Ensimmäinen asia mitä tarvitaan on tietenkin firmware-kuva.
-
Ilman sitä tämä olisi täysin arvailua.
-
Sen jälkeen tarvitaan debuggausmahdollisuus,
-
koska muistinkorruptiobugin hyväksikäyttöön tarvitsee näkymän ohjelman sisäiseen tilaan ja toimintaan.
-
Suunnitelmana on siis saada hyvä debuggauskyvykkyys joko koodin ajolla tai JTAG-debuggerilla.
-
Ja sitten näiden avulla etsitään haavoittuvuus, exploitataan sitä ja kerätään palkinto,
-
niin kuin juuri sanoin.
-
Ja siirretään tämä haavoittuvuus faksin kautta toimivaksi ja pidetään hieno CCC-esitys.
-
Tässä siis ollaan nyt.
-
Hyvä on.
-
Keskitytään nyt siihen, miten saadaan firmware-kuva.
-
Ensimmäinen paikka josta etsiä on tietenkin Lexmarkin verkkosivut.
-
Sieltä voi ihan vain ladata firmware-kuvan.
-
Ja kun sen laittaa binwalkin läpi,
-
sieltä tulee vain sekasotkua, joten mietimme: mitä täällä oikein tapahtuu?
-
Kävi ilmi, että entropia oli aika korkea.
-
Sanoisin, että järjettömän korkea.
-
Tämä on selkeä merkki siitä, että tiedosto on salattu.
-
Valitettavasti.
-
Joten tässä vaiheessa oli selvää, että kuvan tutkiminen on turhaa, koska se on salattu eikä meillä ole avaimia, joten täytyy...
-
palata suunnittelupöydälle.
-
Hauska fakta, tulostimen firmware-päivitys itse asiassa tulostetaan.
-
Se on upotettu PostScript-dokumenttiin ja tulostat sen tulostimeen, ja se aloittaa itse päivityksen.
-
Seuraava vaihe oli siis hankkia itse laite.
-
Tässä on kuva tulostimesta autoni takakontissa.
-
Eli ostimme laitteen käytettynä ja se meni suunnilleen näin:
-
Juttelin hetken myyjän kanssa, ja hän ystävällisesti kysyi:
"Oletko varma, että haluat ostaa tämän tulostimen?"
-
Sanoin, että totta kai, miksi en haluaisi?
-
No, mustekasetit ovat loppumassa.
-
Jos haluat tulostaa, ne ovat kalliita ja loppuvat pian.
-
joten ehkä kannattaisi etsiä toista.
-
Tulostaa?
-
Miksi ihmeessä tekisin niin?
-
Hyvä, nyt kun tulostin oli hallussamme...
-
Meillä oli uusi lelu käytössämme.
-
Tutkimme piirilevyä ja huomasimme siinä olevan JTAG-merkinnät —
loistavaa, se helpottaa elämäämme huomattavasti.
-
Jos JTAG ei ole tuttu, se on rajapinta, jolla voi tutkia laitteen muistia,
asettaa keskeytyspisteitä, muokata rekistereitä
-
käytännössä unelmatyökalu exploit-kehittäjälle.
-
Se olisi siis kultainen standardi.
-
Joten elämästämme oli tulossa todella helppoa.
-
Ajattelimme vain, että okei, mennään taas.
-
Ja niin teimmekin.
-
Kytkimme sen Raspberry Pi:hin.
-
Raspberry Pi:ssä on GPIO-portit.
-
Voit käyttää OpenOCD:tä puhumaan JTAGia kohteelle.
-
Tuki toimii suoraan, kaikki toimi kauniisti.
-
Pystyimme lähettämään ID-koodipyynnön.
-
Se vastasi takaisin ARM limitediltä.
-
Tiesimme olevamme oikeilla jäljillä.
-
Signaalissa ei ollut mitään ongelmaa.
-
Eli emme ole hulluja.
-
Päivän säätämisen jälkeen tajusimme, ettei se vastannut enää mihinkään muuhun.
-
Mitään kiinnostavaa ei tapahtunut.
-
He olivat luultavasti kytkeneet jotain pois päältä jossain ei-haihtuvassa asetuksessa.
-
Joten taas palattiin suunnittelupöydälle.
-
Seuraava vaihtoehto firmware-kuvan saamiseksi oli yksinkertaisesti juottaa tallennuspiiri irti piirilevyltä.
-
Tämä on aika suoraviivaista.
-
Viedään se kuumailmajuottimelle ja irrotetaan siru.
-
Sen jälkeen laitetaan se yleismalliseen EEPROM-lukijaan.
-
Käytimme tähän B-PROG C -laitetta.
-
Tämä oli...
-
muutaman vuoden takaa, kun olin vielä opiskelija ja leikin tämän parissa, laite on yhä tallessa.
-
Kävi ilmi, että tämä lukija todella pitää omista, suljetuista TSOP48-sovittimistaan.
-
Ja tietenkin meillä oli halpa kopio eBaysta, jota se ei sitten hyväksynyt.
-
Ei mitään, mitä ohjelmistopaikka ei voisi korjata, mutta en kyllä suosittele tätä lähestymistapaa, ota mieluummin jotain vähemmän...
-
valitse laite, jossa on vähemmän kiristyksen kaltaisia vaatimuksia.
-
Onneksi lopulta saimme sen toimimaan ja saimme firmware-dumpin ulos.
-
Sehän on mukavaa.
-
Kävi ilmi, että he käyttävät UBI:a, eikä UBI ole kovin jännittävä.
-
Se on lohkonhallintajärjestelmä.
-
Eli vialliset lohkot, kulumantasoitus, kaikki hoidetaan ohjelmallisesti.
-
Se on kehys, joka on kirjoitettu erityisesti Linuxille, tietääkseni.
-
Siellä on squashFS-tiedostojärjestelmä, jonka voi suoraan purkaa.
-
Purku onnistui ja jäljelle jäi siisti root-tiedostojärjestelmä kaikilla binääreillä ja muulla sisällöllä.
-
Tässä vaiheessa meillä oli siis firmware-kuva.
-
Se on decryptoitu, mutta entä jos Lexmark julkaisee firmware-päivityksen?
-
Se olisi huono juttu.
-
Pitäisi tehdä koko homma uudelleen.
-
Joten löysimme myös laiteohjelmiston salausavaimet ja teimme oman purkutyökalun.
-
Seuraavalla kerralla kun Lexmark julkaisee päivityksen, voimme vain ladata sen,
purkaa, ja kaikki toimii.
-
Saatat nyt miettiä, mitä tulostimelle tapahtui?
-
Koska siru oli irrotettu.
-
Tietysti juotin sen takaisin kiinni.
-
Ja tämä voi yllättää sinut,
-
mutta se toimii edelleen.
-
Nyt kun meillä on firmware-kuva, seuraava asia, mitä tarvitsemme, on debuggauskyvykkyys.
-
Kävi ilmi, että laitteessa on Secure Boot, joten emme voi vain muokata muistisirua ja lisätä siihen takaovea.
-
Lisäksi Lexmark ei pidä siitä, että loppukäyttäjät SSH-yhteydellä säätävät laitteen sisuskaluja, joten tarvitsimme exploitin.
-
Kävi ilmi, että NCC Group oli löytänyt exploitin jo vuotta aiemmin ja lähettänyt sen Pwn2Owniin sekä kirjoittanut siitä blogipostauksen.
-
Mutta siitä puuttui muutama tärkeä yksityiskohta.
-
Mutta pystyimme täydentämään puuttuvat kohdat juuri saamallamme firmware-kuvalla.
-
Tällä tavalla saimme root shellin itsellemme.
-
Jep, olimme aika tyytyväisiä siihen.
-
Nyt voimme tutkia firmwarea, debugata prosesseja esimerkiksi ajamalla GDB-palvelimen.
-
Joo, tämä on aika hyvä juttu.
-
Totta kai NCC Groupin bugi korjattiin uusimmassa firmware-päivityksessä.
-
Joten emme käyttäneet uusinta firmwarea, heti kun sen päivittää, bugi häviää ja joudut aloittamaan alusta.
-
Mutta sillä välin voimme käyttää tätä kyvykkyyttä löytääksemme haavoittuvuuksia, jotka toivottavasti ovat yhä olemassa seuraavassa versiossa.
-
Nyt kun meillä on debuggauskyky, on aika alkaa etsiä sitä varsinaista haavoittuvuutta, jonka haluamme lähettää Pwn2Owniin.
-
No niin, aluksi...
-
Ensimmäinen asia tällaisessa tilanteessa on kartoittaa koko hyökkäyspinta-ala.
-
Kuten diasta näkee, se on melko laaja.
-
On olemassa erilaisia protokollia, joita voi käyttää.
-
On kymmeniä ja kymmeniä skriptejä ja binäärejä, joita voi kutsua suoraan.
-
Vaikuttava määrä tuettuja tiedostomuotoja.
-
Eikä tämä edes ole koko lista, muuten.
-
PDF mahdollistaa myös kaikenlaisten kuvien ja tiedostojen, jopa fonttien upottamisen.
-
Lopulta valitsimme JBIG2-purkajan, joka on saavutettavissa PDF:n kautta.
-
Voit siis syöttää sisältöä siihen koodiin PDF:n kautta, tai myös faksin kautta.
-
Tässä vertailun vuoksi:
-
Tässä ovat tapaukset, jotka tiedämme viimeisten kolmen vuoden ajalta, muiden tiimien, ja ei pelkästään muiden vaan myös meidän hyökkäämät kohteet.
-
Kuten näette, ryhmittymiä muodostuu.
-
Jotkut tutkivat web-komponentteja ja CGI-skriptejä.
-
Jotkut taas keskittyvät PostScriptiin ja saavat siitä paljon irti.
-
Me suuntasimme JPX-dekooderiin, eli JPEG 2000:een.
-
Olemme kuulleet, että he aikovat poistaa koko komponentin tänä vuonna, koska JPEG 2000:lla on murrettu laite jo kolme kertaa peräkkäin.
-
Hyökkäyspinta-ala on siis käsitelty.
-
Siirrytäänpä pieneen yhteenvetoon.
-
Koska olemme murtaneet tämän laitteen nyt kolmena vuotena peräkkäin.
-
Halusimme antaa pienen yhteenvedon.
-
Ensimmäisenä vuotena teimme kaiken pohjatyön: purimme firmwaren, teimme purkutyökalun, ja hankimme pysyvyyden tulostimeen, jotta päivitys ei estäisi koodin suorittamista.
-
Eli saimme pysyvän pääsyn.
-
Mutta ensimmäisenä vuonna käytimme tulostinbugia osana ketjua, jossa ensin hakkeroitiin reititin, ja sitten tulostin.
-
Valitettavasti reititinbugimme "murskattiin" päivityksessä. Bugi oli yhä olemassa, mutta päivitys muutti koodia niin paljon, ettei exploit enää toiminut vakaasti.
-
Ja valitettavasti...
-
se epäonnistui lavalla, mutta opimme silti paljon tulostimen hakkeroinnista.
-
Käytimme siihen paljon tunteja, eikä työ mennyt hukkaan.
-
Seuraavana vuonna palasimme takaisin, ja tiesimme että JPEG 2000 on heikko komponentti. Jos vain ajamme AFL:ää viisi minuuttia, löydämme uuden bugin.
-
Mahtavaa, meillä on bugi.
-
Olimme siis valmiita Pwn2Owniin.
-
Täytin lomaketta kilpailuun, ja muutamaa tuntia ennen lähetyksen deadlinea huomasimme, että uusi päivitys oli julkaistu.
-
Paniikissa asensin päivityksen ja huomasimme, että se sisälsi täysin uuden kryptauksen.
-
Vanha purkutyökalu ei toiminut, ja mikä pahinta, emme voineet palauttaa vanhaa versiota.
-
Joten olimme jumissa.
-
Esitimme vain lomakkeessa, että meillä on exploit.
-
Jep, kyllä meillä on exploit...
-
Se toimi edelleen, mutta offsetit olivat täysin erilaisia muistinkorruption vuoksi.
-
Meillä oli käytännössä kaksi, kolme päivää aikaa ratkaista ongelma.
-
Tajusin nopeasti, ettei meillä ole mitään mahdollisuutta murtaa sitä kryptoa kolmessa päivässä.
-
Joten sen sijaan otin yhteyttä Blastieen, koska tiesin, että hänellä oli tämä tulostin viime vuoden Pwn2Ownissa.
-
Tänä vuonna hän ei aikonut hyökätä siihen.
-
Ehkä hän voisi auttaa meitä.
-
Pahimmassa tapauksessa hän sanoisi ei, eikö niin?
-
Joten otin yhteyttä ja sanoin: exploitimme meni rikki.
-
Pwn2Owniin on vain muutama tunti aikaa.
-
Voisitko auttaa meitä?
-
Blastie, kunnon tyyppi kun on, sanoi: totta kai.
-
Mitä tarvitsette?
-
Sanoin: minulla on tämä backdoor, jolla saa pysyvyyden, voin antaa sen sinulle.
-
Jos vain asennat sen tulostimeesi.
-
Se saattaa rikkoa laitteen, mutta siinä tapauksessa ostamme sinulle uuden.
-
Mutta se saattaa myös antaa sinulle shellin uusimmalla firmwarella.
-
Ja jos se toimii, voisitko vain lähettää meille kansion /usr/bin sisällön,
koska emme halunneet vielä kertoa, mitä binääriä olimme murtamassa.
-
Lähetä vain kaikki järjestelmän binäärit, me kyllä selvitetään loput.
-
Blastie oli vähän niin kuin, okei, nyt te kyllä pyydätte aika paljon.
-
Mitä minä saan tästä?
-
Vastasin, että no, se pysyvyys on varmasti hyödyllinen sulle ensi vuonna.
-
Saat meidän ikuisen kiitollisuutemme ja me ostetaan sulle drinkkejä Pwn2Ownissa.
-
No, vähän huijasimme Blastieta, hän sanoi, että kuulostaa hyvältä.
-
Koska Pwn2Ownissa on ilmainen baari.
-
Joten emme oikeastaan ostaneet Blastielle kovin montaa juomaa.
-
Mutta jatkaaksemme aikajanaa: Blastie pelasti meidät, exploit toimi, saimme siitä 20 000.
-
Ja seuraavana vuonna Blastie ei näköjään kantanut kaunaa, vaan liittyi meidän tiimiin Pwn2Ownissa.
-
Blastie hermostui uudesta kryptosta ja murtautui siihen ihan huvikseen.
-
Tämän vuoden Pwn2Ownissa julkaisimme kaksi uutta exploittia: toinen niistä on juuri se, jonka lähetämme faksin kautta nyt.
-
Kuten sanottu, exploit liittyy jbg2:een.
-
jbg2 on saavutettavissa sekä faksin että PDF:n kautta.
-
Se on alun perin tarkoitettu fakseille.
-
Lexmark teki siihen oman kirjastonsa, mikä tarkoittaa käytännössä sitä, että siinä on todennäköisesti reippaasti bugeja.
-
Suunnitelma oli siis kirjoittaa exploit, laittaa se PDF:ään, se oli suht helppoa, vei noin viikon tienata rahaa Pwn2Ownista ja portata se faksille.
-
Koska kuinka vaikeaa se nyt voi olla?
-
Itse bugin yksityiskohdista en voi vielä puhua, koska valmistajalla on vielä muutama viikko aikaa julkaista korjaus.
-
Mutta haluan nopeasti puhua JBIG2:n heap shapingista.
-
JBIG2:lla on maine todella monimutkaisena formaattina ja tavallaan se onkin.
-
NSO Group käytti sitä yhdessä exploitissaan, jossa jouduttiin rakentamaan jopa oma CPU.
-
Mutta koska meidän suojaukset eivät ole kovin vahvat, meidän ei tarvinnut tehdä mitään sen kaltaista.
-
JPEG 2 on oikeastaan aika mukava formaatti heap shapingiin.
-
Se ei ole yhtä hyvä kuin PostScript, sillä siinä ei ole tulkkia, mutta se mahdollistaa joustavan koon allokaatiot ja tarkan hallinnan objektien elinkaaresta, voit varata ja vapauttaa mielesi mukaan.
-
Se antaa paljon vapautta.
-
Ja jos haluat tehdä massiivisen heap sprayn, voit käyttää toista pakkausformaatia pakkausformaatin sisällä.
-
Kuulostaa loogiselta, eikö?
-
Voit siis pakata kaiken sprayattavan datasi, lähettää sen JBIG2-pakatussa streamissa, ja se puretaan kohdelaitteessa, näin säästät siirtodatassa.
-
Me emme itse käyttäneet tätä, mutta se voisi auttaa, jos tarvitset valtavan sprayn.
-
Me käytimme lähinnä laajennuksia.
-
Laajennukset ovat valmistajakohtaisia segmenttejä, joita voi käyttää minkä tahansa ei-standardiin tarkoitukseen JBIG2-virrassa.
-
Lexmark ei käytä mitään ei-standardeja ominaisuuksia.
-
He toteuttavat vain kommentin, mikä on hyvin yleinen tapa...
-
laittaa debug-dataa JBIG2-virtaan.
-
Nämä ovat hyviä, koska ne ovat selkeitä ja hallittuja allokaatioita.
-
Käytännössä jos sanot, että tässä on kommentti ja tässä on data, tuo data päätyy suoraan heapille,
eikä sinun tarvitse tehdä juuri mitään sen eteen.
-
Se on myös helppo toteuttaa.
-
Kirjaimellisesti "yksi yhteen" -malli.
-
Ei tarvitse tehdä rasterointia, outoa matematiikkaa tai pakkausta.
-
Todella mukava työskennellä.
-
Tältä näyttävät rakenteet Lexmarkin kirjastossa.
-
Ne sisältävät tyypin, osoittimen dataan ja koon.
-
Ja jokainen segmentti, ei vain kommentit, vaan myös vaikka bitmapin piirto sisältää tällaisen otsakkeen.
-
Tärkeintä meille: ne sisältävät paljon pointtereita.
-
Jos teet muistinkorruptiota, tämä on todella kätevä tapa tehdä sitä.
-
Tältä näytti meidän oma kirjastomme rakenteeltaan.
-
Todellisuudessa exploitin toteutus oli paljon monimutkaisempi.
-
Mutta siitä lisää myöhemmin.
-
Nyt esimerkiksi: kirjoitimme pienen funktiokirjaston, jolla luotiin kommentti tietyllä ID:llä.
-
Parseri näkee sen vain kommenttina, jossa on ID leads ja mukana tuleva data.
-
Ja tuo data päätyy suoraan muistiin.
-
Allokaatiosta et hallitse ensimmäistä 16 tavua täysin.
-
Siinä on ID, koko, tyyppi ja jotain muuta.
-
Mutta sen jälkeen saat datasi.
-
Ja tuo data voi olla niin suurta kuin haluat.
-
Siinä ei ole oikeaa rajoitusta.
-
Kun kaiken tämän yhdistää, syntyy PDF, joka sisältää exploitin ja näyttää jotakuinkin tältä.
-
Niille, jotka eivät puhu hollantia: alussa sanoin, että "Tämä toimii varmasti heti ekalla kerralla."
-
Ja no, se toimi.
-
Tässä oli meidän tulos Pwn2Ownissa tänä vuonna.
-
Tulimme kolmanneksi ja tienasimme yhteensä 95K
-
Ei pelkästään Lexmarkin bugista.
-
Lexmarkin bugi oli osa sitä.
-
Olimme siis varsin tyytyväisiä.
-
Nyt kun kaikki tämä on saatu hoidettua, meidän pitää vielä vähän viritellä faksia varten.
-
Ensimmäinen vaatimus faksin hyödyntämiselle on tietysti analoginen puhelinlinja.
-
Nostakaa käsi, jos teillä on sellainen.
-
Jep, ei meilläkään.
-
Selvä.
-
Okei, no siis...
-
Olen iloinen niiden puolesta, joilla on sellainen, mutta me emme kuulu heihin.
-
Miten sitten kehität faksin kautta toimivaa exploittia, jos sinulla ei ole analogilinjaa?
-
No, paniikissa juokset ympäriinsä ja kokeilet kaikkea satunnaista ja päädyt käytettyjen tavaroiden liikkeeseen, missä näet tämän laitteen hyllyssä.
-
Tämä on ISP-modeemi.
-
Satuin olemaan heidän asiakas.
-
Satuin leikkimään tällä laitteella pari vuotta sitten, joten osasin vähän käyttää sitä.
-
Tässä laitteessa on analogiset puhelinportit takana.
-
Toki ne ovat hyödyttömät, koska minulla ei ole tilausta analogisiin puhelinpalveluihin.
-
Miksi siis ostaa tällaista, ellei aio huijata sitä jotenkin käyttämään niitä portteja?
-
On olemassa todella loistava blogikirjoitus tyypiltä nimeltä Dan Man.
-
Nosta käsi, jos olet paikalla.
-
Hän selvitti, missä piirilevyn linjat kulkevat.
-
Laite käyttää EMMC:tä puhuakseen tallennuspiirien kanssa.
-
Hän selvitti pinoutin, juotti siihen johtoja ja suunnitteli hienon piirilevyn microSD-kortin muotoon.
-
Juotti johdot kiinni, kytki kaiken yhteen.
-
Ja nyt modeemista tulee ulos tällainen härveli.
-
Sen voi laittaa SD-kortinlukijaan.
-
Ja sen voi vaan mountata käyttöön.
-
Aivan mahtava saavutus.
-
Kaikki kunnia hänelle.
-
Vuonna 2019 olin vähän mukana tässä projektissa.
-
Lähetin hänelle työkalun, jolla pystyi purkamaan laitteen varmenteet.
-
Ei liity mitenkään tähän esitykseen.
-
Mutta vastalahjaksi hän lähetti minulle noita hienoja SD-kortin muotoisia piirilevyjä.
-
Minulla on niitä vieläkin.
-
Eli juotin piuhat kiinni, kytkin kaiken ja mounttasin root-tiedostojärjestelmän yhden iltapäivän aikana.
-
Tässä laitteessa ei ole secure bootia, joten backdoor vaan sisään — ja root shell modeemilla.
-
Aika siistiä.
-
Mutta että saisimme modeemin oikeasti käyttämään analogiporttejaan ilman...
-
ilman että se on kytketty ISP:lle...
-
Se vaati paljon suostuttelua.
-
En todellakaan suosittele tätä kenellekään, varsinkin nyt jälkikäteen ajatellen, olisi voinut vain ostaa SIP-yhdyskäytävän sadalla dollarilla.
-
Mutta minä tein tämän omalla tavallani.
-
Lopulta se kuitenkin toimii.
-
Tässä on meidän kokoonpano.
-
Ylhäällä on Raspberry Pi, jossa pyörii Asterisk, se hoitaa koko hommaa.
-
Sitten on modeemi, joka puhuu Asteriskin kanssa ethernetin yli.
-
Vasemman puoleinen puhelinlinja on läppärimme, jossa on 56k modeemi.
-
Oikealla on meidän faksi.
-
Voit vain soittaa numeroon 101, se on numero, jonka valitsin faksia varten ja kuulet valintaäänen ja faksin piippauksen.
-
Tällä setillä saimme lähetettyä, no, Rick sai lähetettyä elämänsä ensimmäisen faksin.
-
Näytti suunnilleen tältä.
-
Olemme erittäin ylpeitä.
-
Okei.
-
Tänään oli suuri onnistuminen.
-
Joten nyt voimme lähettää fakseja.
-
Katsotaanpa tätä teknologian ihmettä, jonka olemme saaneet haltuumme.
-
Tässä Wikipedian yleiskatsaus.
-
Kiinnitä erityistä huomiota siihen, kuinka monta tuhatta bittiä sekunnissa voi lähettää.
-
Tätä pystymme nyt tekemään.
-
Kaikki perusasiat on kunnossa: exploit toimii, faksi toimii, mitä muuta voisi haluta?
-
Voimme vain lähettää exploitin.
-
Tässä näkyy Pwn2Own-exploittimme se oli 3,5 megatavua, eikä faksin siirtonopeus riitä, kun heap spray on noin iso.
-
Sen lähettäminen faksin matalilla nopeuksilla veisi noin kaksi tuntia, osittain muiden bugien vuoksi.
-
En usko, että demolle jäisi tilaa, eikö?
-
Joten meidän täytyi keksiä jotain muuta.
-
Päätimme kirjoittaa exploitin kokonaan uusiksi ja oikeasti miettiä heap shapingia, sen sijaan että täytetään kaikki binit.
-
Saimme sen kutistettua noin 9 000 tavuun...
-
Lähetys kesti noin 10 sekuntia, mikä vaikutti hyväksyttävältä.
-
Seuraava ongelma oli, että Lexmark ei toteuttanut JBIG2:ta standardin mukaisesti.
-
He käyttivät epästandardiominaisuutta, jolla faksivalmistajat voivat ilmoittaa: "Hei, olen tämän mallin faksi ja tuen tätä erikoiskoodausta."
-
Jos toinen saman valmistajan faksi lähettää faksin, ne voivat käyttää tätä erikoiskoodausta.
-
Kukaan muu ei tue tätä kuin toinen saman merkin faksi, eikä meitä huvittanut ostaa toista faksia hyökkäyksen lähettämiseen.
-
Joten kirjoitin oman faksiasiakkaan.
-
En suosittele tätä kenellekään.
-
Tai no, valehtelen vähän.
-
Paikkasin e-faxin, komentorivityökalun Linuxille, joka lähettää fakseja.
-
Se on kirjoitettu joskus vuonna 1999 — hyvä vuosi muuten.
-
Tarvitsimme tuen raakadatalla lähettämiseen.
-
Oletuksena se tukee vain juoksupituuskoodattua dataa, mikä sopii normaaliin faksaukseen, mutta exploit tarvitsee tarkempaa hallintaa.
-
Meidän piti myös asettaa epästandardi tila, jolla kerrotaan faksille: "Hei, olen myös Lexmark-faksi ja tuen JBIG:iä."
-
Meidän olisi pitänyt toteuttaa virheenkorjaustilat, koska standardi sanoo niin, muuten tulee ongelmia.
-
Mutta me valitsimme ongelmat ja se silti toimi.
-
Tämä tuo mukanaan uuden ongelman, jota kutsun nimellä "high-stakes faxing".
-
Kun vastaanotat faksin, se tallennetaan levylle.
-
Eli jos muste loppuu, virta katkeaa, paperi loppuu tai taapero sammuttaa faksin, niin faksi on silti tallessa.
-
Mutta jos vastaanotetaan viallinen JBIG-virta...
-
sen ei tarvitse olla exploit tai aiheuttaa segfaulttia, kunhan se on virheellinen...
-
se kaataa faksipalvelun.
-
Sitten tulostin huomaa kaatumisen ja käynnistyy uudelleen.
-
Ennen kuin ehtii poistaa faksia.
-
Joten kun parseri osui ensimmäistä kertaa faksin kautta...
-
olin itse etäyhteydellä ja aika tyytyväinen, mutta Carla ei, koska tulostin meni boottauslooppiin.
-
Veikkaan, että se näytti suunnilleen tältä:
-
Avaa faksijono, parsi JBIG, boottaa.
-
Avaa jono uudelleen ja se syöksyy pimeyteen, jota en toivoisi pahimmalle vihollisellenikaan.
-
Faksipalvelu kaatuu, käynnistyy uudelleen, kaatuu taas ja niin edelleen... pimeää polkua pitkin.
-
Mutta saimme toimivan exploitin faksin kautta.
-
Katsotaanpa, mitä tällä voisi oikeasti tehdä, jos tarkoitus olisi aiheuttaa vahinkoa.
-
Eli ketkä nykyään oikeasti käyttävät faksia?
-
Lähinnä alat, joissa tarvitaan laillisesti sitovia tai muuten tärkeitä allekirjoituksia tai asiakirjoja.
-
Esimerkiksi terveydenhuolto käyttää faksia yhä resepteihin, potilastietoihin jne.
-
Erään kyselyn mukaan 90 % lääkärin vastaanotoista käyttää yhä faksia jollain tavalla.
-
Myös kiinteistönvälitys käyttää joskus edelleen faksia.
-
Vuokrasopimuksiin halutaan joskus oikea allekirjoitus, ei kryptografista, vaan sellaista joka menee faksilla.
-
Myös julkinen hallinto ja lakiala saattavat käyttää sitä lähinnä samoista syistä.
-
Puhelinlinjoilla on toisinaan erityistä oikeudellista suojaa.
-
Ja siksi fakseja edelleen käytetään.
-
Lopuksi myös pankkisektori käyttää faksia satunnaisesti.
-
Tosin kuulin, että Deutsche Bank aikoo luopua fakseista ensi vuonna.
-
Eli meillä on vielä pari kuukautta aikaa ajaa tämä exploit.
-
Hyökkääjän näkökulmasta etuja on aika paljon.
-
Hyökkäyspinta on edelleen iso — kyse on kuitenkin asiakirjaparsinnasta.
-
Mutta ei tarvitse miettiä palomuureja tai NATeja, koska...
-
kuka nyt suojaisi faksikoneensa palomuurilla?
-
Kohteet valikoituvat itsestään, koska jos joku haluaa vastaanottaa asiakirjoja faksilla, ne ovat luultavasti tärkeitä asiakirjoja.
-
Jos siis salakuuntelet faksilaitteen kautta dokumentteja, saat käytännössä parhaat palat.
-
Lisäksi tätä voi rahastaa toisellakin tavalla jos saat haltuun faksin, sillä on puhelinnumero, jolla voi soittaa maksullisiin numeroihin.
-
Eli jos...
-
Ajattele tätä matalan teknologian kryptolouhijana.
-
Hakkeroit kasan fakseja ja soitat maksullisiin numeroihin.
-
Toki haittojakin on.
-
Ensinnäkin, joudut kehittämään exploitin faksia varten, en suosittele sitä kenellekään.
-
Kenttä on sirpaleisempi ja voi olla vaikeaa tunnistaa, millainen faksi on kyseessä.
-
Meidänkin exploitin kohdalla voimme päätellä, että kyseessä on Lexmarkin faksi, koska neuvottelemme epästandardista laajennuksesta.
-
Mutta emme silti tiedä, mikä ohjelmistoversio on kyseessä. Ihmiset, jotka käyttävät faksia, eivät todennäköisesti päivitä niitä.
-
Ja jos käytämme väärää offsetia tässä exploitissa ja se kaatuu, faksi menee käynnistyslooppiin.
-
Yksi etu jäi mainitsematta: jos hakkeroit faksin, ja se on verkossa, kuten todennäköisesti on, jos sitä käytetään myös tulostimena...
-
...voit käyttää sitä ponnahduslautana sisäverkkoon.
-
Selvä, nyt on demon aika.
-
Oletko valmis?
-
Aloitetaan shellillä läppärissä ja sitten vaihdan tämän kameran näkymään.
-
Olen kuunnellut tätä ääntä satoja kertoja.
-
Ajattelin, että sinäkin voit kuulla sen kerran.
-
Haluatko painaa nappia?
-
Joo, toki.
-
Muutaman sekunnin kuluttua se alkaa käsitellä tehtävää.
-
Ne ovat eri säikeitä.
-
Se on jo vahvistanut, että se vastaanotti faksin.
-
Se käynnistyy pian, ehkä kuulette sen.
-
Pitäisi tapahtua hetkenä minä hyvänsä.
-
Todella luotettavaa teknologiaa.
-
Noniin, nyt se toimii.
-
Mutta emme ole vielä valmiita.
-
Kuten ehkä huomasitte, tässä on puhelin.
-
Mitä tapahtuisi, jos soittaisimme faksiin?
-
Valitaan 101.
-
Tietenkin täytyy olla tapa toistaa tämä.
-
Entä jos kokeillaan valintasävyjä?
-
Hyvä, suljen linjan nyt.
-
Tämän myötä haluan kiittää teitä osallistumisesta.
-
Paljon kiitoksia.
-
Paljon kiitoksia.
-
Mahtava esitys ja hieno toteutus.
-
Meillä on pari minuuttia aikaa, aivan todella nopeita kysymyksiä, yksi tai kaksi.
-
Jos sinulla on kysyttävää, tule mikrofonin luo.
-
Jos haluat poistua salista, tee se nopeasti.
-
Meillä on tiukka aikataulu, tiedättehän, aikataulusuunnitelma.
-
Jep, siinä kaikki.
-
Kysymyksiä?
-
Sillä välin vielä yksi asia.
-
Meillä on tämä faksilaitteisto esillä järjestäjien assembly-alueella CTF-hallissa ehkä tunnin kuluttua.
-
Jos haluat tulla pelaamaan Doomia, olet erittäin tervetullut.
-
Saanen esittää ehkä tyhmän kysymyksen.
-
Eilen näimme, että sähköinen potilastiedosto on aika sekaisin...
-
Ja tiedämme, että tämänkaltainen tiedonsiirto ei toimi.
-
Joten tiedämme myös, ettei FAX toimi.
-
FAX on myös täysin kelvoton terveysdatan siirtämiseen.
-
Mitä suosittelisit Saksan terveysministerille?
-
No, se on aina hankalaa. Faxilla on mielestäni tällainen erityinen laillinen asema, jota se ei todellakaan ansaitse.
-
Pitäisi siirtyä nykyaikaisempiin standardeihin, jotka on mahdollista suojata kunnolla.
-
En tunne tarkemmin mainitsemaasi sähköistä terveydenhuoltojärjestelmää, mutta faksin kanssa olen leikkinyt viime kuukausina, eikä tämä ole oikea tie.
-
Ei ole, kiitos.
-
Meillä olisi yksi kysymys sinulle.
-
Ole hyvä.
-
Hei.
-
Kiitos.
-
Kuulin huhuja, että olit vielä painimassa printterin kanssa eilen yön pikkutunneilla.
-
Joten kysyisin: kuinka monta tuntia nukuit viime yönä, Garda?
-
Yllättävän monta.
-
Oh!
-
Luulen että hävisin vedon, mutta kiitos.
-
Kysymys numero yksi.
-
Hei vaan.
-
Kiitos erittäin mielenkiintoisesta esityksestä.
-
Olet sanonut aikaisemmin, että
-
tarvitset analogisen linjan...
-
Tarkoittaako se sitä, että...
-
Voice over IP -faksi ei olisi altis tällaiselle hyökkäykselle?
-
Ei, se olisi silti altis.
-
Kaikki tavat, joilla voit osua tähän parseriin, ovat alttiita.
-
Me teimme sen PDF:n kautta.
-
VoIP toimii yhtä lailla.
-
Me vain halusimme tehdä sen analogisesti, koska se vaikutti siistiltä.
-
Selvä, kiitos.
-
Kiitos.
-
Kysymyksiä netistä?
-
Hyvä, sitten on aika päättää tämä sessio.
-
Tämä oli ilo.
-
Hyvää päivänjatkoa.
-
Nauttikaa kongressista.
-
Ja kiitos.
-
Näkemiin ja hyvästi.