Ticket #6051: DEF CON 24 Conference - Ang Cui - A Monitor Darkly - Reversing and Exploiting Ubiquitous - Video and Slides.srt

File DEF CON 24 Conference - Ang Cui - A Monitor Darkly - Reversing and Exploiting Ubiquitous - Video and Slides.srt, 46.4 KB (added by Carl Eugen Hoyos, 10 years ago)
Line 
100:00:00.000-->00:00:05.005
2 Alright, hey everybody, this is
3Ang Cui and Jaden Quitaria. They
4wanna talk to ya about a monitor
5
600:00:07.140-->00:00:12.145
7darkly. Give 'em a round, can
8we, come on congratulate them
9for getting up here. [laughter &
10
1100:00:17.818-->00:00:21.488
12applause] >>Vegas! [applause]
13Thank you. Alright we're going
14to get stuff showing on the
15
1600:00:21.488-->00:00:26.493
17monitors. And it's all going to
18work. Alright. [clears
19throat/sighs] Okay! So uh this
20
2100:00:32.766-->00:00:37.771
22is work that we've done for the
23last two years in our spare
24time. So uh I wanted to tell you
25
2600:00:37.771-->00:00:43.744
27this story of how we did it and
28uh what we found uh over that
29time. So we have a big cast of
30
3100:00:43.744-->00:00:49.416
32characters okay. My name is Ang.
33Jaden is underneath this table
34he's will sometime reappear for
35
3600:00:49.416-->00:00:55.455
37this talk. Uh we have a very
38strong Canadian in Francois uh
39the who we worked with but he
40
4100:00:55.455-->00:01:01.261
42couldn't show up to this. Today
43we have uh person named Igor
44which we'll talk about. We have
45
4600:01:01.261-->00:01:07.100
47a very uh concerned area man
48named Chris. And the last but
49definitely not least we have
50
5100:01:07.100-->00:01:11.004
52area man of concern named
53Shakeve. And if you see his face
54in your monitor things are
55
5600:01:11.004-->00:01:16.043
57really going to be bad and he's
58actually in the in the audience
59today. So watch out. Alright! So
60
6100:01:16.043-->00:01:21.014
62today's primary main objective
63is to go after these little
64devices that you connect to your
65
6600:01:21.014-->00:01:25.319
67computer that puts pixels up on
68your monitors. We all know what
69they are. Okay and uh and
70
7100:01:25.319-->00:01:29.756
72motivation in why we are
73interested in monitors. You know
74a good hacker right is a lazy
75
7600:01:29.756-->00:01:36.697
77hacker so if you think about
78this page right [clears throat]
79uh When you see this page you
80
8100:01:36.697-->00:01:41.168
82think you're talking to your
83bank right? The little green
84pixels on the uh left side here
85
8600:01:41.168-->00:01:46.506
87right makes you think this is an
88encrypted communication and your
89safe. Now think about all the
90
9100:01:46.506-->00:01:51.878
92resources and the research and
93and the the money we spent to
94create this infrastructure uh so
95
9600:01:51.878-->00:01:55.682
97that we can have this internet
98with you know with SSL right
99that will show you these green
100
10100:01:55.682-->00:01:59.319
102pixels. You know you have to
103secure the browser you have to
104secure the kernel you have to
105
10600:01:59.319-->00:02:02.689
107secure the you know the
108infrastructure for doing
109certificates and all this other
110
11100:02:02.689-->00:02:07.194
112stuff. I would say we've
113probably cumulatively probably
114invested over a billion dollars
115
11600:02:07.194-->00:02:11.431
117to make this infrastructure
118exist today the way it does.
119Okay, so let's look at the
120
12100:02:11.431-->00:02:15.669
122content in which we see this
123website. Okay? So, we view it
124through this tiny little
125
12600:02:15.669-->00:02:19.840
127computer with a big screen on it
128that we call the monitor.
129Alright so the lazy hacker would
130
13100:02:19.840-->00:02:25.912
132say, you know if I wanted to
133break the pixels that show me
134green, I could either break the
135
13600:02:25.912-->00:02:30.183
137security for the [indiscernible]
138you know built with a billion
139dollars of investment or
140
14100:02:30.183-->00:02:34.588
142whatever the security is inside
143this little monitor right? And
144you know maybe it's not so great
145
14600:02:34.588-->00:02:39.593
147and that's what we're here to
148talk about. Okay so this whole
149thing started bank in 2015 when
150
15100:02:42.529-->00:02:48.735
152uh Jaden and I got really sweet
153new monitors and we bought these
154things and we said Wow! This is
155
15600:02:48.735-->00:02:53.507
157beautiful and uh as soon as we
158plugged it in you know we
159noticed that this really curious
160
16100:02:53.507-->00:02:59.579
162thing right the USB device on it
163said you know TUSB34 pin boot
164device right? And USB 23C
165
16600:02:59.579-->00:03:03.750
167solution. So we looked at that
168and we said ah that's very
169interesting, right? So like a
170
17100:03:03.750-->00:03:10.090
172minute of Googling later we
173found this really useful uh Dell
174forum uh response by Chris uh so
175
17600:03:10.090-->00:03:14.761
177somebody asked, Hey you know I
178uh I don't have a driver for
179this you know T34 you know
180
18100:03:14.761-->00:03:18.765
182[indiscernible] boot device you
183know what is it for? Is it a
184problem? And Chris from Dell
185
18600:03:18.765-->00:03:22.135
187says, Eh don't worry about it.
188You know that driver is only
189there for firmware updates which
190
19100:03:22.135-->00:03:26.306
192we'll probably never do. Right?
193But if you want the driver here
194it is. And I looked at that and
195
19600:03:26.306-->00:03:32.279
197said how interesting. Right? So
198Jaden and I started thinking and
199I say, Hey Jaden let's tear down
200
20100:03:32.279-->00:03:36.349
202this 34-inch monitor that we
203have laying around. >>Well we
204already have awesome monitors.
205
20600:03:36.349-->00:03:40.454
207Uh why don't we take that uh
208that 3-quarter inch which is not
209doing anything? >>Yea and then
210
21100:03:40.454-->00:03:44.491
212we're cool with this but then
213Chris hears this right you know
214nearby and he says like these
215
21600:03:44.491-->00:03:48.495
217monsters have no heart. Like
218there's no end to their
219savagery. And I also have a
220
22100:03:48.495-->00:03:54.167
222million VIM plug-ins and my life
223is sad. Right? [laughter] And
224and we said aww this is really
225
22600:03:54.167-->00:03:57.804
227the saddest thing I've ever seen
228so what are we going to find
229these monitors? >>Why don't we
230
23100:03:57.804-->00:04:01.241
232go to the interns? They don't
233need monitors. >>Yeah we can
234>>They have like 24 of them
235
23600:04:01.241-->00:04:05.378
237sitting around doing nothing.
238>>Yeah we got a pit of interns
239they get 24-inch monitors. They
240
24100:04:05.378-->00:04:10.183
242don't need them. Right? So we
243started looking at the 24 tens
244instead of the curved ones. And
245
24600:04:10.183-->00:04:14.988
247uh like 15 minutes of Googling
248later we found this really nice
249document that described a USB
250
25100:04:14.988-->00:04:20.427
252firmware upgrade instruction.
253Okay? And this instruction is
254insultingly clear because the
255
25600:04:20.427-->00:04:24.231
257first instruction that's that's
258the power goes into the power
259wall thing. Right? And then the
260
26100:04:24.231-->00:04:30.403
262USB goes into the USB thing. But
263then you know it talks about
264this uh U24 ten ISP tool in
265
26600:04:30.403-->00:04:36.009
267incir or in circuit programmer.
268Uh and then we get you know we
269started to get very interesting
270
27100:04:36.009-->00:04:41.047
272results. Right? So we're seeing
273screen shots of this Dell
274utility that doesn't require any
275
27600:04:41.047-->00:04:45.152
277administrative privilege. That
278you know starts up a bunch of
279stuff and at the end of the day
280
28100:04:45.152-->00:04:51.091
282right? Runs you know things like
283app tests and a lot of other
284mystery. And uh just does the
285
28600:04:51.091-->00:04:55.662
287firmware upgrade for you. So we
288looked at the the output of this
289program we say you know what is
290
29100:04:55.662-->00:05:00.000
292an app test? Like what is this
293all about? We started Googling
294right? We found a lot of you
295
29600:05:00.000-->00:05:04.704
297know documents mentioning
298genesis and g-probe and all this
299other stuff. And we also found
300
30100:05:04.704-->00:05:09.709
302these documents from you know
303the late 90's and early 2000's
304that had this all these mystery
305
30600:05:09.709-->00:05:13.580
307hardware that updates firmware
308from these really old monitors.
309So if you see the one on the
310
31100:05:13.580-->00:05:18.552
312bottom there's a a parallel port
313with power supply going to VGA.
314Right? And somehow this hardware
315
31600:05:18.552-->00:05:23.657
317changes firmware on on monitors.
318Uh so we start Googling more!
319Alright we find mention of SD
320
32100:05:23.657-->00:05:29.196
322micro, analog, safina and Dell.
323So we're trying to figure out
324what this is all about! Okay? Uh
325
32600:05:29.196-->00:05:33.266
327so like days n days of Googling
328later we figured out that
329roughly how this happens. So app
330
33100:05:33.266-->00:05:39.806
332tests us is a thing that is used
333by g-probe which was created by
334a company named Genesis and they
335
33600:05:39.806-->00:05:43.210
337were a big player in the on
338screen display controller
339market. You know in the early
340
34100:05:43.210-->00:05:48.949
3422000's. Right? From there we did
343a lot of Googling and here's
344what happened. Okay? So in 2002
345
34600:05:48.949-->00:05:55.589
347Genesis created G-probe and
348G-probe were Genesis was in 2008
349later sold to SD micro. And then
350
35100:05:55.589-->00:06:02.095
352SD Micro threw in some of their
353IP and created this called the
354ST DP 6000 something. Right?
355
35600:06:02.095-->00:06:07.701
357That chip was then sourced to
358Intellucks which is partially
359owned by Foxconn which is then
360
36100:06:07.701-->00:06:12.005
362what something that the analyst
363built a board that was
364eventually used in Dell
365
36600:06:12.005-->00:06:18.078
367monitors. Alright? So this is
368how you know somebody wrote 2
369various and secret codes in 2002
370
37100:06:18.078-->00:06:22.382
372that caused you know probably a
373few hundred million printer
374monitors in the world being
375
37600:06:22.382-->00:06:26.586
377vulnerable today. So that's you
378know how it happened basically.
379And now we were able to get a
380
38100:06:26.586-->00:06:30.590
382copy of g-probe. Alright? So
383this is a screen shot of what it
384looks like. You know the imp
385
38600:06:30.590-->00:06:36.263
387interesting thing to look at
388here is it the software says we
389can connect to the monitor via
390
39100:06:36.263-->00:06:42.168
392things like serial. Right? And
393also USB. And uh we're looking
394at things like the DDC 2 BI.
395
39600:06:42.168-->00:06:47.340
397Right? So that's something
398that's important to look at come
399back to later. So we got a copy
400
40100:06:47.340-->00:06:51.011
402of this from [indiscernible]
403tool. Right? We ran into the
404virtual machine. We dumped a lot
405
40600:06:51.011-->00:06:56.349
407of USB traffic and we noticed
408that there are DDC packets
409imbedded inside USB packets.
410
41100:06:56.349-->00:07:01.554
412Okay? So Jaden's going to talk a
413little bit about what DDC is.
414>>So uh DDC is like a display
415
41600:07:01.554-->00:07:07.727
417data channel communications. Set
418up by uh b-cell. So this used by
419the host adapter to query the
420
42100:07:07.727-->00:07:11.865
422monitor about uh hardware
423capabilities. What is the
424vendor? What resolution does it
425
42600:07:11.865-->00:07:16.736
427support? And blah blah blah. And
428then if you go to the there's
429multiple versions of uh DDC
430
43100:07:16.736-->00:07:21.741
432which exist. Uh there's DDC 2B,
4332BI, AB, d 2B plus. And what
434we're working with here is 2BI.
435
43600:07:24.010-->00:07:29.582
437And which is um a next version
438of 2B which works all that I can
439see and talks to the post
440
44100:07:29.582-->00:07:35.655
442adapter. So here is what uh any
443[indiscernible] of communication
444started with uh host adapter to
445
44600:07:35.655-->00:07:39.993
447the monitor happens. It sends a
448[indiscernible] with the code
449CF. Uh which is [indiscernible]
450
45100:07:39.993-->00:07:46.266
452vendor code. Uh and it is
453wrapped over uh its wrapped in
454USB mass storage uh back end
455
45600:07:46.266-->00:07:51.271
457which sent over to USB. Then uh
458the USB request log contains the
459DDC 2BI package which is
460
46100:07:54.140-->00:07:59.546
462encapsulation over G-probe
463packet. Uh to do like different
464commands. So one of the command
465
46600:07:59.546-->00:08:04.718
467if you look in here is run go
468command. Which allow us to put
469PC anywhere in the monitor.
470
47100:08:04.718-->00:08:10.557
472>>How how convenient right? And
473uh if we look into the g-probe
474documentation right? Uh all the
475
47600:08:10.557-->00:08:15.261
477trace algorithms are laid out
478here for you. They're very
479simple. So again we're taking
480
48100:08:15.261-->00:08:19.566
482messages that are supposed to go
483into I2C packet into USB and
484sending it over to the monitor
485
48600:08:19.566-->00:08:25.271
487via the USB interface. Okay so
488yeah let me show you a really
489simple uh communication between
490
49100:08:25.271-->00:08:30.343
492the host and the the monitor. So
493I"ll play the monitor. Jade will
494play the host. Okay? >>Um
495
49600:08:30.343-->00:08:36.182
497monitor initiate incoming
498communication. Give me registry.
499>>I as the monitor say I
500
50100:08:36.182-->00:08:41.087
502acknowledge your request for
503initiation of communication. >>I
504acknowledge your acknowledgement
505
50600:08:41.087-->00:08:47.360
507that you started that you want
508to initial communication. >>Okay
509I have uh acknowledge that you
510
51100:08:47.360-->00:08:51.498
512have run the read registry
513command. End of acknowledgement.
514Okay, but we're not done yet.
515
51600:08:51.498-->00:08:55.268
517Alright this is just the send
518the command. >>Okay this is like
5196 packets to send the command.
520
52100:08:55.268-->00:08:58.838
522Uh hey monitor let's do a
523communication again. Uh give me
524the response of my previous
525
52600:08:58.838-->00:09:03.009
527command. >>I acknowledge your
528request for initiation of
529communication. >>I acknowledge
530
53100:09:03.009-->00:09:06.279
532your acknowledgement that you
533want the communication.
534[laughter] >>Okay I have the
535
53600:09:06.279-->00:09:11.985
537result for you from re-register.
538End of communication. Goodbye.
539>>So 12 packets to get 2 bytes
540
54100:09:11.985-->00:09:17.090
542out of the monitor. [laugher] >>
543Great. But uh it works. You know
544that's how that's how the
545
54600:09:17.090-->00:09:20.360
547monitors doing it. Right? And
548this is the mechanism that the
549monitor uses to updated the
550
55100:09:20.360-->00:09:24.097
552firmware from USB into the
553onscreen display controller.
554Okay? So we read some
555
55600:09:24.097-->00:09:28.535
557documentation let's void void
558the warranty let's figure out
559what the hardware looks like. So
560
56100:09:28.535-->00:09:32.272
562we opened up the back of the
563monitor. This is pretty typical.
564Right? The top of the board is
565
56600:09:32.272-->00:09:36.543
567where all the power stuff is and
568the digital stuff is on the
569bottom. Okay? And uh here is an
570
57100:09:36.543-->00:09:40.013
572architectural diagram. Right? So
573you have main SD micro uh on the
574upper left hand corner. Notice
575
57600:09:40.013-->00:09:42.015
577that that chip sits on an IC2
578bus which is connected to a
579multi-plexor chip and that's the
580
58100:09:42.015-->00:09:44.951
582uh the 48 53. Right? And that
583multi-plexor again sits on a
584second IC2 bus which is
585
58600:09:44.951-->00:09:49.956
587connected to a USB controller.
588Right? Which is the thing we are
589talking to. So traffic comes
590
59100:09:57.931-->00:10:01.901
592into this USB controller. Goes
593into the I2C bus. Goes through
594this multi-plexor then
595
59600:10:01.901-->00:10:06.473
597eventually ends up directly on
598the I2C bus for the uh onscreen
599display controller. So we're
600
60100:10:06.473-->00:10:11.845
602able to able to send raw I2C
603packets through USB to this
604machine. There that's how things
605
60600:10:11.845-->00:10:16.549
607work. And we flipped the board
608over. This is pretty typical. We
609found an SPI flash chip that we
610
61100:10:16.549-->00:10:20.353
612were able to dump. So we dumped
613the code. And us this is
614something we like to do. We like
615
61600:10:20.353-->00:10:25.859
617to do 2-D render you know
618visualization of entropy. Ah so
619you know off the top of er of
620
62100:10:25.859-->00:10:29.362
622the top off with our heads we
623looked at this thing and we said
624I have no idea what that is.
625
62600:10:29.362-->00:10:32.932
627That looks pretty sweet. Right?
628Uh it's high entropy followed by
629low entropy There's certainly a
630
63100:10:32.932-->00:10:37.437
632pattern there. Uh this stuff you
633know somewhere in the middle
634probably looks like code. Uh
635
63600:10:37.437-->00:10:42.609
637stuff over here maybe data.
638Right? It's high entropy. Right?
639I mean it's low entropy but it
640
64100:10:42.609-->00:10:46.646
642looks like there some stuff in
643there that's interesting. And
644who knows? Maybe this is
645
64600:10:46.646-->00:10:51.117
647compressed data. We don't really
648know. And then we took it and we
649just ran a string on this thing.
650
65100:10:51.117-->00:10:54.787
652And you know we're seeing a lot
653of stuff that we're you know we
654saw in the documentation. So
655
65600:10:54.787-->00:10:59.559
657there's app test. Right? I
658mentions of you know picture in
659picture. And things like OSD
660
66100:10:59.559-->00:11:03.730
662high and OSD show right? So this
663looks like we're on the right
664track. We want to play with
665
66600:11:03.730-->00:11:09.302
667these things. So, then I said
668obviously let's throw this in
669ida and see what happens. Right?
670
67100:11:09.302-->00:11:13.573
672And this is what ida did. Right?
673And you know we looked and it
674and we said oh this is really
675
67600:11:13.573-->00:11:18.845
677hard. We can't figure out how to
678to disassemble turbo 186. Which
679is the architecture here. So we
680
68100:11:18.845-->00:11:23.917
682started Googling around and it
683seems like somebody on open
684universe in 2008 probably did
685
68600:11:23.917-->00:11:28.354
687exactly this research but maybe
688didn't tell anybody. Because
689they're asking about exactly the
690
69100:11:28.354-->00:11:31.991
692same architecture and exactly
693the same format. And I think the
694binary is actually from one of
695
69600:11:31.991-->00:11:36.229
697these us former updates. So we
698looked at this. And we said oh
699we don't like [indiscernible] so
700
70100:11:36.229-->00:11:39.832
702we're going to go do something
703more fun. Right? And we put it
704down. And we didn't work on it
705
70600:11:39.832-->00:11:45.238
707for like 6 months. Ah and then
7082016 comes along right? And
709Jaden and I are sitting around
710
71100:11:45.238-->00:11:49.409
712and this is really bothering us.
713You know. I have no idea how
714this works. Like computers are
715
71600:11:49.409-->00:11:55.815
717hard. So we just said write Igor
718an email. Right? And uh in 6
719hours or 8 hours Igor responds
720
72100:11:55.815-->00:12:00.286
722and it says like here's a long
723in full explanation of how ida
724works and turbo 186. And also I
725
72600:12:00.286-->00:12:03.723
727already disassembled this thing
728for you simple. >>So this
729[indiscernible] tag says
730
73100:12:03.723-->00:12:05.725
732basically uh
733[indiscernible]......monitor to
734update the [indiscernible] on
735
73600:12:05.725-->00:12:10.730
737the device. And he was it was
738like uh 200 kilobyte um I think?
7392 megabyte. Uh and he had
740
74100:12:14.200-->00:12:18.538
742reversed uh everything and uh it
743was perfectly uh disassembled.
744And he gave it back to us. So we
745
74600:12:18.538-->00:12:22.041
747thought uh like we could do
748something like this with the
749formula monitor. >>Yeah so you
750
75100:12:22.041-->00:12:25.111
752know I read his email and I said
753I'm just going to do exactly
754what you did. Right? I got
755
75600:12:25.111-->00:12:29.916
757segment city everywhere. And
758nothing worked out. And I
759failed. And Jaden said let's now
760
76100:12:29.916-->00:12:36.556
762do that. >>So let's be monkeys
763and press space. So we we added
764a hard key which uh if you add
765
76600:12:36.556-->00:12:40.793
767like um space or like it jumps
768to different references you
769won't get a control for analysis
770
77100:12:40.793-->00:12:46.366
772but likely [indiscernible]. So
773if [indiscernible] is looking at
774it please sorry. Um so while we
775
77600:12:46.366-->00:12:51.371
777have now um we can run code but
778we want to do our um we want to
779run some sort of code on it.
780
78100:12:53.539-->00:12:57.777
782Right? So we use uh we went
783through the g-probe um
784documentation and we found 3
785
78600:12:57.777-->00:13:00.713
787commands. One is registry which
788uh [indiscernible].......One
789code uh placing PC anywhere we
790
79100:13:00.713-->00:13:05.718
792want. And uh ram write which
793allow us to batch shell code uh
794into the memory. And uh there's
795
79600:13:08.921-->00:13:13.926
797no MMU so this is
798[indiscernible]. So we want so
799there's a concept of app test uh
800
80100:13:16.596-->00:13:21.768
802which is basically a unit test
803inside the monitor. Uh so it
804creates a context and it uh
805
80600:13:21.768-->00:13:27.440
807tears down the context and does
808something inside it. >>Yeah so
809now that we have this ability to
810
81100:13:27.440-->00:13:31.811
812write code into memory and then
813run code right? We want to
814highjack something that seems
815
81600:13:31.811-->00:13:36.616
817like it might be useful. Uh to
818see if we can do a very simple
819hello world. So we found there's
820
82100:13:36.616-->00:13:40.420
822one function that says you know
823always the fill rectangle you
824know that sounds like a good
825
82600:13:40.420-->00:13:43.756
827idea. We want to just put a
828rectangle on the screen to see
829if we can actually do this.
830
83100:13:43.756-->00:13:46.793
832>>That's batch it using
833[indiscernible] >>All right so
834Jaden wrote this thing and it
835
83600:13:46.793-->00:13:50.963
837turn out to be the grossest code
838that we've seen to that point.
839It gets way worse than this.
840
84100:13:50.963-->00:13:55.601
842Right? So this is what it looks
843like. Uh >>And I have I have
844looked at this for 3 weeks.
845
84600:13:55.601-->00:13:59.272
847>>Yeah and if you stare at this
848for hours and hours it will make
849you want to puke. Um >>It will
850
85100:13:59.272-->00:14:05.278
852get us close. >>And Jaden
853definitely did stare at this for
854hours and hours. And okay so now
855
85600:14:05.278-->00:14:09.315
857okay now that we're able to dump
858some memory from the firmware.
859Right? We're looking at the code
860
86100:14:09.315-->00:14:13.720
862with some most of it
863disassembled. Right? We notice
864that most the virtual memory
865
86600:14:13.720-->00:14:18.257
867address map is between this and
868this. Okay. But there's all
869these far calls to this very
870
87100:14:18.257-->00:14:20.259
872mysterious memory region. >>So
873we started uh we thought like um
874there's no reference to it and
875
87600:14:20.259-->00:14:23.663
877we do not understand how to get
878this code. So we started dumping
879code. Um we um so we wrote a USB
880
88100:14:23.663-->00:14:25.665
882dump and uh so we took there is
883there is a command which is
884listed called grand read. Uh be
885
88600:14:25.665-->00:14:27.667
887we were not able to make it
888work. Although it works now. So
889we used uh a reg read uh which
890
89100:14:27.667-->00:14:32.672
892allowed us dump 2 bytes at a
893time. So imagine like uh doing
894those 12 packet transfers to get
895
89600:14:44.617-->00:14:51.457
8972 bytes out. Uh so uh I wrote a
898memory dumper which allowed us
899to do uh 1 megabyte dump per 8
900
90100:14:51.457-->00:14:55.094
902minutes. >>Per 8 minutes. So
903remember those tall commands
904that you had to do. Right? We're
905
90600:14:55.094-->00:15:00.166
907doing those USB commands for
908what it is 100 bytes at a time
909right? So >>Yeah >>We this is
910
91100:15:00.166-->00:15:05.171
912what we did it was dumb. Jaden
913writes the USB dumper. We dump
914and we wait and we dump and we
915
91600:15:07.673-->00:15:11.410
917wait and we dump. And this is
918very slow. Right? And then
919Francois comes along says like
920
92100:15:11.410-->00:15:15.381
922you guys dump too slow and
923totally do this differently. So
924he went off and he said I"m just
925
92600:15:15.381-->00:15:20.453
927going to reimplement the UR of
928using GPIO pins in the sock uh
929that's going to be way faster.
930
93100:15:20.453-->00:15:23.523
932And we're like no way that's
933going to work. You know. Two
934days later he comes back and he
935
93600:15:23.523-->00:15:27.827
937says you are implemented. Okay?
938He has a highjacked standard in
939standard out. So all of a sudden
940
94100:15:27.827-->00:15:32.932
942we had a u-art over GPIO pins on
943the monitor that not only
944allowed us dump arbitrary memory
945
94600:15:32.932-->00:15:37.904
947it also allowed us to highjack
948all these these very important
949very useful debug messages. >>So
950
95100:15:37.904-->00:15:41.874
952it is very important important
953to know that right now we're
954working with the assumption that
955
95600:15:41.874-->00:15:47.413
957there is only one um micro
958controller and that suck. Ah but
959after dumping the F thousand
960
96100:15:47.413-->00:15:51.884
962range we realized that it's
963actually a hardware obstruction
964there to talk to another chip.
965
96600:15:51.884-->00:15:57.323
967Uh and the processor inside the
968sock which which uh it's called
969OSD now on screen display whose
970
97100:15:57.323-->00:16:03.462
972main uh function is to display
973midges on the on the on the
974monitor. But the other OCM which
975
97600:16:03.462-->00:16:08.000
977is on chip micro controller is
978actually talking to other device
979uh uh that are common place
980
98100:16:08.000-->00:16:13.840
982inside the sock and other um
983external interfaces. So the
984which is uh is 8000
985
98600:16:13.840-->00:16:20.346
987[indiscernible] is mapped to is
988uh OCM and F uh and OSD has its
989own code running inside s ram.
990
99100:16:20.346-->00:16:25.251
992Um its own kind of processor.
993>>Yeah so at this point you know
994we now know that we're now
995
99600:16:25.251-->00:16:28.955
997working with just one processor
998there's at least 2 different
999processors inside the sock.
1000
100100:16:28.955-->00:16:32.725
1002Right? And they communicate
1003using some memory map register
1004that we don't really understand
1005
100600:16:32.725-->00:16:37.530
1007yet. And uh we kind of hit a
1008wall. So we spent like a million
1009years Googling and clicking on
1010
101100:16:37.530-->00:16:40.900
1012pretty much everything that
1013we're not supposed to. Right?
1014Until we found this beautiful
1015
101600:16:40.900-->00:16:45.771
1017site Dot 88 which is a place
1018where people upload you know
1019awesome proprietary documents
1020
102100:16:45.771-->00:16:51.043
1022for the internet and stuff. And
1023uh you'll probably want to open
1024this in a VM but it did give us
1025
102600:16:51.043-->00:16:55.882
1027the exact data sheet for this
1028chip that we're working with and
1029from there we found pretty much
1030
103100:16:55.882-->00:16:59.752
1032everything we needed to know
1033about how this chip worked. Uh
1034and we were right about this
1035
103600:16:59.752-->00:17:03.456
1037assumption that there is an OCM
1038and an OSD chip and or OSD
1039processor and they are
1040
104100:17:03.456-->00:17:08.261
1042completely separate. And they
1043work more or less asynchornously
1044from each other. Okay? So now
1045
104600:17:08.261-->00:17:11.864
1047that we have the data sheet
1048we've done all the stuff you
1049know let's try to display a
1050
105100:17:11.864-->00:17:15.968
1052picture. Right? Let's get that
1053to work. First uh there are 3
1054things that we have to solve.
1055
105600:17:15.968-->00:17:19.939
1057And if we solve these things we
1058we got picture display. Okay?
1059We'll have to figure out where
1060
106100:17:19.939-->00:17:24.543
1062to transfer the image to the
1063monitor. Alright? We have to
1064figure out how to trigger the
1065
106600:17:24.543-->00:17:28.681
1067image display function to you
1068know display that image that we
1069transferred. And then we also
1070
107100:17:28.681-->00:17:32.952
1072have to figure out you know what
1073a color is. Right? How the
1074colors represented in this this
1075
107600:17:32.952-->00:17:38.424
1077monitor. >>So uh when you start
1078booting the monitor right? Like
1079if this image comes up. So the
1080
108100:17:38.424-->00:17:42.161
1082the theory was that it defined
1083this image we will be able to
1084find the code which loads this
1085
108600:17:42.161-->00:17:47.166
1087image and our quest will be
1088over. But uh I I we had drunk
1089sober and >>Very sober
1090
109100:17:49.835-->00:17:54.073
1092[indiscernible as they talk over
1093each other] >>And uh after a few
1094hours we came with our own
1095
109600:17:54.073-->00:17:59.045
1097analysis and uh we put said that
1098this is not a Dell image so what
1099is this? um >>Well uh I mean so
1100
110100:17:59.045-->00:18:02.581
1102we looked at some part of the
1103code. Right? This clearly
1104doesn't hold the Dell logo.
1105
110600:18:02.581-->00:18:05.551
1107Right? But you know what about
1108stuff like this on the on the
1109left side? Right? Like maybe
1110
111100:18:05.551-->00:18:08.955
1112that's you know some
1113representation of image. You
1114know what is the thing on the
1115
111600:18:08.955-->00:18:14.794
1117left? Right? And if you stare at
1118that too long it also does crazy
1119things to your brain. Um okay!
1120
112100:18:14.794-->00:18:21.400
1122So then you know Francois comes
1123along. Right? And uh we you know
1124>>Yeah after like after few days
1125
112600:18:21.400-->00:18:25.871
1127uh he came up with me like he
1128wanted to [indiscernible] to
1129stare at. And uh I looked at it
1130
113100:18:25.871-->00:18:32.578
1132for hours and uh Duh come on
1133that's obviously an OSD command
1134packet uh >>Great! I mean don't
1135
113600:18:32.578-->00:18:37.049
1137you see that? Obviously right?
1138This is just you know in memory
1139of run time. Right? Just a big
1140
114100:18:37.049-->00:18:41.988
1142ol' blob of binary and Jaden
1143stares at this thing and he says
1144obviously this is this
1145
114600:18:41.988-->00:18:48.127
1147structure. >>So uh this OSD
1148command packet allows the OSD to
1149display packet uh anywhere in
1150
115100:18:48.127-->00:18:52.231
1152the screen. You can specify the
1153coordinates. You can specify the
1154size. You can specify the color.
1155
115600:18:52.231-->00:18:57.303
1157How many bits per pixel have to
1158be used uh and uh what we
1159understood after a lot of
1160
116100:18:57.303-->00:19:02.241
1162reverse analysis uh of the um I
1163rom [indiscernible] This is how
1164it actually works. So you write
1165
116600:19:05.478-->00:19:10.850
1167the OSD packet inside the OCM
1168memory map. And then you engage
1169the main engine to map this
1170
117100:19:10.850-->00:19:15.855
1172memory over to s ram of OSD. And
1173uh as long like uh as OSD is
1174working asynchronously um it
1175
117600:19:17.890-->00:19:22.762
1177reads the packet and displays
1178image. And similarly you can
1179transfer the image to the OSD
1180
118100:19:22.762-->00:19:26.565
1182using the main memory mapping.
1183So this solved this first 2
1184questions which was transfer and
1185
118600:19:26.565-->00:19:32.505
1187display image. Right? And uh the
1188APS which were used to do this
1189was SD ram read uh to check
1190
119100:19:32.505-->00:19:38.177
1192verify our write. And the SD ram
1193write which showed us to do all
1194this. And this is what we came
1195
119600:19:38.177-->00:19:43.649
1197with. This is probably the most
1198gross blinking um box blinking
1199program I have ever and if you
1200
120100:19:43.649-->00:19:48.587
1202look at it for hours you I have
1203the [indiscernible] once. >>Uh
1204alright wait you gotta see it.
1205
120600:19:48.587-->00:19:55.361
1207You guys all have to watch this
1208with us now. Wait hold why did
1209that >>So you will see >>No it
1210
121100:19:55.361-->00:19:58.497
1212doesn't want to play. Hold on.
1213No No You're not gonna get
1214>>Doesn't want to come up >>Your
1215
121600:19:58.497-->00:20:03.502
1217not off the hook. You gotta
1218watch this video. [pause]
1219>>Okay. So as you will see that
1220
122100:20:05.704-->00:20:11.744
1222the blob [indiscernible] moved
1223the box around anywhere on the
1224screen. And uh >>That's so
1225
122600:20:11.744-->00:20:16.348
1227nauseating >>There is there was
1228a blinking blob which I figured
1229out after recon. >>Right but
1230
123100:20:16.348-->00:20:20.086
1232this is after days of looking at
1233this non-stop. So the last
1234question we have to figure out
1235
123600:20:20.086-->00:20:24.457
1237you know what is a color? Right?
1238I mean is it a 32 bit color? How
1239is it represented? So we did the
1240
124100:20:24.457-->00:20:28.994
1242reasonable thing and filled a
1243rectangle with rows n rows of
1244you know of color and
1245
124600:20:28.994-->00:20:35.401
1247incremental values from 0 1 2 3
12484 etc. Uh so instead of getting
1249very similar colors we got these
1250
125100:20:35.401-->00:20:41.574
1252colors. Right? So you know why
1253is color 0 basically the same as
1254color 2? Why is 1 totally
1255
125600:20:41.574-->00:20:46.345
1257different? Okay? And uh we
1258didn't really know. Let's do
1259some science. We take a tiny
1260
126100:20:46.345-->00:20:52.017
1262little microscope and we point
1263it at specific pixels in order
1264for us to figure out you know
1265
126600:20:52.017-->00:20:58.090
1267what color gets rendered into
1268what um pixel value. So filled
1269every rectangle with um value oh
1270
127100:20:58.090-->00:21:04.130
1272it's 3 3. Okay? And this is what
1273we saw. So if you looked at it
1274right R is blank. G is 100%. And
1275
127600:21:04.130-->00:21:08.768
1277B is 100% Right? So this is you
1278know individual pixel cells that
1279we're looking at. And then we
1280
128100:21:08.768-->00:21:14.473
1282said okay. Let's do instead of
1283you know the same pattern we'd
1284do augs 3 3 augs 0 0 augs 3 3
1285
128600:21:14.473-->00:21:20.913
1287augs 0 0. So Jaden how many bits
1288does the monitor use to
1289represent each color?
1290
129100:21:20.913-->00:21:25.518
1292>>[indiscernible] So if 0
1293represents transparency and
1294there's 2 pixels missing so its
1295
129600:21:25.518-->00:21:31.290
12974 bits per pixel. >>Right and
1298then >>How do you encode colors
1299with 4 bits? Right? In normal
1300
130100:21:31.290-->00:21:35.060
1302RGB world each color each
1303[indiscernible] is presented
1304using 8 bit. And there
1305
130600:21:35.060-->00:21:40.966
1307[indiscernible] 32 bit color. So
1308how do you do this
1309[indiscernible]? >>Yeah so
1310
131100:21:40.966-->00:21:46.105
1312right? If you have 4 bits then
1313you can have 1 bit for our 1 bit
1314for B you know etc. And that's
1315
131600:21:46.105-->00:21:49.842
1317clearly not whats happening
1318here. So it turns out this
1319monitor uses a thing called
1320
132100:21:49.842-->00:21:54.380
1322color lookup table. Which is
1323basically this index structure
1324right? That uses 4 bits then can
1325
132600:21:54.380-->00:21:59.852
1327actually do 32 bit colors. So
1328this allows you to save space.
1329Right? You can have at most 16
1330
133100:21:59.852-->00:22:05.024
1332different colors. but you can
1333have colors that are 32 bit
1334deep. Um so now the big question
1335
133600:22:05.024-->00:22:11.664
1337is how where's the lookup table?
1338Can we change it? Can we modify
1339it? Uh and then we did a very
1340
134100:22:11.664-->00:22:16.702
1342you know again very sober very
1343collaborative work with
1344Francois. Right? And we did this
1345
134600:22:16.702-->00:22:21.707
1347for days n days to try and
1348figure this out. Where he dumped
1349lots of memory and we helped a
1350
135100:22:21.707-->00:22:26.612
1352lot. And uh like 2 days later
1353okay we finally find the
1354structure that we think is the
1355
135600:22:26.612-->00:22:30.649
1357lookup table. >>So it works in a
1358similar way how we were
1359transferring the images in the
1360
136100:22:30.649-->00:22:35.754
1362command packets. So you generate
1363specific color lookup table
1364structure. And you write OSM
1365
136600:22:35.754-->00:22:39.758
1367memory um memory map that
1368[indiscernible] displays the
1369color for that specific image.
1370
137100:22:39.758-->00:22:42.761
1372>>Okay so we have everything
1373that we need. Okay we gonna uh
1374display a photo. And we did.
1375
137600:22:42.761-->00:22:45.297
1377Okay? So look at that. We have
1378tiny little SSL locks. We have
1379as many as want wherever we want
1380
138100:22:45.297-->00:22:47.299
1382it. And that was sort of the
1383point of this. Right? Uh but I
1384looked at it and I said we still
1385
138600:22:47.299-->00:22:52.304
1387only have 16 colors. And that
1388SSL lock actually had something
1389like 20 >>26 >>26 colors! So
1390
139100:22:57.543-->00:23:02.481
1392that's not enough colors Jaden.
1393We need more colors. >>It's
1394really hard has been really hard
1395
139600:23:04.884-->00:23:09.488
1397now. >>Yeah. >>So we went
1398through some docs and uh we
1399figured out like uh the hardware
1400
140100:23:09.488-->00:23:15.527
1402does support at least a bit per
1403pixel. So uh and and until recon
1404we didn't have we had only 4 bit
1405
140600:23:15.527-->00:23:19.265
1407per pixel but now we have uh
1408fixed up to get 256 colors and
1409the code is [indiscernible]. Uh
1410
141100:23:19.265-->00:23:25.738
1412but after going over more
1413analysis of the documentation
1414there is the documentation that
1415
141600:23:25.738-->00:23:30.242
1417we found. We we found a break
1418point so which means that we can
1419hold the monitor figure out
1420
142100:23:30.242-->00:23:34.146
1422everything and this is like
1423after like 90% of the research
1424we have already done. We're
1425
142600:23:34.146-->00:23:40.085
1427spending like weeks on it. Um
1428even months and now if if we
1429were to have access to this
1430
143100:23:40.085-->00:23:44.056
1432break point we would have
1433finished it in probably like
1434half 1-n-half weeks or 2 weeks.
1435
143600:23:44.056-->00:23:47.126
1437>>Yeah so at this point Jaden
1438and I just kind of like put our
1439hands up in the air and was like
1440
144100:23:47.126-->00:23:51.997
1442argh I can't believe we missed
1443that one. Or that's terrible.
1444You know so we said like interns
1445
144600:23:51.997-->00:23:55.367
1447go do the rest of it. Right?
1448Break point everything reverse
1449it tell us what it is and
1450
145100:23:55.367-->00:23:59.204
1452Francois helped. The interns
1453went out uh dumped the static
1454dumped the heat you know found
1455
145600:23:59.204-->00:24:03.375
1457pretty much everything we needed
1458to do. All the demos that I'll
1459show you later. Uh and then we
1460
146100:24:03.375-->00:24:09.281
1462find the treasure. >>This was
1463very surprising because we the
1464OSD should be allowed to display
1465
146600:24:09.281-->00:24:13.452
1467a pixel on the image on the
1468screen but it should it is very
1469surprising that it has the
1470
147100:24:13.452-->00:24:18.324
1472capability to read pixels
1473anywhere on the screen. And what
1474can you do with that now? >>Yeah
1475
147600:24:18.324-->00:24:22.761
1477we'll talk about that in a
1478little bit. So we presented some
1479of the research uh at recon and
1480
148100:24:22.761-->00:24:26.598
1482after the presentation people
1483who actually knew how monitors
1484worked came up to us and said
1485
148600:24:26.598-->00:24:30.035
1487like hey stupid! You don't
1488actually even need the USB cable
1489because you know there
1490
149100:24:30.035-->00:24:37.009
1492[indiscernible] I 2 C channels
1493on uh DVI HDMI and VGA etc. So
1494we actually ported the code to
1495
149600:24:37.009-->00:24:42.848
1497run over the I 2 C interface.
1498And now our demos do not require
1499USB at all. Although it can be
1500
150100:24:42.848-->00:24:48.520
1502done over both channels. Um and
1503that stuff [indiscernible]. Now,
1504let's have some fun with it.
1505
150600:24:48.520-->00:24:53.192
1507Right? Let's make a monitor
1508implant. So let's assume that we
1509have a very simple base implant
1510
151100:24:53.192-->00:24:57.963
1512in the monitor. Okay? And let's
1513also assume that I'm a sneaky
1514guy and I have control over a
1515
151600:24:57.963-->00:25:03.736
1517pixel. Right? So if I blink the
1518pixel I should be able to
1519transmit data to my you know
1520
152100:25:03.736-->00:25:08.841
1522base monitor implant. And I can
1523do something very much similar
1524to command and control. Right?
1525
152600:25:08.841-->00:25:13.679
1527So every time I sample a pixel I
1528can change the data and I can do
1529something like the command type
1530
153100:25:13.679-->00:25:18.684
1532data data data which allows me
1533to load or return code or return
1534data X 2 code and do all sorts
1535
153600:25:18.684-->00:25:23.722
1537of other things. Now we take
1538this pixel. We put it on the
1539internet. Right? And as we know
1540
154100:25:23.722-->00:25:29.228
1542the internet is used for one
1543thing. Right? So we can put this
1544pixel on photos of cats. Right?
1545
154600:25:29.228-->00:25:34.266
1547We can do YouTube videos of
1548cats. We even do you know movies
1549about cats. And once we do this
1550
155100:25:34.266-->00:25:38.804
1552we can distribute this pixel
1553down to millions and millions of
1554monitors and we update them all
1555
155600:25:38.804-->00:25:43.041
1557at the same time. And we can
1558have direct command command and
1559control down to those exact
1560
156100:25:43.041-->00:25:47.980
1562monitors. Okay? And within our
1563organization this is commonly
1564known as cap base for domination
1565
156600:25:47.980-->00:25:54.953
1567plan #7. Okay? Uh now so in the
1568end what do we do? Okay? We
1569figured out that we can change
1570
157100:25:54.953-->00:25:59.625
1572whatever pixel on the screen
1573wherever we want. Uh we can also
1574see every pixel on the screen
1575
157600:25:59.625-->00:26:03.562
1577which is really cool. And uh for
1578those folks who have followed
1579our previous research we even
1580
158100:26:03.562-->00:26:07.866
1582got Funtana to work on the
1583monitors as well but that's its
1584own conversation that we'll have
1585
158600:26:07.866-->00:26:13.872
1587later. So you know I've talked
1588right we're going to do some
1589demos. Okay? Uh and then first I
1590
159100:26:13.872-->00:26:18.877
1592have to figure out how do this
1593work? [indiscernible] [long
1594pause] We swear there's an
1595
159600:26:36.495-->00:26:42.367
1597actual monitor underneath this
1598table and the demo is not
1599rigged. Uh but shooting a camera
1600
160100:26:42.367-->00:26:47.372
1602at the monitor is a little bit
1603difficult so does it work? >>I
1604think your >>No
1605
160600:26:55.247-->00:27:00.185
1607>>[indiscernible] >>Alright
1608[indiscernible] we go >>Okay so
1609I'm gonna talk from under the
1610
161100:27:07.626-->00:27:12.631
1612table >>Yeah >>So first I'm
1613going to show you how to put
1614brand new people pictures on the
1615
161600:27:15.667-->00:27:20.672
1617screen and you can uh not remove
1618it. So I'm so this is Shakib
1619that we talked about. And his
1620
162100:27:23.041-->00:27:27.312
1622picture is going to be on the
1623monitor. >>So this is a typical
1624you know you put new machine no
1625
162600:27:27.312-->00:27:33.151
1627uh administrative privilege and
1628where showing you know putting
1629an image on the screen. Now we
1630
163100:27:33.151-->00:27:36.955
1632didn't do this in genhub but we
1633can actually make this
1634permanent. So imagine if that
1635
163600:27:36.955-->00:27:41.226
1637happened to you. How terrible
1638your life would be? Alright?
1639>>So my second attack will be
1640
164100:27:41.226-->00:27:46.798
1642you all know about fortune
1643right? And it is not uh it
1644doesn't have any D list uh
1645
164600:27:46.798-->00:27:49.902
1647capabilities. But I'm going to
1648give it to you. >>We're going to
1649secure fortune for everybody.
1650
165100:27:49.902-->00:27:53.672
1652>>We did! >>So check it out.
1653Right? Can you like move it a
1654little bit? If you can see that
1655
165600:27:53.672-->00:27:58.043
1657closely. Right? So we get to put
1658SSL locks wherever we want. And
1659if we just line it up right
1660
166100:27:58.043-->00:28:03.482
1662it'll be right on the browser
1663where SSL lock ought to be. So
1664now fortune has SSL. So yay!
1665
166600:28:03.482-->00:28:10.422
1667>>Uh the next stack will be the
1668you if you guys know about
1669[indiscernible] faces uh where
1670
167100:28:10.422-->00:28:14.993
1672you know in power plants and uh
1673[indiscernible] operator
1674[indiscernible] what has gone
1675
167600:28:14.993-->00:28:19.932
1677wrong in a power plant system or
1678a nuclear fusion system. So if
1679you look at that green light it
1680
168100:28:19.932-->00:28:26.338
1682tells that uh that uh whatever
1683gun battle is perfectly working
1684fine but I'm going to change
1685
168600:28:26.338-->00:28:32.578
1687that to [pause] what >>Alright.
1688So what if we were able to right
1689show the different status of the
1690
169100:28:32.578-->00:28:36.949
1692uh industrial control system
1693just by changing the pixels that
1694said this pump is good this pump
1695
169600:28:36.949-->00:28:42.120
1697is bad. What if we're able to
1698change the operatives behavior
1699just by changing the pixels on
1700
170100:28:42.120-->00:28:46.291
1702the monitor? Right? We'd have a
1703fundamental trust of you know we
1704trust that whatever pixels are
1705
170600:28:46.291-->00:28:50.162
1707coming out of the computer will
1708be displayed on the monitor and
1709we're seeing that this is
1710
171100:28:50.162-->00:28:54.866
1712actually not even true. Okay? So
1713the last one we're going to do
1714is going to show the uh the
1715
171600:28:54.866-->00:28:58.537
1717blinking pixel command and
1718control. You know that we talked
1719about? So on the left side
1720
172100:28:58.537-->00:29:02.441
1722right? We have a paypal page or
1723paypal account. Uh I don't have
1724any money in this paypal account
1725
172600:29:02.441-->00:29:07.312
1727which is really sad. Uh Jaden's
1728going to change that for me.
1729Alright? >>I'm gonna put how
1730
173100:29:07.312-->00:29:09.314
1732much money do you want? >>Like a
1733mill million dollars. >>Okay
1734let's do it. >>One million
1735
173600:29:09.314-->00:29:11.316
1737dollars. [pause] >>Alright so I
1738also gave it uh SSL protection
1739that fishing page. >>Great.
1740
174100:29:11.316-->00:29:17.889
1742[laughter/clapping] There ya go!
1743>>I put a million dollars! >>And
1744the way this is working is
1745
174600:29:17.889-->00:29:22.894
1747there's a tiny little blinking
1748pixel on the right screen that's
1749communicating to the monitor.
1750
175100:29:28.867-->00:29:34.072
1752Telling the monitor to put this
1753image at this specific value.
1754And uh we can do this of course
1755
175600:29:34.072-->00:29:38.110
1757in real time. >>But Ang I don't
1758want to give you a million
1759dollar. I want to change it now.
1760
176100:29:38.110-->00:29:44.483
1762I'm >>Noooo >>No let me let me
1763>>[giggle] >>So what we're doing
1764is uh we gonna so let's suppose
1765
176600:29:44.483-->00:29:49.488
1767we're going we gonna send a
1768command and control packet our
1769from our server. oops
1770
177100:29:57.996-->00:30:03.001
1772[indiscernible] [long pause] my
1773server has gone down. [long
1774pause] [laughter] [talking off
1775
177600:30:11.143-->00:30:15.213
1777mic] >>Okay so anyway that's a
1778demo. Right? And all the all the
1779code that went into this demo is
1780
178100:30:15.213-->00:30:20.218
1782up on our [indiscernible] Is it
1783working? Is it working? >>Okay
1784yep. >>Yeah? Okay. [long pause]
1785
178600:30:41.506-->00:30:46.511
1787[off mic noises] >>Okay so I'm
1788going to give you how much you
1789want to [long pause] >>No yeah I
1790
179100:30:50.415-->00:30:55.087
1792mean. Okay so anyway. All the
1793code that went into this demo is
1794in [indiscernible] ready. Uh the
1795
179600:30:55.087-->00:31:00.025
1797link is on [loud mic drop] [long
1798pause] Okay so let's talk about
1799what this means. Okay?
1800
180100:31:10.168-->00:31:13.872
1802Implication wise. You know the
1803first question is you know how
1804big is this problem really?
1805
180600:31:13.872-->00:31:18.043
1807Right? We looked at a single
1808onscreen display implementation
1809for one type of monitor. Uh you
1810
181100:31:18.043-->00:31:21.780
1812know we certainly found some
1813vulnerabilities in it but you
1814know is this a pervasive thing?
1815
181600:31:21.780-->00:31:26.118
1817So to answer that question we
1818bought 4 other types of monitors
1819that are very common. You know
1820
182100:31:26.118-->00:31:30.255
1822there on the budget end of
1823things 24 monitors inch monitors
1824that are approximately between
1825
182600:31:30.255-->00:31:36.828
1827$100 to $200. That we we looked
1828at Samsung, Dell,Acer, HP. And
1829uh what's inside these guys uh
1830
183100:31:36.828-->00:31:42.901
1832these chips these boards. Uh the
1833bad news is they're not uh SD
1834micro. They don't run g-code or
1835
183600:31:42.901-->00:31:47.773
1837g-probe. Uh the good news is
1838this one is Amstar. That one is
1839Amstar. And this one is also
1840
184100:31:47.773-->00:31:52.677
1842Amstar. And so is this one.
1843Right? So is seems like Amstar
1844is uh you know very pervasive
1845
184600:31:52.677-->00:31:57.449
1847right? A popular OSD controller
1848that's used in the lower uh the
1849cheaper segment of the market.
1850
185100:31:57.449-->00:32:01.620
1852And it turns out that this
1853really cool dude named Alex
1854Bohlen already did all the work
1855
185600:32:01.620-->00:32:07.225
1857for us. So he figured out the
1858way to uh do firmware updates to
1859all Amstar uh micr onscreen
1860
186100:32:07.225-->00:32:12.764
1862controllers. And uh this is
1863actually like a featured inside
1864the limits kernel now. Right? So
1865
186600:32:12.764-->00:32:17.636
1867that's the link. This work has
1868already been done. Um so it
1869looks like the same type of
1870
187100:32:17.636-->00:32:21.973
1872vulnerability that is
1873fundamental to the Dell monitor
1874is also within it's also within
1875
187600:32:21.973-->00:32:26.044
1877these other Amstar monitors
1878which means you know it probably
1879would have made more than a
1880
188100:32:26.044-->00:32:30.115
1882billion monitors. Right? So in
1883the last 10 years and most of
1884those it looks like will be
1885
188600:32:30.115-->00:32:34.619
1887vulnerable to some type of
1888attack like this. Okay and uh
1889the next question is you know
1890
189100:32:34.619-->00:32:39.391
1892how practical is this attack? I
1893mean you guys have to make up
1894your own mind about. Right? But
1895
189600:32:39.391-->00:32:44.529
1897keep in mind that we don't have
1898to have any privilege uh on the
1899on the computer in order to
1900
190100:32:44.529-->00:32:50.335
1902launch this type of thing. So
1903any unprivileged code execution
1904will allow permanent persistent
1905
190600:32:50.335-->00:32:55.040
1907firmware modification inside the
1908monitor. Right? And uh last big
1909question is you know how
1910
191100:32:55.040-->00:33:00.979
1912realistic is this fix? You know
1913because I the way to fix this
1914now right without a physical
1915
191600:33:00.979-->00:33:05.183
1917recall would be to have the
1918vendor distribute a firmware
1919update tool that patches some of
1920
192100:33:05.183-->00:33:10.522
1922these you know insecurities
1923about firmware updates and code
1924execution. Okay? But if they did
1925
192600:33:10.522-->00:33:14.659
1927that they would also release
1928exactly the algorithm and the
1929protocol for updating all the
1930
193100:33:14.659-->00:33:20.732
1932firmware all the monitors. So
1933this is not exactly a simple
1934thing to do. Um and uh you know
1935
193600:33:20.732-->00:33:24.603
1937this is um something that I
1938would like the community to talk
1939about. You know is monitor
1940
194100:33:24.603-->00:33:30.709
1942security important? I think it
1943is. How do we actually uh secure
1944the monitors that we have now?
1945
194600:33:30.709-->00:33:35.513
1947Right? And how do we build more
1948secure monitors in the future.
1949So uh that's pretty much my
1950
195100:33:35.513-->00:33:41.386
1952presentation and uh I have to
1953say this, you know we're we're
1954from Rebleware Security. We do
1955
195600:33:41.386-->00:33:45.523
1957imbedded security stuff when
1958we're hired. So if you want to
1959do this type of research, uh get
1960
196100:33:45.523-->00:33:50.595
1962in touch with us. And also big
1963thanks to [indiscernible] Abbot
1964who did a lot of the demo code.
1965
196600:33:50.595-->00:33:55.533
1967Um Bob drew all this stuff that
1968wasn't terrible. And Brian who
1969also helped a lot and he's in
1970
197100:33:55.533-->00:34:00.538
1972the front row. So thank you very
1973much. This is where the code is
1974Uh for all this work. Uh check
1975
197600:34:00.538-->00:34:05.543
1977it out. [applause]
1978