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)