-
Notifications
You must be signed in to change notification settings - Fork 0
/
camp2023-57126-eng-Our_Time_in_a_Product_Review_Cabal_opus.vtt
1856 lines (1237 loc) · 54.1 KB
/
camp2023-57126-eng-Our_Time_in_a_Product_Review_Cabal_opus.vtt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WEBVTT
00:00:00.000 --> 00:00:10.000
[MUSIC]
00:00:10.000 --> 00:00:20.000
[MUSIC]
00:00:20.000 --> 00:00:35.800
And okay, we are ready to start.
00:00:35.800 --> 00:00:42.720
So from the US, we have two first time campers that are going to present
00:00:42.720 --> 00:00:46.960
awesome stuff to us, Matt and Adam.
00:00:46.960 --> 00:00:51.480
They are going to talk us about product review and the malware and
00:00:51.480 --> 00:00:57.920
the back doors that they have been able to find in those situations.
00:00:57.920 --> 00:01:02.640
So please give a huge applause to our speakers, please.
00:01:02.640 --> 00:01:10.240
>> [APPLAUSE]
00:01:10.240 --> 00:01:12.800
>> Hello, thank you.
00:01:12.800 --> 00:01:18.480
I'm Adam Shaw and this is Matt and this is our time in a product review cabal and
00:01:18.480 --> 00:01:22.160
the malware and bugs that came with it.
00:01:22.160 --> 00:01:26.480
A little bit about us, I lead a team of AppSec engineers.
00:01:26.480 --> 00:01:28.400
I'm a home lab enthusiast.
00:01:28.400 --> 00:01:34.960
I have my own conference that I help run in Omaha, Nebraska in the United States.
00:01:34.960 --> 00:01:38.760
And I help run my local Defcon group.
00:01:38.760 --> 00:01:44.360
And also I help with a conference in Hawaii called LocomocoSec.
00:01:44.360 --> 00:01:47.440
Highly recommended if you're able to get out there for that one.
00:01:47.440 --> 00:01:49.320
>> And hey everyone, my name is Matt Veras.
00:01:49.320 --> 00:01:51.160
It is my real last name.
00:01:51.160 --> 00:01:54.920
I'm a IoT engineer at Cisco for about 15 years now.
00:01:54.920 --> 00:01:56.360
I'm a part time farmer.
00:01:56.360 --> 00:01:57.920
I'm a big hardware junkie.
00:01:57.920 --> 00:02:00.400
I take everything apart and find out how it works.
00:02:00.400 --> 00:02:05.640
I'm a former DOD forensic malware reverse engineer analyst.
00:02:05.640 --> 00:02:07.880
And I'm founder of hackspace.io.
00:02:07.880 --> 00:02:10.160
Slides and stuff from previous projects are posted out there.
00:02:10.160 --> 00:02:15.320
So go check it out and follow us both on Twitter or on Slack or wherever.
00:02:15.320 --> 00:02:16.520
>> Awesome.
00:02:16.520 --> 00:02:18.160
And just a quick disclaimer.
00:02:18.160 --> 00:02:21.640
All of this work was done for research purposes only.
00:02:21.640 --> 00:02:24.800
Nothing we discussed today is representative of our employers.
00:02:24.800 --> 00:02:29.560
We ensured that every review, photo and video were immediately taken down and reported.
00:02:29.560 --> 00:02:31.640
This is platform agnostic.
00:02:31.640 --> 00:02:36.560
It affects all online retailers, not specific ones.
00:02:36.560 --> 00:02:40.040
And we're an ethical cabal.
00:02:40.040 --> 00:02:43.200
So in July we were accepted for this talk.
00:02:43.200 --> 00:02:48.300
Big thank you to Millie Ways and the staff that put this on.
00:02:48.300 --> 00:02:50.920
This is one of my favorite childhood books.
00:02:50.920 --> 00:02:53.920
So I was super pumped about it.
00:02:53.920 --> 00:02:57.120
And then in August we decided we had to make the slides.
00:02:57.120 --> 00:03:03.100
So if you saw us, you know, by our tent, we were working on this for quite some time.
00:03:03.100 --> 00:03:08.440
This is my wife and I, this is like our normal interaction when we have a talk coming up.
00:03:08.440 --> 00:03:11.240
I've almost started.
00:03:11.240 --> 00:03:17.720
So in 2020, there was obviously the global pandemic with COVID.
00:03:17.720 --> 00:03:19.960
And it meant that everyone needed to wear masks.
00:03:19.960 --> 00:03:22.720
It was known for three things, right?
00:03:22.720 --> 00:03:26.360
One, video streaming, all those streaming services.
00:03:26.360 --> 00:03:28.440
And online shopping.
00:03:28.440 --> 00:03:29.480
Yeah.
00:03:29.480 --> 00:03:33.000
So what kind of stuff did you order online?
00:03:33.000 --> 00:03:38.600
Maybe groceries, maybe delivery for food or things like that.
00:03:38.600 --> 00:03:39.600
But not us.
00:03:39.600 --> 00:03:43.680
We ordered all kinds of electronic gizmos and stuff that we really didn't need but looked
00:03:43.680 --> 00:03:48.080
cool and was cheap because we were all stuck at home doing whatever we could only do at
00:03:48.080 --> 00:03:49.080
home.
00:03:49.080 --> 00:03:51.440
So that's kind of where we were.
00:03:51.440 --> 00:03:54.400
So this whole thing started with a postcard.
00:03:54.400 --> 00:03:59.200
I had ordered a smart switch from a company called Treat Life.
00:03:59.200 --> 00:04:04.200
And in the box there was this postcard saying, "We are celebrating our company anniversary.
00:04:04.200 --> 00:04:07.280
And you write to us, send us a note and we'll send you a free gift."
00:04:07.280 --> 00:04:10.000
And who doesn't like a free gift?
00:04:10.000 --> 00:04:12.720
So I reached out to them.
00:04:12.720 --> 00:04:13.720
You could see the note there.
00:04:13.720 --> 00:04:15.280
I said, "Hello, Treat Life team.
00:04:15.280 --> 00:04:17.040
I like free stuff.
00:04:17.040 --> 00:04:18.120
How does this work?"
00:04:18.120 --> 00:04:20.000
And they said, "Oh, hello."
00:04:20.000 --> 00:04:26.560
And you just buy our thing from this retailer and we'll give you a refund for it.
00:04:26.560 --> 00:04:28.760
And you don't even have to leave us a review or anything.
00:04:28.760 --> 00:04:32.200
Please just go buy it and everything will be good."
00:04:32.200 --> 00:04:35.800
So we did.
00:04:35.800 --> 00:04:39.480
So how it would kind of work is you would reach out to this retailer and say, "Hey,
00:04:39.480 --> 00:04:40.480
I received this offer."
00:04:40.480 --> 00:04:42.060
And then they would say, "Buy it."
00:04:42.060 --> 00:04:46.360
And then we'll refund your money in PayPal or Amazon or whatever gift card you would
00:04:46.360 --> 00:04:47.360
like.
00:04:47.360 --> 00:04:51.640
And then you would have the device and use it and there would be no strings with some
00:04:51.640 --> 00:04:52.740
vendors.
00:04:52.740 --> 00:04:57.220
But then as we move forward, we learned that some vendors play by some different rules
00:04:57.220 --> 00:05:04.000
and they may require a positive five-star review before they'll give you the reimbursement.
00:05:04.000 --> 00:05:07.280
And it must have pictures or must have this or must have that.
00:05:07.280 --> 00:05:12.000
But in general, with some of the vendors, they would give it for free for no strings
00:05:12.000 --> 00:05:14.200
attached.
00:05:14.200 --> 00:05:19.200
So once we start collecting things, it got to be quite a lot.
00:05:19.200 --> 00:05:22.680
Cameras, switches, a lot of smart home devices.
00:05:22.680 --> 00:05:27.520
I'm a big smart home automation firmware enthusiast, so that's kind of where I was targeting.
00:05:27.520 --> 00:05:32.480
But then other strange devices too like a vacuum cleaner, which was really interesting.
00:05:32.480 --> 00:05:39.140
And lots of cameras and other things, desk lamps, steaks, kitchen appliances, all kinds
00:05:39.140 --> 00:05:42.000
of things.
00:05:42.000 --> 00:05:45.020
So the list grew.
00:05:45.020 --> 00:05:50.400
And as we collected more things, we started getting emails from additional vendors that
00:05:50.400 --> 00:05:53.360
we hadn't necessarily reached out to directly.
00:05:53.360 --> 00:05:58.080
It seemed that there was kind of this special list of customers that was shared amongst
00:05:58.080 --> 00:06:00.680
these companies that were sending things out for free.
00:06:00.680 --> 00:06:04.600
And so the more that we interacted with them, the more we got.
00:06:04.600 --> 00:06:07.820
And the more vendors came to ask us if we would like their stuff.
00:06:07.820 --> 00:06:12.560
So more is always better.
00:06:12.560 --> 00:06:18.260
And then we started thinking like a hacker or thinking like a larcenist, what if we were
00:06:18.260 --> 00:06:21.820
to use multiple email accounts to interact with them?
00:06:21.820 --> 00:06:25.360
What if I want two of that thing or maybe five of that thing?
00:06:25.360 --> 00:06:26.360
How could I do that?
00:06:26.360 --> 00:06:32.080
So we'll have multiple email accounts and forward messages between them and collect things.
00:06:32.080 --> 00:06:36.800
And we were wondering at first, like, is this a good idea?
00:06:36.800 --> 00:06:39.680
Will they notice?
00:06:39.680 --> 00:06:40.680
They did not.
00:06:40.680 --> 00:06:42.880
They did not notice at all.
00:06:42.880 --> 00:06:49.400
And in fact, things kind of escalated on from there.
00:06:49.400 --> 00:06:54.520
So the thing that happened then is as we started collecting things and telling our friends,
00:06:54.520 --> 00:06:56.720
they were jealous of all of the cool stuff we got.
00:06:56.720 --> 00:06:58.420
Like I want stuff too.
00:06:58.420 --> 00:07:00.280
So sharing is caring.
00:07:00.280 --> 00:07:04.080
And we started to share some of our friends' contact information with these vendors.
00:07:04.080 --> 00:07:06.080
And some of the sharing we did was official.
00:07:06.080 --> 00:07:10.560
It was hello, Mr. Vendor, I have a friend who would like to work with you and the vendors
00:07:10.560 --> 00:07:12.480
would always say yes.
00:07:12.480 --> 00:07:16.760
But then as we'll talk about in a slide or two, some of the referrals were maybe not
00:07:16.760 --> 00:07:18.500
quite so official.
00:07:18.500 --> 00:07:22.600
So we'll talk about that in just a moment.
00:07:22.600 --> 00:07:24.040
>> Yeah.
00:07:24.040 --> 00:07:30.040
And along the way, we realized that there's just a bunch of people out there sending these
00:07:30.040 --> 00:07:34.200
messages and they don't really care what we respond with.
00:07:34.200 --> 00:07:36.720
They don't really care who we are.
00:07:36.720 --> 00:07:40.320
They don't really care where we're sending the items.
00:07:40.320 --> 00:07:46.360
I was sending items to like family members at some points.
00:07:46.360 --> 00:07:48.360
And then I realized that they didn't care.
00:07:48.360 --> 00:07:52.120
So I started sending them to different apartments in my own house.
00:07:52.120 --> 00:07:56.240
I had six or seven apartments in my house that I would send them to.
00:07:56.240 --> 00:07:59.640
And they just all show up on my doorstep.
00:07:59.640 --> 00:08:08.320
And we realized, okay, let's just share the -- not only are we sharing like -- not only
00:08:08.320 --> 00:08:13.160
are we telling the vendors, hey, contact this person, but now if they contact us, let's
00:08:13.160 --> 00:08:17.080
just send that email to another one of our friends.
00:08:17.080 --> 00:08:19.420
And then more friends can sign up.
00:08:19.420 --> 00:08:20.880
And then more friends.
00:08:20.880 --> 00:08:24.000
We eventually just dropped all the pretense altogether.
00:08:24.000 --> 00:08:30.120
And we started by sending -- we would change the headers and modify the email and make
00:08:30.120 --> 00:08:32.960
it look like they had emailed us.
00:08:32.960 --> 00:08:37.280
But at the end of it, I was just replying to ones that were sent to Matt, for example.
00:08:37.280 --> 00:08:42.680
>> Like, hey, Adam, I got an invite for a pool filter and some kitchen knives.
00:08:42.680 --> 00:08:43.680
Would you like that one?
00:08:43.680 --> 00:08:46.120
>> And I say, I need some knives.
00:08:46.120 --> 00:08:47.120
Sure.
00:08:47.120 --> 00:08:51.280
And I would just reply to the email address and say, please send me knives.
00:08:51.280 --> 00:08:52.860
And they'd say, okay.
00:08:52.860 --> 00:08:54.700
And so they'd just send stuff then.
00:08:54.700 --> 00:08:56.320
And we started sharing the best invites.
00:08:56.320 --> 00:09:02.920
And this is how we built this cabal of people who we would just share all the invites with.
00:09:02.920 --> 00:09:07.460
And we'd say, hey, I got an invite group or chat.
00:09:07.460 --> 00:09:15.380
And this invite is product X, Y, and Z. And somebody would say, I need product Y.
00:09:15.380 --> 00:09:17.580
And so we just forward the email to them.
00:09:17.580 --> 00:09:21.360
And somebody else would say, I need product X and forward the email to them.
00:09:21.360 --> 00:09:23.880
And nobody ever seemed to notice.
00:09:23.880 --> 00:09:28.000
And we just, everyone just got free stuff.
00:09:28.000 --> 00:09:33.200
The profit slide where Matt had all of those different things, every one of us had closets
00:09:33.200 --> 00:09:36.400
like that, you know, where we were just filling up with stuff.
00:09:36.400 --> 00:09:40.140
The problem is, they started turning into pushers.
00:09:40.140 --> 00:09:46.260
They started sending us emails and they'd say, hey, here is 60 products.
00:09:46.260 --> 00:09:48.340
Pick two of them that you want.
00:09:48.340 --> 00:09:52.060
And they would be the most wacky products.
00:09:52.060 --> 00:09:53.060
Sex toys.
00:09:53.060 --> 00:09:55.060
Dog treat dispensers.
00:09:55.060 --> 00:09:56.060
Pool floaties.
00:09:56.060 --> 00:09:57.060
Yeah.
00:09:57.060 --> 00:09:58.060
Toilet scooters.
00:09:58.060 --> 00:09:59.060
Toilet drain stoppers.
00:09:59.060 --> 00:10:00.060
Yeah.
00:10:00.060 --> 00:10:01.060
Pasta dishes.
00:10:01.060 --> 00:10:05.940
And we didn't really care about a lot of those.
00:10:05.940 --> 00:10:13.500
What we cared about was the technology ones that we were interested in and researching.
00:10:13.500 --> 00:10:15.040
But it got extensive.
00:10:15.040 --> 00:10:17.780
And there was a few main characters in this.
00:10:17.780 --> 00:10:25.860
If you see these on your recommended anywhere, know that 90% of their reviews are probably
00:10:25.860 --> 00:10:27.420
fake.
00:10:27.420 --> 00:10:29.260
One of them is Vixer.
00:10:29.260 --> 00:10:31.100
See all the different emails.
00:10:31.100 --> 00:10:34.940
It's a little difficult to see in the sunlight over here, but all the different emails on
00:10:34.940 --> 00:10:38.940
the right from Vixer over 2020.
00:10:38.940 --> 00:10:41.180
Apeman was a big one.
00:10:41.180 --> 00:10:48.540
They would send us emails constantly and Treat Life.
00:10:48.540 --> 00:10:50.980
Treat Life was one of our favorites.
00:10:50.980 --> 00:10:52.220
By far the favorite.
00:10:52.220 --> 00:10:53.220
Yeah.
00:10:53.220 --> 00:10:54.220
Because highly recommended.
00:10:54.220 --> 00:11:00.300
Well, they send good quality products that are mostly not...
00:11:00.300 --> 00:11:03.540
Well, we'll get into the technical details in a minute.
00:11:03.540 --> 00:11:09.980
But they also never really cared if you did the reviews or not.
00:11:09.980 --> 00:11:12.300
We would go and make a review.
00:11:12.300 --> 00:11:17.980
And for some products that you had to have a review before they reimbursed you, and then
00:11:17.980 --> 00:11:21.620
we would immediately delete the review and report it.
00:11:21.620 --> 00:11:28.660
Or other products, like Treat Life, I could just open up my developer console in Chrome
00:11:28.660 --> 00:11:32.620
and just edit one to look like I just made a review and screenshot it and send it.
00:11:32.620 --> 00:11:33.620
And they didn't even look.
00:11:33.620 --> 00:11:34.620
They were just like, "All right, here's money.
00:11:34.620 --> 00:11:35.620
Here you go."
00:11:35.620 --> 00:11:40.060
Yeah, or even they would just say, "Please send us your order ID."
00:11:40.060 --> 00:11:43.020
And after they got the order ID, they would just pay right away.
00:11:43.020 --> 00:11:44.020
Yeah.
00:11:44.020 --> 00:11:45.860
And then Facebook groups.
00:11:45.860 --> 00:11:47.700
We were involved in a lot of these.
00:11:47.700 --> 00:11:53.300
In fact, after the pandemic, we pretty much stopped doing this.
00:11:53.300 --> 00:11:57.380
It was a while back, but we still get invites all the time.
00:11:57.380 --> 00:12:00.780
And they're primarily moving to Facebook now, I've noticed.
00:12:00.780 --> 00:12:06.420
I get a lot of Facebook invites, and they email to me to join their Facebook group.
00:12:06.420 --> 00:12:11.100
And they're actually moving countries now, too.
00:12:11.100 --> 00:12:20.420
While I was preparing slides, one of the emails I got for a Facebook group was specific to
00:12:20.420 --> 00:12:21.700
Thailand.
00:12:21.700 --> 00:12:29.140
So only in Thailand do they want people to come and do reviews, which I thought was interesting.
00:12:29.140 --> 00:12:32.580
But what about the stuff?
00:12:32.580 --> 00:12:36.140
We're giving all this free stuff, but what about it?
00:12:36.140 --> 00:12:38.500
And for that, let's dive deep.
00:12:38.500 --> 00:12:39.500
Yeah.
00:12:39.500 --> 00:12:43.220
So this is by no means exhaustive or complete.
00:12:43.220 --> 00:12:49.780
This is just a few of the particularly interesting details from a deep dive of what the hardware
00:12:49.780 --> 00:12:51.560
and software looked like.
00:12:51.560 --> 00:12:56.860
So I encourage you to do your own research and follow along if you'd like.
00:12:56.860 --> 00:13:01.060
So the first case study we'll talk about is the three T's.
00:13:01.060 --> 00:13:03.940
Treat Life, Tekken, and Tuya.
00:13:03.940 --> 00:13:07.580
So Treat Life and Tekken use the Tuya IoT platform.
00:13:07.580 --> 00:13:09.220
Maybe some of you have heard of the Tuya platform.
00:13:09.220 --> 00:13:10.820
It's one of the largest in the world.
00:13:10.820 --> 00:13:12.220
And anybody can sign up to use Tuya.
00:13:12.220 --> 00:13:16.220
You just pay them a few dollars, and you can use their development kit, and you can even
00:13:16.220 --> 00:13:19.900
use their hardware that they kind of white label, and then you can cook your own firmware
00:13:19.900 --> 00:13:22.740
for it, and it's very interesting.
00:13:22.740 --> 00:13:27.260
So interesting things about Tuya is they store a number of things in plain text.
00:13:27.260 --> 00:13:29.140
They collect a number of things plain text.
00:13:29.140 --> 00:13:33.420
Phone number, the device that you use to set it up, the SSID that it connects to, the device
00:13:33.420 --> 00:13:37.780
stats like when a light switch turns on or off, things like that.
00:13:37.780 --> 00:13:42.340
But where things get really interesting and particularly dangerous that maybe people haven't
00:13:42.340 --> 00:13:46.580
thought of is a number of the vacuum cleaners, including the one that I got through this
00:13:46.580 --> 00:13:47.580
program.
00:13:47.580 --> 00:13:48.880
They're using the Tuya platform.
00:13:48.880 --> 00:13:55.540
So the floor plans of your house are potentially in the Tuya cloud, and whatever vendor sold
00:13:55.540 --> 00:13:59.500
that to you can access that and sell that to anyone or do whatever they'd like with
00:13:59.500 --> 00:14:00.500
it.
00:14:00.500 --> 00:14:01.500
So that's interesting.
00:14:01.500 --> 00:14:07.660
And of course the device manufacturer, whoever that is, they can push a firmware update whenever
00:14:07.660 --> 00:14:09.580
they want, and they can do it silently.
00:14:09.580 --> 00:14:13.500
So if you -- I'm jumping ahead a little bit, but if you go look at Michael Stegerwald's
00:14:13.500 --> 00:14:18.860
talk from a few years ago at a CCC event, he talks extensively about the evils of Tuya
00:14:18.860 --> 00:14:20.500
and how they can do all sorts of interesting things.
00:14:20.500 --> 00:14:22.900
I'd encourage you to go take a look at that.
00:14:22.900 --> 00:14:30.380
So the first wave of devices that were collected from TreatLife and from Tekken were ESP8266-based,
00:14:30.380 --> 00:14:32.440
and it's a great microprocessor.
00:14:32.440 --> 00:14:35.460
It's fantastic for the hacker community.
00:14:35.460 --> 00:14:39.580
The Wemos D1 minis for sale over in the village, that's an ESP8266.
00:14:39.580 --> 00:14:43.300
They're easy to flash, Arduino compatible, very good firmware.
00:14:43.300 --> 00:14:50.780
And what happened eventually is we were flashing devices just with an interface with the FTDI.
00:14:50.780 --> 00:14:56.340
And then there was this massive vulnerability that Stegerwald came out with from VTrust
00:14:56.340 --> 00:15:01.140
where we were able to flash device firmware over the air without having to take it apart
00:15:01.140 --> 00:15:03.580
or solder or anything, and it was great.
00:15:03.580 --> 00:15:05.460
It's called TuyaConvert, and the link's right there.
00:15:05.460 --> 00:15:06.500
You can check it out.
00:15:06.500 --> 00:15:08.260
And TuyaConvert worked for quite a while.
00:15:08.260 --> 00:15:12.060
There were several kind of cat and mouse games where the firmware got patched and then the
00:15:12.060 --> 00:15:16.300
exploit got rewritten, and eventually it stopped working.
00:15:16.300 --> 00:15:21.380
They changed the way that the keys were derived for the devices, and no longer could we just
00:15:21.380 --> 00:15:25.300
flash them over the air because of the private key and public key interaction between the
00:15:25.300 --> 00:15:27.900
server and the device.
00:15:27.900 --> 00:15:29.760
So then things were great.
00:15:29.760 --> 00:15:33.180
We were collecting all these devices and taking all of this terrible Tuya code off
00:15:33.180 --> 00:15:37.220
and putting firmware like Tesmota or ESPHome running it with Node-RED.
00:15:37.220 --> 00:15:40.260
But then the devices themselves changed.
00:15:40.260 --> 00:15:43.460
The ESP8266 disappeared.
00:15:43.460 --> 00:15:50.620
And despite this very substantial change in the device, the FCC documentation never changed.
00:15:50.620 --> 00:15:54.900
And that's kind of an interesting question for devices that the FCC reviews.
00:15:54.900 --> 00:15:59.660
If there's a substantial change, it's supposed to require a follow-on examination.
00:15:59.660 --> 00:16:03.980
I would say that changing the microcontroller would be substantial enough to require a new
00:16:03.980 --> 00:16:05.180
examination.
00:16:05.180 --> 00:16:11.500
So it became very hard to know which device would have which controller or which CU.
00:16:11.500 --> 00:16:15.760
So we kind of got to where you try to order from maybe different vendors and try to find
00:16:15.760 --> 00:16:19.980
one that had old stock because at the time we didn't really know what to do with these
00:16:19.980 --> 00:16:23.900
processors and we didn't want to just put them on our network and deal with the evilness
00:16:23.900 --> 00:16:26.300
of Tuya.
00:16:26.300 --> 00:16:32.460
But the interesting thing about these controllers is they were the same pinout as the ESP, but
00:16:32.460 --> 00:16:36.020
they were not able to run Arduino code, so it was good and bad.
00:16:36.020 --> 00:16:42.620
Then we figured out that they're pin compatible with the ESP32C3 and the ESP12F, so we'd use
00:16:42.620 --> 00:16:47.420
a hot air station and just drop the chip off and then put a chip flash with Tesmota or
00:16:47.420 --> 00:16:51.860
potentially ESPHome, but usually Tesmota, so you could step through the GPIOs and figure
00:16:51.860 --> 00:16:54.260
out the hardware traces and do that easily.
00:16:54.260 --> 00:16:56.100
So then everything was very good again.
00:16:56.100 --> 00:16:59.580
We could take these devices with terrible processors and use them with our open source
00:16:59.580 --> 00:17:00.580
code.
00:17:00.580 --> 00:17:02.380
Very good.
00:17:02.380 --> 00:17:07.380
But then moving forward, Khalid Nassar and some others, there's an excellent post here.
00:17:07.380 --> 00:17:08.780
You should definitely go read it.
00:17:08.780 --> 00:17:14.220
He walks through a very detailed posting of how some data was stored in some fields inappropriately
00:17:14.220 --> 00:17:19.220
and there was no bounce checking on it, so we were able to inject code into that buffer.
00:17:19.220 --> 00:17:25.500
And through that we're able to run a vulnerability that's been called named Tuya Cloud Cutter.
00:17:25.500 --> 00:17:30.700
And with Cloud Cutter, originally we were able to modify the local keys on the device,
00:17:30.700 --> 00:17:35.100
and when we modify the local keys, we could potentially write the same key to all of the
00:17:35.100 --> 00:17:36.820
devices that we're working with.
00:17:36.820 --> 00:17:41.520
So we have a common key to access our devices, and once we modify the keys, then Tuya can
00:17:41.520 --> 00:17:46.020
no longer interact with the device, so we still have untrusted firmware, but we have
00:17:46.020 --> 00:17:50.260
a device that we can control that no one else can control, so it's generally good.
00:17:50.260 --> 00:17:54.260
And there are ways to hook that device with different automation platforms and make it
00:17:54.260 --> 00:17:57.100
work, so that was good.
00:17:57.100 --> 00:18:03.620
But then as we moved forward, there was some substantial development done with a project
00:18:03.620 --> 00:18:07.500
called, it was originally called Libretuya, but Tuya got mad at that, so it became renamed
00:18:07.500 --> 00:18:08.780
Libretiny.
00:18:08.780 --> 00:18:10.820
And another one called OpenBeckon.
00:18:10.820 --> 00:18:16.980
Libretiny is a port of ESPHome that runs on the Becken hardware, and it looks a lot like
00:18:16.980 --> 00:18:19.220
ESPHome works the same as YAML-based.
00:18:19.220 --> 00:18:22.820
There's a container plugin for Home Assistant, it all works very well.
00:18:22.820 --> 00:18:25.100
And OpenBeckon is a standalone hardware.
00:18:25.100 --> 00:18:29.060
It's kind of sort of similar to Tasmota, if any of you have used it, but it gives you
00:18:29.060 --> 00:18:32.860
an API and MQTT and everything, and it runs standalone on the device.
00:18:32.860 --> 00:18:37.940
Fairly stable, revved a lot, the developer is active in a lot of discords, and as is
00:18:37.940 --> 00:18:40.340
the developer for Libretiny, very active.
00:18:40.340 --> 00:18:45.460
So in the end, we have hardware that was previously untrusted that we couldn't work with, that
00:18:45.460 --> 00:18:52.060
was linked to a generally evil overlay platform, but now we're able to put whatever firmware
00:18:52.060 --> 00:18:56.620
we want on it, control it how we want, and we're able to audit all of the functions that
00:18:56.620 --> 00:18:57.620
firmware does.
00:18:57.620 --> 00:19:01.340
So very powerful, and we take a device that we can't trust at all to a device that we
00:19:01.340 --> 00:19:05.860
absolutely trust, and we can do whatever we'd like with it.
00:19:05.860 --> 00:19:10.420
The next case study is around cameras, and there are many cameras that were collected.
00:19:10.420 --> 00:19:15.180
I use these, I live on a farm, so I use some of these cameras in the shop and for outdoor
00:19:15.180 --> 00:19:18.740
surveillance and kind of all over the place, so many cameras.
00:19:18.740 --> 00:19:28.700
And the default in stock firmware was very much not good, very unstable, and very interesting
00:19:28.700 --> 00:19:30.180
connections outbound.
00:19:30.180 --> 00:19:37.340
Some of the cameras were using the Tuya platform, and interesting, some of them were leaking
00:19:37.340 --> 00:19:44.820
to Chinese IP space in earlier firmwares, and there was one, I forgot to collect the
00:19:44.820 --> 00:19:50.020
data and save it, but in advance of a firmware update, before it was beaconing out to some
00:19:50.020 --> 00:19:54.340
Chinese IP space, and then after a firmware update it was leaking out to a cloud provider
00:19:54.340 --> 00:20:02.020
that was US IP space, but it's important to know that the country destination of the,
00:20:02.020 --> 00:20:06.380
the country of the destination IP is really not all that important, and in the end there's
00:20:06.380 --> 00:20:10.500
nothing that stops a foreign national from creating a cloud provider account and collecting
00:20:10.500 --> 00:20:12.960
data and packing it off wherever they'd like.
00:20:12.960 --> 00:20:18.420
So whether that's a US cloud provider or a Chinese cloud provider, it still should be
00:20:18.420 --> 00:20:22.260
handled with a minimal amount of trust.
00:20:22.260 --> 00:20:26.460
So the, in particular the cameras that were not on the Tuya platform, there's one from
00:20:26.460 --> 00:20:32.260
S-Cam that was very interesting, it has this P2P connectivity and there's a QR code that
00:20:32.260 --> 00:20:36.940
has a device ID, and this device ID, if you have it, you can connect to the camera with