0:00:00.000,0:00:09.132
Translated by Esa Lammi[br](ITKST56 course assignment at JYU.FI)
0:00:09.132,0:00:18.264
36c3 intromusiikki
0:00:18.264,0:00:26.160
Herald: Siemens päätti äskettäin lisätä[br]turvallisuusominaisuuksia PLC:hen. Ja
0:00:26.160,0:00:32.800
tänään meillä on Tobias ja Ali ja he[br]kertovat meille mitä he ovat onnistuneet
0:00:32.800,0:00:40.720
löytämään. Tämä PLC. He molemmat tulevat[br]Ruhr yliopistosta Bachumista. Tobias on
0:00:40.720,0:00:46.160
hiljattain saatu tohtoriopiskelijaksi. Ja[br]Ali on tutkijatohtori. Joten, annetaanpa
0:00:46.160,0:00:48.358
heille aplodit.
0:00:48.358,0:00:56.818
aplodeja
0:00:59.648,0:01:03.557
Ali: Hmm, missä meidän kalvot ovat ?[br]Tobias: Esitystila ?
0:01:09.750,0:01:17.210
ALi: Kyllä, OK. Tervetuloa esitykseemme.[br]Syväsukellus koodin suorittamiseen
0:01:17.210,0:01:23.757
Siemens S7 PLCssa. Nimeni on Ali Abbasi ja[br]kuten mainittu olen tutkijatohtorina
0:01:23.757,0:01:28.160
järjestelmäturvallisuuden osastolla Ruhr[br]yliopistossa Boch:sa ja tässä on kollegani
0:01:28.160,0:01:34.400
Tobias: Olen Tobias, tai Toby. Hauska olla[br]täällä. Tämä on viides kertani tässä
0:01:34.400,0:01:38.640
tapahtumassa ja nyt voin viimein antaa[br]takaisin tavallaan ja olen innoissani.
0:01:39.760,0:01:46.880
Joten asiaan. Ensin hieman esityksesen[br]kulusta. Haluamme antaa teille
0:01:46.880,0:01:51.360
hieman taustatietoa mitä PLCt, eli ohjel-[br]moitavat logiikka ohjaimet ovat,
0:01:51.360,0:01:56.640
miksi haluaisimme sellaisia käyttää ja[br]minkälaisessa ympäristössä. Ja sitten
0:01:56.640,0:02:02.600
sitten haluamme mennä yksityiskohtiin[br]Siemens PLCn tapauksessa. Ensin katsomme
0:02:02.600,0:02:07.040
vähän laitteistoa ja sen jälkeen ohjel-[br]mistoja ja erilaisia löydöksiä joita
0:02:07.040,0:02:11.200
teimme. Lopuksi, haluamme demonstroida[br]mitä pystyimme saavuttamaan
0:02:11.200,0:02:18.960
ja päätämme esityksen parilla kommentilla.[br]Joten ensin, prosessiautomaatio. Me kaikki
0:02:18.960,0:02:25.280
tiedämme sen. Tai teemme sitä itse tai[br]tunnemme jonkun joka tekee sitä. Laitamme
0:02:25.280,0:02:32.480
joitain laitteita älykotiimme, jos kutsumme[br]sitä älykkääksi. Ja koitamme automatisoida
0:02:32.480,0:02:38.720
eri kohteita eri asioissa tehdäksemme elä-[br]mästämme helpompaa. Asioita kuten
0:02:38.720,0:02:43.200
lämpötilan säätö ylös-alas. Emme halua[br]tehdä tätä itse. Emme halua että on liian
0:02:43.200,0:02:49.040
kuuma tai kylmä. Ja mitä teemme on, että [br]meillä on jokin sensorijärjestelmä
0:02:49.040,0:02:52.120
talossamme, kuten myös laitteita jotka
0:02:52.120,0:02:55.200
vuorovaikuttavat sensorien kanssa.[br]tässä tapauksessa meillä voisi
0:02:55.200,0:03:00.560
olla termostaatti ja lämmitin ja haluamme[br]säätää lämpötilaa
0:03:00.560,0:03:06.880
termostaatin perusteella. Nämä ovat aika[br]yksinkertaisia ratkaisuja älytaloon
0:03:06.880,0:03:12.960
Mutta mitä teemme jos meillä on hyvin[br]monimutkainen hallintasilmukka esim.
0:03:12.960,0:03:20.240
Tässä näemme vasemmalla alhaalla melko[br]monimutkaisen kuvan, muutama operointi-
0:03:21.200,0:03:26.640
henkilö istumassa, mitä kutsumme HMI:n[br]human machine interface edessä, joka on
0:03:26.640,0:03:30.320
periaatteessa tiivistetty informaatio[br]kaikesta mitä on meneillään
0:03:30.320,0:03:36.560
tehtaassa, esimerkiksi. Me tarvitsemme eri[br]sensoreita tässä tehtaassa ja meidän täytyy
0:03:36.560,0:03:41.040
ohjata eri moottoreita ja sellaisia asioita.[br]Joten tarvitsemme keskellä olevia asioita
0:03:41.040,0:03:46.400
tavallaan ohjaamaan tätä kaikkea. Ja teemme[br]tämän käyttämällä PLC:ita ja tässä
0:03:46.400,0:03:50.260
näemme miltä se voisi näyttää. Joten Peri-[br]aatteessa on syötteitä kuten puhuimme
0:03:50.260,0:03:54.240
ja ulostuloja. Ja meillä on joku logiikka[br]keskellä. Ja mitä tyypillisesti asennamme
0:03:54.240,0:03:59.840
on PLC ohjelmoitava logiikka kontrolleri[br]ja jotain logiikkaa keskellä.
0:03:59.840,0:04:04.880
On erilaisia teknologioita, joita voidaan[br]käyttää, esimerkiksi, rakenne, teksti tai
0:04:04.880,0:04:11.440
tikapuulogiikka joka ladataan PLChen ja[br]joka sitten ohjaa ulostuloja pohjautuen
0:04:11.440,0:04:16.160
Sisään tuleviin syötteisiin. Voit nähdä[br]joitain tämänkaltaisia sovellutuksia.
0:04:16.160,0:04:21.666
Esimerkiksi, kemiallisessa voimalaitoksessa,[br]kemian tehtaassa, sähköverkossa tai
0:04:21.666,0:04:28.482
jossain tuotannossa. Osa noista komponen-[br]teista ovat aika kriittisiä toiminnalle.
0:04:28.482,0:04:33.194
Vaikka näkisimme ne jokapäiväisessä[br]elämässämme ja joskus emme tosiaan
0:04:33.194,0:04:39.563
näe niitä. Mutta ne ovat siellä ohjaamassa,[br]kaikkea taustalla ja me emme
0:04:39.563,0:04:44.217
todellakaan halua noiden järjestelmien[br]hajoavan. Esimerkiksi jos menet googleen
0:04:44.217,0:04:48.451
ja etsit jotain onnettomuuksista ja kemian[br]tehtaista, voit nähdä
0:04:48.451,0:04:53.071
sulaneita tehtaita vain koska joku mis...[br]häiriö tapahtui järjestelmässä
0:04:53.071,0:04:58.817
Ja emme todella halua tämän tapahtuvan.[br]Emme vahingossa, emmekä myöskään
0:04:58.817,0:05:03.531
pahantahtoisesti. Ja tästä syystä haluamme[br]turvata kaikki prosessit jotka toimivat
0:05:03.531,0:05:09.864
tehtaissa ja sellaisissa. Olemme nähneet [br]viimeaikaisia hyökkäyksiä. Se alkoi
0:05:09.864,0:05:16.984
tavallaan 1999 ensimmäisellä tiedustelu[br]pohjaisella pääosin. Ja sen sitten olemme
0:05:16.984,0:05:22.037
saaneet joitain edistyneempiä hyökkäyksiä[br]2010, esimerkiksi kun näimme Stuxnetin
0:05:22.037,0:05:26.260
joka oli todella mutkikas operaatio.[br]Jos ajattelet sitä tekniseltä tasolta
0:05:26.260,0:05:31.688
mitä kaikkea siihen meni. Mitä eri osaamis[br]alueita oli mukana. Se on melko
0:05:31.688,0:05:38.048
vaikuttavaa. Ja sitten vielä myöhemmin[br]meillä on ollut ongelmia
0:05:38.048,0:05:45.400
Ukrainan sähköverkossa, jossa 2015 ja 2016[br]juuri ennen joulua joitain valoja
0:05:45.400,0:05:51.747
meni pois päältä melko toviksi joissain[br]kaupungeissa. Joten melkoinen vaikutus.
0:05:51.747,0:05:57.504
Joten antaaksemme hieman vaikutusta,[br]taustaa Siemens PLC:sta mitä tulee
0:05:57.504,0:06:01.908
markkinaosuuksiin. Näemme, että yhdessä[br]Rockwood automationin kanssa, Siemensilla
0:06:01.908,0:06:06.372
on yli 50% markkinaosuus. Ja tietenkin,[br]jos otamme joitain laitteita
0:06:06.372,0:06:10.422
joissa on jotain turvallisuutta, olisi[br]kiinostavaa katsoa niitä joilla on suurin
0:06:10.422,0:06:15.560
markkinaosuus. Näin toimimme tässä [br]Siemensin tapauksessa. Tässä näemme
0:06:15.560,0:06:22.030
juuri sen PLCn johon keskitymme tässä[br]esityksessä, se on Siemens S7-1200 PLC.
0:06:22.030,0:06:26.721
Se on yksi pienemmistä PLCsta, ei silti[br]pienin, siinä on logo myös, joka on silti
0:06:26.721,0:06:33.423
enemmän opettelua varten esimerkki, mutta[br]tämä on se joka on silti
0:06:33.423,0:06:39.298
tutkijoiden saatavilla oleva, kustannusten[br]kannalta. Se on jotain 250e PLCsta.
0:06:39.298,0:06:44.560
Sitten jos tarvitset virtalähteen, se [br]maksaa saman. Kunhan et riko montaa
0:06:44.560,0:06:50.208
sellaista, spoileri, rikoimme aika monta,[br]tai et pudota niitä tai sellaista, niin
0:06:50.208,0:06:55.524
pärjäät hyvin, sinä voit saada resurssit[br]leikkiäksesi niillä laitteilla
0:06:55.524,0:07:00.289
Meillä on eri sovelluksia ja[br]olemme puhuneet niistä aiemmin
0:07:00.289,0:07:08.186
Joten tässä on miltä paketin avaaminen[br]Siemens 7 1200 PLC tapauksessa näyttää
0:07:08.186,0:07:13.658
Meillä on ylänäkymä vasemmassa kuvassa.[br]Se on yksi piirilevyistä (PCB)
0:07:13.658,0:07:19.360
Jotka on kerrostettu toistensa päälle tässä[br]tapauksessa. Mutta taika oikeasti on
0:07:19.360,0:07:25.717
ylimmässä PCBssa, joka on vihreä, jonka [br]näemme tässä. Katsoessamme sitä tarkemmin
0:07:25.717,0:07:31.200
Meillä on yläkuva vasemmalla, joka näyttää[br]eri komponentteja joista
0:07:31.200,0:07:36.566
PLC rakentuu. Otetaan esimerkiksi, ARM[br]prosessori (CPU) joka meillä on tai
0:07:36.566,0:07:41.675
eri väylät sisään-ulos joita voimme kytkeä[br]PLChen, kuten puhuimme aiemmin,
0:07:41.675,0:07:47.687
joita tarvitaan jotta voidaan ohjata eri[br]osia järjestelmässä. Ja sitten meillä
0:07:47.687,0:07:56.233
on flash siru yläosassa myös, joka[br]on suuri flash siru sisältäen PLCn
0:07:56.233,0:08:04.169
laiteohjelmiston, josta puhumme[br]hieman tarkemmin myöhemmin
0:08:04.169,0:08:09.841
Kääntöpuolella, meillä on oikeassa [br]kuvassa alapuoli ensimmäisestä PCBsta.
0:08:09.841,0:08:15.378
Ja kuten näemme tässä, tämä on se missä[br]bootloader siru sijaitsee, joka on SPI
0:08:15.378,0:08:21.870
flash siru, 4 megatavua pitäen sisällään[br]Siemens PLC bootloaderin ohjelmakoodin.
0:08:21.870,0:08:29.040
Tässä halusimme yksityiskohtaisen kuvan[br]siitä miltä varsinainen prosessoriyksikkö
0:08:29.040,0:08:33.241
oikeasti levyllä näyttää ja mitä voit[br]tehdä jos haluat tietää on
0:08:33.241,0:08:38.861
voit tehdä hieman kuorintaa.[br]Ja sitä näemme tässä.
0:08:38.861,0:08:46.021
Tulos on tässä, näemme että sen ytimessä[br]on renesanssi ARM
0:08:46.021,0:08:52.712
Cortex-R4 vuodelta 2010. Ja jos myöhemmin[br]työskentelet enemmän
0:08:52.712,0:08:58.079
ohjelmiston parissa voit haluta selvittää[br]myös oikean revisio numeron mitä
0:08:58.079,0:09:04.974
se tukee ARM standardissa. Ja mitä voit[br]tehdä, on käyttää erityistä käskyä
0:09:04.974,0:09:13.442
joka sisältyy ARM käskykantaan ja[br]joilla voit dekoodata eri
0:09:13.442,0:09:17.384
bittejä siinä, jonka teimme tässä, jonka[br]näet tässä referenssinä.
0:09:17.384,0:09:22.787
Joten jos todella haluat tietää mitä on[br]meneillään, voit tutkia ne bitit ja
0:09:22.787,0:09:26.358
varmistaa, että työskentelet sen laitteen[br]parissa mitä oletitkin.
0:09:26.358,0:09:32.349
Nyt olemme tulleet muistiosuuteen[br]laitteistossa ja tässä vaiheessa
0:09:32.349,0:09:39.315
jätän teidät Alille.[br]Ali: Kiitos. Nyt kun Tobias on avannut
0:09:39.315,0:09:45.892
PLCn meille, minä aion puhua oikuista[br]ja ominaisuuksista PLC:ssa.
0:09:45.892,0:09:53.285
Kuten mainittu, se on Cortex-R4 revisio 3.[br]Se on big endian käskykanta ja siinä on
0:09:53.285,0:10:00.632
ainoastaan MPU. Joten siinä ei ole[br]visuaalista muistia periaatteessa. Siinä on
0:10:00.632,0:10:04.794
useita RAM muisti kokoja, riippuen minä[br]vuonna ostit sen ja minkä version S7
0:10:04.794,0:10:10.991
1200 ostit ja myös useita SPI flash ja[br]useita eri tyyppisiä NAND flasheja.
0:10:10.991,0:10:15.416
Merkittävin yksi ero on kuten[br]RAM. jossa he käyttävät välillä Wingbond
0:10:15.416,0:10:20.198
ja joskus he käyttävät Micron[br]Technologies, hiljattain
0:10:20.198,0:10:30.818
Micron Technologies RAM. Se on LPDDR1 RAM.[br]Oletamme SPI flash bootloaderiksi. Joten
0:10:30.818,0:10:37.243
jälleen, riippuen vaihtelusta välillä[br]yhdestä neljään megatavua SPI flashia, se
0:10:37.243,0:10:43.840
sisältää eri pankkeja, jokainen kooltaan[br]512 ktavua. Ja periaatteessa mitä bootloader
0:10:43.840,0:10:48.797
tekee, on tyypillisten bootloader toimien,[br]joita ovat laitteiston konfigurointi,
0:10:48.797,0:10:54.342
varmistaa firmwaren eheys
0:10:54.342,0:11:01.835
ennen kuin se ladataan. Me teimme hieman[br]röntgen kerroskuvausta PLClle
0:11:01.835,0:11:08.652
Se on periaatteessa 3D. Joten PCB[br]pyörii tässä koska halusimme tehdä myös
0:11:08.652,0:11:13.680
laitteiston takaisinmallinnusta. [br]Ja jollain yliopistolla oli jotain, joten
0:11:13.680,0:11:20.414
meidän ei tarvinnut mennä hammaslääkärille[br]röntgeniin. Joten tässä on nopea 15 min
0:11:20.414,0:11:26.400
röntgen, joka ei ole kovin hyvä. Mutta kun[br]menet syvemmälle, lopulta sinulla on tämä
0:11:26.400,0:11:30.960
ja voit oikeasti aivan kuin[br]se olisi ohjelmisto animaatio
0:11:30.960,0:11:36.320
Voit mennä PCBn sisälle ja nähdä kaikki[br]kerrokset. Se on uskomatonta. Se on PCB
0:11:36.320,0:11:42.480
kerros. Ja muuten, VCC ja GND, tarvitset[br]kaksi kerrosta PCB yhteyksiä periaatteessa.
0:11:42.480,0:11:50.000
Katsotaanpa käynnistys prosessia[br]jälleen, käynnistetään tavallisesti
0:11:50.000,0:11:53.840
Jotain laitteistoasetuksia tapahtuu. Kuten[br]trap ohjaimen vektorointi, esimerkiksi,
0:11:55.120,0:12:01.600
paljon ajureita eri ARM tiloille ja sitten[br]CRC tarkastus itse bootloaderille
0:12:01.600,0:12:06.240
joka on helposti ohitettavissa, koska voit
0:12:06.240,0:12:11.516
ylikirjoittaa CRCn. Tämän jälkeen boot[br]loader, erityisesti 2017, 2018 versioissa
0:12:11.516,0:12:18.960
Siemen PLCssa, sallii sinun ylikirjoittaa[br]SPI flashin. Ja lopuksi tarkastamme
0:12:18.960,0:12:25.120
CRC tarkastussumman laiteohjalmasta[br]ennen kuin se ladataan
0:12:25.120,0:12:28.960
bootloaderin itsensä koko on 128 kbyte,[br]todellisuudessa jopa vähemmän koska
0:12:28.960,0:12:35.093
puolet siitä on vain 0xff. Siemens useita[br]kertoja on vaihtanut, heillä on useita
0:12:35.093,0:12:39.368
versioita. Luulen, että kahdessa vuodessa[br]näimme 3 tai 4 muunnosta bootloaderista
0:12:39.368,0:12:44.720
Se siis kehittyi. Se ei ollut jotain jonka[br]olemassaolon kaikki ovat unohtaneet.
0:12:44.720,0:12:51.990
Kuten yleisesti mainittu, sinulla on[br]tässä ensimmäinen vaihe laitteiston
0:12:51.990,0:12:59.760
alustamisessa ja sitten luetaan[br]bootloader RAM muistiin ja
0:12:59.760,0:13:03.840
tarkastetaan bootloaderin CRC tarkastus-[br]summa, jotta sitä ei ole muuteltu ja tämä
0:13:03.840,0:13:08.400
voidaan jälleen ohittaa. Ja sitten toinen[br]vaihe laitteiston alustamisessa tapahtuu,
0:13:08.400,0:13:12.827
Ja sillä hetkellä se odottaa tiettyä[br]komentoa puolen sekunnin ajan
0:13:12.827,0:13:16.633
ja jos se saa tämän komennon se menee[br]toiseen moodiin josta puhumme myöhemmin
0:13:16.633,0:13:22.101
Muuten se periaatteessa valmistelee CRC[br]tarkastussumma taulukon laiteohjelmistolle
0:13:22.101,0:13:25.727
ja yrittää ladata laiteohjelmiston ja[br]lopulta yksinkertaisesti poistaa
0:13:25.727,0:13:30.790
muisti eston vaiheen 1 käskyn[br]teille jotka tunnette ARMin
0:13:30.790,0:13:34.846
Ja periaatteessa siirtää laiteohjelmiston[br]muistiin
0:13:34.846,0:13:38.624
Käyttöjärjestelmän nimeä ei ollut
0:13:38.624,0:13:44.238
mainittu aiemmin, se on ADONIS.[br]Tunnemme sen erilaisilla, erilaisilla
0:13:44.238,0:13:49.995
tavoilla itseasiassa. Joten ensimmäisenä[br]referenssinä laiteohjelmistossa, näemme
0:13:49.995,0:13:54.552
paljon viittauksia ADONISen, mutta se ei[br]riittänyt meille. Joten katselimme ympärille
0:13:54.552,0:13:59.200
nähdäksemme onko siihen mitään[br]lähteitä, ja no, Linkedin on hyvä
0:13:59.200,0:14:04.917
avoin lähde tiedolle. Ja oli yksi työn-[br]tekijä joka oikeasti puhui Siemens
0:14:04.917,0:14:09.840
kehittäjästä, joka puhui ADONISen [br]toiminnnasta. En tiedä miksi hän laittoi
0:14:09.840,0:14:15.360
Windowsin ja Linuxin ADONISen viereen[br]mutta pidin siitä hänen työstään. Ja
0:14:15.360,0:14:20.560
se ei ollut meille tarpeeksi. Joten ehkä[br]joku meistä jota emme tunne. Ja katsoimme
0:14:20.560,0:14:25.440
taas kauemmas ja kauemmas ja löysimme[br]tämän, joka oli paras indikaattorimme
0:14:25.440,0:14:30.240
Eli Siemens kehitysinsinööri mainitsi että[br]hän oli työskennellyt kernel ohjelmiston
0:14:30.240,0:14:34.480
kehittämiseksi ADONIS reaaliaika käyttö-[br]järjestelmään, joka oli meille hyvä merkki
0:14:34.480,0:14:39.200
Se tarkoitti, että olimme oikeassa. Nyt kun[br]tunsimme nimen ja olimme siitä varmoja.
0:14:39.200,0:14:46.160
Katsotaanpa komponentteja. Se on [br]periaatteessa käynnistyminen
0:14:46.160,0:14:53.680
0x00040040 ja sitten alustetaan kernel[br]ja tämän jälkeen useita rutiineja eri
0:14:53.680,0:14:57.535
komponenttien alustamiseksi käyttö-[br]järjestelmässä. En usko, että Siemens
0:14:57.535,0:15:02.960
jakaa sitä tällä tavalla. Meillä ei[br]ollut sellaista käyttöjärjestelmässä,
0:15:02.960,0:15:07.680
mutta teimme sen sillä tavalla. Eli[br]levitimme sen kahteen ryhmään. Joissain
0:15:07.680,0:15:11.360
on core palvelut kuten ADONIS reaaliaika[br]käyttöjärjestelmän palvelut ja jotkut
0:15:11.360,0:15:15.600
niistä liittyvät automaatio-osaan. Joten[br]niille ihmisille jotka ovat mukana
0:15:15.600,0:15:22.400
automaatiossa, kuten kirjoittavat tikapuu[br]logiikkaa ja sen sellaista, ne komennot ja
0:15:22.400,0:15:26.560
toimintokoodit jotka ovat relevantteja[br]Siemensille, he tuntevat nämä enemmän
0:15:26.560,0:15:32.480
automaatioon liittyvät palvelut. Joten on[br]PROFINET, AWP tai automated web
0:15:32.480,0:15:39.920
programming MC7 JIT parseri tikapuu[br]logiikkaa varten tai erilaista SD
0:15:39.920,0:15:46.400
eli periaatteessa heidän oma JIT kääntäjä[br]PLCn sisällä- Ja sinulla on myös OMS
0:15:46.400,0:15:51.120
tämä konfiguraatiojärjestelmä, joka on[br]automaatioon liittyvä ydinosa
0:15:51.120,0:15:58.640
automaatiojärjestelmästä ja toki hälytys[br]keskus kaikkea sellaista juttua
0:15:58.640,0:16:04.320
joka liittyy automaatioon. Käyttö-[br]järjestelmän puolella paljon kaikkea
0:16:04.320,0:16:11.040
tavallista. Tiedostojärjestelmä, PDCFS,[br]josta Tobias puhuu myöhemmin
0:16:11.040,0:16:18.480
TCP/IP pino, joitain C / C++ kirjastoja,[br]jotka eivät ole Siemensiltä, ne ovat
0:16:18.480,0:16:23.119
Dinkumware ja Miniweb server[br]ja MWSL parseri
0:16:23.119,0:16:25.470
tai Miniweb Scripting Language parseri
0:16:25.470,0:16:30.160
Ja paljon erilaisia alikomponentteja, mikä[br]on tavallista käyttöjärjestelmässä kuin
0:16:30.160,0:16:36.640
käyttöjärjestelmässä. Lisäksi siellä on[br]joitain viittauksia CoreSight:iin. En tiedä
0:16:36.640,0:16:40.720
moniko teistä tuntee CoreSight:in tai[br]paljonko teette ARMin kanssa, mutta perus
0:16:40.720,0:16:46.400
Coresight on jotain vastaavaa kuin Intelin[br]prosess tracing tai Intelin PT seuraamaan
0:16:46.400,0:16:52.640
sovelluksia ja jota voi käyttää saamaan[br]code-coverage, esimerkiksi. Ja laitteiston
0:16:52.640,0:16:58.720
osa on hyvin dokumentoitu Thomas Weberin[br]toimesta tänä vuonna, ei vielä.
0:16:58.720,0:17:04.000
mutta tänä vuonna. Black Hat aasiassa[br]mutta minun pitää varoittaa teitä koska
0:17:04.000,0:17:08.560
sain joitain sähköposteja, jotkut kyselivät[br]siitä. Jos kytkeydyt siihen, PLC:ssa on
0:17:08.560,0:17:12.880
joku vianselvitys ominaisuus, joka tun-[br]nistaa kun sitä tutkitaan JTAG kautta
0:17:13.840,0:17:18.960
ja se ylikirjoittaa NAND-flashin random [br]jutulla. Joten tuhoat PLCn, eli kytkeydy
0:17:18.960,0:17:23.838
siihen omalla riskillä.[br]Seuraavaksi katsotaanpa
0:17:23.838,0:17:27.530
CoreSIghtia nopeasti. CoreSight:ssa[br]on periaatteessa... ennen kuin
0:17:28.180,0:17:30.880
menen siihen, minun pitää mainita[br]mainita, että Ralf Philipp:lla
0:17:30.880,0:17:37.600
on myös hyvä esitys 0 night:ssa CoreSight[br]jäljestämisestä. Joten suosittelen, että
0:17:37.600,0:17:41.920
katsotte myös sen.[br]Yleisesti, CoreSight:ssa on kolme
0:17:41.920,0:17:46.800
pääosaa tai komponenttia: Lähteet, linkit[br]ja sinkit ja sinkit ovat ne osat, joista
0:17:46.800,0:17:51.280
saat trace informaation ja lähteet ovat[br]se jolla kerrot prosessorille
0:17:51.280,0:17:56.630
minkälaisista lähteistä haluat dataa ja
0:17:56.630,0:18:03.200
linkit muuttavat nämä lähteet. Täytyy mainita
0:18:03.200,0:18:08.227
että usein se on hyödyllistö fuzzatessa[br]myös. Luulen, että jotkut
0:18:08.227,0:18:12.560
harvat, mutta jotkut, työskentelevät asian[br]parissa. Kattavuuden ohjaama fuzzing
0:18:12.560,0:18:16.480
CoreSight kautta, ARM Coresightin. Joten on[br]mahdollista, että vastaava implementointi
0:18:16.480,0:18:25.680
tapahtuu kuin Intel PT, esimerkiksi KAFL,[br]WinAFL tai Hingfuzz. Eli lähteet, niillä
0:18:25.680,0:18:30.640
on kolme eri komponenttia. STM, PTM, ETM.[br]ETM versio 4 on sen uusin versio
0:18:30.640,0:18:37.600
Ja periaatteessa sinulla on myös linkit jotka[br]yhdistävät eri lähteet eri, kuin
0:18:37.600,0:18:45.440
eri tai yhden lähteen tai tiettyyn[br]sink:iin
0:18:46.080,0:18:52.198
Ja sitten on suppiloita CoreSightlle,[br]anteeksi sinks, anteeksi. Sinulla on sinkeja
0:18:52.198,0:18:56.144
jotka ovat eri asia. Eli on olemassa eheys[br]prosessorille, joka on 4 kilotavua
0:18:56.144,0:19:02.560
puskuri SRAM tai sinulla on järjestelmä-[br]muisti tai jopa TPIU tai esimerkiksi
0:19:02.560,0:19:09.416
JTAG DP portti High Speed JTAG portti.[br]Nyt kun sink on käyty läpi, kuten CoreSight
0:19:09.416,0:19:14.800
teimme kyselyjä S7:lle CoreSight esiinty-[br]misestä ja kuten voit havaita
0:19:14.800,0:19:21.228
ohjelmisto on jo implementoitu.[br]Eli ohjelmistossa on viittauksia
0:19:21.228,0:19:26.960
että he käyttävät tai konfiguroivat[br]CoreSight:ia PLCssa
0:19:26.960,0:19:32.720
Ja voimme nähdä, että ETM versio[br]ei ole uusin, se on ETM
0:19:32.720,0:19:39.520
versio 3. Nyt kun olen puhunut[br]CoreSight:sta, Tobi voi puhua
0:19:39.520,0:19:43.200
laiteohjelmisto dumpista.[br]Tobi: Joten siirrytään johonkin joka
0:19:43.200,0:19:49.476
on minulle paljon tutumpaa ja joka tuntuu[br]minusta helpommalle, se on laiteohjelmisto
0:19:49.476,0:19:53.440
dumpit, tai ohjelmistot yleisesti, mutta[br]firmware dumpit, se on mistä eniten
0:19:53.440,0:19:59.840
haluan puhua PLCssa tai mitä koitan[br]ymmärtää PLCssa. Siemensin tapauksessa
0:19:59.840,0:20:06.960
meillä on 13 megatavun binääri. Ja vaikka[br]alussa se ei tunnu paljolta,
0:20:06.960,0:20:14.800
mutta kun vähän pyörittelet ja hyödynnät[br]IDA Python funktioita ja sellaista
0:20:14.800,0:20:19.440
sinulla on suunnilleen 84000 funktiota[br]joka ei ole jotain,
0:20:19.440,0:20:25.920
mitä haluaisit tehdä käsin. Lisäksi 84000 [br]funktion laiteohjelmisto image
0:20:25.920,0:20:31.840
ei voita seksikkäimmän laiteohjelmiston[br]palkintoa, eihän? Arvaan näin.
0:20:31.840,0:20:38.000
Mutta tämä on se mitä näin ja mitä [br]katsomme tarkemmin muutaman
0:20:38.000,0:20:43.200
minuutin päästä. Kuten näette, meillä on[br]eri nimiä tuolla ylhäällä.
0:20:44.000,0:20:48.800
Meillä on jotain, jota kutsutaan[br]_joku_hae_jotain_suuri_koko. Tämä
0:20:49.520,0:20:53.760
on tapani sanoa, ettei minulla ole aavis-[br]tustakaan mitä tässä funktiossa tapahtuu,
0:20:53.760,0:20:58.400
mutta voimme myös nähdä joitain merki-[br]tyksellisiä funktioita. Joten ymmärsimme
0:20:58.400,0:21:03.920
joitain osia paremmin. Joitain osia[br]huonommin, mutta katsoin joka puolelle
0:21:03.920,0:21:11.360
Mennäänpä nyt paljon osoitteistoja[br]käsittelevään osaan. Odotimme paljon
0:21:11.360,0:21:16.880
yksityiskohtia, jotka olisivat kiinostavia[br]jos alat katsomaan firmwarea ja voisin
0:21:16.880,0:21:19.000
selittää miksi ne voisivat kiinnostaa.
0:21:21.120,0:21:26.320
Ensinnäkin täytyy tietää, että coretex[br]antaa bank registerin
0:21:26.320,0:21:32.800
Se on toiminnallisuus joka on implementoitu[br]pienentämään kokoa ja sallimaan
0:21:32.800,0:21:40.560
saumattomat moodit sisäiselle prosessorille.[br]Ja saamme bank pinon jokaiselle suoritus
0:21:41.120,0:21:47.360
tilalle. Joten jos haluemme tietää mitä[br]on meneillään firmwaren tilassa
0:21:47.360,0:21:51.200
jollain hetkellä, haluamme ehkä katsoa eri[br]pinoja eri tiloissa eri aikoina.
0:21:51.200,0:21:56.880
Ja tämä on osoitteisto, jolta odotamme tätä
0:21:56.880,0:22:02.640
Ja sitä voi käyttää lähtökohtana, mikäli[br]alat takaisinmallintaa asioita
0:22:02.640,0:22:07.520
Nyt meillä on joitain osoitteita,[br]joitain tauluja joissa on osoitteita
0:22:07.520,0:22:16.080
Ensimmäinen on RAM kartoitus, joka[br]näyttää mitä toiminnallisuutta
0:22:16.080,0:22:23.120
tai mitä voit odottaa kun katsot laite-[br]ohjelmiston koodia, joka
0:22:23.120,0:22:28.160
on yhteydessä eri osiin muistia.[br]Jos ensin menet katsomaan ARM koodia
0:22:28.160,0:22:33.120
voit nähdä vain satunnaisia yhteyksiä eri[br]paikkoihin muistissa ja voit haluta ottaa
0:22:33.120,0:22:39.040
selvää mitä se oikeasti tekee. Ja se[br]näyttää tylsältä, se on vain osoite
0:22:39.040,0:22:45.200
ja sitä kysellään, etkä tiedä mitä tapahtuu
0:22:45.200,0:22:49.680
Esimerkiksi, jos katsoit osoitetta teksti [br]osassa, odotit että siinä on
0:22:49.680,0:22:55.120
koodia, jos halusit nähdä jotain[br]globaalia staattista dataa, halusit
0:22:55.120,0:22:59.040
etsiä dataa BSS osiosta. Ja lopulta,[br]mikäli halusit katsoa heap muistia
0:22:59.040,0:23:04.400
tai kuinka kanavat on asetettu siinä,[br]etsisit sitä uninitialize osasta
0:23:04.400,0:23:09.760
ja se kulkee näin eri osissa.[br]Toinen erittäin kiinostava
0:23:09.760,0:23:14.480
asia katsoa, jos yrität takaisin[br]mallintaa firmwarea on että haluat
0:23:14.480,0:23:20.480
tavallaan tietää mikä on se laitteisto[br]josta koodi on peräisin, jota se käsittelee
0:23:22.000,0:23:29.760
Ja tässä tapauksessa dumppasimme[br]joitain alueita ja takaisinmallinsimme
0:23:29.760,0:23:35.120
mitä varten ne alueet ovat, jota kutsutaan[br]muistikartoitetuksi I/Oksi. ARM
0:23:35.120,0:23:39.360
keskustelee laitteiston kanssa periaatteessa[br]jonoamalla maagista arvoa osoiteavaruudessa
0:23:39.360,0:23:43.040
ja sitten se saa jotain takaisin, mikä ei[br]ole yhtään samaa, mitä sinne oli
0:23:43.040,0:23:48.560
aiemmin kirjoitettu. Eli se on osoite joka[br]siirretään sinne reunan yli.
0:23:48.560,0:23:53.600
Laitteiston reunan, samassa järjestelmässä[br]sirulla. Ja tässä näemme, että meillä
0:23:53.600,0:23:57.360
on erilaisia järjestelmään liittyviä[br]laitteita kiinni siinä. Esimerkiksi
0:23:58.000,0:24:03.040
voimme puhua Siemens PLClle eri[br]sarjaprotokollia käyttäen ja ne protokollat
0:24:03.040,0:24:08.800
voivat olla SPI tai I²C. Ja vasemmalla[br]puolella on, aika keskellä ylhäällä
0:24:08.800,0:24:15.840
mikä otti siihen osaa, jotain siihen[br]alueeseen liittyvää. Ja sitten näit
0:24:15.840,0:24:21.920
jonkun toisen koodin puhuvan ajastimille,[br]esimerkiksi, tietäisit että olet silloin
0:24:21.920,0:24:26.288
ajastinmaassa sillä hetkellä tai[br]schedulerissa tai jossain sellaisessa
0:24:26.288,0:24:27.520
Viimein meillä on
0:24:27.520,0:24:33.680
MPU konfuguraatioita, jotka ovat Memory[br]Protection Unit konfiguraatioita, kuten
0:24:33.680,0:24:38.880
Ali kertoi aiemmin. Mitä näemme on, että[br]Siemens oikeasti käyttää joitain näistä
0:24:38.880,0:24:44.080
konfiguraatioista suojatakseen osia[br]muistista. Näemme, esimerkiksi, että
0:24:44.080,0:24:49.360
missä, koska tahansa on XN, älä suorita[br]bitti on, asetettu koodia ei suoriteta
0:24:49.360,0:24:53.840
siinä osoiteavaruudessa tai se on vain[br]luku alue. Emme todellakaan halua
0:24:53.840,0:24:59.280
kirjoittaa sitä yli. On kiinnostavaa, että[br]he alkoivat käyttämään tätä tapaa.
0:24:59.280,0:25:06.240
Tässä näemme mitä oikeasti tapahtuu kun[br]laitekoodi itse boottaa käyntiin
0:25:06.240,0:25:11.840
Paljastui, ettei firmware halua olla liian[br]riippuvainen siitä mitä bootloader teki
0:25:11.840,0:25:16.720
Todennäköisesti eri teamit tekevät eri[br]asioita. Ja pitääkseen yhteydet niin
0:25:16.720,0:25:22.371
pieninä kuin mahdollista, he tavallaan[br]tekevät uudelleen asoita, joita bootloader
0:25:22.371,0:25:27.040
koodi tekee myös. Se asettaa vektori taulun[br]keskeytysten käsittelyyn ja se kaltaisia
0:25:27.040,0:25:31.680
asioita. Kun sitten ohitamme tämän[br]alustavan vaiheen, me haluamme
0:25:31.680,0:25:36.960
bootata ADINIS kernelin, josta Ali puhui[br]aiemmin. Ensinnäkin, siellä on
0:25:36.960,0:25:42.160
array function pointereita, joita kutsutaan[br]aina jokaista toimintoa varten, joita
0:25:42.160,0:25:47.200
näimme tässä yhteenvedossa ADONIS:en[br]eri komponenteista. Joten jos halusit
0:25:47.200,0:25:51.040
katsoa minkälaisia komponentteja siinä on[br]tai minkälaisia toiminnallisia osia siellä
0:25:51.040,0:25:55.680
on. Tämä on todella kiinnostava lista[br]funktioista, funktion käsittelijöistä
0:25:55.680,0:26:01.520
tutkittavaksi ja se myös asettaa joitain[br]hallintarakenteita ja asioita kuten tämä
0:26:01.520,0:26:07.840
jollaisen tyyppillisen käyttöjärjestelmän[br]pitäisi asettaa. Joten katsotaan tarkemmin
0:26:07.840,0:26:14.480
eri komponentteja ADONISsa. Ensin tiedosto-[br]järjestelmä. PLC täyttää määritelmät
0:26:14.480,0:26:20.240
Joskus se on kuinka hyvin se kestää eri[br]lämpötiloja, kuinka matalassa lämpötilassa
0:26:20.240,0:26:26.480
voin käyttää tätä PLCta, ilman että[br]se menettää toiminnallisuuksia
0:26:26.480,0:26:33.360
Ja tässä tapauksessa, he haluavat myös [br]turvallisuutta häiriöiden varalta
0:26:33.360,0:26:38.160
virtalähteessä. Joten he kehittivät oman[br]tiedostojärjestelmän, jota kutsutaan
0:26:38.160,0:26:42.640
"Powered Down Consistency File System",[br]jonka he implentoivat firmwareen ja näemme
0:26:44.080,0:26:56.160
yhden työkokemus rivin yhdellä[br]entisellä Siemensin työntekijällä
0:26:56.160,0:27:03.360
joka kertoi työskennelleensä[br]tämän tiedostojärjestelmän parissa
0:27:03.360,0:27:07.680
toinen erittäin kriittinen osa toimintoja[br]on tietenkin, että haluamme keskustella
0:27:07.680,0:27:14.560
PLClle ja se haluaa keskustella meille.[br]Yksi näistä tavoista on TCP/IP
0:27:14.560,0:27:19.280
Ja tämä paljastaa Web palvelun esimerkiksi,[br]sekä muita komponentteja
0:27:19.280,0:27:26.000
Tässä tapauksessa huomaamme, että Siemens[br]ei rakentanut itse omaa, mikä on
0:27:26.000,0:27:31.150
todennäköisesti hyvä ajatus.[br]He käyttävät InterNiche TCP/IP
0:27:31.150,0:27:34.944
pinoa, jonka versio on 3.1
0:27:34.944,0:27:37.760
Jos olet hyvä googlettamaan[br]voit löytää jotain lähdekoodia
0:27:37.760,0:27:41.600
ja voit kartoittaa tämän firmwaren ja [br]kuinka se toimii. Joten se voisi
0:27:41.600,0:27:48.880
antaa sinulle wrapper funktioita, kuten[br]luoda socketeja ja sellaista ja voisit löytää
0:27:48.880,0:27:53.573
ne helpommin firmware imagesta
0:27:53.573,0:28:00.666
Yksi erittäin kriittinen ohjalmakomponentti[br]firmwaressa on päivitys. Se sallii
0:28:00.666,0:28:06.647
päivittämisen ja Siemens PLC sallii[br]päivitykset, siinä on eri moodeja. Yhdessä
0:28:06.647,0:28:12.248
moodissa sinä vain raahaat ja pudotat UPD[br]tiedoston, päivitystiedoston web palvelimelle
0:28:12.248,0:28:18.886
ja se alkaa tarkastamaan firmwarea, eheyttä[br]ja allekirjoitusta ja niin edelleen. Toinen
0:28:18.886,0:28:24.714
tapa on tehdä se SD kortin kautta, joka on[br]mahtavuutta 24 megatavua edulliseen
0:28:24.714,0:28:30.807
hintaan 250 euroa. Voit hankkia sen.[br]En usko, että päihität
0:28:30.807,0:28:39.257
sitä suhdetta. Mikäli purat sellaisen[br]UPD tiedoston saat
0:28:39.257,0:28:43.142
toisen esityksen siitä muistissa.[br]Ja teimme sille vähän
0:28:43.142,0:28:47.389
takaisinmallinnusta ja saimme[br]erilaisia kenttiä, en ole varma näettekö niitä
0:28:47.389,0:28:53.711
mutta se oli eri offset:ja itse[br]binääritiedostoon
0:28:53.711,0:28:57.953
Se on lähtöpiste firmwaren maagiseen[br]headeriin jolla varmistetaan ettei asiat
0:28:57.953,0:29:03.768
ole liian sekaisin ja CRC kokonaisuudelle[br]esimerkiksi. Otimme talteen joitain
0:29:03.768,0:29:11.704
osoitteita firmwaressa, jotka auttavat[br]löytämään jalansijan siihen logiikkaan
0:29:11.704,0:29:17.721
jota käsitellään ja se antaa sinulle [br]osoitteita, joihin voit verrata niitä jatkossa
0:29:17.721,0:29:23.384
Seuraava komponentti jota tutkimme on[br]Miniweb, joka on web palvelin.
0:29:23.384,0:29:30.040
Se tavallaan paljastaa sinulle erilaisia[br]sisäisiä osia PLCssa ja missä tilassa
0:29:30.040,0:29:35.359
missä tilassa eri GPIOt, General Purpose [br]Input Output ovat. Inputit
0:29:35.359,0:29:41.827
ja Outputit, sekä mikä on PLCn itsensä[br]tila ja miten se paljastaa sen
0:29:41.827,0:29:49.608
käyttäen MWSL kieltä. Miniweb Scripting[br]Language. Se on kuten näemme seuraavassa,
0:29:49.608,0:29:55.129
seuraavassa, kalvossa ja puhumme siitä[br]hetken päästä tarkemmin.
0:29:55.129,0:30:01.890
Olemme käynnistäneet, palvelun kuten[br]myös yhden palvelukäsittelijän
0:30:01.890,0:30:08.585
ADONIS alustus funktioista, joihin[br]viittasin vähän aiemmin
0:30:08.585,0:30:13.727
Katsotaan vähän dokumentoimattomia http [br]käsittelijöitä, joiden uskon olevan
0:30:13.727,0:30:18.237
kiinnostavia. Omat suosikkini ovat[br]"lililili" ja "lolololo"
0:30:18.237,0:30:20.391
naurua
0:30:20.391,0:30:25.184
... ja jos yhdistät ne nokkelasti, ehkä[br]joku on musiikkillisesti
0:30:25.184,0:30:33.228
lahjakas ja voi tehdä niistä laulun.[br]Olisin kiinnostunut kuulemaan sen
0:30:33.228,0:30:37.581
Siirrytään MWLS, Miniweb Scripting[br]Language:en. Se tavallaan
0:30:37.581,0:30:42.676
paljastaa sisäiset toiminnot sallimalla[br]sinun injektoida html sivulle
0:30:42.676,0:30:47.336
konfiguraatio templaten avulla eri[br]parametreja ja sellaista.
0:30:47.336,0:30:53.920
Esimerkiksi, kuten näemme tässä ylhäällä[br]oikeassa kulmassa, näet prosessorin kuorman
0:30:53.920,0:30:59.411
järjestelmässä tietyllä hetkellä. Se ei[br]vaikuta suorittavan mitään ulostulon
0:30:59.411,0:31:05.700
koodausta, eli se tavallaan luottaa siihen[br]mitä tulee ulos. Joten voi olla fiksuja
0:31:05.700,0:31:12.902
tapoja tehdä web temppuja tämän kanssa[br]ja myös tämän tokenisoinnin parsiminen
0:31:12.902,0:31:19.429
on tavallaan mutkikasta. Tutustuin siihen[br]vähän ja sen implementointia voisi olla
0:31:19.429,0:31:24.753
kiinnostavaa tutkia, mutta pääsemme sen[br]kaltaisiin asioihin vähän myöhemmin
0:31:24.753,0:31:30.407
Tämän kanssa pääsemme meidän[br]varsinaisiin löydöksiin
0:31:30.407,0:31:33.927
ja puhumme niistä vähän lisää. Ja tässä[br]kohtaa Ali jatkaa.
0:31:34.605,0:31:43.120
Ali: Kiitos Tobi. Nyt puhumme kyvyistä,[br]jotka ovat bootloaderissa, jotka
0:31:43.120,0:31:48.960
sallivat meille rajoittamattoman[br]koodin ajamisen, periaatteessa
0:31:48.960,0:31:54.640
tämä ominaisuus on käytettävissä uart:ssa[br]Joten tarvitset fyysisen pääsyn laitteeseen.
0:31:55.600,0:32:00.880
Mutta kun sinulla on fyysinen pääsy, voit[br]tavallaan, kuten Tobias myöhemmin kertoo,
0:32:00.880,0:32:05.120
voimme itseasiassa ohittaa turvallisuus[br]järjestelmät, jotka Siemens on kehittänyt
0:32:05.120,0:32:11.208
heidän tuotteeseen. Joten tarvitset uart[br]pääsyn kuten dokumentoitu tässä, sinulla on
0:32:11.208,0:32:20.240
TX, RX ja GND PLC:ssa ja uart oli tosiaan[br]edellisessä tutkimuksessa jo dokumentoitu.
0:32:20.240,0:32:25.840
Jokainen osoite, josta puhun tässä tai[br]mainitsen tässä esityksessä
0:32:25.840,0:32:31.440
ovat bootloader versio neljä.yhteen.[br]Kuten mainittu aiemmin, Siemens
0:32:31.440,0:32:38.240
aktiivisesti muokkaa bootloaderia, joten [br]luulen, ettö kahdessa vuodessa näimme 2-3
0:32:38.240,0:32:44.640
muokkausta tai erilaista versiota heidän[br]bootloaderista tulevan. Joten juuri
0:32:44.640,0:32:50.160
tämä pohjautuu siihen puolen sekunnin[br]odottamiseen tiettyä komentoa sekunttia
0:32:50.160,0:32:56.320
laitteen configuraation tapahduttua. Se [br]koskee Siemens S7-1200 mukaan lukien
0:32:56.320,0:33:02.800
SiPLUS ja S7-200 SMART. Itse asiassa joku[br]Kasperskyltä. IS Security mainitsi
0:33:02.800,0:33:08.000
siitä. Me emme edes tienneet siitä.[br]Me vain tutkimme S7-1200:sta. Mutta
0:33:08.000,0:33:14.400
Siemens myöhemmin päivitti sen ohjeistuksen[br]joka koskee muita tuotteita myös.
0:33:14.400,0:33:19.392
Joten puhutaan tästä, erikois pääsy[br]ominaisuudesta. Kuten mainitsit, yksi
0:33:19.392,0:33:22.821
asia, jonka bootloader itse asiassa[br]alustaa raudan. Tämän jälkeen laite
0:33:22.821,0:33:27.360
se tavallaan kopioi osan bootloaderin[br]sisällöstä itseensä muistisegmenttiin
0:33:27.360,0:33:36.000
jota kutsutaan IRAM:ksi, periaatteessa. Ja[br]sitten PLC odottaa puoli sekuntia tiettyä
0:33:36.000,0:33:39.680
komentoa. Ja kun se tämän saa, tämän[br]tietyn komennon se vastaa
0:33:39.680,0:33:44.160
tietyllä merkkijonolla ja se tapahtuu [br]uart:in yli. Joten jos lähetät
0:33:44.160,0:33:50.348
taikajonon, MFGT1, anteeksi huono saksani,[br]mutta se todennäköisesti tarkoittaa
0:33:50.348,0:33:57.939
"Mit freundlichen Grüßen", toivon että tein[br]se oikein. Ja sen jälkeen PLC vastaa
0:33:57.939,0:34:02.080
"-CPU" ja sanoo, että nyt olet tässä[br]erikois pääsy tilassa. Odotan sinun
0:34:02.080,0:34:10.880
komentoja. Ja tässä osoitteessa on myös[br]uskon 0xedf8 bootloaderissa. Joten tässä
0:34:10.880,0:34:16.480
on dekoodaus meidän clientista, jonka[br]julkaisemme ensi vuonna, itse asiassa,
0:34:16.480,0:34:25.120
josta näet, se on 2d435055, joka on se[br]"-CPU" vastaus PLC:lta. Joten nyt olemme
0:34:25.120,0:34:30.560
siinä sisällä. Ja me myös lisäsimme vähän[br]extra viestiä tähän paketin formaattiin
0:34:30.560,0:34:36.880
Joku kysyi aikaisemmin. Eli kun lähetät[br]tämän komennon, saat useita toimintoja
0:34:37.600,0:34:43.360
tästä esityksestä käyttöön. Kutsumme niitä[br]käsittelijöiksi ja periaatteessa ne ovat jotain
0:34:43.360,0:34:49.840
jota kutsumme pääkäsittelijöiksi.[br]se on jotain 128 merkintää ja siellä on
0:34:49.840,0:34:57.600
noin 3 erillistä käsittelijää, jotka ovat[br]kuin 0x80 uart konfigurointi ja moikka.
0:34:57.600,0:35:01.680
Pääkäsittelijässä on paljon asioita.[br]Jos palaat taaksepäin kaksi kalvoa
0:35:01.680,0:35:10.882
minulla on firmware versio tässä,[br]4.2.3 ja periaatteessa mitä
0:35:10.882,0:35:14.886
tapahtuu on, että periaatteessa se on[br]tämä komento tässä, get bootloader
0:35:14.886,0:35:19.724
version. Me vain pyydämme erityis[br]pääsy ominaisuutta kertomaan meille
0:35:19.724,0:35:24.776
mikä on bootloader versio. Ja voit myös[br]tehdä paljon alemman tason diagnostiikkaa
0:35:24.776,0:35:28.930
toiminnot tapahtuvat siellä. Myös jotkut[br]firmwareen liittyvät päivitystoimet
0:35:28.930,0:35:34.515
tapahtuvat siellä, jotka ohittavat taval-[br]liset kryptografiset varmistukset
0:35:34.515,0:35:42.540
firmwaresta, eikä niitä tarvita. Joten[br]vilkaistaan niitä, koska tämä työ, josta
0:35:42.540,0:35:46.632
puhumme, me pääasiassa käytimme vain[br]kahta käsitteijää, joten emme käytä...
0:35:46.632,0:35:51.515
emme katso tai emme nyt puhu kaikista[br]muista
0:35:51.515,0:35:58.281
128 käsittelijästä jotka ovat PLC:ssa. [br]Joten se toimii. Yksi käsittelijöistä,
0:35:58.281,0:36:05.907
meitä kiinnostava, oli käsittelijä 0x80[br]joka mainitaan tässä, päivitysfunktio.
0:36:05.907,0:36:11.066
Se periaatteessa antaa sinulle luvan[br]kirjoittaa tiettyyn osaan muistia
0:36:11.066,0:36:17.259
IRAM, joka aiemmin kopioi osan[br]bootloaderin sisällöstä. Käytännössä
0:36:17.259,0:36:21.731
lähetät tämän käsittelijän tämän kättelyn[br]jälkeen, sinun pitää tehdä tämä MFGT1 ja
0:36:21.731,0:36:25.787
sitten -CPU. Ja sitten pariaatteessa aiot[br]lähettää tämän käsittelijän ja se tavallaan
0:36:25.787,0:36:29.713
tarkastaa, koska joka käsittelijällä voi[br]olla eri vaatimukset. Tarkastaa
0:36:29.713,0:36:34.234
argumenttien määrän, esimerkiksi, ja[br]sitten olet tässä päivitys funktio tilassa
0:36:34.234,0:36:38.840
Sitten sinun pitää antaa kohde ID koska[br]siinä on 4 alifunktiota saatavilla
0:36:38.840,0:36:45.348
Kun siirryt tähän tilaan ja jotkut niistä[br]ovat IRAM:ia, SPI:ta tai IOC:a tai
0:36:45.348,0:36:51.548
Flashia varten, ja jokaista varten, sinun[br]pitää valita minkälaisen operaation haluat
0:36:51.548,0:36:58.026
tehdä, haluatko konfiguroida, lukea, [br]kirjoittaa tai tarkastaa. Ja voit tehdä
0:36:58.026,0:37:02.883
kaikkia näitä. Voit lukea ja kirjoittaa[br]IRAMia. Periaatteessa tämä on funktio
0:37:02.883,0:37:09.736
käsittelijä 0x80:ssa. Seuraavaksi on pää[br]käsittelijä 0x1c. Tämä on listattu tässä
0:37:09.736,0:37:19.869
listassa, tässä. Se, se periaatteessa sallii[br]sinun kutsua funktioita. Periaatteessa nämä
0:37:19.869,0:37:24.004
funktiot on listattu IRAMssa. Ja mitä[br]tavallaan teet, on että lähetät tämän
0:37:24.004,0:37:29.400
kättelyn, sinä olet ja sinä olet tämä.[br]Periaatteessa tämä on 0xc1 käsittelijä ja
0:37:29.400,0:37:34.520
sitten voit kutsua ID numeroa sille [br]käsittelijälle jota haluat käyttää.
0:37:34.520,0:37:41.920
Tässä on useita käsitteöijöitä tarjolla[br]0x1c:lle. Joten kysymys on mitä voimme
0:37:41.920,0:37:50.845
tehdä sillä. Ja ennen kuin kysyn Tobiakselta[br]Kysyn kaikilta täällä, ideoita ? Trace,
0:37:50.845,0:37:53.939
joku sanoi trace. En tiedä mitä se[br]tarkoittaa, mutta
0:37:53.939,0:37:57.875
muminaa yleisössä
0:37:57.875,0:38:04.162
OK, tarkoitat JTAG kanssa? CoreSight[br]kanssa? Ei, emme aio käyttää sitä
0:38:04.162,0:38:07.162
Joten kysytään Tobiakselta mitä hän[br]pystyy tekemään.
0:38:07.162,0:38:11.440
Tobias: Yaeh, katsottaessa dynaamisesti ja[br]näkien mitä se tekee muistin kanssa on,
0:38:11.440,0:38:15.232
luulen, hyvä ajatus yleisesti. Jos vaikka[br]staattinen takaisinmallinnus ei anna
0:38:15.232,0:38:20.723
sinulle mitään. Tässä tapauksessa katsoime[br]tai minä katsoin läpi eri funktioita
0:38:20.723,0:38:26.581
ja koitin selvittää, mitä voin tehdä[br]niillä
0:38:26.581,0:38:32.080
Kun aloitin katsomaan tätä erikois[br]pääsy ominaisuutta, näin periaatteessa
0:38:32.080,0:38:37.475
että siinä koodissa on liikaa meneillään.[br]Tavallaan tunsin, että tiesin mitä
0:38:37.475,0:38:42.418
pitäisi olla meneillään. Bootloader, mitä[br]sen pitäisi olla tekemässä, mutta se
0:38:42.418,0:38:50.171
tuntui vain olevan liikaa. Ja kuinka voimme[br]yhdistää ne kaksi funktiota on kertausta.
0:38:50.171,0:39:01.672
Käytetään tätä 0x1c käsitelijää, joka [br]antaa meille kontrollin, minkälaista
0:39:01.672,0:39:07.558
toisen listan funktioista kutsutaan, kuten[br]näimme aiemmin, kopioidaan käynnistymis
0:39:07.558,0:39:13.720
prosessissa sijaintiin IRAMssa ulkoiselta[br]read only muistilta. Ja tämä
0:39:13.720,0:39:19.862
paljastaa tämän funktiokäsittelijä taulun[br]kaikelle mikä voi kirjoittaa IRAM:iin. Ja
0:39:19.862,0:39:25.954
kuten opimme aiemmin, 0x80 käsittelijä[br]pienissä määrin, pystyy tekemään juuri
0:39:25.954,0:39:32.133
sen. Ja tässä näemme mitä voimme koittaa[br]tehdä sillä. Joten käytämme ensimmäisessä
0:39:32.133,0:39:38.533
vaiheessa 0x80 käsittelijää kirjoittamaan [br]IRAMiin. Voimme todellisuudessa injektoida
0:39:38.533,0:39:43.921
Toisen funktiopointerin yhdessä konfiguraatio[br]arvojen kanssa, joka ohittaa erilaiset
0:39:43.921,0:39:49.580
tarkastukset argumenttien koolle ja sen[br]sellaiselle. Voimme injektoida tämän
0:39:49.580,0:39:56.286
merkintänä tauluun ja voimme kirjoittaa[br]tauluun myös payloadin, jota käytämme
0:39:56.286,0:40:02.760
shell koodina. Ja sitten toisessa vaiheessa[br]voimme käyttää tätä aiemmin injektoitua
0:40:02.760,0:40:11.971
indexia jonka määritimme, laukaisemaan[br]kutsun omaan payloadiimme. Joten nyt
0:40:11.971,0:40:17.160
meillä on ajossa koodia bootloader[br]kontekstissa. Joka on niin etuoikeutettu
0:40:17.160,0:40:24.213
kuin mihin tässä vaiheessa pääsemme. Ja[br]voimme leikkiä vähän sen kanssa.
0:40:24.213,0:40:29.560
Ja yhteenvetona voimme ketjuttaa kaiken[br]tämän yhteen ja saamme koodin suorituksen
0:40:29.560,0:40:35.619
Ja Alin sanoin, tällä tekniikalla[br]raketoimme PLCn. Ja ennen kuin
0:40:35.619,0:40:40.903
menemme siihen, mitä tämä antaa meidän[br]tehdä, sananen vaiheistetusta payloadista
0:40:40.903,0:40:47.003
Eli kirjoitin tämän ketjun erilaisia[br]kutsuja ja paljastui, että tämä
0:40:47.003,0:40:52.326
kirjoittaminen IRAMiin on jotenkin[br]ensinnäkin hidasta, mutta myös herkkä
0:40:52.326,0:40:56.736
virheille, joten laite voi mennä virhetilaan[br]enkä ole aivan varma mitä se koskee
0:40:56.736,0:41:03.498
mutta olisi mielenkiintoista kuulla se[br]Siemens insinööriltä, mutta se johti
0:41:03.498,0:41:08.672
minut injektoimaan vähän enkoodattua[br]payloadia, jossa on vain osa
0:41:08.672,0:41:16.345
tavuista, joka antaa meille liittymän[br]suorittaa
0:41:16.345,0:41:20.124
lukuja ja kirjoittamisia mielivaltaisesti[br]kirjoittaa ja käyttää tätä injektoidessa
0:41:20.124,0:41:25.002
tason kaksi payloadit. Ja tätä haluamme[br]havainnollistaa tässä.
0:41:26.741,0:41:32.796
Ali: Kiitos, nyt voisimme esittää demon, [br]4 demoa itse asiassa. Ensimmäinen on
0:41:32.796,0:41:37.156
vain kommunikaation näkeminen, peri-[br]aatteessa lähetetään nämä pyynnöt ja
0:41:37.156,0:41:42.265
saadaan vastaus ja periaatteessa lähetetään[br]tämä data payload. Ylhäällä on raaka
0:41:42.265,0:41:48.493
UART kommunikaatio. Älkää huolehtiko, se[br]suurennetaan myöhemmin ja alhaalla on
0:41:48.493,0:41:55.568
meidän client, joka keskustelee PLClle[br]ja lähettää meidän kommentit. Joten
0:41:55.568,0:42:01.134
vain ajamme UARTia. Ja tässä lähetämme[br]komentomme. Ja jos katsot ylhäälle näet
0:42:01.134,0:42:07.048
-CPU signaali tuli PLClta.[br]Ja nyt lähetämme vaiheistuksemme
0:42:07.048,0:42:11.629
ja vaiheistuksemme lähettää vain[br]kuittauksen, että tiedämme vaiheistuksen
0:42:11.629,0:42:16.014
toimivan kunnolla. Tämä on firmware versio[br]bootloader versio 4.2.1, periaatteessa
0:42:16.014,0:42:19.647
Joten nyt aiomme tehdä jotain muuta, aiomme[br]aiomme tosiasiassa dumpata
0:42:19.647,0:42:24.234
firmwaren käynnissä olevasta PLCsta ja[br]verrata sitä firmwareen joka on ladattu
0:42:24.234,0:42:30.913
Siemensin web sivulta. Ensin me aiomme [br]tosiaan purkaa firmwaren jonka latasimme
0:42:30.913,0:42:35.520
Siemensin websivuilta, koska se on pakattu[br]lzp3:lla.
0:42:38.080,0:42:43.360
Eli niin aiomme toimia. Oh ja aiomme[br]oikeastaan ensin muodostaa SSL yhteyden.
0:42:43.360,0:42:50.320
Joten, SSL portin ohjaus, SSH portin ohjaus[br]ensin ja olemme juuri tarkastamassa että
0:42:50.320,0:42:56.952
PLC toimii oikein. Ettei tämä ole [br]viallinen PLC tai jotain sellaista
0:42:56.952,0:43:02.107
Kirjoitimme jotain. Varmistamme vain että[br]web palvelin avautuu. aukeaa
0:43:02.755,0:43:12.640
se on auki, se on hyvä. Ja koitan yös[br]kirjautua websivulle web serverille
0:43:12.640,0:43:16.720
web palvelimelle PCLssa. Taas, varmista [br]että PLC on toimiva
0:43:16.720,0:43:23.920
Myös syötetään salasana. Luulen, että [br]kaikki voivat sen arvata. Ja näet että
0:43:23.920,0:43:28.720
kirjaudumme viimein ja vasemmalla näet[br]kaikki toiminnallisuudet jotka
0:43:28.720,0:43:34.320
latautuvat PLChen liittyen. Joten se on[br]käynnissä, käyvä, toimiva PLC. Ja nyt
0:43:34.320,0:43:39.680
puretaan firmware, joka ladattiin[br]Siemensin websivuilta
0:43:39.680,0:43:43.962
vientilisenssin tarkastamisen jälkeen jne.[br]Eli he haluavat varmistaa etteivät
0:43:43.962,0:43:51.664
ihmiset Iranissa ja Pohjois Koreassa saa[br]sitä. Minä olen Iranista muuten. Joten
0:43:51.664,0:43:55.485
tässä on purettu firmware. Mutta koska [br]päivitysnopeus on iso, kuten Tobias
0:43:55.485,0:43:59.415
mainitsi aiemmin, me vain aiomme[br]viedä
0:43:59.415,0:44:05.049
256 kilotavua firmwarea jostain osasta[br]web palvelua IDAan.
0:44:05.049,0:44:10.358
Sinun täytyy asettaa big endian CPUlle.[br]Ja myös asemoida framework uudelleen
0:44:10.358,0:44:15.346
Kuten näet, täällä ei ole funktiota vielä,[br]mutta kun se on asemoitu, meillä on kaikki
0:44:15.346,0:44:24.538
funktiot ja yeah, ja sitten meidän täytyy[br]vain ottaa ja viedä 256 kilotavua firmwaresta
0:44:24.538,0:44:29.406
joten me tarkoituksella hidastamme UARTia[br]koska haluamme varmistaa että emme
0:44:29.406,0:44:33.289
tee sitä liian nopeasti ja ylivuoda [br]puskuria, joka on PLCn sisäinen
0:44:33.289,0:44:41.896
Tässä, esimerkiksi, tässä osoitteessa,[br]691e28 aiomme exportata 256 kilotavua
0:44:41.896,0:44:45.876
Tämä on laiteohjelmistosta, Siemens[br]firmwaresta. Oikein. Me vain exporttaamme
0:44:45.876,0:45:00.737
sen. Eli, yeah, sitä kutsutaan nyt [br]fw-0x691E28 ulostulo kansiossa. Eli nyt
0:45:00.737,0:45:05.645
olemme valmiit tämän kanssa. Aiomme [br]dumpata saman osoitteen PLCsta, eli
0:45:05.645,0:45:11.960
toimivasta PLCsta. Pitää mainita jälleen.[br]Eli yläosa on periaatteessa raaka UART
0:45:11.960,0:45:17.959
ja tämä on meidän client osa ja me dump-[br]paamme sen kylmäkäynnistys hyökkäyksellä
0:45:17.959,0:45:22.147
Eli tavallaan resetoimme PLCn. Ja ennen [br]kuin se on ohi, kirjoitamme RAM:in
0:45:22.147,0:45:28.963
me periaatteessa dumppaamme sisällön[br]RAM:sta. Eli tämä on osoite 0x691e28.
0:45:28.963,0:45:34.991
Tämä on samasta osoitteesta periaatteessa.[br]Ja dumppaamme 256 kilotavua ja tässä
0:45:34.991,0:45:41.071
lähetämme MFGT1 periaatteessa ja saamme[br]-CPU ja sitten loput vaiheistajasta ja muut
0:45:41.071,0:45:48.807
menevät. Nyt periaatteessa olemme lähet-[br]tämässä paketteja ja lopulta saamme
0:45:48.807,0:45:57.478
vastauksen. Saimme tavallaan kaiken payloadin [br]kuin dumppasimme mem_dump_00691e28
0:45:57.478,0:46:03.342
Tämä on PLCn RAM muistista. Tämä ei[br]ole enää Siemens web sivulta
0:46:03.342,0:46:17.300
Me nappasimme sen omasta koneesta ja [br]vertaamme sitä.
0:46:17.300,0:46:21.887
Eli meillä on muistidumppi ja alkuperäinen[br]firmware 265 Kb molempia. Ja sitten
0:46:21.887,0:46:28.977
aiomme verrata niitä keskenään. Ja kuten[br]näette, sen pitäisi näyttää teille kuten
0:46:28.977,0:46:32.755
täydellinen 100% vastaavuus. Tarkoittaen[br]ettö se on täsmälleen sama firmware,
0:46:32.755,0:46:37.136
joka on saatavilla Siemensin web sivulta.[br]Dumppasimme sen suoraan Siemens PLC
0:46:37.136,0:46:44.279
muistista käyttäen esikoispääsy ominai-[br]suutta. Tehdäänpä toinenkin. Tällä kertaa
0:46:44.279,0:46:47.896
haluamme näyttää rajoittamattoman koodin[br]suorittamisen hyvin yksinkertaisesti.
0:46:47.896,0:46:53.474
Kirjoitamme vain kustomoidun payloadin[br]PLClle ja saamme tervehdyksen PLClta.
0:46:53.474,0:46:57.960
tervehdyksen PLClta. Periaatteessa pyysimme[br]PLCta lähettämään tätä viestä
0:46:57.960,0:47:04.922
koko ajan jatkuvasti. Eli jälleen, lähetämme[br]kustomoidun payloadimme tänne ja
0:47:04.922,0:47:13.449
sanomme hello loop. Ja periaatteessa[br]PLC yksinkertaisesti lähettää tämän loopin
0:47:13.449,0:47:24.395
meille. Kaikki nämä asiat, jälleen, ovat[br]bootloader 4.2.1:lle. Sinun pitää muokata
0:47:24.395,0:47:29.704
tiettyjä asioita, koska Siemens sanoo, että[br]he päivittivät taas bootloaderinsa 2019
0:47:29.704,0:47:36.458
joulukuussa, jolloin ostimme uuden PLCn,[br]jälleen, taas. Ja nyt tässä saamme
0:47:36.458,0:47:42.997
vastauksen. Tuo on PLC, joka lähettää[br]periaatteessa meille meidän raakadataa
0:47:42.997,0:47:46.894
jota PLC meille jatkuvasti lähettää. Tuo[br]näyttää meille että vastaanotamme sitä.
0:47:46.894,0:47:53.852
Mutta tämä oli ehkä liian yksinkertaista. [br]Nämä ovat raakadataa jota saamme PLC:lta.
0:47:53.852,0:47:57.764
Tehdään jotain monimutkaisempaa. Näytetään[br]jotain, joka ei ole peräisin meiltä.
0:47:57.764,0:48:04.167
Pelataan peliä nimeltä ristinolla PLCn[br]sisällä. Ja luulen, että ellet tiedä,
0:48:04.167,0:48:08.873
näin ristinolla, näin minä pelaan[br]minä vain piirrän
0:48:08.873,0:48:20.308
googlella. Joten nyt lähetämme jälleen[br]meidän kustom payloadin, mutta tällä
0:48:20.308,0:48:25.364
kertaa lähetämme vain osittaisia kyselyitä[br]joltain toiselta Internetistä ja vain
0:48:25.364,0:48:30.091
lataamme ne PLChen. Luonnollisesti sinun[br]pitää säätää useita asioita.
0:48:30.091,0:48:38.726
Mutta lähetämme meidän payloadin,[br]mukaanlukien vaiheistuksen ja nämä
0:48:38.726,0:48:44.956
ovat raakadataa. Jälleen, tässä on meidän[br]client. Ja lopulta näet ristinolla
0:48:44.956,0:48:50.175
käyttöliittymän, johon menet. Eli pelaaja1[br]pelaa oikeasti X:lla
0:48:50.175,0:48:54.870
ja pelaaja2 pelaa 0:lla. Joten näet kaikki[br]positiot, joista valitset.
0:48:54.870,0:49:04.827
Sinulla on X ja toivottavasti [br]pelaaja1 voittaa. Ja siinä se oli.
0:49:04.827,0:49:15.680
Siinä oli demo.[br]aplodeja
0:49:15.680,0:49:19.891
Luonnollisesti, on paljon muitakin ideoita[br]joita voimme työstää, injektoida muuta
0:49:19.891,0:49:24.560
kustom koodia, käyttää erikoispääsy[br]ominaisuutta, jatkamme tätä työtä.
0:49:24.560,0:49:30.320
Kuten muitakin asioita Siemensissa,[br]olemme pahoillamme Siemens, me vain
0:49:30.320,0:49:35.926
jatkamme tätä työtä, mutta jatkoa seuraa[br]vielä. Sillä välin, on joitain ajatuksia
0:49:35.926,0:49:40.881
muille ihmisille, mikäli he katsovat tätä [br]ja tutkivat turvallisuutta
0:49:40.881,0:49:45.860
Siemens PLC:ssa. Eli käyttämällä tätä [br]erikoispääsyä, voit tehdä joitain asioita.
0:49:45.860,0:49:49.826
Eli esimerkiksi, voit käyttää tätä[br]prophylaxis toiminnallisuutta
0:49:49.826,0:49:54.607
kirjoittaaksesi firmwareen. Kuten mainit-[br]simme funktio on käytettävissä, ja se
0:49:54.607,0:49:59.320
ei vaadi kryptografista allekirjoitusta,[br]jota tavallisesti päivitys prosessissa
0:49:59.320,0:50:03.917
on firmwaressa saatavilla. Eli voit vain [br]ohittaa sen ja se on vain CRC
0:50:03.917,0:50:08.971
tarkastussumma. Eli mitä voit tehdä,[br]esimerkiksi, lisätä merkinnän organisoimaan
0:50:08.971,0:50:13.446
vaikka alustusrutiinia, joka on saatavilla.[br]Ja sitten mitä voit tehdä ennen
0:50:13.446,0:50:19.108
organisoitua alustusrutiinia, jota[br]kutsumme th_initial
0:50:19.698,0:50:21.167
Toinen mitä voimme tehdä,
0:50:21.167,0:50:23.893
mikäli muistatte, Tobias puhui[br]dokumentoimattomista
0:50:23.893,0:50:27.682
ja luovuudesta tuottaa musiikkia[br]li li li lo lo lo
0:50:27.682,0:50:30.565
Eli mitä joku voi tehdä on
0:50:30.565,0:50:35.871
periaatteessa liittää tietty käsittelijä [br]tai ylikirjoittaa olemassaoleva.
0:50:35.871,0:50:39.757
Ja laittaa se tekemään jotain kuin Triton.[br]En tiedä tunteeko sitä kukaan,
0:50:39.757,0:50:42.660
mutta Triton joka on malware, [br]joka hyökkäsi petrokemian
0:50:42.660,0:50:44.339
tehtaaseen Saudi Arabiassa.[br]Eli he yrittivät
0:50:44.339,0:50:47.863
tehdä sen TCPlla. Mutta hyökkääjä[br]voisi ehkä tehdä sen http:lla esimerkiksi
0:50:47.863,0:50:54.086
ja vain odottaa ja kuunnella kommentteja[br]ja muita vaihtoehtoja kuten
0:50:54.086,0:51:00.947
päivittää jump taulut AWP käsittelijöissä,[br]joita voidaan myös käyttää prosessoimaan
0:51:00.947,0:51:08.745
tiettyjä hyökkäyksiä. Eli mitäs muuta[br]sitä olisi? Eli mitä tutkimme
0:51:10.045,0:51:10.919
Me tutkimme
0:51:10.919,0:51:15.774
hyökkäyspinta-alaa Siemens S7 PLC:ssa[br]Siinä on joitan mahdollisuuksia paikalliseen
0:51:15.774,0:51:19.838
käyttäjätaso hyökkäykseen. Jota voimme...[br]Mitä katsoimme oli bootloader
0:51:19.838,0:51:25.351
Työstämme edelleen hardware hyökkäyksiä ja[br]hardware - ohjelmistä hyökkäyksiä reunalla.
0:51:25.351,0:51:31.404
Tämä työ on käynnissä, ja siitä emme[br]tietenkään keskustele nyt? Lisäksi
0:51:31.404,0:51:35.022
kiinostava asia, luulen, jollekin, joka on[br]kiinostunut PLCn turvallisuudesta
0:51:35.022,0:51:38.861
erityisesti sisäisesti, en puhu nyt vain[br]yleisestä eriyttämisestä
0:51:38.861,0:51:43.058
verkossa ja sellaisesta ICS puolella.[br]Puhun kehittyneemmistä alemman tason
0:51:43.058,0:51:51.252
asioista. Mielestämme vaikka MWSL on [br]kiintoisa kohde. Siinä on todennäköisesti
0:51:51.252,0:51:55.677
bugeja implementoinnissa. Myös, tiedosto[br]järjestelmän parsinnassa ja firmwaren
0:51:55.677,0:52:00.840
allekirjoituksessa, siellä on varmaankin[br]jotain juttua ja myös MC7 parserissa,
0:52:00.840,0:52:06.601
mitä siinä on käyttöoikeuksien nostamisen[br]näkökulmasta ja myös remote code execution
0:52:06.601,0:52:13.630
näkökulmasta, molemmat MiniWeb web[br]palvelin ja myös mitä tahansa verkossa
0:52:13.630,0:52:18.301
saatavilla oleviin palveluihin, joita[br]niissä on, voisi olla kiinostavaa. Katsot
0:52:18.301,0:52:27.577
itseasiassa tätä kohtaa nyt. Joten lopuksi.[br]PLCt kehittyvät monimutkaisemmiksi.
0:52:27.577,0:52:31.354
Se on totta, koska ne tosiasiassa tarjoavat[br]enemmän ja enemmän ominaisuuksia ja
0:52:31.354,0:52:34.969
johtuen tästä monimutkaisuudesta, niissä [br]on enemmän bugeja. Näemme,
0:52:34.969,0:52:41.676
esimerkiksi, MWSL:ssa, jota katsomme nyt,[br]siitä taivutetaan ja väännetään
0:52:41.676,0:52:47.037
monimutkaisempaa. Heillä on periaatteessa[br]joku anti-vianetsintä, josta juuri
0:52:47.037,0:52:52.817
keskustelimme Siemens PLCssa, mutta heillä[br]on myös, esimerkiksi, päivitys
0:52:52.817,0:52:59.465
eheyden tarkastus, kuten allekirjoitus[br]firmwaressa kun se ladataan PLChen ja
0:52:59.465,0:53:05.578
sellaisia juttuja. Joten he tekevät siitä[br]monimutkaisempaa. Mutta mitä meidän tulee
0:53:05.578,0:53:14.279
tietää että jos heidän uhkamallissa, joka[br]usein tehdään tai turvallisuusmallissa
0:53:14.279,0:53:20.220
jonka he rakensivat. Jos heillä on ominaisuus[br]joka ohittaa samat turvallisuusjärjestelyt
0:53:20.220,0:53:24.415
jotka he suunnittelivat. Tarkoitan, että,[br]mielestäni on selvää että heidän pitää
0:53:24.415,0:53:28.427
poistaa, kuten bootloaderin tapauksessa,[br]heidän erikoispääsy ominaisuudet.
0:53:28.427,0:53:32.340
hyvänä esimerkki. Ja tietenkin asiakkaiden[br]täytyy tietää, koska heillä on sellainen
0:53:32.340,0:53:36.428
toiminto ja he tarvitsevat sitä, kunhan[br]asiakkaat tietävät, se on hyvä.
0:53:36.428,0:53:41.001
Mutta jos he eivät tiedä, he eivät voi [br]huomioida tätä riskiä strategiassaan tai
0:53:41.001,0:53:46.809
uhkamallissa, joka heillä on. Joten.[br]Ja heidän täytyy miettiä tai uudelleen
0:53:46.809,0:53:51.054
miettiä turvallisuutta tietämättömyydellä. [br]Ehkä he sallivat meidän, tutkijoina,
0:53:51.054,0:53:53.700
päästä käsiksi laitteisiin[br]paremmin ja helpommin
0:53:53.700,0:53:55.815
tutkiaksemme niitä enemmän.[br]Me teemme vielä sitä
0:53:55.815,0:54:00.894
mutta se vain kestää kauemmin. Ja uskon[br]että on paljon enemmän nähtävää ja
0:54:00.894,0:54:08.464
tehtävää PLC:issa ja Siemens ei ole [br]viimeinen jonka parissa työskententelemme.
0:54:08.464,0:54:13.844
Joten meidän täytyy kiittää joitain ihmisiä.[br]Thosrten Holz, ohjaajamme, hän ei ole täällä.
0:54:13.844,0:54:20.802
Thomas, Alexandre, Marina, Lucian, Nikita,[br]ja Robin. Heidän avustaan ja työstään.
0:54:20.802,0:54:26.902
Ja nyt aiomme vastata kysymyksiin.
0:54:26.902,0:54:27.881
Herald: Kiitoksia.
0:54:27.881,0:54:37.078
aplodeja
0:54:38.944,0:54:47.318
Herald: Eli, Yeah, voitte tulla jonoon[br]mikrofonille tai kirjoittaa kysymyksenne
0:54:47.318,0:54:54.941
Elisa huoneessa. Ah, siinä mennään. Se on[br]päällä nyt, luulen.
0:55:02.043,0:55:07.360
Signal Angel: Hei, Yeah. ELi on yksi kysymys[br]Internetistä. Tarkistitteko MC7
0:55:07.360,0:55:15.789
parserin? Jos kyllä. Löysittekö mitään[br]piilotettuja koneohjeita siitä
0:55:15.789,0:55:21.760
tai jotain.[br]Ali: Haluatko vastata? Onko tämä
0:55:21.760,0:55:26.400
nauhoitettu, vai toistanko kysymyksen? Eli[br]he kysyvät tarkastimmeko MC7 parserin.
0:55:26.400,0:55:32.097
OK, Hyvä. Eli emme todella tutkineet[br]MC7 parseria
0:55:32.097,0:55:35.548
mutta työskentelemme sen parissa nyt.
0:55:36.934,0:55:40.640
Mic: Hei ? Kuinka pystyitte löytämään
0:55:40.640,0:55:45.840
MFG turvallisuus salasanan?[br]Ali: Se on todella pitkä tarina. Ensinnäkin
0:55:45.840,0:55:50.236
meillä oli se edessämme hyvin, hyvin[br]pitkän ajan, kunnes Siemens toi
0:55:50.236,0:55:56.160
tämön anti-debugging ominaisuuden.[br]Sen jälkeen, meidän piti keksiä toinen
0:55:56.160,0:56:01.932
keino, toinen keino sen löytämiseen,[br]löytää samanlainen toiminto, toisia
0:56:01.932,0:56:06.480
tapoja sallia se, koska asia josta emme[br]keskustelleet täällä, oli ettemme kertoneet
0:56:06.480,0:56:11.920
kuinka me, esimerkiksi suoritimme sen[br]komennon aikaisemmin PLC:ssa.
0:56:11.920,0:56:18.240
Siihen liittyi työtä, johon saimme apua[br]joiltain tutkijoilta Hollannista ja Ranskasta.
0:56:18.240,0:56:24.560
Eli tämä oli jotain, josta informoitiin[br]Siemensia 2013. Luulen, että he tiesivät
0:56:24.560,0:56:31.280
siitä. Mutta 2016, he korjasivat sen ja[br]se vaikutti kuin he periaatteessa koittivat
0:56:31.280,0:56:35.269
suojata PLCta tämän tapaisilta hyökkäyksiltä.[br]Sitä ei oltu julkaistu aiemmin.
0:56:35.269,0:56:39.240
Joten käytimme sitä. Emme halua[br]keskustella siitä, koska
0:56:39.240,0:56:42.939
alkuperäinen tekijä ei halunnut puhua siitä.[br]Mutta toistimme,mitä he olivat,
0:56:42.939,0:56:49.360
mitä he tekivät. Ja kun meidän todella piti[br]hakea muita keinoja, silloin se
0:56:49.360,0:56:53.760
avasi silmämme, että on olemassa joitain[br]muita toimintoja myös.
0:56:53.760,0:56:57.520
On sellaisia, kuten esimerkiksi bootloader.[br]Mutta ennen kuin tarvitsimme niitä,
0:56:57.520,0:57:01.659
emme ikinä etsineet niitä. Joten se oli[br]tavallaan edessämme
0:57:01.659,0:57:05.636
jotain kaksi vuotta.[br]Tobias: Ehkä yksi kiinostava osa
0:57:05.636,0:57:10.364
taustatarinaa on, että me periaatteessa[br]aikaisempaa tekniikkaa käyttäessämme
0:57:10.364,0:57:16.240
me todellisuudessa ylikirjoitimme ehdollisen[br]hypyn, joka ohjasi meidät erikoispääsy
0:57:16.240,0:57:18.280
toiminnon suorittamiseen ehdottomalla[br]hypyllä. Eli periaatteessa leikkasimme pois
0:57:20.320,0:57:25.680
60% koko firmware koodista vahingossa.[br]Ja sitten täysin
0:57:25.680,0:57:30.320
aavistuksesta, kuten kerroin aiemmin, että[br]siellä oli vain liikaa erilaisia
0:57:30.320,0:57:35.040
toimintoja. Palasin takaisin ja ymmärsin,[br]että se oli juuri se sama kohta
0:57:35.040,0:57:41.600
jonka ylikirjoitimme aikaisemmin, ja joka[br]meidän piti periaatteessa korvata ja
0:57:41.600,0:57:43.493
käyttää omiin tarkoituksiimme.
0:57:44.113,0:57:46.286
Mic: Onko siinä mitään käynnistyksen[br]aikaista turvallisuutta
0:57:46.286,0:57:51.470
muuta kuin CRC tarkastus? Eli te. Voitteko[br]muokata sisältöä SPI flashilla ja
0:57:51.470,0:57:54.413
saada mielivaltaisen koodin[br]suorittamisen sillä tavalla myös?
0:57:55.059,0:58:01.911
Ali: Eli, se riippuu mistä vuodesta olet[br]puhumassa 2017, 2016. Eli puhumme
0:58:01.911,0:58:07.190
samasta mallista PLCsta, mutta vuosina[br]2017 ja 2018. Ei. Voisit periaatteessa
0:58:07.190,0:58:11.770
vain ottaa ulos SPI flashin, ylikirjoittaa[br]sen. Ja se on hyvä, Mutta jos
0:58:11.770,0:58:16.642
olit ylikirjoittamassa sitä ja aiheutit [br]pysähdyksen CPU coressa, se taas laukaisee
0:58:16.642,0:58:23.063
sen anti-vianetsintä ominaisuuden joka[br]heillä on. Tämä vahtikoira periaatteessa.
0:58:23.063,0:58:28.613
Mutta firmwaren eheyden kannalta.[br]Periaatteessa kun kerran kirjoitat...
0:58:28.613,0:58:33.347
firmware kirjoitetaan NAND flashille,[br]mutta se on vain CRC tarkastus. Mutta
0:58:33.347,0:58:37.189
päivitysprosessi? Ei. Siinä on joitain[br]kryptografisia tarkastuksia, mutta kun
0:58:37.189,0:58:41.920
se on kirjoitettu, ei. Siinä on joitain [br]ongelmia, jotka taas. Se on edelleen
0:58:41.920,0:58:45.456
jatkuvaa työtä ja emme halua puhua siitä[br]vielä, mutta hyvä huomio-
0:58:45.456,0:58:50.682
Mic: Kiitos.[br]Mic: Hei, Kiitos esityksestä, voisitteko
0:58:50.682,0:58:54.937
avata teidän keskustelua valmistajan[br]kanssa ja aikataulua?
0:58:54.937,0:59:00.188
Ali: Kyllä, ensinnäkin, me olimme tienneet[br]tästä ongelmasta puolitoista vuotta
0:59:00.188,0:59:04.429
ennen kuin raportoimme asian valmistajalle.[br]Tärkein syy oli, että käytimme sitä yhteen
0:59:04.429,0:59:09.329
toiseen projektiin. Tämä on todellisuudessa[br]tulos oikeasti sivuprojektista
0:59:09.329,0:59:12.867
enemminkin kuin pääprojektista. Mutta[br]koska varsinainen projekti on jotain
0:59:12.867,0:59:18.083
muuta ja edelleen käynnissä. Mutta sen[br]projektin sivussa, meillä oli pääsy.
0:59:18.083,0:59:21.888
Ja koska olimme huolissamme, että valmista-[br]jalle raportoidessa he voivat korjata
0:59:21.888,0:59:26.244
sen ohjelmistopäivityksellä ja sen jälkeen[br]estää kaikki muut CVEt, joita löydämme tässä
0:59:26.244,0:59:31.758
toisessa projektissa, emme halunneet kuin[br]viimein 2019. Thomas Weber halusi puhua
0:59:31.758,0:59:37.581
tässä esityksessä periaatteessa tästä[br]JTAG liittymästä CoreSightiin ja sitten
0:59:37.581,0:59:42.776
päätimme kuitenkin puhua siitäkin.[br]Mutta muutenkin, oikeastaan me
0:59:42.776,0:59:48.512
puhuimme kesäkuussa, luulen, Siemensin[br]kanssa ja he vahvistivat, että tässä raudassa
0:59:48.512,0:59:53.209
on erikoispääsy ominaisuus. Ja he ovat..[br]He sanovat, että aikovat poistaa
0:59:53.209,0:59:58.460
sen ja se siitä. Me myös lähetimme [br]heille write Up:in luettavaksi.
0:59:58.460,1:00:02.644
Herald: Eli, siellä on vielä viimeinen[br]kysymys Signal Angelilta.
1:00:04.173,1:00:09.259
Signal Angel: Eli, siellä on seuraava[br]kysymys Internetistä. Jos työkalut kuten
1:00:09.259,1:00:15.696
Flashrom, eivät tue tuntematonta SPI flash[br]rom sirua, kuinka te tavallisesti puratte
1:00:15.696,1:00:22.418
firmwaren, jos ette halua purkaa sirua[br]tai käyttää SOICB istukkaa.
1:00:22.418,1:00:26.538
Ali: Voitko toistaa sen. En saanut[br]kysymystä, saitko sinä ?
1:00:26.538,1:00:32.419
Signal Angel: Jos työkalut kuten Flashrom, [br]eivät tue tuntematonta SPI flashrom sirua
1:00:32.419,1:00:38.640
kuinka te tavallisesti puratte firmwaren,[br]jos ette halua purkaa sirua
1:00:38.640,1:00:42.262
tai käyttää SOICB istukkaa.[br]Ali: Ensinnäkin, me emme oikeasti koskaan
1:00:42.262,1:00:49.030
pura SPI flashia. Teimme sen vain CPU:lle.[br]Ja koska halusimme tietää, että
1:00:49.030,1:00:53.920
Siemens uudelleenbrändää PLCtaan. Eli se[br]ei ole heidän CPU, se on Ransasilta,
1:00:53.920,1:00:58.755
mutta siksi purimme osia.[br]Mutta purkujutut sikseen.
1:00:58.755,1:01:04.160
Mutta muista asioista, siellä on[br]kuitenkin tämä toiminto, tämä
1:01:04.160,1:01:08.068
bootloader toiminto, joka antaa sinun[br]lukea sisällön muistista.
1:01:08.068,1:01:11.621
Eli se on yksi asia, jonka voit lukea.[br]Selvästi sinun ei edes tarvitse, kiitos
1:01:11.621,1:01:15.760
yhden oppilaani. Me tiedämme yhden, jota[br]sinun ei tarvoitse edes
1:01:15.760,1:01:20.640
ottaa pois bootloaderista, siru. Me voimme[br]periaatteessa vain kytkeytyä suoraan
1:01:20.640,1:01:27.972
levylle ja dumpata firmwaren. Marcello, se[br]on hänen nimensä. Hän on täällä. Mutta
1:01:27.972,1:01:34.110
kuitenkin, voit vain suoraan lukea sen.[br]Ja kyllä, en usko, että lukemis osuus
1:01:34.110,1:01:38.000
erityisesti osat siitä, ovat suojattuja,[br]erityisesti uusissa versioissa, joissa
1:01:38.000,1:01:43.200
et voi lukea kaikkea. Mutta muuten, en[br]usko, että se on vaikeampaa nyt vielä.
1:01:43.200,1:01:47.680
Olen varma, että he työskentelevät sen [br]parissa ja me myös työstämme jotain
1:01:47.680,1:01:51.520
jolla se kierretään. Joten.[br]Herald: Okei, seuraava esitys
1:01:51.520,1:01:57.509
tulee olemaan toimitusroboteista. Sasha[br]20 minuutin päästä. Annetaan aplodit.
1:01:57.509,1:02:01.712
aplodeja
1:02:01.712,1:02:11.763
36c3 esityksen jälkimusiikki
1:02:27.021,1:02:35.053
Translated by Esa Lammi[br](ITKST56 course assignment at JYU.FI)