< 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.
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