< Return to Video

36C3 - A Deep Dive Into Unconstrained Code Execution on Siemens S7 PLCs

  • 0:00 - 0:09
    Translated by Esa Lammi
    (ITKST56 course assignment at JYU.FI)
  • 0:09 - 0:18
    36c3 intromusiikki
  • 0:18 - 0:26
    Herald: Siemens päätti äskettäin lisätä
    turvallisuusominaisuuksia PLC:hen. Ja
  • 0:26 - 0:33
    tänään meillä on Tobias ja Ali ja he
    kertovat meille mitä he ovat onnistuneet
  • 0:33 - 0:41
    löytämään. Tämä PLC. He molemmat tulevat
    Ruhr yliopistosta Bachumista. Tobias on
  • 0:41 - 0:46
    hiljattain saatu tohtoriopiskelijaksi. Ja
    Ali on tutkijatohtori. Joten, annetaanpa
  • 0:46 - 0:48
    heille aplodit.
  • 0:48 - 0:57
    aplodeja
  • 1:00 - 1:04
    Ali: Hmm, missä meidän kalvot ovat ?
    Tobias: Esitystila ?
  • 1:10 - 1:17
    ALi: Kyllä, OK. Tervetuloa esitykseemme.
    Syväsukellus koodin suorittamiseen
  • 1:17 - 1:24
    Siemens S7 PLCssa. Nimeni on Ali Abbasi ja
    kuten mainittu olen tutkijatohtorina
  • 1:24 - 1:28
    järjestelmäturvallisuuden osastolla Ruhr
    yliopistossa Boch:sa ja tässä on kollegani
  • 1:28 - 1:34
    Tobias: Olen Tobias, tai Toby. Hauska olla
    täällä. Tämä on viides kertani tässä
  • 1:34 - 1:39
    tapahtumassa ja nyt voin viimein antaa
    takaisin tavallaan ja olen innoissani.
  • 1:40 - 1:47
    Joten asiaan. Ensin hieman esityksesen
    kulusta. Haluamme antaa teille
  • 1:47 - 1:51
    hieman taustatietoa mitä PLCt, eli ohjel-
    moitavat logiikka ohjaimet ovat,
  • 1:51 - 1:57
    miksi haluaisimme sellaisia käyttää ja
    minkälaisessa ympäristössä. Ja sitten
  • 1:57 - 2:03
    sitten haluamme mennä yksityiskohtiin
    Siemens PLCn tapauksessa. Ensin katsomme
  • 2:03 - 2:07
    vähän laitteistoa ja sen jälkeen ohjel-
    mistoja ja erilaisia löydöksiä joita
  • 2:07 - 2:11
    teimme. Lopuksi, haluamme demonstroida
    mitä pystyimme saavuttamaan
  • 2:11 - 2:19
    ja päätämme esityksen parilla kommentilla.
    Joten ensin, prosessiautomaatio. Me kaikki
  • 2:19 - 2:25
    tiedämme sen. Tai teemme sitä itse tai
    tunnemme jonkun joka tekee sitä. Laitamme
  • 2:25 - 2:32
    joitain laitteita älykotiimme, jos kutsumme
    sitä älykkääksi. Ja koitamme automatisoida
  • 2:32 - 2:39
    eri kohteita eri asioissa tehdäksemme elä-
    mästämme helpompaa. Asioita kuten
  • 2:39 - 2:43
    lämpötilan säätö ylös-alas. Emme halua
    tehdä tätä itse. Emme halua että on liian
  • 2:43 - 2:49
    kuuma tai kylmä. Ja mitä teemme on, että
    meillä on jokin sensorijärjestelmä
  • 2:49 - 2:52
    talossamme, kuten myös laitteita jotka
  • 2:52 - 2:55
    vuorovaikuttavat sensorien kanssa.
    tässä tapauksessa meillä voisi
  • 2:55 - 3:01
    olla termostaatti ja lämmitin ja haluamme
    säätää lämpötilaa
  • 3:01 - 3:07
    termostaatin perusteella. Nämä ovat aika
    yksinkertaisia ratkaisuja älytaloon
  • 3:07 - 3:13
    Mutta mitä teemme jos meillä on hyvin
    monimutkainen hallintasilmukka esim.
  • 3:13 - 3:20
    Tässä näemme vasemmalla alhaalla melko
    monimutkaisen kuvan, muutama operointi-
  • 3:21 - 3:27
    henkilö istumassa, mitä kutsumme HMI:n
    human machine interface edessä, joka on
  • 3:27 - 3:30
    periaatteessa tiivistetty informaatio
    kaikesta mitä on meneillään
  • 3:30 - 3:37
    tehtaassa, esimerkiksi. Me tarvitsemme eri
    sensoreita tässä tehtaassa ja meidän täytyy
  • 3:37 - 3:41
    ohjata eri moottoreita ja sellaisia asioita.
    Joten tarvitsemme keskellä olevia asioita
  • 3:41 - 3:46
    tavallaan ohjaamaan tätä kaikkea. Ja teemme
    tämän käyttämällä PLC:ita ja tässä
  • 3:46 - 3:50
    näemme miltä se voisi näyttää. Joten Peri-
    aatteessa on syötteitä kuten puhuimme
  • 3:50 - 3:54
    ja ulostuloja. Ja meillä on joku logiikka
    keskellä. Ja mitä tyypillisesti asennamme
  • 3:54 - 4:00
    on PLC ohjelmoitava logiikka kontrolleri
    ja jotain logiikkaa keskellä.
  • 4:00 - 4:05
    On erilaisia teknologioita, joita voidaan
    käyttää, esimerkiksi, rakenne, teksti tai
  • 4:05 - 4:11
    tikapuulogiikka joka ladataan PLChen ja
    joka sitten ohjaa ulostuloja pohjautuen
  • 4:11 - 4:16
    Sisään tuleviin syötteisiin. Voit nähdä
    joitain tämänkaltaisia sovellutuksia.
  • 4:16 - 4:22
    Esimerkiksi, kemiallisessa voimalaitoksessa,
    kemian tehtaassa, sähköverkossa tai
  • 4:22 - 4:28
    jossain tuotannossa. Osa noista komponen-
    teista ovat aika kriittisiä toiminnalle.
  • 4:28 - 4:33
    Vaikka näkisimme ne jokapäiväisessä
    elämässämme ja joskus emme tosiaan
  • 4:33 - 4:40
    näe niitä. Mutta ne ovat siellä ohjaamassa,
    kaikkea taustalla ja me emme
  • 4:40 - 4:44
    todellakaan halua noiden järjestelmien
    hajoavan. Esimerkiksi jos menet googleen
  • 4:44 - 4:48
    ja etsit jotain onnettomuuksista ja kemian
    tehtaista, voit nähdä
  • 4:48 - 4:53
    sulaneita tehtaita vain koska joku mis...
    häiriö tapahtui järjestelmässä
  • 4:53 - 4:59
    Ja emme todella halua tämän tapahtuvan.
    Emme vahingossa, emmekä myöskään
  • 4:59 - 5:04
    pahantahtoisesti. Ja tästä syystä haluamme
    turvata kaikki prosessit jotka toimivat
  • 5:04 - 5:10
    tehtaissa ja sellaisissa. Olemme nähneet
    viimeaikaisia hyökkäyksiä. Se alkoi
  • 5:10 - 5:17
    tavallaan 1999 ensimmäisellä tiedustelu
    pohjaisella pääosin. Ja sen sitten olemme
  • 5:17 - 5:22
    saaneet joitain edistyneempiä hyökkäyksiä
    2010, esimerkiksi kun näimme Stuxnetin
  • 5:22 - 5:26
    joka oli todella mutkikas operaatio.
    Jos ajattelet sitä tekniseltä tasolta
  • 5:26 - 5:32
    mitä kaikkea siihen meni. Mitä eri osaamis
    alueita oli mukana. Se on melko
  • 5:32 - 5:38
    vaikuttavaa. Ja sitten vielä myöhemmin
    meillä on ollut ongelmia
  • 5:38 - 5:45
    Ukrainan sähköverkossa, jossa 2015 ja 2016
    juuri ennen joulua joitain valoja
  • 5:45 - 5:52
    meni pois päältä melko toviksi joissain
    kaupungeissa. Joten melkoinen vaikutus.
  • 5:52 - 5:58
    Joten antaaksemme hieman vaikutusta,
    taustaa Siemens PLC:sta mitä tulee
  • 5:58 - 6:02
    markkinaosuuksiin. Näemme, että yhdessä
    Rockwood automationin kanssa, Siemensilla
  • 6:02 - 6:06
    on yli 50% markkinaosuus. Ja tietenkin,
    jos otamme joitain laitteita
  • 6:06 - 6:10
    joissa on jotain turvallisuutta, olisi
    kiinostavaa katsoa niitä joilla on suurin
  • 6:10 - 6:16
    markkinaosuus. Näin toimimme tässä
    Siemensin tapauksessa. Tässä näemme
  • 6:16 - 6:22
    juuri sen PLCn johon keskitymme tässä
    esityksessä, se on Siemens S7-1200 PLC.
  • 6:22 - 6:27
    Se on yksi pienemmistä PLCsta, ei silti
    pienin, siinä on logo myös, joka on silti
  • 6:27 - 6:33
    enemmän opettelua varten esimerkki, mutta
    tämä on se joka on silti
  • 6:33 - 6:39
    tutkijoiden saatavilla oleva, kustannusten
    kannalta. Se on jotain 250e PLCsta.
  • 6:39 - 6:45
    Sitten jos tarvitset virtalähteen, se
    maksaa saman. Kunhan et riko montaa
  • 6:45 - 6:50
    sellaista, spoileri, rikoimme aika monta,
    tai et pudota niitä tai sellaista, niin
  • 6:50 - 6:56
    pärjäät hyvin, sinä voit saada resurssit
    leikkiäksesi niillä laitteilla
  • 6:56 - 7:00
    Meillä on eri sovelluksia ja
    olemme puhuneet niistä aiemmin
  • 7:00 - 7:08
    Joten tässä on miltä paketin avaaminen
    Siemens 7 1200 PLC tapauksessa näyttää
  • 7:08 - 7:14
    Meillä on ylänäkymä vasemmassa kuvassa.
    Se on yksi piirilevyistä (PCB)
  • 7:14 - 7:19
    Jotka on kerrostettu toistensa päälle tässä
    tapauksessa. Mutta taika oikeasti on
  • 7:19 - 7:26
    ylimmässä PCBssa, joka on vihreä, jonka
    näemme tässä. Katsoessamme sitä tarkemmin
  • 7:26 - 7:31
    Meillä on yläkuva vasemmalla, joka näyttää
    eri komponentteja joista
  • 7:31 - 7:37
    PLC rakentuu. Otetaan esimerkiksi, ARM
    prosessori (CPU) joka meillä on tai
  • 7:37 - 7:42
    eri väylät sisään-ulos joita voimme kytkeä
    PLChen, kuten puhuimme aiemmin,
  • 7:42 - 7:48
    joita tarvitaan jotta voidaan ohjata eri
    osia järjestelmässä. Ja sitten meillä
  • 7:48 - 7:56
    on flash siru yläosassa myös, joka
    on suuri flash siru sisältäen PLCn
  • 7:56 - 8:04
    laiteohjelmiston, josta puhumme
    hieman tarkemmin myöhemmin
  • 8:04 - 8:10
    Kääntöpuolella, meillä on oikeassa
    kuvassa alapuoli ensimmäisestä PCBsta.
  • 8:10 - 8:15
    Ja kuten näemme tässä, tämä on se missä
    bootloader siru sijaitsee, joka on SPI
  • 8:15 - 8:22
    flash siru, 4 megatavua pitäen sisällään
    Siemens PLC bootloaderin ohjelmakoodin.
  • 8:22 - 8:29
    Tässä halusimme yksityiskohtaisen kuvan
    siitä miltä varsinainen prosessoriyksikkö
  • 8:29 - 8:33
    oikeasti levyllä näyttää ja mitä voit
    tehdä jos haluat tietää on
  • 8:33 - 8:39
    voit tehdä hieman kuorintaa.
    Ja sitä näemme tässä.
  • 8:39 - 8:46
    Tulos on tässä, näemme että sen ytimessä
    on renesanssi ARM
  • 8:46 - 8:53
    Cortex-R4 vuodelta 2010. Ja jos myöhemmin
    työskentelet enemmän
  • 8:53 - 8:58
    ohjelmiston parissa voit haluta selvittää
    myös oikean revisio numeron mitä
  • 8:58 - 9:05
    se tukee ARM standardissa. Ja mitä voit
    tehdä, on käyttää erityistä käskyä
  • 9:05 - 9:13
    joka sisältyy ARM käskykantaan ja
    joilla voit dekoodata eri
  • 9:13 - 9:17
    bittejä siinä, jonka teimme tässä, jonka
    näet tässä referenssinä.
  • 9:17 - 9:23
    Joten jos todella haluat tietää mitä on
    meneillään, voit tutkia ne bitit ja
  • 9:23 - 9:26
    varmistaa, että työskentelet sen laitteen
    parissa mitä oletitkin.
  • 9:26 - 9:32
    Nyt olemme tulleet muistiosuuteen
    laitteistossa ja tässä vaiheessa
  • 9:32 - 9:39
    jätän teidät Alille.
    Ali: Kiitos. Nyt kun Tobias on avannut
  • 9:39 - 9:46
    PLCn meille, minä aion puhua oikuista
    ja ominaisuuksista PLC:ssa.
  • 9:46 - 9:53
    Kuten mainittu, se on Cortex-R4 revisio 3.
    Se on big endian käskykanta ja siinä on
  • 9:53 - 10:01
    ainoastaan MPU. Joten siinä ei ole
    visuaalista muistia periaatteessa. Siinä on
  • 10:01 - 10:05
    useita RAM muisti kokoja, riippuen minä
    vuonna ostit sen ja minkä version S7
  • 10:05 - 10:11
    1200 ostit ja myös useita SPI flash ja
    useita eri tyyppisiä NAND flasheja.
  • 10:11 - 10:15
    Merkittävin yksi ero on kuten
    RAM. jossa he käyttävät välillä Wingbond
  • 10:15 - 10:20
    ja joskus he käyttävät Micron
    Technologies, hiljattain
  • 10:20 - 10:31
    Micron Technologies RAM. Se on LPDDR1 RAM.
    Oletamme SPI flash bootloaderiksi. Joten
  • 10:31 - 10:37
    jälleen, riippuen vaihtelusta välillä
    yhdestä neljään megatavua SPI flashia, se
  • 10:37 - 10:44
    sisältää eri pankkeja, jokainen kooltaan
    512 ktavua. Ja periaatteessa mitä bootloader
  • 10:44 - 10:49
    tekee, on tyypillisten bootloader toimien,
    joita ovat laitteiston konfigurointi,
  • 10:49 - 10:54
    varmistaa firmwaren eheys
  • 10:54 - 11:02
    ennen kuin se ladataan. Me teimme hieman
    röntgen kerroskuvausta PLClle
  • 11:02 - 11:09
    Se on periaatteessa 3D. Joten PCB
    pyörii tässä koska halusimme tehdä myös
  • 11:09 - 11:14
    laitteiston takaisinmallinnusta.
    Ja jollain yliopistolla oli jotain, joten
  • 11:14 - 11:20
    meidän ei tarvinnut mennä hammaslääkärille
    röntgeniin. Joten tässä on nopea 15 min
  • 11:20 - 11:26
    röntgen, joka ei ole kovin hyvä. Mutta kun
    menet syvemmälle, lopulta sinulla on tämä
  • 11:26 - 11:31
    ja voit oikeasti aivan kuin
    se olisi ohjelmisto animaatio
  • 11:31 - 11:36
    Voit mennä PCBn sisälle ja nähdä kaikki
    kerrokset. Se on uskomatonta. Se on PCB
  • 11:36 - 11:42
    kerros. Ja muuten, VCC ja GND, tarvitset
    kaksi kerrosta PCB yhteyksiä periaatteessa.
  • 11:42 - 11:50
    Katsotaanpa käynnistys prosessia
    jälleen, käynnistetään tavallisesti
  • 11:50 - 11:54
    Jotain laitteistoasetuksia tapahtuu. Kuten
    trap ohjaimen vektorointi, esimerkiksi,
  • 11:55 - 12:02
    paljon ajureita eri ARM tiloille ja sitten
    CRC tarkastus itse bootloaderille
  • 12:02 - 12:06
    joka on helposti ohitettavissa, koska voit
  • 12:06 - 12:12
    ylikirjoittaa CRCn. Tämän jälkeen boot
    loader, erityisesti 2017, 2018 versioissa
  • 12:12 - 12:19
    Siemen PLCssa, sallii sinun ylikirjoittaa
    SPI flashin. Ja lopuksi tarkastamme
  • 12:19 - 12:25
    CRC tarkastussumman laiteohjalmasta
    ennen kuin se ladataan
  • 12:25 - 12:29
    bootloaderin itsensä koko on 128 kbyte,
    todellisuudessa jopa vähemmän koska
  • 12:29 - 12:35
    puolet siitä on vain 0xff. Siemens useita
    kertoja on vaihtanut, heillä on useita
  • 12:35 - 12:39
    versioita. Luulen, että kahdessa vuodessa
    näimme 3 tai 4 muunnosta bootloaderista
  • 12:39 - 12:45
    Se siis kehittyi. Se ei ollut jotain jonka
    olemassaolon kaikki ovat unohtaneet.
  • 12:45 - 12:52
    Kuten yleisesti mainittu, sinulla on
    tässä ensimmäinen vaihe laitteiston
  • 12:52 - 13:00
    alustamisessa ja sitten luetaan
    bootloader RAM muistiin ja
  • 13:00 - 13:04
    tarkastetaan bootloaderin CRC tarkastus-
    summa, jotta sitä ei ole muuteltu ja tämä
  • 13:04 - 13:08
    voidaan jälleen ohittaa. Ja sitten toinen
    vaihe laitteiston alustamisessa tapahtuu,
  • 13:08 - 13:13
    Ja sillä hetkellä se odottaa tiettyä
    komentoa puolen sekunnin ajan
  • 13:13 - 13:17
    ja jos se saa tämän komennon se menee
    toiseen moodiin josta puhumme myöhemmin
  • 13:17 - 13:22
    Muuten se periaatteessa valmistelee CRC
    tarkastussumma taulukon laiteohjelmistolle
  • 13:22 - 13:26
    ja yrittää ladata laiteohjelmiston ja
    lopulta yksinkertaisesti poistaa
  • 13:26 - 13:31
    muisti eston vaiheen 1 käskyn
    teille jotka tunnette ARMin
  • 13:31 - 13:35
    Ja periaatteessa siirtää laiteohjelmiston
    muistiin
  • 13:35 - 13:39
    Käyttöjärjestelmän nimeä ei ollut
  • 13:39 - 13:44
    mainittu aiemmin, se on ADONIS.
    Tunnemme sen erilaisilla, erilaisilla
  • 13:44 - 13:50
    tavoilla itseasiassa. Joten ensimmäisenä
    referenssinä laiteohjelmistossa, näemme
  • 13:50 - 13:55
    paljon viittauksia ADONISen, mutta se ei
    riittänyt meille. Joten katselimme ympärille
  • 13:55 - 13:59
    nähdäksemme onko siihen mitään
    lähteitä, ja no, Linkedin on hyvä
  • 13:59 - 14:05
    avoin lähde tiedolle. Ja oli yksi työn-
    tekijä joka oikeasti puhui Siemens
  • 14:05 - 14:10
    kehittäjästä, joka puhui ADONISen
    toiminnnasta. En tiedä miksi hän laittoi
  • 14:10 - 14:15
    Windowsin ja Linuxin ADONISen viereen
    mutta pidin siitä hänen työstään. Ja
  • 14:15 - 14:21
    se ei ollut meille tarpeeksi. Joten ehkä
    joku meistä jota emme tunne. Ja katsoimme
  • 14:21 - 14:25
    taas kauemmas ja kauemmas ja löysimme
    tämän, joka oli paras indikaattorimme
  • 14:25 - 14:30
    Eli Siemens kehitysinsinööri mainitsi että
    hän oli työskennellyt kernel ohjelmiston
  • 14:30 - 14:34
    kehittämiseksi ADONIS reaaliaika käyttö-
    järjestelmään, joka oli meille hyvä merkki
  • 14:34 - 14:39
    Se tarkoitti, että olimme oikeassa. Nyt kun
    tunsimme nimen ja olimme siitä varmoja.
  • 14:39 - 14:46
    Katsotaanpa komponentteja. Se on
    periaatteessa käynnistyminen
  • 14:46 - 14:54
    0x00040040 ja sitten alustetaan kernel
    ja tämän jälkeen useita rutiineja eri
  • 14:54 - 14:58
    komponenttien alustamiseksi käyttö-
    järjestelmässä. En usko, että Siemens
  • 14:58 - 15:03
    jakaa sitä tällä tavalla. Meillä ei
    ollut sellaista käyttöjärjestelmässä,
  • 15:03 - 15:08
    mutta teimme sen sillä tavalla. Eli
    levitimme sen kahteen ryhmään. Joissain
  • 15:08 - 15:11
    on core palvelut kuten ADONIS reaaliaika
    käyttöjärjestelmän palvelut ja jotkut
  • 15:11 - 15:16
    niistä liittyvät automaatio-osaan. Joten
    niille ihmisille jotka ovat mukana
  • 15:16 - 15:22
    automaatiossa, kuten kirjoittavat tikapuu
    logiikkaa ja sen sellaista, ne komennot ja
  • 15:22 - 15:27
    toimintokoodit jotka ovat relevantteja
    Siemensille, he tuntevat nämä enemmän
  • 15:27 - 15:32
    automaatioon liittyvät palvelut. Joten on
    PROFINET, AWP tai automated web
  • 15:32 - 15:40
    programming MC7 JIT parseri tikapuu
    logiikkaa varten tai erilaista SD
  • 15:40 - 15:46
    eli periaatteessa heidän oma JIT kääntäjä
    PLCn sisällä- Ja sinulla on myös OMS
  • 15:46 - 15:51
    tämä konfiguraatiojärjestelmä, joka on
    automaatioon liittyvä ydinosa
  • 15:51 - 15:59
    automaatiojärjestelmästä ja toki hälytys
    keskus kaikkea sellaista juttua
  • 15:59 - 16:04
    joka liittyy automaatioon. Käyttö-
    järjestelmän puolella paljon kaikkea
  • 16:04 - 16:11
    tavallista. Tiedostojärjestelmä, PDCFS,
    josta Tobias puhuu myöhemmin
  • 16:11 - 16:18
    TCP/IP pino, joitain C / C++ kirjastoja,
    jotka eivät ole Siemensiltä, ne ovat
  • 16:18 - 16:23
    Dinkumware ja Miniweb server
    ja MWSL parseri
  • 16:23 - 16:25
    tai Miniweb Scripting Language parseri
  • 16:25 - 16:30
    Ja paljon erilaisia alikomponentteja, mikä
    on tavallista käyttöjärjestelmässä kuin
  • 16:30 - 16:37
    käyttöjärjestelmässä. Lisäksi siellä on
    joitain viittauksia CoreSight:iin. En tiedä
  • 16:37 - 16:41
    moniko teistä tuntee CoreSight:in tai
    paljonko teette ARMin kanssa, mutta perus
  • 16:41 - 16:46
    Coresight on jotain vastaavaa kuin Intelin
    prosess tracing tai Intelin PT seuraamaan
  • 16:46 - 16:53
    sovelluksia ja jota voi käyttää saamaan
    code-coverage, esimerkiksi. Ja laitteiston
  • 16:53 - 16:59
    osa on hyvin dokumentoitu Thomas Weberin
    toimesta tänä vuonna, ei vielä.
  • 16:59 - 17:04
    mutta tänä vuonna. Black Hat aasiassa
    mutta minun pitää varoittaa teitä koska
  • 17:04 - 17:09
    sain joitain sähköposteja, jotkut kyselivät
    siitä. Jos kytkeydyt siihen, PLC:ssa on
  • 17:09 - 17:13
    joku vianselvitys ominaisuus, joka tun-
    nistaa kun sitä tutkitaan JTAG kautta
  • 17:14 - 17:19
    ja se ylikirjoittaa NAND-flashin random
    jutulla. Joten tuhoat PLCn, eli kytkeydy
  • 17:19 - 17:24
    siihen omalla riskillä.
    Seuraavaksi katsotaanpa
  • 17:24 - 17:28
    CoreSIghtia nopeasti. CoreSight:ssa
    on periaatteessa... ennen kuin
  • 17:28 - 17:31
    menen siihen, minun pitää mainita
    mainita, että Ralf Philipp:lla
  • 17:31 - 17:38
    on myös hyvä esitys 0 night:ssa CoreSight
    jäljestämisestä. Joten suosittelen, että
  • 17:38 - 17:42
    katsotte myös sen.
    Yleisesti, CoreSight:ssa on kolme
  • 17:42 - 17:47
    pääosaa tai komponenttia: Lähteet, linkit
    ja sinkit ja sinkit ovat ne osat, joista
  • 17:47 - 17:51
    saat trace informaation ja lähteet ovat
    se jolla kerrot prosessorille
  • 17:51 - 17:57
    minkälaisista lähteistä haluat dataa ja
  • 17:57 - 18:03
    linkit muuttavat nämä lähteet. Täytyy mainita
  • 18:03 - 18:08
    että usein se on hyödyllistö fuzzatessa
    myös. Luulen, että jotkut
  • 18:08 - 18:13
    harvat, mutta jotkut, työskentelevät asian
    parissa. Kattavuuden ohjaama fuzzing
  • 18:13 - 18:16
    CoreSight kautta, ARM Coresightin. Joten on
    mahdollista, että vastaava implementointi
  • 18:16 - 18:26
    tapahtuu kuin Intel PT, esimerkiksi KAFL,
    WinAFL tai Hingfuzz. Eli lähteet, niillä
  • 18:26 - 18:31
    on kolme eri komponenttia. STM, PTM, ETM.
    ETM versio 4 on sen uusin versio
  • 18:31 - 18:38
    Ja periaatteessa sinulla on myös linkit jotka
    yhdistävät eri lähteet eri, kuin
  • 18:38 - 18:45
    eri tai yhden lähteen tai tiettyyn
    sink:iin
  • 18:46 - 18:52
    Ja sitten on suppiloita CoreSightlle,
    anteeksi sinks, anteeksi. Sinulla on sinkeja
  • 18:52 - 18:56
    jotka ovat eri asia. Eli on olemassa eheys
    prosessorille, joka on 4 kilotavua
  • 18:56 - 19:03
    puskuri SRAM tai sinulla on järjestelmä-
    muisti tai jopa TPIU tai esimerkiksi
  • 19:03 - 19:09
    JTAG DP portti High Speed JTAG portti.
    Nyt kun sink on käyty läpi, kuten CoreSight
  • 19:09 - 19:15
    teimme kyselyjä S7:lle CoreSight esiinty-
    misestä ja kuten voit havaita
  • 19:15 - 19:21
    ohjelmisto on jo implementoitu.
    Eli ohjelmistossa on viittauksia
  • 19:21 - 19:27
    että he käyttävät tai konfiguroivat
    CoreSight:ia PLCssa
  • 19:27 - 19:33
    Ja voimme nähdä, että ETM versio
    ei ole uusin, se on ETM
  • 19:33 - 19:40
    versio 3. Nyt kun olen puhunut
    CoreSight:sta, Tobi voi puhua
  • 19:40 - 19:43
    laiteohjelmisto dumpista.
    Tobi: Joten siirrytään johonkin joka
  • 19:43 - 19:49
    on minulle paljon tutumpaa ja joka tuntuu
    minusta helpommalle, se on laiteohjelmisto
  • 19:49 - 19:53
    dumpit, tai ohjelmistot yleisesti, mutta
    firmware dumpit, se on mistä eniten
  • 19:53 - 20:00
    haluan puhua PLCssa tai mitä koitan
    ymmärtää PLCssa. Siemensin tapauksessa
  • 20:00 - 20:07
    meillä on 13 megatavun binääri. Ja vaikka
    alussa se ei tunnu paljolta,
  • 20:07 - 20:15
    mutta kun vähän pyörittelet ja hyödynnät
    IDA Python funktioita ja sellaista
  • 20:15 - 20:19
    sinulla on suunnilleen 84000 funktiota
    joka ei ole jotain,
  • 20:19 - 20:26
    mitä haluaisit tehdä käsin. Lisäksi 84000
    funktion laiteohjelmisto image
  • 20:26 - 20:32
    ei voita seksikkäimmän laiteohjelmiston
    palkintoa, eihän? Arvaan näin.
  • 20:32 - 20:38
    Mutta tämä on se mitä näin ja mitä
    katsomme tarkemmin muutaman
  • 20:38 - 20:43
    minuutin päästä. Kuten näette, meillä on
    eri nimiä tuolla ylhäällä.
  • 20:44 - 20:49
    Meillä on jotain, jota kutsutaan
    _joku_hae_jotain_suuri_koko. Tämä
  • 20:50 - 20:54
    on tapani sanoa, ettei minulla ole aavis-
    tustakaan mitä tässä funktiossa tapahtuu,
  • 20:54 - 20:58
    mutta voimme myös nähdä joitain merki-
    tyksellisiä funktioita. Joten ymmärsimme
  • 20:58 - 21:04
    joitain osia paremmin. Joitain osia
    huonommin, mutta katsoin joka puolelle
  • 21:04 - 21:11
    Mennäänpä nyt paljon osoitteistoja
    käsittelevään osaan. Odotimme paljon
  • 21:11 - 21:17
    yksityiskohtia, jotka olisivat kiinostavia
    jos alat katsomaan firmwarea ja voisin
  • 21:17 - 21:19
    selittää miksi ne voisivat kiinnostaa.
  • 21:21 - 21:26
    Ensinnäkin täytyy tietää, että coretex
    antaa bank registerin
  • 21:26 - 21:33
    Se on toiminnallisuus joka on implementoitu
    pienentämään kokoa ja sallimaan
  • 21:33 - 21:41
    saumattomat moodit sisäiselle prosessorille.
    Ja saamme bank pinon jokaiselle suoritus
  • 21:41 - 21:47
    tilalle. Joten jos haluemme tietää mitä
    on meneillään firmwaren tilassa
  • 21:47 - 21:51
    jollain hetkellä, haluamme ehkä katsoa eri
    pinoja eri tiloissa eri aikoina.
  • 21:51 - 21:57
    Ja tämä on osoitteisto, jolta odotamme tätä
  • 21:57 - 22:03
    Ja sitä voi käyttää lähtökohtana, mikäli
    alat takaisinmallintaa asioita
  • 22:03 - 22:08
    Nyt meillä on joitain osoitteita,
    joitain tauluja joissa on osoitteita
  • 22:08 - 22:16
    Ensimmäinen on RAM kartoitus, joka
    näyttää mitä toiminnallisuutta
  • 22:16 - 22:23
    tai mitä voit odottaa kun katsot laite-
    ohjelmiston koodia, joka
  • 22:23 - 22:28
    on yhteydessä eri osiin muistia.
    Jos ensin menet katsomaan ARM koodia
  • 22:28 - 22:33
    voit nähdä vain satunnaisia yhteyksiä eri
    paikkoihin muistissa ja voit haluta ottaa
  • 22:33 - 22:39
    selvää mitä se oikeasti tekee. Ja se
    näyttää tylsältä, se on vain osoite
  • 22:39 - 22:45
    ja sitä kysellään, etkä tiedä mitä tapahtuu
  • 22:45 - 22:50
    Esimerkiksi, jos katsoit osoitetta teksti
    osassa, odotit että siinä on
  • 22:50 - 22:55
    koodia, jos halusit nähdä jotain
    globaalia staattista dataa, halusit
  • 22:55 - 22:59
    etsiä dataa BSS osiosta. Ja lopulta,
    mikäli halusit katsoa heap muistia
  • 22:59 - 23:04
    tai kuinka kanavat on asetettu siinä,
    etsisit sitä uninitialize osasta
  • 23:04 - 23:10
    ja se kulkee näin eri osissa.
    Toinen erittäin kiinostava
  • 23:10 - 23:14
    asia katsoa, jos yrität takaisin
    mallintaa firmwarea on että haluat
  • 23:14 - 23:20
    tavallaan tietää mikä on se laitteisto
    josta koodi on peräisin, jota se käsittelee
  • 23:22 - 23:30
    Ja tässä tapauksessa dumppasimme
    joitain alueita ja takaisinmallinsimme
  • 23:30 - 23:35
    mitä varten ne alueet ovat, jota kutsutaan
    muistikartoitetuksi I/Oksi. ARM
  • 23:35 - 23:39
    keskustelee laitteiston kanssa periaatteessa
    jonoamalla maagista arvoa osoiteavaruudessa
  • 23:39 - 23:43
    ja sitten se saa jotain takaisin, mikä ei
    ole yhtään samaa, mitä sinne oli
  • 23:43 - 23:49
    aiemmin kirjoitettu. Eli se on osoite joka
    siirretään sinne reunan yli.
  • 23:49 - 23:54
    Laitteiston reunan, samassa järjestelmässä
    sirulla. Ja tässä näemme, että meillä
  • 23:54 - 23:57
    on erilaisia järjestelmään liittyviä
    laitteita kiinni siinä. Esimerkiksi
  • 23:58 - 24:03
    voimme puhua Siemens PLClle eri
    sarjaprotokollia käyttäen ja ne protokollat
  • 24:03 - 24:09
    voivat olla SPI tai I²C. Ja vasemmalla
    puolella on, aika keskellä ylhäällä
  • 24:09 - 24:16
    mikä otti siihen osaa, jotain siihen
    alueeseen liittyvää. Ja sitten näit
  • 24:16 - 24:22
    jonkun toisen koodin puhuvan ajastimille,
    esimerkiksi, tietäisit että olet silloin
  • 24:22 - 24:26
    ajastinmaassa sillä hetkellä tai
    schedulerissa tai jossain sellaisessa
  • 24:26 - 24:28
    Viimein meillä on
  • 24:28 - 24:34
    MPU konfuguraatioita, jotka ovat Memory
    Protection Unit konfiguraatioita, kuten
  • 24:34 - 24:39
    Ali kertoi aiemmin. Mitä näemme on, että
    Siemens oikeasti käyttää joitain näistä
  • 24:39 - 24:44
    konfiguraatioista suojatakseen osia
    muistista. Näemme, esimerkiksi, että
  • 24:44 - 24:49
    missä, koska tahansa on XN, älä suorita
    bitti on, asetettu koodia ei suoriteta
  • 24:49 - 24:54
    siinä osoiteavaruudessa tai se on vain
    luku alue. Emme todellakaan halua
  • 24:54 - 24:59
    kirjoittaa sitä yli. On kiinnostavaa, että
    he alkoivat käyttämään tätä tapaa.
  • 24:59 - 25:06
    Tässä näemme mitä oikeasti tapahtuu kun
    laitekoodi itse boottaa käyntiin
  • 25:06 - 25:12
    Paljastui, ettei firmware halua olla liian
    riippuvainen siitä mitä bootloader teki
  • 25:12 - 25:17
    Todennäköisesti eri teamit tekevät eri
    asioita. Ja pitääkseen yhteydet niin
  • 25:17 - 25:22
    pieninä kuin mahdollista, he tavallaan
    tekevät uudelleen asoita, joita bootloader
  • 25:22 - 25:27
    koodi tekee myös. Se asettaa vektori taulun
    keskeytysten käsittelyyn ja se kaltaisia
  • 25:27 - 25:32
    asioita. Kun sitten ohitamme tämän
    alustavan vaiheen, me haluamme
  • 25:32 - 25:37
    bootata ADINIS kernelin, josta Ali puhui
    aiemmin. Ensinnäkin, siellä on
  • 25:37 - 25:42
    array function pointereita, joita kutsutaan
    aina jokaista toimintoa varten, joita
  • 25:42 - 25:47
    näimme tässä yhteenvedossa ADONIS:en
    eri komponenteista. Joten jos halusit
  • 25:47 - 25:51
    katsoa minkälaisia komponentteja siinä on
    tai minkälaisia toiminnallisia osia siellä
  • 25:51 - 25:56
    on. Tämä on todella kiinnostava lista
    funktioista, funktion käsittelijöistä
  • 25:56 - 26:02
    tutkittavaksi ja se myös asettaa joitain
    hallintarakenteita ja asioita kuten tämä
  • 26:02 - 26:08
    jollaisen tyyppillisen käyttöjärjestelmän
    pitäisi asettaa. Joten katsotaan tarkemmin
  • 26:08 - 26:14
    eri komponentteja ADONISsa. Ensin tiedosto-
    järjestelmä. PLC täyttää määritelmät
  • 26:14 - 26:20
    Joskus se on kuinka hyvin se kestää eri
    lämpötiloja, kuinka matalassa lämpötilassa
  • 26:20 - 26:26
    voin käyttää tätä PLCta, ilman että
    se menettää toiminnallisuuksia
  • 26:26 - 26:33
    Ja tässä tapauksessa, he haluavat myös
    turvallisuutta häiriöiden varalta
  • 26:33 - 26:38
    virtalähteessä. Joten he kehittivät oman
    tiedostojärjestelmän, jota kutsutaan
  • 26:38 - 26:43
    "Powered Down Consistency File System",
    jonka he implentoivat firmwareen ja näemme
  • 26:44 - 26:56
    yhden työkokemus rivin yhdellä
    entisellä Siemensin työntekijällä
  • 26:56 - 27:03
    joka kertoi työskennelleensä
    tämän tiedostojärjestelmän parissa
  • 27:03 - 27:08
    toinen erittäin kriittinen osa toimintoja
    on tietenkin, että haluamme keskustella
  • 27:08 - 27:15
    PLClle ja se haluaa keskustella meille.
    Yksi näistä tavoista on TCP/IP
  • 27:15 - 27:19
    Ja tämä paljastaa Web palvelun esimerkiksi,
    sekä muita komponentteja
  • 27:19 - 27:26
    Tässä tapauksessa huomaamme, että Siemens
    ei rakentanut itse omaa, mikä on
  • 27:26 - 27:31
    todennäköisesti hyvä ajatus.
    He käyttävät InterNiche TCP/IP
  • 27:31 - 27:35
    pinoa, jonka versio on 3.1
  • 27:35 - 27:38
    Jos olet hyvä googlettamaan
    voit löytää jotain lähdekoodia
  • 27:38 - 27:42
    ja voit kartoittaa tämän firmwaren ja
    kuinka se toimii. Joten se voisi
  • 27:42 - 27:49
    antaa sinulle wrapper funktioita, kuten
    luoda socketeja ja sellaista ja voisit löytää
  • 27:49 - 27:54
    ne helpommin firmware imagesta
  • 27:54 - 28:01
    Yksi erittäin kriittinen ohjalmakomponentti
    firmwaressa on päivitys. Se sallii
  • 28:01 - 28:07
    päivittämisen ja Siemens PLC sallii
    päivitykset, siinä on eri moodeja. Yhdessä
  • 28:07 - 28:12
    moodissa sinä vain raahaat ja pudotat UPD
    tiedoston, päivitystiedoston web palvelimelle
  • 28:12 - 28:19
    ja se alkaa tarkastamaan firmwarea, eheyttä
    ja allekirjoitusta ja niin edelleen. Toinen
  • 28:19 - 28:25
    tapa on tehdä se SD kortin kautta, joka on
    mahtavuutta 24 megatavua edulliseen
  • 28:25 - 28:31
    hintaan 250 euroa. Voit hankkia sen.
    En usko, että päihität
  • 28:31 - 28:39
    sitä suhdetta. Mikäli purat sellaisen
    UPD tiedoston saat
  • 28:39 - 28:43
    toisen esityksen siitä muistissa.
    Ja teimme sille vähän
  • 28:43 - 28:47
    takaisinmallinnusta ja saimme
    erilaisia kenttiä, en ole varma näettekö niitä
  • 28:47 - 28:54
    mutta se oli eri offset:ja itse
    binääritiedostoon
  • 28:54 - 28:58
    Se on lähtöpiste firmwaren maagiseen
    headeriin jolla varmistetaan ettei asiat
  • 28:58 - 29:04
    ole liian sekaisin ja CRC kokonaisuudelle
    esimerkiksi. Otimme talteen joitain
  • 29:04 - 29:12
    osoitteita firmwaressa, jotka auttavat
    löytämään jalansijan siihen logiikkaan
  • 29:12 - 29:18
    jota käsitellään ja se antaa sinulle
    osoitteita, joihin voit verrata niitä jatkossa
  • 29:18 - 29:23
    Seuraava komponentti jota tutkimme on
    Miniweb, joka on web palvelin.
  • 29:23 - 29:30
    Se tavallaan paljastaa sinulle erilaisia
    sisäisiä osia PLCssa ja missä tilassa
  • 29:30 - 29:35
    missä tilassa eri GPIOt, General Purpose
    Input Output ovat. Inputit
  • 29:35 - 29:42
    ja Outputit, sekä mikä on PLCn itsensä
    tila ja miten se paljastaa sen
  • 29:42 - 29:50
    käyttäen MWSL kieltä. Miniweb Scripting
    Language. Se on kuten näemme seuraavassa,
  • 29:50 - 29:55
    seuraavassa, kalvossa ja puhumme siitä
    hetken päästä tarkemmin.
  • 29:55 - 30:02
    Olemme käynnistäneet, palvelun kuten
    myös yhden palvelukäsittelijän
  • 30:02 - 30:09
    ADONIS alustus funktioista, joihin
    viittasin vähän aiemmin
  • 30:09 - 30:14
    Katsotaan vähän dokumentoimattomia http
    käsittelijöitä, joiden uskon olevan
  • 30:14 - 30:18
    kiinnostavia. Omat suosikkini ovat
    "lililili" ja "lolololo"
  • 30:18 - 30:20
    naurua
  • 30:20 - 30:25
    ... ja jos yhdistät ne nokkelasti, ehkä
    joku on musiikkillisesti
  • 30:25 - 30:33
    lahjakas ja voi tehdä niistä laulun.
    Olisin kiinnostunut kuulemaan sen
  • 30:33 - 30:38
    Siirrytään MWLS, Miniweb Scripting
    Language:en. Se tavallaan
  • 30:38 - 30:43
    paljastaa sisäiset toiminnot sallimalla
    sinun injektoida html sivulle
  • 30:43 - 30:47
    konfiguraatio templaten avulla eri
    parametreja ja sellaista.
  • 30:47 - 30:54
    Esimerkiksi, kuten näemme tässä ylhäällä
    oikeassa kulmassa, näet prosessorin kuorman
  • 30:54 - 30:59
    järjestelmässä tietyllä hetkellä. Se ei
    vaikuta suorittavan mitään ulostulon
  • 30:59 - 31:06
    koodausta, eli se tavallaan luottaa siihen
    mitä tulee ulos. Joten voi olla fiksuja
  • 31:06 - 31:13
    tapoja tehdä web temppuja tämän kanssa
    ja myös tämän tokenisoinnin parsiminen
  • 31:13 - 31:19
    on tavallaan mutkikasta. Tutustuin siihen
    vähän ja sen implementointia voisi olla
  • 31:19 - 31:25
    kiinnostavaa tutkia, mutta pääsemme sen
    kaltaisiin asioihin vähän myöhemmin
  • 31:25 - 31:30
    Tämän kanssa pääsemme meidän
    varsinaisiin löydöksiin
  • 31:30 - 31:34
    ja puhumme niistä vähän lisää. Ja tässä
    kohtaa Ali jatkaa.
  • 31:35 - 31:43
    Ali: Kiitos Tobi. Nyt puhumme kyvyistä,
    jotka ovat bootloaderissa, jotka
  • 31:43 - 31:49
    sallivat meille rajoittamattoman
    koodin ajamisen, periaatteessa
  • 31:49 - 31:55
    tämä ominaisuus on käytettävissä uart:ssa
    Joten tarvitset fyysisen pääsyn laitteeseen.
  • 31:56 - 32:01
    Mutta kun sinulla on fyysinen pääsy, voit
    tavallaan, kuten Tobias myöhemmin kertoo,
  • 32:01 - 32:05
    voimme itseasiassa ohittaa turvallisuus
    järjestelmät, jotka Siemens on kehittänyt
  • 32:05 - 32:11
    heidän tuotteeseen. Joten tarvitset uart
    pääsyn kuten dokumentoitu tässä, sinulla on
  • 32:11 - 32:20
    TX, RX ja GND PLC:ssa ja uart oli tosiaan
    edellisessä tutkimuksessa jo dokumentoitu.
  • 32:20 - 32:26
    Jokainen osoite, josta puhun tässä tai
    mainitsen tässä esityksessä
  • 32:26 - 32:31
    ovat bootloader versio neljä.yhteen.
    Kuten mainittu aiemmin, Siemens
  • 32:31 - 32:38
    aktiivisesti muokkaa bootloaderia, joten
    luulen, ettö kahdessa vuodessa näimme 2-3
  • 32:38 - 32:45
    muokkausta tai erilaista versiota heidän
    bootloaderista tulevan. Joten juuri
  • 32:45 - 32:50
    tämä pohjautuu siihen puolen sekunnin
    odottamiseen tiettyä komentoa sekunttia
  • 32:50 - 32:56
    laitteen configuraation tapahduttua. Se
    koskee Siemens S7-1200 mukaan lukien
  • 32:56 - 33:03
    SiPLUS ja S7-200 SMART. Itse asiassa joku
    Kasperskyltä. IS Security mainitsi
  • 33:03 - 33:08
    siitä. Me emme edes tienneet siitä.
    Me vain tutkimme S7-1200:sta. Mutta
  • 33:08 - 33:14
    Siemens myöhemmin päivitti sen ohjeistuksen
    joka koskee muita tuotteita myös.
  • 33:14 - 33:19
    Joten puhutaan tästä, erikois pääsy
    ominaisuudesta. Kuten mainitsit, yksi
  • 33:19 - 33:23
    asia, jonka bootloader itse asiassa
    alustaa raudan. Tämän jälkeen laite
  • 33:23 - 33:27
    se tavallaan kopioi osan bootloaderin
    sisällöstä itseensä muistisegmenttiin
  • 33:27 - 33:36
    jota kutsutaan IRAM:ksi, periaatteessa. Ja
    sitten PLC odottaa puoli sekuntia tiettyä
  • 33:36 - 33:40
    komentoa. Ja kun se tämän saa, tämän
    tietyn komennon se vastaa
  • 33:40 - 33:44
    tietyllä merkkijonolla ja se tapahtuu
    uart:in yli. Joten jos lähetät
  • 33:44 - 33:50
    taikajonon, MFGT1, anteeksi huono saksani,
    mutta se todennäköisesti tarkoittaa
  • 33:50 - 33:58
    "Mit freundlichen Grüßen", toivon että tein
    se oikein. Ja sen jälkeen PLC vastaa
  • 33:58 - 34:02
    "-CPU" ja sanoo, että nyt olet tässä
    erikois pääsy tilassa. Odotan sinun
  • 34:02 - 34:11
    komentoja. Ja tässä osoitteessa on myös
    uskon 0xedf8 bootloaderissa. Joten tässä
  • 34:11 - 34:16
    on dekoodaus meidän clientista, jonka
    julkaisemme ensi vuonna, itse asiassa,
  • 34:16 - 34:25
    josta näet, se on 2d435055, joka on se
    "-CPU" vastaus PLC:lta. Joten nyt olemme
  • 34:25 - 34:31
    siinä sisällä. Ja me myös lisäsimme vähän
    extra viestiä tähän paketin formaattiin
  • 34:31 - 34:37
    Joku kysyi aikaisemmin. Eli kun lähetät
    tämän komennon, saat useita toimintoja
  • 34:38 - 34:43
    tästä esityksestä käyttöön. Kutsumme niitä
    käsittelijöiksi ja periaatteessa ne ovat jotain
  • 34:43 - 34:50
    jota kutsumme pääkäsittelijöiksi.
    se on jotain 128 merkintää ja siellä on
  • 34:50 - 34:58
    noin 3 erillistä käsittelijää, jotka ovat
    kuin 0x80 uart konfigurointi ja moikka.
  • 34:58 - 35:02
    Pääkäsittelijässä on paljon asioita.
    Jos palaat taaksepäin kaksi kalvoa
  • 35:02 - 35:11
    minulla on firmware versio tässä,
    4.2.3 ja periaatteessa mitä
  • 35:11 - 35:15
    tapahtuu on, että periaatteessa se on
    tämä komento tässä, get bootloader
  • 35:15 - 35:20
    version. Me vain pyydämme erityis
    pääsy ominaisuutta kertomaan meille
  • 35:20 - 35:25
    mikä on bootloader versio. Ja voit myös
    tehdä paljon alemman tason diagnostiikkaa
  • 35:25 - 35:29
    toiminnot tapahtuvat siellä. Myös jotkut
    firmwareen liittyvät päivitystoimet
  • 35:29 - 35:35
    tapahtuvat siellä, jotka ohittavat taval-
    liset kryptografiset varmistukset
  • 35:35 - 35:43
    firmwaresta, eikä niitä tarvita. Joten
    vilkaistaan niitä, koska tämä työ, josta
  • 35:43 - 35:47
    puhumme, me pääasiassa käytimme vain
    kahta käsitteijää, joten emme käytä...
  • 35:47 - 35:52
    emme katso tai emme nyt puhu kaikista
    muista
  • 35:52 - 35:58
    128 käsittelijästä jotka ovat PLC:ssa.
    Joten se toimii. Yksi käsittelijöistä,
  • 35:58 - 36:06
    meitä kiinnostava, oli käsittelijä 0x80
    joka mainitaan tässä, päivitysfunktio.
  • 36:06 - 36:11
    Se periaatteessa antaa sinulle luvan
    kirjoittaa tiettyyn osaan muistia
  • 36:11 - 36:17
    IRAM, joka aiemmin kopioi osan
    bootloaderin sisällöstä. Käytännössä
  • 36:17 - 36:22
    lähetät tämän käsittelijän tämän kättelyn
    jälkeen, sinun pitää tehdä tämä MFGT1 ja
  • 36:22 - 36:26
    sitten -CPU. Ja sitten pariaatteessa aiot
    lähettää tämän käsittelijän ja se tavallaan
  • 36:26 - 36:30
    tarkastaa, koska joka käsittelijällä voi
    olla eri vaatimukset. Tarkastaa
  • 36:30 - 36:34
    argumenttien määrän, esimerkiksi, ja
    sitten olet tässä päivitys funktio tilassa
  • 36:34 - 36:39
    Sitten sinun pitää antaa kohde ID koska
    siinä on 4 alifunktiota saatavilla
  • 36:39 - 36:45
    Kun siirryt tähän tilaan ja jotkut niistä
    ovat IRAM:ia, SPI:ta tai IOC:a tai
  • 36:45 - 36:52
    Flashia varten, ja jokaista varten, sinun
    pitää valita minkälaisen operaation haluat
  • 36:52 - 36:58
    tehdä, haluatko konfiguroida, lukea,
    kirjoittaa tai tarkastaa. Ja voit tehdä
  • 36:58 - 37:03
    kaikkia näitä. Voit lukea ja kirjoittaa
    IRAMia. Periaatteessa tämä on funktio
  • 37:03 - 37:10
    käsittelijä 0x80:ssa. Seuraavaksi on pää
    käsittelijä 0x1c. Tämä on listattu tässä
  • 37:10 - 37:20
    listassa, tässä. Se, se periaatteessa sallii
    sinun kutsua funktioita. Periaatteessa nämä
  • 37:20 - 37:24
    funktiot on listattu IRAMssa. Ja mitä
    tavallaan teet, on että lähetät tämän
  • 37:24 - 37:29
    kättelyn, sinä olet ja sinä olet tämä.
    Periaatteessa tämä on 0xc1 käsittelijä ja
  • 37:29 - 37:35
    sitten voit kutsua ID numeroa sille
    käsittelijälle jota haluat käyttää.
  • 37:35 - 37:42
    Tässä on useita käsitteöijöitä tarjolla
    0x1c:lle. Joten kysymys on mitä voimme
  • 37:42 - 37:51
    tehdä sillä. Ja ennen kuin kysyn Tobiakselta
    Kysyn kaikilta täällä, ideoita ? Trace,
  • 37:51 - 37:54
    joku sanoi trace. En tiedä mitä se
    tarkoittaa, mutta
  • 37:54 - 37:58
    muminaa yleisössä
  • 37:58 - 38:04
    OK, tarkoitat JTAG kanssa? CoreSight
    kanssa? Ei, emme aio käyttää sitä
  • 38:04 - 38:07
    Joten kysytään Tobiakselta mitä hän
    pystyy tekemään.
  • 38:07 - 38:11
    Tobias: Yaeh, katsottaessa dynaamisesti ja
    näkien mitä se tekee muistin kanssa on,
  • 38:11 - 38:15
    luulen, hyvä ajatus yleisesti. Jos vaikka
    staattinen takaisinmallinnus ei anna
  • 38:15 - 38:21
    sinulle mitään. Tässä tapauksessa katsoime
    tai minä katsoin läpi eri funktioita
  • 38:21 - 38:27
    ja koitin selvittää, mitä voin tehdä
    niillä
  • 38:27 - 38:32
    Kun aloitin katsomaan tätä erikois
    pääsy ominaisuutta, näin periaatteessa
  • 38:32 - 38:37
    että siinä koodissa on liikaa meneillään.
    Tavallaan tunsin, että tiesin mitä
  • 38:37 - 38:42
    pitäisi olla meneillään. Bootloader, mitä
    sen pitäisi olla tekemässä, mutta se
  • 38:42 - 38:50
    tuntui vain olevan liikaa. Ja kuinka voimme
    yhdistää ne kaksi funktiota on kertausta.
  • 38:50 - 39:02
    Käytetään tätä 0x1c käsitelijää, joka
    antaa meille kontrollin, minkälaista
  • 39:02 - 39:08
    toisen listan funktioista kutsutaan, kuten
    näimme aiemmin, kopioidaan käynnistymis
  • 39:08 - 39:14
    prosessissa sijaintiin IRAMssa ulkoiselta
    read only muistilta. Ja tämä
  • 39:14 - 39:20
    paljastaa tämän funktiokäsittelijä taulun
    kaikelle mikä voi kirjoittaa IRAM:iin. Ja
  • 39:20 - 39:26
    kuten opimme aiemmin, 0x80 käsittelijä
    pienissä määrin, pystyy tekemään juuri
  • 39:26 - 39:32
    sen. Ja tässä näemme mitä voimme koittaa
    tehdä sillä. Joten käytämme ensimmäisessä
  • 39:32 - 39:39
    vaiheessa 0x80 käsittelijää kirjoittamaan
    IRAMiin. Voimme todellisuudessa injektoida
  • 39:39 - 39:44
    Toisen funktiopointerin yhdessä konfiguraatio
    arvojen kanssa, joka ohittaa erilaiset
  • 39:44 - 39:50
    tarkastukset argumenttien koolle ja sen
    sellaiselle. Voimme injektoida tämän
  • 39:50 - 39:56
    merkintänä tauluun ja voimme kirjoittaa
    tauluun myös payloadin, jota käytämme
  • 39:56 - 40:03
    shell koodina. Ja sitten toisessa vaiheessa
    voimme käyttää tätä aiemmin injektoitua
  • 40:03 - 40:12
    indexia jonka määritimme, laukaisemaan
    kutsun omaan payloadiimme. Joten nyt
  • 40:12 - 40:17
    meillä on ajossa koodia bootloader
    kontekstissa. Joka on niin etuoikeutettu
  • 40:17 - 40:24
    kuin mihin tässä vaiheessa pääsemme. Ja
    voimme leikkiä vähän sen kanssa.
  • 40:24 - 40:30
    Ja yhteenvetona voimme ketjuttaa kaiken
    tämän yhteen ja saamme koodin suorituksen
  • 40:30 - 40:36
    Ja Alin sanoin, tällä tekniikalla
    raketoimme PLCn. Ja ennen kuin
  • 40:36 - 40:41
    menemme siihen, mitä tämä antaa meidän
    tehdä, sananen vaiheistetusta payloadista
  • 40:41 - 40:47
    Eli kirjoitin tämän ketjun erilaisia
    kutsuja ja paljastui, että tämä
  • 40:47 - 40:52
    kirjoittaminen IRAMiin on jotenkin
    ensinnäkin hidasta, mutta myös herkkä
  • 40:52 - 40:57
    virheille, joten laite voi mennä virhetilaan
    enkä ole aivan varma mitä se koskee
  • 40:57 - 41:03
    mutta olisi mielenkiintoista kuulla se
    Siemens insinööriltä, mutta se johti
  • 41:03 - 41:09
    minut injektoimaan vähän enkoodattua
    payloadia, jossa on vain osa
  • 41:09 - 41:16
    tavuista, joka antaa meille liittymän
    suorittaa
  • 41:16 - 41:20
    lukuja ja kirjoittamisia mielivaltaisesti
    kirjoittaa ja käyttää tätä injektoidessa
  • 41:20 - 41:25
    tason kaksi payloadit. Ja tätä haluamme
    havainnollistaa tässä.
  • 41:27 - 41:33
    Ali: Kiitos, nyt voisimme esittää demon,
    4 demoa itse asiassa. Ensimmäinen on
  • 41:33 - 41:37
    vain kommunikaation näkeminen, peri-
    aatteessa lähetetään nämä pyynnöt ja
  • 41:37 - 41:42
    saadaan vastaus ja periaatteessa lähetetään
    tämä data payload. Ylhäällä on raaka
  • 41:42 - 41:48
    UART kommunikaatio. Älkää huolehtiko, se
    suurennetaan myöhemmin ja alhaalla on
  • 41:48 - 41:56
    meidän client, joka keskustelee PLClle
    ja lähettää meidän kommentit. Joten
  • 41:56 - 42:01
    vain ajamme UARTia. Ja tässä lähetämme
    komentomme. Ja jos katsot ylhäälle näet
  • 42:01 - 42:07
    -CPU signaali tuli PLClta.
    Ja nyt lähetämme vaiheistuksemme
  • 42:07 - 42:12
    ja vaiheistuksemme lähettää vain
    kuittauksen, että tiedämme vaiheistuksen
  • 42:12 - 42:16
    toimivan kunnolla. Tämä on firmware versio
    bootloader versio 4.2.1, periaatteessa
  • 42:16 - 42:20
    Joten nyt aiomme tehdä jotain muuta, aiomme
    aiomme tosiasiassa dumpata
  • 42:20 - 42:24
    firmwaren käynnissä olevasta PLCsta ja
    verrata sitä firmwareen joka on ladattu
  • 42:24 - 42:31
    Siemensin web sivulta. Ensin me aiomme
    tosiaan purkaa firmwaren jonka latasimme
  • 42:31 - 42:36
    Siemensin websivuilta, koska se on pakattu
    lzp3:lla.
  • 42:38 - 42:43
    Eli niin aiomme toimia. Oh ja aiomme
    oikeastaan ensin muodostaa SSL yhteyden.
  • 42:43 - 42:50
    Joten, SSL portin ohjaus, SSH portin ohjaus
    ensin ja olemme juuri tarkastamassa että
  • 42:50 - 42:57
    PLC toimii oikein. Ettei tämä ole
    viallinen PLC tai jotain sellaista
  • 42:57 - 43:02
    Kirjoitimme jotain. Varmistamme vain että
    web palvelin avautuu. aukeaa
  • 43:03 - 43:13
    se on auki, se on hyvä. Ja koitan yös
    kirjautua websivulle web serverille
  • 43:13 - 43:17
    web palvelimelle PCLssa. Taas, varmista
    että PLC on toimiva
  • 43:17 - 43:24
    Myös syötetään salasana. Luulen, että
    kaikki voivat sen arvata. Ja näet että
  • 43:24 - 43:29
    kirjaudumme viimein ja vasemmalla näet
    kaikki toiminnallisuudet jotka
  • 43:29 - 43:34
    latautuvat PLChen liittyen. Joten se on
    käynnissä, käyvä, toimiva PLC. Ja nyt
  • 43:34 - 43:40
    puretaan firmware, joka ladattiin
    Siemensin websivuilta
  • 43:40 - 43:44
    vientilisenssin tarkastamisen jälkeen jne.
    Eli he haluavat varmistaa etteivät
  • 43:44 - 43:52
    ihmiset Iranissa ja Pohjois Koreassa saa
    sitä. Minä olen Iranista muuten. Joten
  • 43:52 - 43:55
    tässä on purettu firmware. Mutta koska
    päivitysnopeus on iso, kuten Tobias
  • 43:55 - 43:59
    mainitsi aiemmin, me vain aiomme
    viedä
  • 43:59 - 44:05
    256 kilotavua firmwarea jostain osasta
    web palvelua IDAan.
  • 44:05 - 44:10
    Sinun täytyy asettaa big endian CPUlle.
    Ja myös asemoida framework uudelleen
  • 44:10 - 44:15
    Kuten näet, täällä ei ole funktiota vielä,
    mutta kun se on asemoitu, meillä on kaikki
  • 44:15 - 44:25
    funktiot ja yeah, ja sitten meidän täytyy
    vain ottaa ja viedä 256 kilotavua firmwaresta
  • 44:25 - 44:29
    joten me tarkoituksella hidastamme UARTia
    koska haluamme varmistaa että emme
  • 44:29 - 44:33
    tee sitä liian nopeasti ja ylivuoda
    puskuria, joka on PLCn sisäinen
  • 44:33 - 44:42
    Tässä, esimerkiksi, tässä osoitteessa,
    691e28 aiomme exportata 256 kilotavua
  • 44:42 - 44:46
    Tämä on laiteohjelmistosta, Siemens
    firmwaresta. Oikein. Me vain exporttaamme
  • 44:46 - 45:01
    sen. Eli, yeah, sitä kutsutaan nyt
    fw-0x691E28 ulostulo kansiossa. Eli nyt
  • 45:01 - 45:06
    olemme valmiit tämän kanssa. Aiomme
    dumpata saman osoitteen PLCsta, eli
  • 45:06 - 45:12
    toimivasta PLCsta. Pitää mainita jälleen.
    Eli yläosa on periaatteessa raaka UART
  • 45:12 - 45:18
    ja tämä on meidän client osa ja me dump-
    paamme sen kylmäkäynnistys hyökkäyksellä
  • 45:18 - 45:22
    Eli tavallaan resetoimme PLCn. Ja ennen
    kuin se on ohi, kirjoitamme RAM:in
  • 45:22 - 45:29
    me periaatteessa dumppaamme sisällön
    RAM:sta. Eli tämä on osoite 0x691e28.
  • 45:29 - 45:35
    Tämä on samasta osoitteesta periaatteessa.
    Ja dumppaamme 256 kilotavua ja tässä
  • 45:35 - 45:41
    lähetämme MFGT1 periaatteessa ja saamme
    -CPU ja sitten loput vaiheistajasta ja muut
  • 45:41 - 45:49
    menevät. Nyt periaatteessa olemme lähet-
    tämässä paketteja ja lopulta saamme
  • 45:49 - 45:57
    vastauksen. Saimme tavallaan kaiken payloadin
    kuin dumppasimme mem_dump_00691e28
  • 45:57 - 46:03
    Tämä on PLCn RAM muistista. Tämä ei
    ole enää Siemens web sivulta
  • 46:03 - 46:17
    Me nappasimme sen omasta koneesta ja
    vertaamme sitä.
  • 46:17 - 46:22
    Eli meillä on muistidumppi ja alkuperäinen
    firmware 265 Kb molempia. Ja sitten
  • 46:22 - 46:29
    aiomme verrata niitä keskenään. Ja kuten
    näette, sen pitäisi näyttää teille kuten
  • 46:29 - 46:33
    täydellinen 100% vastaavuus. Tarkoittaen
    ettö se on täsmälleen sama firmware,
  • 46:33 - 46:37
    joka on saatavilla Siemensin web sivulta.
    Dumppasimme sen suoraan Siemens PLC
  • 46:37 - 46:44
    muistista käyttäen esikoispääsy ominai-
    suutta. Tehdäänpä toinenkin. Tällä kertaa
  • 46:44 - 46:48
    haluamme näyttää rajoittamattoman koodin
    suorittamisen hyvin yksinkertaisesti.
  • 46:48 - 46:53
    Kirjoitamme vain kustomoidun payloadin
    PLClle ja saamme tervehdyksen PLClta.
  • 46:53 - 46:58
    tervehdyksen PLClta. Periaatteessa pyysimme
    PLCta lähettämään tätä viestä
  • 46:58 - 47:05
    koko ajan jatkuvasti. Eli jälleen, lähetämme
    kustomoidun payloadimme tänne ja
  • 47:05 - 47:13
    sanomme hello loop. Ja periaatteessa
    PLC yksinkertaisesti lähettää tämän loopin
  • 47:13 - 47:24
    meille. Kaikki nämä asiat, jälleen, ovat
    bootloader 4.2.1:lle. Sinun pitää muokata
  • 47:24 - 47:30
    tiettyjä asioita, koska Siemens sanoo, että
    he päivittivät taas bootloaderinsa 2019
  • 47:30 - 47:36
    joulukuussa, jolloin ostimme uuden PLCn,
    jälleen, taas. Ja nyt tässä saamme
  • 47:36 - 47:43
    vastauksen. Tuo on PLC, joka lähettää
    periaatteessa meille meidän raakadataa
  • 47:43 - 47:47
    jota PLC meille jatkuvasti lähettää. Tuo
    näyttää meille että vastaanotamme sitä.
  • 47:47 - 47:54
    Mutta tämä oli ehkä liian yksinkertaista.
    Nämä ovat raakadataa jota saamme PLC:lta.
  • 47:54 - 47:58
    Tehdään jotain monimutkaisempaa. Näytetään
    jotain, joka ei ole peräisin meiltä.
  • 47:58 - 48:04
    Pelataan peliä nimeltä ristinolla PLCn
    sisällä. Ja luulen, että ellet tiedä,
  • 48:04 - 48:09
    näin ristinolla, näin minä pelaan
    minä vain piirrän
  • 48:09 - 48:20
    googlella. Joten nyt lähetämme jälleen
    meidän kustom payloadin, mutta tällä
  • 48:20 - 48:25
    kertaa lähetämme vain osittaisia kyselyitä
    joltain toiselta Internetistä ja vain
  • 48:25 - 48:30
    lataamme ne PLChen. Luonnollisesti sinun
    pitää säätää useita asioita.
  • 48:30 - 48:39
    Mutta lähetämme meidän payloadin,
    mukaanlukien vaiheistuksen ja nämä
  • 48:39 - 48:45
    ovat raakadataa. Jälleen, tässä on meidän
    client. Ja lopulta näet ristinolla
  • 48:45 - 48:50
    käyttöliittymän, johon menet. Eli pelaaja1
    pelaa oikeasti X:lla
  • 48:50 - 48:55
    ja pelaaja2 pelaa 0:lla. Joten näet kaikki
    positiot, joista valitset.
  • 48:55 - 49:05
    Sinulla on X ja toivottavasti
    pelaaja1 voittaa. Ja siinä se oli.
  • 49:05 - 49:16
    Siinä oli demo.
    aplodeja
  • 49:16 - 49:20
    Luonnollisesti, on paljon muitakin ideoita
    joita voimme työstää, injektoida muuta
  • 49:20 - 49:25
    kustom koodia, käyttää erikoispääsy
    ominaisuutta, jatkamme tätä työtä.
  • 49:25 - 49:30
    Kuten muitakin asioita Siemensissa,
    olemme pahoillamme Siemens, me vain
  • 49:30 - 49:36
    jatkamme tätä työtä, mutta jatkoa seuraa
    vielä. Sillä välin, on joitain ajatuksia
  • 49:36 - 49:41
    muille ihmisille, mikäli he katsovat tätä
    ja tutkivat turvallisuutta
  • 49:41 - 49:46
    Siemens PLC:ssa. Eli käyttämällä tätä
    erikoispääsyä, voit tehdä joitain asioita.
  • 49:46 - 49:50
    Eli esimerkiksi, voit käyttää tätä
    prophylaxis toiminnallisuutta
  • 49:50 - 49:55
    kirjoittaaksesi firmwareen. Kuten mainit-
    simme funktio on käytettävissä, ja se
  • 49:55 - 49:59
    ei vaadi kryptografista allekirjoitusta,
    jota tavallisesti päivitys prosessissa
  • 49:59 - 50:04
    on firmwaressa saatavilla. Eli voit vain
    ohittaa sen ja se on vain CRC
  • 50:04 - 50:09
    tarkastussumma. Eli mitä voit tehdä,
    esimerkiksi, lisätä merkinnän organisoimaan
  • 50:09 - 50:13
    vaikka alustusrutiinia, joka on saatavilla.
    Ja sitten mitä voit tehdä ennen
  • 50:13 - 50:19
    organisoitua alustusrutiinia, jota
    kutsumme th_initial
  • 50:20 - 50:21
    Toinen mitä voimme tehdä,
  • 50:21 - 50:24
    mikäli muistatte, Tobias puhui
    dokumentoimattomista
  • 50:24 - 50:28
    ja luovuudesta tuottaa musiikkia
    li li li lo lo lo
  • 50:28 - 50:31
    Eli mitä joku voi tehdä on
  • 50:31 - 50:36
    periaatteessa liittää tietty käsittelijä
    tai ylikirjoittaa olemassaoleva.
  • 50:36 - 50:40
    Ja laittaa se tekemään jotain kuin Triton.
    En tiedä tunteeko sitä kukaan,
  • 50:40 - 50:43
    mutta Triton joka on malware,
    joka hyökkäsi petrokemian
  • 50:43 - 50:44
    tehtaaseen Saudi Arabiassa.
    Eli he yrittivät
  • 50:44 - 50:48
    tehdä sen TCPlla. Mutta hyökkääjä
    voisi ehkä tehdä sen http:lla esimerkiksi
  • 50:48 - 50:54
    ja vain odottaa ja kuunnella kommentteja
    ja muita vaihtoehtoja kuten
  • 50:54 - 51:01
    päivittää jump taulut AWP käsittelijöissä,
    joita voidaan myös käyttää prosessoimaan
  • 51:01 - 51:09
    tiettyjä hyökkäyksiä. Eli mitäs muuta
    sitä olisi? Eli mitä tutkimme
  • 51:10 - 51:11
    Me tutkimme
  • 51:11 - 51:16
    hyökkäyspinta-alaa Siemens S7 PLC:ssa
    Siinä on joitan mahdollisuuksia paikalliseen
  • 51:16 - 51:20
    käyttäjätaso hyökkäykseen. Jota voimme...
    Mitä katsoimme oli bootloader
  • 51:20 - 51:25
    Työstämme edelleen hardware hyökkäyksiä ja
    hardware - ohjelmistä hyökkäyksiä reunalla.
  • 51:25 - 51:31
    Tämä työ on käynnissä, ja siitä emme
    tietenkään keskustele nyt? Lisäksi
  • 51:31 - 51:35
    kiinostava asia, luulen, jollekin, joka on
    kiinostunut PLCn turvallisuudesta
  • 51:35 - 51:39
    erityisesti sisäisesti, en puhu nyt vain
    yleisestä eriyttämisestä
  • 51:39 - 51:43
    verkossa ja sellaisesta ICS puolella.
    Puhun kehittyneemmistä alemman tason
  • 51:43 - 51:51
    asioista. Mielestämme vaikka MWSL on
    kiintoisa kohde. Siinä on todennäköisesti
  • 51:51 - 51:56
    bugeja implementoinnissa. Myös, tiedosto
    järjestelmän parsinnassa ja firmwaren
  • 51:56 - 52:01
    allekirjoituksessa, siellä on varmaankin
    jotain juttua ja myös MC7 parserissa,
  • 52:01 - 52:07
    mitä siinä on käyttöoikeuksien nostamisen
    näkökulmasta ja myös remote code execution
  • 52:07 - 52:14
    näkökulmasta, molemmat MiniWeb web
    palvelin ja myös mitä tahansa verkossa
  • 52:14 - 52:18
    saatavilla oleviin palveluihin, joita
    niissä on, voisi olla kiinostavaa. Katsot
  • 52:18 - 52:28
    itseasiassa tätä kohtaa nyt. Joten lopuksi.
    PLCt kehittyvät monimutkaisemmiksi.
  • 52:28 - 52:31
    Se on totta, koska ne tosiasiassa tarjoavat
    enemmän ja enemmän ominaisuuksia ja
  • 52:31 - 52:35
    johtuen tästä monimutkaisuudesta, niissä
    on enemmän bugeja. Näemme,
  • 52:35 - 52:42
    esimerkiksi, MWSL:ssa, jota katsomme nyt,
    siitä taivutetaan ja väännetään
  • 52:42 - 52:47
    monimutkaisempaa. Heillä on periaatteessa
    joku anti-vianetsintä, josta juuri
  • 52:47 - 52:53
    keskustelimme Siemens PLCssa, mutta heillä
    on myös, esimerkiksi, päivitys
  • 52:53 - 52:59
    eheyden tarkastus, kuten allekirjoitus
    firmwaressa kun se ladataan PLChen ja
  • 52:59 - 53:06
    sellaisia juttuja. Joten he tekevät siitä
    monimutkaisempaa. Mutta mitä meidän tulee
  • 53:06 - 53:14
    tietää että jos heidän uhkamallissa, joka
    usein tehdään tai turvallisuusmallissa
  • 53:14 - 53:20
    jonka he rakensivat. Jos heillä on ominaisuus
    joka ohittaa samat turvallisuusjärjestelyt
  • 53:20 - 53:24
    jotka he suunnittelivat. Tarkoitan, että,
    mielestäni on selvää että heidän pitää
  • 53:24 - 53:28
    poistaa, kuten bootloaderin tapauksessa,
    heidän erikoispääsy ominaisuudet.
  • 53:28 - 53:32
    hyvänä esimerkki. Ja tietenkin asiakkaiden
    täytyy tietää, koska heillä on sellainen
  • 53:32 - 53:36
    toiminto ja he tarvitsevat sitä, kunhan
    asiakkaat tietävät, se on hyvä.
  • 53:36 - 53:41
    Mutta jos he eivät tiedä, he eivät voi
    huomioida tätä riskiä strategiassaan tai
  • 53:41 - 53:47
    uhkamallissa, joka heillä on. Joten.
    Ja heidän täytyy miettiä tai uudelleen
  • 53:47 - 53:51
    miettiä turvallisuutta tietämättömyydellä.
    Ehkä he sallivat meidän, tutkijoina,
  • 53:51 - 53:54
    päästä käsiksi laitteisiin
    paremmin ja helpommin
  • 53:54 - 53:56
    tutkiaksemme niitä enemmän.
    Me teemme vielä sitä
  • 53:56 - 54:01
    mutta se vain kestää kauemmin. Ja uskon
    että on paljon enemmän nähtävää ja
  • 54:01 - 54:08
    tehtävää PLC:issa ja Siemens ei ole
    viimeinen jonka parissa työskententelemme.
  • 54:08 - 54:14
    Joten meidän täytyy kiittää joitain ihmisiä.
    Thosrten Holz, ohjaajamme, hän ei ole täällä.
  • 54:14 - 54:21
    Thomas, Alexandre, Marina, Lucian, Nikita,
    ja Robin. Heidän avustaan ja työstään.
  • 54:21 - 54:27
    Ja nyt aiomme vastata kysymyksiin.
  • 54:27 - 54:28
    Herald: Kiitoksia.
  • 54:28 - 54:37
    aplodeja
  • 54:39 - 54:47
    Herald: Eli, Yeah, voitte tulla jonoon
    mikrofonille tai kirjoittaa kysymyksenne
  • 54:47 - 54:55
    Elisa huoneessa. Ah, siinä mennään. Se on
    päällä nyt, luulen.
  • 55:02 - 55:07
    Signal Angel: Hei, Yeah. ELi on yksi kysymys
    Internetistä. Tarkistitteko MC7
  • 55:07 - 55:16
    parserin? Jos kyllä. Löysittekö mitään
    piilotettuja koneohjeita siitä
  • 55:16 - 55:22
    tai jotain.
    Ali: Haluatko vastata? Onko tämä
  • 55:22 - 55:26
    nauhoitettu, vai toistanko kysymyksen? Eli
    he kysyvät tarkastimmeko MC7 parserin.
  • 55:26 - 55:32
    OK, Hyvä. Eli emme todella tutkineet
    MC7 parseria
  • 55:32 - 55:36
    mutta työskentelemme sen parissa nyt.
  • 55:37 - 55:41
    Mic: Hei ? Kuinka pystyitte löytämään
  • 55:41 - 55:46
    MFG turvallisuus salasanan?
    Ali: Se on todella pitkä tarina. Ensinnäkin
  • 55:46 - 55:50
    meillä oli se edessämme hyvin, hyvin
    pitkän ajan, kunnes Siemens toi
  • 55:50 - 55:56
    tämön anti-debugging ominaisuuden.
    Sen jälkeen, meidän piti keksiä toinen
  • 55:56 - 56:02
    keino, toinen keino sen löytämiseen,
    löytää samanlainen toiminto, toisia
  • 56:02 - 56:06
    tapoja sallia se, koska asia josta emme
    keskustelleet täällä, oli ettemme kertoneet
  • 56:06 - 56:12
    kuinka me, esimerkiksi suoritimme sen
    komennon aikaisemmin PLC:ssa.
  • 56:12 - 56:18
    Siihen liittyi työtä, johon saimme apua
    joiltain tutkijoilta Hollannista ja Ranskasta.
  • 56:18 - 56:25
    Eli tämä oli jotain, josta informoitiin
    Siemensia 2013. Luulen, että he tiesivät
  • 56:25 - 56:31
    siitä. Mutta 2016, he korjasivat sen ja
    se vaikutti kuin he periaatteessa koittivat
  • 56:31 - 56:35
    suojata PLCta tämän tapaisilta hyökkäyksiltä.
    Sitä ei oltu julkaistu aiemmin.
  • 56:35 - 56:39
    Joten käytimme sitä. Emme halua
    keskustella siitä, koska
  • 56:39 - 56:43
    alkuperäinen tekijä ei halunnut puhua siitä.
    Mutta toistimme,mitä he olivat,
  • 56:43 - 56:49
    mitä he tekivät. Ja kun meidän todella piti
    hakea muita keinoja, silloin se
  • 56:49 - 56:54
    avasi silmämme, että on olemassa joitain
    muita toimintoja myös.
  • 56:54 - 56:58
    On sellaisia, kuten esimerkiksi bootloader.
    Mutta ennen kuin tarvitsimme niitä,
  • 56:58 - 57:02
    emme ikinä etsineet niitä. Joten se oli
    tavallaan edessämme
  • 57:02 - 57:06
    jotain kaksi vuotta.
    Tobias: Ehkä yksi kiinostava osa
  • 57:06 - 57:10
    taustatarinaa on, että me periaatteessa
    aikaisempaa tekniikkaa käyttäessämme
  • 57:10 - 57:16
    me todellisuudessa ylikirjoitimme ehdollisen
    hypyn, joka ohjasi meidät erikoispääsy
  • 57:16 - 57:18
    toiminnon suorittamiseen ehdottomalla
    hypyllä. Eli periaatteessa leikkasimme pois
  • 57:20 - 57:26
    60% koko firmware koodista vahingossa.
    Ja sitten täysin
  • 57:26 - 57:30
    aavistuksesta, kuten kerroin aiemmin, että
    siellä oli vain liikaa erilaisia
  • 57:30 - 57:35
    toimintoja. Palasin takaisin ja ymmärsin,
    että se oli juuri se sama kohta
  • 57:35 - 57:42
    jonka ylikirjoitimme aikaisemmin, ja joka
    meidän piti periaatteessa korvata ja
  • 57:42 - 57:43
    käyttää omiin tarkoituksiimme.
  • 57:44 - 57:46
    Mic: Onko siinä mitään käynnistyksen
    aikaista turvallisuutta
  • 57:46 - 57:51
    muuta kuin CRC tarkastus? Eli te. Voitteko
    muokata sisältöä SPI flashilla ja
  • 57:51 - 57:54
    saada mielivaltaisen koodin
    suorittamisen sillä tavalla myös?
  • 57:55 - 58:02
    Ali: Eli, se riippuu mistä vuodesta olet
    puhumassa 2017, 2016. Eli puhumme
  • 58:02 - 58:07
    samasta mallista PLCsta, mutta vuosina
    2017 ja 2018. Ei. Voisit periaatteessa
  • 58:07 - 58:12
    vain ottaa ulos SPI flashin, ylikirjoittaa
    sen. Ja se on hyvä, Mutta jos
  • 58:12 - 58:17
    olit ylikirjoittamassa sitä ja aiheutit
    pysähdyksen CPU coressa, se taas laukaisee
  • 58:17 - 58:23
    sen anti-vianetsintä ominaisuuden joka
    heillä on. Tämä vahtikoira periaatteessa.
  • 58:23 - 58:29
    Mutta firmwaren eheyden kannalta.
    Periaatteessa kun kerran kirjoitat...
  • 58:29 - 58:33
    firmware kirjoitetaan NAND flashille,
    mutta se on vain CRC tarkastus. Mutta
  • 58:33 - 58:37
    päivitysprosessi? Ei. Siinä on joitain
    kryptografisia tarkastuksia, mutta kun
  • 58:37 - 58:42
    se on kirjoitettu, ei. Siinä on joitain
    ongelmia, jotka taas. Se on edelleen
  • 58:42 - 58:45
    jatkuvaa työtä ja emme halua puhua siitä
    vielä, mutta hyvä huomio-
  • 58:45 - 58:51
    Mic: Kiitos.
    Mic: Hei, Kiitos esityksestä, voisitteko
  • 58:51 - 58:55
    avata teidän keskustelua valmistajan
    kanssa ja aikataulua?
  • 58:55 - 59:00
    Ali: Kyllä, ensinnäkin, me olimme tienneet
    tästä ongelmasta puolitoista vuotta
  • 59:00 - 59:04
    ennen kuin raportoimme asian valmistajalle.
    Tärkein syy oli, että käytimme sitä yhteen
  • 59:04 - 59:09
    toiseen projektiin. Tämä on todellisuudessa
    tulos oikeasti sivuprojektista
  • 59:09 - 59:13
    enemminkin kuin pääprojektista. Mutta
    koska varsinainen projekti on jotain
  • 59:13 - 59:18
    muuta ja edelleen käynnissä. Mutta sen
    projektin sivussa, meillä oli pääsy.
  • 59:18 - 59:22
    Ja koska olimme huolissamme, että valmista-
    jalle raportoidessa he voivat korjata
  • 59:22 - 59:26
    sen ohjelmistopäivityksellä ja sen jälkeen
    estää kaikki muut CVEt, joita löydämme tässä
  • 59:26 - 59:32
    toisessa projektissa, emme halunneet kuin
    viimein 2019. Thomas Weber halusi puhua
  • 59:32 - 59:38
    tässä esityksessä periaatteessa tästä
    JTAG liittymästä CoreSightiin ja sitten
  • 59:38 - 59:43
    päätimme kuitenkin puhua siitäkin.
    Mutta muutenkin, oikeastaan me
  • 59:43 - 59:49
    puhuimme kesäkuussa, luulen, Siemensin
    kanssa ja he vahvistivat, että tässä raudassa
  • 59:49 - 59:53
    on erikoispääsy ominaisuus. Ja he ovat..
    He sanovat, että aikovat poistaa
  • 59:53 - 59:58
    sen ja se siitä. Me myös lähetimme
    heille write Up:in luettavaksi.
  • 59:58 - 60:03
    Herald: Eli, siellä on vielä viimeinen
    kysymys Signal Angelilta.
  • 60:04 - 60:09
    Signal Angel: Eli, siellä on seuraava
    kysymys Internetistä. Jos työkalut kuten
  • 60:09 - 60:16
    Flashrom, eivät tue tuntematonta SPI flash
    rom sirua, kuinka te tavallisesti puratte
  • 60:16 - 60:22
    firmwaren, jos ette halua purkaa sirua
    tai käyttää SOICB istukkaa.
  • 60:22 - 60:27
    Ali: Voitko toistaa sen. En saanut
    kysymystä, saitko sinä ?
  • 60:27 - 60:32
    Signal Angel: Jos työkalut kuten Flashrom,
    eivät tue tuntematonta SPI flashrom sirua
  • 60:32 - 60:39
    kuinka te tavallisesti puratte firmwaren,
    jos ette halua purkaa sirua
  • 60:39 - 60:42
    tai käyttää SOICB istukkaa.
    Ali: Ensinnäkin, me emme oikeasti koskaan
  • 60:42 - 60:49
    pura SPI flashia. Teimme sen vain CPU:lle.
    Ja koska halusimme tietää, että
  • 60:49 - 60:54
    Siemens uudelleenbrändää PLCtaan. Eli se
    ei ole heidän CPU, se on Ransasilta,
  • 60:54 - 60:59
    mutta siksi purimme osia.
    Mutta purkujutut sikseen.
  • 60:59 - 61:04
    Mutta muista asioista, siellä on
    kuitenkin tämä toiminto, tämä
  • 61:04 - 61:08
    bootloader toiminto, joka antaa sinun
    lukea sisällön muistista.
  • 61:08 - 61:12
    Eli se on yksi asia, jonka voit lukea.
    Selvästi sinun ei edes tarvitse, kiitos
  • 61:12 - 61:16
    yhden oppilaani. Me tiedämme yhden, jota
    sinun ei tarvoitse edes
  • 61:16 - 61:21
    ottaa pois bootloaderista, siru. Me voimme
    periaatteessa vain kytkeytyä suoraan
  • 61:21 - 61:28
    levylle ja dumpata firmwaren. Marcello, se
    on hänen nimensä. Hän on täällä. Mutta
  • 61:28 - 61:34
    kuitenkin, voit vain suoraan lukea sen.
    Ja kyllä, en usko, että lukemis osuus
  • 61:34 - 61:38
    erityisesti osat siitä, ovat suojattuja,
    erityisesti uusissa versioissa, joissa
  • 61:38 - 61:43
    et voi lukea kaikkea. Mutta muuten, en
    usko, että se on vaikeampaa nyt vielä.
  • 61:43 - 61:48
    Olen varma, että he työskentelevät sen
    parissa ja me myös työstämme jotain
  • 61:48 - 61:52
    jolla se kierretään. Joten.
    Herald: Okei, seuraava esitys
  • 61:52 - 61:58
    tulee olemaan toimitusroboteista. Sasha
    20 minuutin päästä. Annetaan aplodit.
  • 61:58 - 62:02
    aplodeja
  • 62:02 - 62:12
    36c3 esityksen jälkimusiikki
  • 62:27 - 62:35
    Translated by Esa Lammi
    (ITKST56 course assignment at JYU.FI)
Title:
36C3 - A Deep Dive Into Unconstrained Code Execution on Siemens S7 PLCs
Description:

more » « less
Video Language:
English
Duration:
01:02:28

Finnish subtitles

Revisions