< Return to Video

38C3 - Dialing into the Past: RCE via the Fax Machine – Because Why Not?

  • 0:00 - 0:06
    Translated by Robert Ylitalo
    (KYBS2001 course assignment at JYU.fi)
  • 0:06 - 0:14
    ♪ (38C3 intromusiikki) ♪
  • 0:20 - 0:23
    Ollaan jo kirimässä menetettyä aikaa.
  • 0:23 - 0:28
    Tervetuloa kaikki meidän esitykseen:
    "Matka menneisyyteen: RCE faksikoneen kautta, koska miksei?"
  • 0:28 - 0:35
    Tämä projekti vaati paljon enemmän työtä kuin osasimme odottaa,
    joten toivottavasti olette valmiita hyppäämään kyytiin.
  • 0:35 - 0:41
    Nimeni on Rick de Jaeger ja vieressäni on kollegani Carla Meyer tässä 80-luvun henkisessä kuvassa.
  • 0:41 - 0:46
    Ennen kuin mennään liian pitkälle, haluamme aloittaa tunnustuksella.
  • 0:46 - 0:50
    Suuri osa tästä työstä sai inspiraationsa aiemmasta CCC-esityksestä,
  • 0:50 - 0:53
    jossa Eyal Itkin ja Yaniv Balmas hakkeroivat fakseja.
  • 0:53 - 0:57
    He tekivät erinomaista työtä, ja se istutti meille ajatuksen:
  • 0:57 - 1:04
    jos joskus löydämme kirjan, jota voisi lukea faksin kautta, niin meidän pitäisi kokeilla, kuinka vaikeaa se olisi ja se tulisi olemaan hauskaa.
  • 1:04 - 1:11
    Eli vaikka uutuuden viehätys ei ollutkaan varsinainen motivaattori, miksi sitten juuri faksikone?
  • 1:11 - 1:19
    No, tämä kaunis faksilaite on ollut yksi Pwn2Own-kilpailun kohteista jo neljän vuoden ajan.
  • 1:19 - 1:23
    Olemme itse osallistuneet Pwn2Owniin kolmena vuonna.
  • 1:23 - 1:28
    Pwn2Own on nollapäivähaavoittuvuuskilpailu, jossa järjestäjä antaa listan kohteista kolme kuukautta ennen kilpailua,
  • 1:28 - 1:39
    ja osallistujien pitää löytää uusia haavoittuvuuksia, joilla saadaan suoritettua koodia kohdelaitteissa.
  • 1:39 - 1:42
    Pwn2Own-kilpailussa on eri sarjoja:
  • 1:42 - 1:46
    työpöytäsovellukset kuten selaimet ja virtuaalikoneet,
  • 1:46 - 1:50
    autohakkerointi eli automotive,
  • 1:50 - 1:54
    ja sitten IoT-laitteet eli kulutuselektroniikka, jossa me kilpailtiin.
  • 1:54 - 1:58
    Miksi me katsottiin tulostimia?
  • 1:58 - 2:02
    No, me päädyttiin tähän projektiin, kun nähtiin eräs julkaisu CDI-blogissa.
  • 2:03 - 2:10
    Siinä kerrottiin, että jos hakkeroit ensin reitittimen ja siirryt siitä esimerkiksi tulostimeen, voit voittaa 100 000 dollaria.
  • 2:10 - 2:14
    Ajattelimme, että 100K kuulostaa hyvältä, niin koitetaan sitä.
  • 2:15 - 2:19
    Mutta palkintoraha ei ole aina 100K.
  • 2:19 - 2:25
    Jos joku toinen löytää saman haavoittuvuuden, summa pienenee merkittävästi.
  • 2:25 - 2:33
    Tulostimissa hyökkäyspinta on iso, joten on vähemmän todennäköistä, että joku muu löytää saman bugin.
  • 2:33 - 2:39
    Päätettiin siis valita vaikeampi haavoittuvuus, kuten muistinkäsittelybugi.
  • 2:39 - 2:51
    Ne ovat yksityiskohtaisempia ja työläämpiä, joten muut eivät välttämättä löydä juuri samaa haavoittuvuutta.
  • 2:52 - 2:58
    Meillä oli monta tulostinta valittavana, ja strategiamme oli valita sellainen, joka oli kohtuullisen halpa
  • 2:58 - 3:00
    mutta jonka laiteohjelmisto oli salattu.
  • 3:00 - 3:06
    Eli sisäänpääsy vaatii ensin laitteen ostamista, sen purkamista ja firmwaren purkua.
  • 3:06 - 3:10
    Toivoimme, että muut kilpailijat valitsevat helpomman kohteen,
  • 3:10 - 3:13
    jotta he eivät löytäisi samaa haavoittuvuutta.
  • 3:15 - 3:19
    Tässä on siis päähenkilömme: Lexmarkin 331-sarja.
  • 3:19 - 3:23
    Se on ollut Pwn2Own-kohde vuodesta 2021.
  • 3:23 - 3:29
    Me aloitimme vuonna 2022, ja olemme kirjoittaneet siihen exploitin jo kolmesti.
  • 3:29 - 3:36
    Laite perustuu Yocto Linuxiin, joka on varsin järeä käyttöjärjestelmä.
  • 3:36 - 3:40
    Se pyörittää joitain Rust-komponentteja ja Qt-sovelluksia, eli aika moderni kokonaisuus.
  • 3:40 - 3:45
    Verrattuna muihin tulostimiin, sanoisin että Lexmark on tehnyt ihan hyvää työtä
  • 3:45 - 3:47
    tietoturvan saralla.
  • 3:47 - 3:49
    Järjestelmässä on useita käyttäjätilejä,
  • 3:49 - 3:51
    ohjelmistot ovat melko ajan tasalla,
  • 3:51 - 3:55
    ja siellä on yrityksiä hiekkalaatikointiin systemd-komponenttien avulla.
  • 3:55 - 3:58
    Eli he suoriutuvat kohtalaisen hyvin.
  • 3:58 - 4:02
    Mutta me silti hakkeroimme laitteen kolme kertaa, eli ei täydellistä.
  • 4:03 - 4:05
    Ja tärkeimpänä tämän päivän kannalta
  • 4:05 - 4:07
    tässä laitteessa on faksituki.
  • 4:07 - 4:10
    Emme valinneet sitä sen takia, mutta se vain sattui olemaan mukana.
  • 4:10 - 4:13
    Ja me satuimme sen löytämään.
  • 4:13 - 4:16
    Rahan lisäksi, miksi teemme tätä?
  • 4:16 - 4:20
    No, faksien kulta-aika oli ehkä vuoteen -99 asti.
  • 4:22 - 4:27
    Itse olen 25-vuotias, joten tuntuu, että koko faksikulttuuri meni vähän ohi.
  • 4:27 - 4:31
    Tähän projektiin asti en ollut koskaan lähettänyt yhtäkään faksia.
  • 4:31 - 4:34
    Tässä vaiheessa niitä on tullut varmasti satoja.
  • 4:35 - 4:39
    No miten tämä oikein toteutetaan?
  • 4:42 - 4:46
    Ensimmäisenä tarvitsemme tietenkin firmware-kuvan.
  • 4:46 - 4:50
    Ilman sitä tämä olisi täysin sokkona ampumista.
  • 4:51 - 4:54
    Sen jälkeen tarvitsemme jonkinlaisen debuggauksen mahdollisuuden,
  • 4:54 - 4:58
    koska jos haluat hyödyntää muistikorruptiobugia,
  • 4:58 - 5:02
    tarvitset tietoa ohjelman sisäisestä tilasta ja muusta sellaisesta.
  • 5:02 - 5:06
    Eli suunnitelmana oli saada käyttöön hyvä debuggausympäristö
  • 5:06 - 5:10
    joko koodin suorittamisen kautta tai JTAG-debugin avulla.
  • 5:10 - 5:14
    Näiden työkalujen avulla voimme löytää haavoittuvuuden,
  • 5:14 - 5:18
    hyödyntää sitä, kerätä palkkion
  • 5:23 - 5:28
    ja tuoda bugin faksitoimintoon sekä pitää tästä hyvä esitys CCC:ssä.
  • 5:28 - 5:31
    Ja tässä me nyt olemme.
  • 5:31 - 5:34
    Aloitetaan siis firmware-kuvan hankinnasta.
  • 5:34 - 5:38
    Ensimmäinen paikka, josta kannattaa katsoa, on tietenkin Lexmarkin verkkosivusto.
  • 5:38 - 5:41
    Sieltä voi ladata firmware-kuvan.
  • 5:41 - 5:47
    Mutta kun laitoimme sen binwalkin läpi, tuloksena oli pelkkää siansaksaa.
  • 5:47 - 5:50
    Mietimme, että mikäs tässä nyt mättää.
  • 5:50 - 5:54
    Kävi ilmi, että tiedoston entropia oli tosi korkea
  • 5:54 - 5:56
    oikeastaan ihan järkyttävän korkea.
  • 5:56 - 6:01
    Eli hyvin selvä merkki siitä, että kuva on salattu. Valitettavasti.
  • 6:02 - 6:07
    Tässä kohtaa oli selvää, että kuvasta ei ole hyötyä,
  • 6:07 - 6:11
    koska se on salattu emmekä tiedä avaimia.
  • 6:12 - 6:15
    Eli takaisin piirustuspöydälle.
  • 6:15 - 6:18
    Hauska nippelitieto muuten:
  • 6:18 - 6:22
    tulostimen firmwarepäivitys toimitetaan itse asiassa tulostettavana tiedostona.
  • 6:22 - 6:25
    Se on upotettu PostScript-dokumenttiin
  • 6:25 - 6:29
    ja kun tulostat sen, laite päivittää itsensä automaattisesti.
  • 6:30 - 6:34
    Seuraava vaihe oli siis hankkia itse laite.
  • 6:35 - 6:39
    Tässä on kuva tulostimesta autoni takakontissa.
  • 6:40 - 6:44
    Ostimme tämän käytettynä.
  • 6:44 - 6:47
    Kauppa meni suunnilleen näin:
  • 6:47 - 6:51
    Kävin myyjän kanssa keskustelun, ja hän ystävällisesti varoitti:
  • 6:51 - 6:55
    "Oletko varma, että haluat ostaa tämän tulostimen?"
  • 6:55 - 6:58
    Vastasin, että "Joo, miksi en haluaisi?"
  • 6:58 - 7:04
    "No, musteet on melkein lopussa. Ja jos haluat tulostaa, ne on tosi kalliita."
  • 7:04 - 7:07
    "Kannattaa ehkä miettiä toista laitetta."
  • 7:07 - 7:10
    Mutta me ei oltu kiinnostuneita tulostamisesta, joten:
  • 7:10 - 7:15
    "Printataanko? Miksi ihmeessä haluaisin tehdä niin?"
  • 7:16 - 7:20
    Tulostin oli nyt käsissämme
  • 7:24 - 7:27
    ja pääsimme tutkimaan piirilevyä.
  • 7:27 - 7:31
    Huomasimme, että siinä on JTAG-merkinnät, mikä on mahtavaa.
  • 7:31 - 7:34
    Se tekee elämästä todella helppoa.
  • 7:34 - 7:37
    Jos JTAG ei ole sinulle tuttu, se on käyttöliittymä,
  • 7:37 - 7:40
    jonka kautta voi kurkistaa laitteen muistiin,
  • 7:40 - 7:44
    asettaa breakpointteja, muuttaa rekisteriarvoja
  • 7:44 - 7:47
    käytännössä unelmatyökalu exploit-kehittäjälle.
  • 7:47 - 7:50
    Se olisi se kultainen standardi.
  • 7:50 - 7:54
    Eli elämästämme piti tulla helppoa.
  • 7:57 - 8:00
    Kytkimme siis tulostimen Raspberry Pi:hin,
  • 8:00 - 8:02
    jossa on GPIO-portit.
  • 8:02 - 8:06
    OpenOCD:llä voi puhua JTAG-protokollaa kohdelaitteelle.
  • 8:06 - 8:10
    Tuki toimii suoraan “out of the box”, joten kaikki toimi kauniisti.
  • 8:10 - 8:14
    Lähetimme ID-koodikyselyn, ja laite vastasi "ARM Limited"
  • 8:14 - 8:18
    tämä vahvisti, että signaali toimi.
  • 8:18 - 8:21
    Eli emme olleet kuvitelleet mitään.
  • 8:21 - 8:24
    Mutta päivän säätämisen jälkeen selvisi,
  • 8:24 - 8:28
    että mikään muu ei vastaa. Ei mitään mielenkiintoista.
  • 8:28 - 8:33
    Todennäköisesti jotkin toiminnot on kytketty pois päältä ei-haihtuvassa muistissa.
  • 8:33 - 8:36
    Takaisin suunnittelupöydälle siis.
  • 8:36 - 8:40
    Seuraava vaihtoehto firmware-kuvan saamiseksi:
  • 8:40 - 8:44
    juotetaan tallennuspiiri irti emolevyltä.
  • 8:44 - 8:49
    Tämä on aika suoraviivaista, kuumailma-asemalla irti,
  • 8:50 - 8:56
    sitten EEPROM-lukijaan.
  • 8:56 - 9:00
    Käytimme B-PROG C4 -lukijaa.
  • 9:00 - 9:04
    Tämä oli ajalta, jolloin olin vielä opiskelija
  • 9:04 - 9:08
    leikittelin tällä laitteella silloin ja se on yhä tallella.
  • 9:08 - 9:16
    Mutta selvisi, että tämä lukija rakastaa omia, proprietaarisia TSOP48-sovittimiaan.
  • 9:16 - 9:19
    Ja tietysti meillä oli halpa kopio eBaysta,
  • 9:19 - 9:21
    jota se ei hyväksynyt.
  • 9:21 - 9:24
    Mikään ei toki estä tekemästä softakorjausta,
  • 9:24 - 9:27
    mutta en suosittele tätä reittiä.
  • 9:27 - 9:31
    Kannattaa valita laite, jossa on vähemmän kiristyksen makua.
  • 9:32 - 9:36
    Onneksi lopulta saimme sen toimimaan,
  • 9:36 - 9:40
    ja saimme firmware-dumpin.
  • 9:40 - 9:43
    Kävi ilmi, että käytössä on UBI
  • 9:43 - 9:46
    Se ei ole erityisen jännä, mutta toimiva ratkaisu.
  • 9:46 - 9:48
    UBI on lohkonhallintakerros,
  • 9:48 - 9:52
    joka huolehtii viallisista lohkoista, kulumisesta,
  • 9:52 - 9:56
    ja se on kirjoitettu Linuxia varten.
  • 9:56 - 10:00
    Sen sisällä on squashfs-tiedostojärjestelmä,
  • 10:00 - 10:03
    jonka voi purkaa helposti.
  • 10:03 - 10:07
    Purku onnistui, ja saimme käyttöön root-fs:n,
  • 10:07 - 10:11
    joka sisältää kaikki binäärit ja sisällöt.
  • 10:11 - 10:15
    Eli nyt meillä oli dekryptattu firmware-kuva.
  • 10:15 - 10:18
    Mutta entä jos Lexmark julkaisee päivityksen?
  • 10:18 - 10:21
    Meidän pitäisi tehdä tämä koko prosessi uudelleen.
  • 10:21 - 10:25
    Löysimme myös salausavaimet,
  • 10:25 - 10:27
    ja teimme oman purkutyökalun.
  • 10:27 - 10:30
    Joten jatkossa voimme vain ladata uuden firmwaren,
  • 10:30 - 10:34
    purkaa sen itse ja jatkaa suoraan eteenpäin.
  • 10:34 - 10:38
    Mitä tapahtui tulostimelle, kun siru oli irrotettu?
  • 10:38 - 10:43
    No, tietenkin juotin sen takaisin
  • 10:43 - 10:46
    Ja tämä saattaa yllättää
  • 10:46 - 10:50
    että yllättäen se toimii.
  • 10:56 - 10:59
    Nyt kun meillä on firmware-kuva,
  • 10:59 - 11:03
    seuraava tavoite oli saada debuggausmahdollisuus.
  • 11:04 - 11:08
    Mutta laitteessa on secure boot,
  • 11:08 - 11:13
    joten emme voi vain muokata muistipiiriä ja laittaa asentaa takaporttia.
  • 11:14 - 11:20
    Lexmark ei myöskään halua, että loppukäyttäjät pääsevät SSH:lla
  • 11:20 - 11:24
    laitteeseen käsiksi.
  • 11:24 - 11:27
    Eli tarvitsemme exploitin.
  • 11:27 - 11:31
    Kävi ilmi, että NCC Group oli jo löytänyt yhden edellisenä vuonna.
  • 11:31 - 11:35
    He osallistuivat Pwn2Owniin ja kirjoittivat blogipostauksen aiheesta.
  • 11:35 - 11:39
    Mutta he jättivät oleellisia asioita kertomatta.
  • 11:39 - 11:42
    Me kuitenkin pystyimme täydentämään ne puuttuvat kohdat,
  • 11:42 - 11:45
    nyt kun meillä oli firmware itsellämme.
  • 11:45 - 11:48
    Näin saimme root-shellin käyttöön
  • 11:48 - 11:50
    mikä oli mielestämme varsin hyvä juttu.
  • 11:50 - 11:54
    Nyt voimme tutkia järjestelmää,
  • 11:54 - 11:58
    debugata prosesseja esimerkiksi lataamalla GDB-palvelimen.
  • 12:00 - 12:04
    Toki NCC:n löytämä bugi oli jo paikattu uusimmassa firmware-versiossa.
  • 12:04 - 12:07
    Joten emme tietenkään käyttäneet uusinta versiota
  • 12:07 - 12:11
    jos päivität, bugi katoaa ja pitää aloittaa alusta.
  • 12:12 - 12:15
    Mutta tällä välin pystyimme käyttämään tätä kykyä
  • 12:15 - 12:17
    löytääksemme uusia haavoittuvuuksia,
  • 12:17 - 12:21
    jotka ehkä säilyvät myös seuraavassa versiossa.
  • 12:22 - 12:25
    Nyt kun debuggaus toimii,
  • 12:25 - 12:28
    oli aika alkaa etsiä haavoittuvuutta,
  • 12:28 - 12:32
    jonka voisimme lähettää Pwn2Owniin.
  • 12:33 - 12:37
    Ensimmäinen askel tällaisessa tilanteessa
  • 12:37 - 12:40
    on määritellä koko hyökkäyspinta-ala.
  • 12:40 - 12:44
    Ja kuten diasta näkyy, se on valtava.
  • 12:44 - 12:47
    Laite tukee useita protokollia,
  • 12:47 - 12:50
    ja kymmeniä skriptejä ja binäärejä,
  • 12:50 - 12:53
    joita voi ajaa suoraan.
  • 12:53 - 12:56
    Iso määrä erilaisia tuettuja tiedostomuotoja
  • 12:56 - 12:59
    eikä tämä lista ole edes täydellinen.
  • 13:00 - 13:02
    PDF-tiedostot voivat sisältää
  • 13:02 - 13:06
    kaikenlaista kuvadataa, formaatteja ja jopa fontteja.
  • 13:08 - 13:12
    Me valitsimme lopulta jbg2-purkulogiikan,
  • 13:12 - 13:14
    joka on saavutettavissa PDF:n kautta
  • 13:14 - 13:18
    eli voit syöttää sisältöä, joka menee sen käsiteltäväksi.
  • 13:18 - 13:22
    Mutta sama purkulogiikka toimii myös faksin kautta.
  • 13:23 - 13:29
    Tässä on eri tapauksia, joista tiedämme
  • 13:29 - 13:34
    on hyödynnetty kolmen viime vuoden aikana.
  • 13:36 - 13:40
    Kuten näkyy, joukossa on selkeitä klustereita:
  • 13:40 - 13:44
    osa keskittyy web-komponentteihin ja CGI-skripteihin,
  • 13:44 - 13:48
    toiset taas postscriptiin ja heillä on siellä hauskaa.
  • 13:49 - 13:53
    Me puolestamme hyödynsimme JPX decodea, eli JPEG 2000 -formaattia.
  • 13:53 - 13:57
    Ja kuulimme, että tänä vuonna koko komponentti aiotaan poistaa,
  • 13:57 - 14:01
    koska sen kautta päästiin sisään jo kolmena vuotena peräkkäin.
  • 14:06 - 14:08
    Noniin,
  • 14:09 - 14:11
    Siirrytään yhteenvetoon,
  • 14:11 - 14:15
    sillä olemme pwnanneet tämän laitteen nyt kolmena vuonna peräkkäin,
  • 14:15 - 14:18
    joten halusimme antaa yleiskatsauksen.
  • 14:18 - 14:22
    Ensimmäisenä vuonna teimme pohjatyön:
  • 14:22 - 14:24
    firmwaren purku, dekryptaus,
  • 14:24 - 14:27
    ja pysyvyyden rakentaminen tulostimeen,
  • 14:27 - 14:30
    jotta hyökkäys selviää myös päivityksistä.
  • 14:30 - 14:33
    Ensimmäisenä vuotena käytimme tulostinbugia osana ketjua:
  • 14:33 - 14:34
    ensin hakkeroitiin reititin,
  • 14:34 - 14:36
    sitten siirryttiin tulostimeen.
  • 14:36 - 14:39
    Valitettavasti reititinbugi meni rikki päivityksessä
  • 14:39 - 14:43
    bugi oli yhä olemassa, mutta koodi muuttui niin paljon,
  • 14:43 - 14:46
    että exploit ei enää toiminut vakaasti
  • 14:46 - 14:48
    ja esitys epäonnistui lavalla,
  • 14:48 - 14:50
    mutta opimme valtavasti tulostimen hakkeroinnista.
  • 14:50 - 14:53
    Käytimme siihen paljon tunteja, eikä se mennyt hukkaan.
  • 14:53 - 14:56
    Seuraavana vuonna palasimme.
  • 14:56 - 14:58
    Tiesimme, että JPEG 2000 on heikko kohta.
  • 14:58 - 15:01
    Jos vain käynnistämme AFL:n viideksi minuutiksi,
  • 15:01 - 15:03
    löytäisimme uuden bugin.
  • 15:04 - 15:07
    Bugi löytyi ja olimme valmiita Pwn2Owniin.
  • 15:07 - 15:13
    Aloitin lomakkeen täytön, mutta vain muutama tunti ennen deadlinea
  • 15:13 - 15:15
    huomasimme, että uusi päivitys oli julkaistu.
  • 15:15 - 15:18
    Paniikissa asensin sen
  • 15:18 - 15:22
    ja huomasimme, että siinä on nyt täysin uusi kryptaus.
  • 15:22 - 15:24
    Vanha purkutyökalu ei toimi.
  • 15:24 - 15:28
    Pahinta oli se, että päivitystä ei voi peruuttaa.
  • 15:28 - 15:31
    Olimme jumissa.
  • 15:31 - 15:35
    Bluffasimme ilmoittautumislomakkeessa: "kyllä meillä on exploit".
  • 15:35 - 15:40
    Ja exploit toimi, mutta muistikorruptiossa offsetit muuttuivat.
  • 15:40 - 15:44
    Meillä oli 2–3 päivää aikaa korjata se.
  • 15:44 - 15:48
    Huomasin nopeasti, että kryptoa ei murreta kolmessa päivässä.
  • 15:49 - 15:52
    Joten otin yhteyttä Blastieen,
  • 15:52 - 15:56
    joka oli käyttänyt tätä tulostinta edellisvuoden Pwn2Ownissa.
  • 15:56 - 15:59
    Tänä vuonna hän ei aikonut käyttää sitä.
  • 15:59 - 16:02
    Ajattelin: pahimmassa tapauksessa hän sanoo ei.
  • 16:02 - 16:06
    Sanoin: "Meidän exploit meni rikki. Pystytkö auttamaan?"
  • 16:07 - 16:11
    Ja koska Blastie on hyvä tyyppi, hän vastasi: "Totta kai. Mitä tarvitsette?"
  • 16:11 - 16:15
    Sanoin: "Minulla on tämä backdoor, voin lähettää sen sinulle.
  • 16:16 - 16:20
    Jos asennat sen tulostimeesi, se voi mennä rikki
  • 16:20 - 16:24
    mutta jos menee, ostamme uuden.
  • 16:24 - 16:28
    Tai sitten se antaa meille shellin uusimmassa firmwareversiossa."
  • 16:28 - 16:32
    Pyysin häntä ottamaan dumpin hakemistosta /usr/bin,
  • 16:32 - 16:37
    koska emme halunneet vielä kertoa, mitä binääriä hakkeroimme.
  • 16:40 - 16:46
    Blastie mietti hetken ja sanoi: "Aika iso pyyntö. Mitä minä saan tästä?"
  • 16:47 - 16:51
    Sanoin: "Saat pysyvyyden ensi vuodeksi,
  • 16:51 - 16:55
    ikuisen kiitollisuutemme, ja ilmaista juotavaa Pwn2Ownissa."
  • 16:56 - 17:00
    No, vähän huijasimme häntä
  • 17:00 - 17:04
    koska Pwn2Ownissa on avoin baari.
  • 17:06 - 17:10
    Emme siis oikeasti ostaneet hänelle juomia.
  • 17:16 - 17:20
    Mutta lopulta: Blastie pelasti meidät.
  • 17:20 - 17:22
    Exploit toimi, saimme siitä 20 000 dollaria.
  • 17:22 - 17:27
    Seuraavana vuonna hän ei kantanut kaunaa, vaan liittyi tiimiimme.
  • 17:27 - 17:33
    Blastie suuttui uudelle kryptolle ja murtoi sen huvikseen.
  • 17:34 - 17:37
    Tänä vuonna tiputimme kaksi uutta exploittia,
  • 17:37 - 17:41
    joista toinen on se, jonka lähetämme faksin kautta.
  • 17:43 - 17:47
    Kyseinen exploit kohdistuu siis jbg2-kirjastoon.
  • 17:48 - 17:52
    Se on saavutettavissa sekä faksilla että PDF:llä.
  • 17:52 - 17:55
    Alun perin se on tarkoitettu faksikäyttöön.
  • 17:55 - 17:58
    Lexmark kirjoitti oman kirjastonsa
  • 17:58 - 18:01
    ja silloin tietää, että bugia löytyy.
  • 18:01 - 18:05
    Kirjoitimme exploitin ensin PDF:lle
  • 18:05 - 18:08
    se kesti noin viikon.
  • 18:08 - 18:11
    Saatiin rahat Pwn2Ownista.
  • 18:11 - 18:14
    Seuraavaksi se portattiin faksiin, sillä "kuinka vaikeaa se voisi olla?"
  • 18:14 - 18:17
    Itse bugin yksityiskohtia en voi jakaa vielä
  • 18:17 - 18:21
    Lexmarkilla on vielä pari viikkoa aikaa julkaista korjaus.
  • 18:21 - 18:25
    Mutta haluan puhua hieman heap shapingista jbg2:n avulla.
  • 18:26 - 18:32
    jbg2:n maine on, että se on monimutkainen formaatti
  • 18:32 - 18:34
    ja sitä se onkin.
  • 18:34 - 18:38
    NSO Group käytti sitä exploitissa,
  • 18:38 - 18:40
    joka rakensi oman virtuaalisen CPU:n.
  • 18:40 - 18:43
    Mutta koska meidän ympäristössä mitigoinnit ovat heikkoja,
  • 18:43 - 18:45
    emme tarvinneet kaikkea sitä.
  • 18:45 - 18:48
    JPEG 2000 on oikeastaan aika hyvä heap shaping -formaatti.
  • 18:48 - 18:51
    Ei yhtä hyvä kuin PostScript (jossa on melkein tulkki),
  • 18:51 - 18:58
    mutta saat joustavat allokaatiot ja kontrollin olioiden elinkaareen.
  • 19:00 - 19:03
    Jos haluat tehdä ison heap sprayn,
  • 19:03 - 19:07
    voit jopa pakata kaiken toisen kompressioformaatin sisään
  • 19:09 - 19:13
    ja lähettää sen JPEG-pakattuna streamina.
  • 19:13 - 19:17
    Kohde purkaa sen, joten sinun ei tarvitse lähettää paljoa dataa.
  • 19:17 - 19:21
    Me emme käyttäneet sitä, mutta se voisi olla hyödyksi.
  • 19:21 - 19:24
    Me käytimme pääasiassa extensions-segmenttejä.
  • 19:24 - 19:28
    Ne ovat valmistajakohtaisia osia JPEG-streamissa,
  • 19:28 - 19:32
    joiden avulla voi toteuttaa mitä tahansa ei-standardoitua.
  • 19:32 - 19:36
    Lexmark käyttää vain comment-segmenttiä,
  • 19:37 - 19:41
    joka on yleinen tapa lisätä debuggaukseen tarkoitettua dataa.
  • 19:41 - 19:45
    Ne ovat siistejä, hallittuja allokaatioita.
  • 19:45 - 19:48
    Jos sanot: “haluan kommentin, jossa on tätä dataa”,
  • 19:48 - 19:52
    se data menee heapille suoraan ilman säätöä.
  • 19:53 - 19:57
    Toteutuskin on helppoa.
  • 19:57 - 20:01
    Joten et tarvitse rasterointeja, matikkaa tai kompressiota.
  • 20:03 - 20:07
    Tältä näyttää Lexmarkin kirjaston rakenne,
  • 20:07 - 20:11
    siinä on tyyppi, osoitin dataan ja koko.
  • 20:11 - 20:19
    Jokaisella segmentillä (ei vain kommenteilla)
    on tällainen header.
  • 20:20 - 20:23
    Ja mikä tärkeintä: niissä on osoittimia.
  • 20:23 - 20:27
    Eli jos teet muistikorruptiota, tämä on hieno hyökkäyspinta.
  • 20:28 - 20:31
    Tältä meidän kirjastomme näytti.
  • 20:32 - 20:34
    Se hyvin paljon monimutkaisempi,
  • 20:34 - 20:38
    Kun varsinaisesti implementoit sen siihen haavoittuvuuteen.
  • 20:38 - 20:41
    Esimerkiksi kommentin rakentaminen oli yksinkertaista,
  • 20:41 - 20:44
    funktio tekee ID:n ja datan,
  • 20:44 - 20:49
    ja parseri näkee sen vain kommenttina,
  • 20:49 - 20:52
    Ja tämä data päätyy muistiin.
  • 20:52 - 20:56
    Et hallitse ensimmäisiä 16 tavua (ID, tyyppi, koko),
  • 20:57 - 21:02
    mutta datan pituutta ei ole rajoitettu ja se voi olla niin suuri kuin haluat.
  • 21:03 - 21:06
    Jos yhdistät kaiken tähän asti,
  • 21:06 - 21:10
    PDF-tiedosto sisältää hyökkäyksen, joka näyttää jotakuinkin tältä.
  • 21:34 - 21:37
    Niille yleisössä, jotka eivät puhu hollantia
  • 21:37 - 21:42
    alussa sanoin: “Tämä toimii kerralla.” Ja se toimi.
  • 21:42 - 21:45
    Tämän vuoden Pwn2Ownissa saimme kolmannen sijan,
  • 21:45 - 21:49
    ja tienasimme yhteensä 95 000 dollaria.
  • 21:49 - 21:53
    Lexmark-bugi oli osa tätä, ja olimme siihen tyytyväisiä.
  • 21:53 - 21:56
    Nyt kun se on hoidettu,
  • 21:56 - 22:00
    meillä on vielä hieman faksin tekniikkaa käsiteltävänä.
  • 22:05 - 22:09
    Ensimmäinen vaatimus faksin exploitille on analoginen puhelinlinja.
  • 22:09 - 22:13
    Nostakaa käsi ylös, jos omistatte sellaisen.
  • 22:13 - 22:17
    Jep, ei meilläkään ole.
  • 22:18 - 22:21
    Okei, eli…
  • 22:21 - 22:24
    Olen onnellinen niiden puolesta, jotka omistavat sellaisen
  • 22:24 - 22:27
    mutta me emme kuulu heihin.
  • 22:27 - 22:31
    Joten miten kehittää faksiexploittia ilman puhelinlinjaa?
  • 22:35 - 22:39
    No, paniikissa juokset ympäriinsä ja kokeilet kaikkea
  • 22:39 - 22:43
    ja päädyt käytettyjen tavaroiden kauppaan, ja siellä on tällainen.
  • 22:44 - 22:48
    Tämä on ISP-modeemi. Satuin olemaan kyseisen operaattorin asiakas aiemmin.
  • 22:48 - 22:52
    Leikin laitteen kanssa joskus vuosia sitten, joten tiesin vähän, miten se toimii.
  • 22:53 - 22:57
    Takana on analogiset puhelinliitännät.
  • 22:57 - 23:01
    Toki ne eivät tee mitään ilman liittymää.
  • 23:04 - 23:12
    Miksi siis ostaa tämä? Vain jos aiot jotenkin pakottaa sen käyttämään noita liitäntöjä.
  • 23:13 - 23:18
    On loistava blogikirjoitus kaverilta nimeltä Dan Man.
  • 23:19 - 23:21
    Käsi ylös, jos olet täällä!
  • 23:22 - 23:27
    Hän selvitti, missä piirilevyn johdot kulkevat.
  • 23:27 - 23:31
    Laite käyttää EMMC:tä tallennukseen.
  • 23:31 - 23:37
    Hän tunnisti pinoutin, juotti johdot kiinni,
  • 23:37 - 23:41
    ja suunnitteli hienon piirilevyn microSD-kortin muotoon.
  • 23:41 - 23:45
    Sitten vain kytkentä valmiiksi.
  • 23:45 - 23:49
    Ja nyt sinulla on tällainen piuha modeemista,
  • 23:49 - 23:53
    jonka voit laittaa SD-kortinlukijaan
  • 23:53 - 23:57
    ja mountata sen. Ihan oikeasti.
Title:
38C3 - Dialing into the Past: RCE via the Fax Machine – Because Why Not?
Description:

more » « less
Video Language:
English
Duration:
38:49

Finnish subtitles

Revisions Compare revisions