WEBVTT
00:00:00.000 --> 00:00:17.250
35C3 Preroll Music
00:00:17.250 --> 00:00:23.510
Herald: So, der nächste Talk heißt "Smart
Home - Smart Hacks" und ich weiß nicht wie
00:00:23.510 --> 00:00:27.650
es euch geht, ich hab immer so ein
bisschen Probleme und hab mir noch gar
00:00:27.650 --> 00:00:32.369
nichts installiert zu Hause, obwohl es
mich jedes Mal in den Fingern kribbelt.
00:00:32.369 --> 00:00:37.140
Ich würd's mir so gern kaufen, es gibt so
tollen Kram. Aber ich traue mich nicht und
00:00:37.140 --> 00:00:41.390
deswegen habe ich mich sehr gefreut, dass
ich diesen Talk heute announcen darf.
00:00:41.390 --> 00:00:45.260
Danach weiß ich dann Bescheid. Also, hier
ist Michael Steigerwald und ich bitte euch
00:00:45.260 --> 00:00:48.755
um einen großen Applaus. Vielen Dank.
00:00:48.755 --> 00:00:57.279
Applaus
00:00:57.279 --> 00:01:01.441
Michael Steigerwald: Hallo. Heute geht's
um die Glühbirne. Naja eigentlich nicht
00:01:01.441 --> 00:01:05.210
nur um die Glühbirne, sondern es geht um
fast alle Smart Home Geräte die man sich
00:01:05.210 --> 00:01:11.189
vorstellen kann, weil eigentlich in fast
allem das Gleiche drin steckt. Und warum
00:01:11.189 --> 00:01:14.420
habe ich mir gerade die Glühbirne
ausgesucht? Das ist ganz einfach, die
00:01:14.420 --> 00:01:17.261
Glühbirne ist so der einfachste Gegenstand
den man sich vorstellen kann, das ist
00:01:17.261 --> 00:01:22.600
einfach ein Verbrauchsmaterial. Früher war
es einfach nur ne Glühbirne, heute muss
00:01:22.600 --> 00:01:27.460
alles smart sein und überall muss Internet
drin sein und Cloud. Und wenn das sogar
00:01:27.460 --> 00:01:31.090
schon in der Glühbirne drin ist, können
wir uns überlegen, wo das sonst noch
00:01:31.090 --> 00:01:39.660
überall drin ist. Jeder hat Angst vor
Geräten mit Kamera und Mikrofon. Warum man
00:01:39.660 --> 00:01:43.010
aber vielleicht auch mal schauen muss
welche Gefahren in so einer Glühbirne
00:01:43.010 --> 00:01:50.070
stecken,das erfahren wir heute in meinem
Vortrag. Weiter geht es darum, dass es
00:01:50.070 --> 00:01:56.590
viele IT-Cloud-Anbieter gibt, wo man ganz
einfach jegliches Gerät in die Cloud
00:01:56.590 --> 00:02:01.869
bringen kann und dazu gar kein know-how
braucht und so einen Anbieter, den habe
00:02:01.869 --> 00:02:05.969
ich mir ein bisschen genauer angeschaut.
Und mal geschaut, wie sicher das ist und
00:02:05.969 --> 00:02:10.750
dann auch ein proof of concept
verschiedener Angriffszenarien gemacht und
00:02:10.750 --> 00:02:22.920
werde euch noch sagen, welche Konsequenzen
das für den User hat. Genau. In der Presse
00:02:22.920 --> 00:02:29.220
liest man ständig irgendwelche Sachen über
Smart Home und über die Gefahren, was da
00:02:29.220 --> 00:02:34.160
alles passieren kann und so weiter und
selbst die Bundesnetzagentur hat vor
00:02:34.160 --> 00:02:40.231
Weihnachten gewarnt vor smarten
Weihnachtsgeschenken. Besonders vor
00:02:40.231 --> 00:02:47.140
Kameras und Geräten mit Mikrofonen drin.
Und weil eben Weihnachten war hab ich
00:02:47.140 --> 00:02:50.340
gedacht, ich habe auch noch eine smarte
Glühbirne die ich jetzt einfach mal
00:02:50.340 --> 00:02:55.280
irgendjemandem hier vorne schenken möchte.
Bitteschön. Sehr gut gefangen.
00:02:55.280 --> 00:02:59.730
Applaus
00:02:59.730 --> 00:03:04.300
Zu meiner Person: Mein Name ist Michael
Steigerwald. Ich bin Hard- und
00:03:04.300 --> 00:03:09.670
Softwareentwickler. Besonders bin ich
tätig im Bereich Security Research und
00:03:09.670 --> 00:03:15.030
habe Mitte des Jahres ein Startup
gegründet die VTRUST GmbH, bei der wir uns
00:03:15.030 --> 00:03:22.030
auch um IT-Sicherheit kümmern. Die
Motivation zu meinem Vortrag war so, dass
00:03:22.030 --> 00:03:28.270
ein Kunde auf uns zukam, der sein smartes
Gerät an die Cloud anbinden wollte und
00:03:28.270 --> 00:03:31.770
gesagt hat: Das ist nicht unsere
Expertise. Wir kennen uns mit unserem
00:03:31.770 --> 00:03:35.510
Produkt aus, aber nicht mit der Cloud und
nicht mit der Sicherheit, die damit
00:03:35.510 --> 00:03:39.820
verbunden ist und hat gefragt, ob wir
denen helfen können das in die Cloud
00:03:39.820 --> 00:03:43.930
anzubinden. Und wie man das natürlich
immer so macht, man schaut sich mal um.
00:03:43.930 --> 00:03:47.380
Was gibt's so? Gibt es schon fertige
Lösungen? Gibt's irgendwas im Markt was
00:03:47.380 --> 00:03:53.730
man dafür benutzen kann? Und da bin ich
auf einen Anbieter gestoßen der ganz
00:03:53.730 --> 00:03:59.260
tolle, ja, der über 11.000 verschiedene
Produkte schon in die Cloud gebracht hat.
00:03:59.260 --> 00:04:05.730
Mit über 10 000 Herstellern und das in 200
Ländern und mit über 20 Milliarden
00:04:05.730 --> 00:04:15.170
Requests am Tag. Die Versprechen dieses
Herstellers sind auch sehr groß, also er
00:04:15.170 --> 00:04:19.150
spricht von rapid development und dass man
schon in sechs Stunden eine Demo haben
00:04:19.150 --> 00:04:23.170
kann und die Massenproduktion auch schon
nach 15 Tagen starten kann. Das hört sich
00:04:23.170 --> 00:04:27.150
sehr wenig an, aber tatsächlich habe ich
mir das ein bisschen angeguckt und ist es
00:04:27.150 --> 00:04:33.820
auch wirklich so. Man kann sehr schnell
seine Geräte mit der Technik ins Internet
00:04:33.820 --> 00:04:38.970
bringen. Und was mir noch sehr gefallen
hat natürlich, war, dass sie Military-
00:04:38.970 --> 00:04:48.020
Grade security versprechen und dazu kommen
wir später nochmal. So, der erste Schritt
00:04:48.020 --> 00:04:52.310
ist, man meldet sich an. Das geht in fünf
Minuten und danach kann man schon anfangen
00:04:52.310 --> 00:04:59.110
und kann seine Geräte anlegen oder aus
einem großen Portfolio auswählen. Eine OEM
00:04:59.110 --> 00:05:04.350
App zu installieren ist auch ganz einfach.
Man kann einfach die vorhandene App mit
00:05:04.350 --> 00:05:08.230
seinen Logos personalisieren und seinen
Farben und hat die dann innerhalb
00:05:08.230 --> 00:05:15.630
kürzester Zeit im Internet und in den Play
Stores und Apple Store. Das war vor einem
00:05:15.630 --> 00:05:18.722
halben Jahr noch kostenlos. Jetzt kostet
es 1.500 Dollar oder so in dem
00:05:18.722 --> 00:05:24.330
Preisrahmen, aber für das Geld kann man
definitiv keine App programmieren. Wenn
00:05:24.330 --> 00:05:29.800
man das gemacht hat, kann man einfach
fertige Module bestellen und oder auch
00:05:29.800 --> 00:05:35.500
direkt fertige Geräte. Also zum Beispiel
auch diese Glühbirnen kann man direkt
00:05:35.500 --> 00:05:42.970
bestellen, sein eigenes Label drauf
drucken und ist danach IoT-Anbieter.
00:05:42.970 --> 00:05:51.330
Genau. So. Jetzt hab ich bei dem
Durchklicken in diesem Webformular aber
00:05:51.330 --> 00:05:55.740
auch eine Seite gefunden, die mich ein
bisschen stutzig gemacht hat. Zwar gab's
00:05:55.740 --> 00:06:04.180
Firmware-updates und da gab es die Punkte
Silent Upgrade und Forced Upgrade. Wo ich
00:06:04.180 --> 00:06:09.180
gedacht habe, okay, ja, wie macht man ein
upgrade an einer Glühbirne? Generell geht
00:06:09.180 --> 00:06:12.310
es vielleicht über die App oder sowas,
aber was da wirklich in der Glühbirne
00:06:12.310 --> 00:06:16.780
passiert, das weiß ja niemand. Und ich
hatte mir zwar schon 20 Module zum Spielen
00:06:16.780 --> 00:06:21.370
bestellt, aber bis die aus Fernost
geliefert werden, dachte ich mir, ich
00:06:21.370 --> 00:06:26.060
nehme einfach mal einen großen
Versandanbieter, die liefern am Folgetag
00:06:26.060 --> 00:06:33.460
und hab mir mal verschiedene Glühbirnen
und auch smarte Steckdosen bestellt.
00:06:33.460 --> 00:06:41.650
Genau. Dann: Wie funktioniert das? Das ist
ganz einfach. Man registriert die
00:06:41.650 --> 00:06:47.930
Glühbirne mit seinem Handy. Das geht ganz
schnell. Man bringt ihn in den
00:06:47.930 --> 00:06:54.620
Einrichtungsmodus und danach wird die
Konfiguration übertragen und die Glühbirne
00:06:54.620 --> 00:06:59.310
verbindet sich dann selbst mit der Cloud
des Herstellers über HTTP und MQTT. Und
00:06:59.310 --> 00:07:06.380
schon kann man sie aus- und anschalten.
Weil jetzt immer wieder MQTT fällt und das
00:07:06.380 --> 00:07:10.889
vielleicht nicht jedem ein Begriff ist:
MQTT ist ein Message Queuing Telemetry
00:07:10.889 --> 00:07:17.080
Transport Protocol. Das ist eigentlich,
wird es in jedem IoT-Gerät verwendet. Das
00:07:17.080 --> 00:07:23.750
ist einfach ein Protokoll, wie man eine
Lampe, die irgendwo im privaten Netzwerk
00:07:23.750 --> 00:07:31.090
ist von außen auch steuern kann. Das
heißt, die Lampe selbst verbindet sich mit
00:07:31.090 --> 00:07:39.410
dem MQTT-Broker und kann danach, ja, Daten
an Geräte pushen wie den Zustand oder kann
00:07:39.410 --> 00:07:46.000
auch darüber geschaltet werden. So, jetzt
war der erste Punkt: Was steckt denn da
00:07:46.000 --> 00:07:49.520
überhaupt drin? Ich habe mal ein paar
verschiedene aufgemacht. Eigentlich hab
00:07:49.520 --> 00:07:54.290
ich immer so ein ESP8266 gefunden. Der
wird den meisten hier bekannt sein. Das
00:07:54.290 --> 00:07:59.540
ist ein sehr, sehr günstiger 32-Bit
Prozessor mit einem WLAN integriert und es
00:07:59.540 --> 00:08:05.300
war 1 MB Flash drin und der ist auch sehr,
sehr einfach auslesbar. Das heißt, ich
00:08:05.300 --> 00:08:11.830
habe einfach die fünf Lötstellen, also
fünf Lötpunkte, gesetzt und hab den mal an
00:08:11.830 --> 00:08:15.590
einen seriellen Port gehängt. Und dann
kann man das mit dem esp tool einfach
00:08:15.590 --> 00:08:22.740
auslesen und hat ein Binary, ja, die
Firmware. Was sehr wichtig ist, ist, dass
00:08:22.740 --> 00:08:30.430
man da aufpasst, dass die Produzenten aus
Fernost es nicht immer so mit der
00:08:30.430 --> 00:08:37.070
Bezeichnung halten. Das heißt, es kann
auch mal auf dem DC-Ground eine Phase sein
00:08:37.070 --> 00:08:42.689
und das musste ich auch schmerzlich mal
feststellen. Also ganz wichtig: Achtung,
00:08:42.689 --> 00:08:50.749
230 Volt. So. Das Flash hab ich jetzt
ausgelesen. Generell ist es so, das hat
00:08:50.749 --> 00:08:54.350
verschiedene Partitionen, erst einmal ein
Bootloader, der an Stelle 0 sitzt. Und
00:08:54.350 --> 00:08:58.930
dann gibt's zweimal zwei user Partitions,
in denen die Firmware sitzt. Das liegt
00:08:58.930 --> 00:09:03.379
daran, dass es eine Upgrade-Funktionalität
gibt und wenn dann z.B. user 1 gebootet
00:09:03.379 --> 00:09:08.089
ist, kann user 2 überschrieben werden und
umgedreht und dann gibt es noch eine
00:09:08.089 --> 00:09:13.829
Konfigurationspartition, bei der, ja, die
Konfiguration erhalten bleibt, auch bei
00:09:13.829 --> 00:09:22.850
einem Upgrade. Und was mir dann
aufgefallen ist, ist, dass mein WLAN-SSID
00:09:22.850 --> 00:09:30.130
und mein Passwort unverschlüsselt in der
Konfigurationspartition abgelegt sind. So
00:09:30.130 --> 00:09:35.649
viel nochmal zum Thema Military-Grade
security. Man kann auch denken: Ja, was
00:09:35.649 --> 00:09:39.740
ist jetzt da so schlimm daran? Aber ich
kenne Leute, die benutzen solche
00:09:39.740 --> 00:09:43.300
Glühbirnen in ihrem Garten zu Hause. Da
kann der Nachbar einfach mal die Glühbirne
00:09:43.300 --> 00:09:50.110
holen und weiß danach die WLAN Passwörter.
Und es gibt noch mehrere Anwendungsfälle
00:09:50.110 --> 00:09:53.029
wo das eigentlich nicht so sein sollte und
es gibt eigentlich überhaupt keinen Grund
00:09:53.029 --> 00:09:58.910
sowas unverschlüsselt im Flash abzulegen.
Des Weiteren habe ich noch diverse Keys
00:09:58.910 --> 00:10:05.300
gefunden und Schlüssel. Also einmal zum
Beispiel ist die Seriennummer die drin
00:10:05.300 --> 00:10:10.810
liegt, die bildet sich auch aus der MAC-
Adresse und noch ein Prefix, dann gibts
00:10:10.810 --> 00:10:16.029
den AUZ-Key, das ist ein Schlüssel der
verwendet wird, dass der Hersteller weiß
00:10:16.029 --> 00:10:22.399
oder der Cloud-Anbieter weiß, dass es auch
ein wirkliches Modul von ihm ist. Und dann
00:10:22.399 --> 00:10:28.619
gibts noch eine Product ID. Diese Product
ID wird generiert beim Anlegen des
00:10:28.619 --> 00:10:33.390
Produkts in der Cloud. Das heißt, vorhin
hab ich diese Oberfläche gezeigt, wo man
00:10:33.390 --> 00:10:38.339
einfach Produkte anlegen kann. Und wenn
ich die anlege, wird diese Produkt ID
00:10:38.339 --> 00:10:41.089
generiert und die wird danach vom
Hersteller in das Modul rein programmiert.
00:10:41.089 --> 00:10:46.610
Es gibt auch noch einen local Key und
einen sec Key, also der wurde auch genau
00:10:46.610 --> 00:10:51.629
so genannt in dem Jason-File im Flash. Die
sind für die Verschlüsselung und
00:10:51.629 --> 00:10:58.790
Signierung von der Kommunikation
zuständig. Da ich jetzt ja eigentlich nur
00:10:58.790 --> 00:11:04.459
gekaufte Produkte von einem Fremdanbieter
hatte, hab ich mir überlegt: Wie kann ich
00:11:04.459 --> 00:11:08.830
das denn kapern? Und das Einzigste was mir
eingefallen ist, das Erste war, ich
00:11:08.830 --> 00:11:14.730
schreib doch mal ins Flash an der Stelle wo
die Product ID steht, meine Product ID
00:11:14.730 --> 00:11:20.259
rein und danach musste man noch die
Checksumme korrigieren - das geht auch mit
00:11:20.259 --> 00:11:24.899
dem esp tool, oder die standard esp-
Checksumme - und hab's zurück geflasht in
00:11:24.899 --> 00:11:32.540
die Glühbirne und siehe da: Die gekaufte
Glühbirne war in meinem Account. Jetzt hat
00:11:32.540 --> 00:11:38.230
es mich doch sehr verwundert, dass ich
direkt gesehen habe, dass... ach ja genau:
00:11:38.230 --> 00:11:42.579
auch nochmal soviel zum Thema Military-
Grade security. Aber mich hat sehr
00:11:42.579 --> 00:11:49.470
verwundert, warum da die E-Mail-Adresse,
die ich zum Registrieren benutzt habe mit
00:11:49.470 --> 00:11:54.139
drinsteht in der Sache. Und dann habe ich
gesehen, dass wenn man auf die Details
00:11:54.139 --> 00:12:00.360
geht, gibt's noch viel mehr Informationen.
Also es steht die binding E-Mail-Adresse
00:12:00.360 --> 00:12:05.339
drin mit den Seriennummern und so weiter.
Wobei das auch sehr oft eine Handynummer
00:12:05.339 --> 00:12:10.160
ist, wenn man sich mit dem Handy
registriert hat. Oder es stehen zum
00:12:10.160 --> 00:12:15.709
Beispiel auch die Koordinaten drin und wo
man sich befindet. Jetzt weiß ich nicht,
00:12:15.709 --> 00:12:22.079
warum der Hersteller oder der Reseller von
meiner Glühbirne wissen muss, wo die
00:12:22.079 --> 00:12:29.569
eingesetzt wird. Aber dafür gibts
wahrscheinlich auch Gründe. Die Anschalt-
00:12:29.569 --> 00:12:36.720
und Ausschaltvorgänge: weiß auch jeder
wann wer zuhause ist und schaltet. Das
00:12:36.720 --> 00:12:41.519
bekommt auch jeder raus. Und standardmäßig
bekommt man nur 7 Tage Logs seiner Kunden.
00:12:41.519 --> 00:12:48.620
Wenn man aber mehr will, muss man einfach
nur fragen. Dann gibt es noch schöne
00:12:48.620 --> 00:12:54.100
Auswertungen, wo man sieht, wie viele
Kunden wann welche Geräte aktiviert haben,
00:12:54.100 --> 00:13:01.050
dass man einfach den Markt besser nutzen
kann. Für mich war das ein bisschen
00:13:01.050 --> 00:13:06.139
komisch und meine Kundennachfrage war
eigentlich auch so, dass es gerade darum
00:13:06.139 --> 00:13:11.240
ging, den Kunden und seine Daten zu
schützen. Und weil ich überhaupt keine
00:13:11.240 --> 00:13:15.410
Ahnung habe, wer auf die Daten alles
zugreifen kann, habe ich doch einfach mal
00:13:15.410 --> 00:13:20.790
an den Hersteller eine E-Mail geschrieben
und hab gefragt, ob man deren Technik auch
00:13:20.790 --> 00:13:25.970
benutzen kann, ohne dass die Daten an die
Cloud geschickt werden. Weil, wie gesagt,
00:13:25.970 --> 00:13:30.800
auch für meinen Kunden nicht gut ist, wenn
die Koordinaten seiner Kunden in der Cloud
00:13:30.800 --> 00:13:39.440
gespeichert werden. Die Antwort war: Nein.
Also es ist nicht möglich diese ... Ja
00:13:39.440 --> 00:13:46.709
...IoT-Geräte ohne die Cloud, nein ohne
die Daten zu betreiben. Und sie haben mir
00:13:46.709 --> 00:13:53.689
aber versichert, sie beschützten die Daten
"sehr gut". Und was sie auch noch gemacht
00:13:53.689 --> 00:13:58.829
haben in diesem Kontext war: sie haben mir
direkt noch ein Dokument mitgeschickt, das
00:13:58.829 --> 00:14:06.119
mir zeigt, wie ich die Nutzerdaten besser
für mich ausnutzen kann. Vom Prinzip ist
00:14:06.119 --> 00:14:10.019
es so, dass in den Apps immer
Datenschutzrichtlinien drin sind, die sind
00:14:10.019 --> 00:14:15.940
aber sehr, sehr ... erstens mal lang und
auch verwirrend. Und wenn ich jetzt da
00:14:15.940 --> 00:14:19.149
drüber sprechen würde, bräuchte ich noch
eine Stunde länger. Das heißt, da könnten wir
00:14:19.149 --> 00:14:22.119
nochmal einen kompletten anderen Talk
draus machen und da will ich jetzt nicht
00:14:22.119 --> 00:14:30.560
weiter darauf eingehen. Das
Bundesministerium für Sicherheit hat einen
00:14:30.560 --> 00:14:34.991
Lagebericht zur IT-Sicherheit 2018
rausgebracht und hat dann das in
00:14:34.991 --> 00:14:42.879
verschiedene Gefährdungslagen aufgeteilt.
Erstens: die Gefährdungslage, wo der User
00:14:42.879 --> 00:14:48.290
der IoT-Geräte das Ziel ist und den
Schaden hat. Und da gibt es Punkte wie die
00:14:48.290 --> 00:14:53.949
Manipulation von Daten, das Ausspähen von
Daten, Sabotage und IoT-Geräte als
00:14:53.949 --> 00:15:00.940
Hintertür. Und als zweite Gefährdungslage
hat er die Gefährdungslage genannt, bei
00:15:00.940 --> 00:15:06.160
der andere Personen dadurch zu Schaden
kommen können, wie zum Beispiel der Aufbau
00:15:06.160 --> 00:15:10.019
von Bot-Netzwerken, Identitäts-
Verschleierung, Crypto-Mining, Klick-
00:15:10.019 --> 00:15:15.399
Betrug bei Werbebannern und so weiter. Und
ich muss sagen, das sind die
00:15:15.399 --> 00:15:20.999
Gefährdungslagen die das BSI genannt hat,
die sind alle mit der Glühbirne machbar.
00:15:20.999 --> 00:15:24.910
Crypto-Mining ist zwar ein bisschen
schlecht, weil die Performance nicht
00:15:24.910 --> 00:15:33.880
ausreichend ist aber theoretisch würde das
auch funktionieren. Jetzt habe ich mal mir
00:15:33.880 --> 00:15:38.740
überlegt, was könnte denn ein mögliches
Angriffs-Szenario sein beim Benutzen einer
00:15:38.740 --> 00:15:44.129
Glühbirne. Und generell ist es ja so, dass
die Glühbirne als Netzwerk-Teilnehmer auf
00:15:44.129 --> 00:15:48.859
das komplette, lokale Netzwerk zugreifen
kann und auch ganz oft auf Urlaubsbilder
00:15:48.859 --> 00:15:52.449
und so weiter oder auch irgendwelche
anderen Daten durch ARP-Spoofing und so
00:15:52.449 --> 00:16:01.600
weiter abgreifen könnte und dann einfach
zu einem Server nach außen schicken kann.
00:16:01.600 --> 00:16:07.600
Und das hab ich auch dann gemacht. Also
vom Prinzip die erste Idee war: Ich hab
00:16:07.600 --> 00:16:11.160
mir einfach mal die WLAN Daten selbst
rausgeschickt und hab das mit reingemacht
00:16:11.160 --> 00:16:19.839
und das funktioniert ohne Probleme. So,
ganz kurz zwischendurch: Jeder kann
00:16:19.839 --> 00:16:22.420
Hersteller und Reseller werden. Also es
geht wirklich innerhalb von fünf Minuten
00:16:22.420 --> 00:16:26.199
oder man kann auch irgendwelche Geräte
kaufen, kann die mit der eigenen Produkt-
00:16:26.199 --> 00:16:32.400
ID verbinden und dann hat man sie in der
eigenen Cloud, um auf die Daten komplett
00:16:32.400 --> 00:16:37.600
zugreifen zu können. Und danach kann
wirklich der Cloud-Anbieter selbst kann
00:16:37.600 --> 00:16:41.040
auf die Daten zugreifen, der Hersteller
und auch die Lieferanten, wenn die das
00:16:41.040 --> 00:16:46.290
wollen Die haben alle auch Zugriff auf die
Firmware. Man kann die Firmware auch
00:16:46.290 --> 00:16:52.360
während des Betriebes ändern und ganz
schlimm natürlich ist, dass dann auf alle
00:16:52.360 --> 00:16:57.309
User-Daten zugreifen kann. Und das
Datensammeln ist wirklich in einem extrem
00:16:57.309 --> 00:17:02.579
hohen Ausmaß: also mit Koordinaten und so
weiter; das muss eigentlich bei der
00:17:02.579 --> 00:17:06.699
Glühbirne alles gar nicht sein. Das
Datensammeln kann nicht abgestellt werden,
00:17:06.699 --> 00:17:13.780
wurde mir ja gesagt, weil es, ja, nicht
möglich ist. Und ja auch ein großer Punkt.
00:17:13.780 --> 00:17:17.799
Das heißt: Eigentlich kann man als
deutscher Hersteller solche Anbieter
00:17:17.799 --> 00:17:22.069
überhaupt nicht verwenden. Das
Inverkehrbringen von solchen Geräten ist
00:17:22.069 --> 00:17:26.800
auch sehr einfach: Man kann die ganz einfach
verkaufen: Man kann sich viele kaufen und
00:17:26.800 --> 00:17:31.500
die Retouren zurückgehen lassen. Man kann
... im Gebrauchtmarkt muss man sehr
00:17:31.500 --> 00:17:35.121
aufpassen ,weil man nie weiß was drin ist.
Und der junge Herr zum Beispiel hat von
00:17:35.121 --> 00:17:40.309
mir eine geschenkt bekommen. Das ist
natürlich noch eine andere Möglichkeit
00:17:40.309 --> 00:17:48.950
auch, solche Geräte in den Verkehr zu
bringen. Jetzt war eigentlich für mich die
00:17:48.950 --> 00:17:53.919
Arbeit beendet, weil meinem Kunden konnte
ich natürlich nicht mehr helfen oder nicht
00:17:53.919 --> 00:18:00.230
sagen, okay wir nehmen einen tollen
Military-Grade Anbieter aus Fernost,
00:18:00.230 --> 00:18:04.480
sondern wir müssen was Eigenes machen.
Trotzdem hatte ich eine eigene, neue
00:18:04.480 --> 00:18:08.370
Motivation. Und zwar erstens mal, ist es
denn möglich, diese ganzen Geräte, wie sie
00:18:08.370 --> 00:18:14.610
alle hier sind, auch ohne die Cloud zu
betreiben. Und zweitens wollte ich
00:18:14.610 --> 00:18:21.269
natürlich auch noch mal den wirklichen
Proof of Concept von dem Trojaner haben.
00:18:21.269 --> 00:18:27.360
Und das heißt es ging jetzt für mich
nochmal eine Runde weiter. So, dafür habe
00:18:27.360 --> 00:18:32.460
ich mir ein kleines Testsetup aufgebaut.
Ich habe einfach einen Raspberry Pi mit
00:18:32.460 --> 00:18:36.870
einem Kali Linux benutzt und da einen
Software-Access Point laufen lassen, einen
00:18:36.870 --> 00:18:43.470
hostapd. Dann brauchte ich meine eigenen
DNS-Server, um auch Anfragen umleiten zu
00:18:43.470 --> 00:18:49.660
können. Hab den eigenen HTTP-Server
gebraucht, Und den MQTT-Broker und zum
00:18:49.660 --> 00:18:54.180
Analysieren habe ich Wireshark benutzt und
man-in-the-middle-Attacken mit bettercap
00:18:54.180 --> 00:19:00.100
gemacht. Ja, dann ging es erst einmal zur
Netzwerkanalyse, Ich habe mir erst einmal
00:19:00.100 --> 00:19:05.320
angeguckt, was geht denn da rein und raus
auf der Netzwerk Seite. Es ist ganz
00:19:05.320 --> 00:19:09.700
einfach. Es gibt eigentlich drei Sachen:
Es gibt DNS-Requests. Es gibt HTTP
00:19:09.700 --> 00:19:15.150
Anfragen. Die sind eigentlich meistens
unverschlüsselt bzw. auch die wichtigen
00:19:15.150 --> 00:19:21.330
Sachen, die zum Beispiel Schlüssel
enthalten, sind dann unverschlüsselt. Und
00:19:21.330 --> 00:19:27.769
MQTT ist auch vorhanden und verschlüsselt.
Aber es wird auch, wenn in der Lampe
00:19:27.769 --> 00:19:39.941
selbst https und die MQTTs implementiert
sind, einfach nicht benutzt. Und das ist
00:19:39.941 --> 00:19:43.390
wieder "sehr sicher". Wie gesagt, in dem
Feld. man sieht es hier nicht, aber da ist
00:19:43.390 --> 00:19:51.110
auch der local Key in clear drin, in der
Anfrage. Und dann habe ich eine kleine
00:19:51.110 --> 00:19:55.580
Crypto Analyse gemacht, um auch zu sehen
was sonst noch so alles in den
00:19:55.580 --> 00:20:01.370
verschlüsselten Nachrichten drin steckt
und dadurch dass der ESP verwendet wird
00:20:01.370 --> 00:20:07.520
und diesen Tensilica XTENSA Core hat, ist
das Disassemblieren sehr mühselig von dem
00:20:07.520 --> 00:20:11.929
Binary, weil es eben keine guten Plugins
gibt und auch keine guten Disassembler.
00:20:11.929 --> 00:20:17.740
Und dann hab ich mich mal ein bisschen
umgeschaut. Und es gibt von dem Cloud-
00:20:17.740 --> 00:20:23.440
Anbieter eine sehr gute API Dokumentation,
die zwar auch sehr viele Fehler hat, aber
00:20:23.440 --> 00:20:27.380
da drin sind auch sehr wichtige Teile wie
Verschlüsselungen teilweise dokumentiert.
00:20:27.380 --> 00:20:33.740
Und es gibt noch ein SDK das habe ich
angefragt aber bevor ich es geschickt
00:20:33.740 --> 00:20:36.759
bekommen habe, habe ich es auch im Internet
gefunden, ist eigentlich auch öffentlich
00:20:36.759 --> 00:20:43.690
zugänglich und mit dem SDK waren pre-
compiled Libraries drin, die ich dann auch
00:20:43.690 --> 00:20:47.740
analysieren konnte und wenn ich meine
eigene Firmware damit kompiliert habe,
00:20:47.740 --> 00:20:52.639
hatte ich ein Sample Output und brauchte
kein wirkliches Disassembling. Das
00:20:52.639 --> 00:21:00.110
Ergebnis der Crypto-Analyse war, dass ich
dann in einem kleinen 60 Zeilen Skript ja
00:21:00.110 --> 00:21:05.740
alle verwendeten Verschlüsselungen drin
hatte und es wird eigentlich nur ein
00:21:05.740 --> 00:21:13.029
AES-128 verwendet mit dem Local Key und
die MD5 Check-Summe teilweise über gewisse
00:21:13.029 --> 00:21:18.750
Teile davon gebildet, auch als Sicherheit
und signiert werden die Daten auch mit
00:21:18.750 --> 00:21:29.200
einem MD5. So, dann hab ich erst mal
geguckt wie funktioniert denn so eine
00:21:29.200 --> 00:21:33.139
Registrierung. Also die Registrierung
selbst einer Lampe an der Cloud
00:21:33.139 --> 00:21:40.750
funktioniert so, dass die Mobile-App einen
Token anfragt an der Cloud, schickt den
00:21:40.750 --> 00:21:48.490
über Morse Protokoll namens SmartConfig
mit den Wifi-Credentials zur Lampe, die
00:21:48.490 --> 00:21:56.240
meldet sich im WLAN an und schickt dann
den Token zurück an die Cloud und bekommt
00:21:56.240 --> 00:22:06.130
die MQTT-Login Daten und fragt nach der
Activation. Das ist eine HTTP-Anfrage
00:22:06.130 --> 00:22:11.470
auch, bei der dann der Local Key und der
Security Key in clear zurückkommen. Der
00:22:11.470 --> 00:22:16.090
Local Key geht auch zur App und danach
kann sich die Lampe anmelden an der Cloud
00:22:16.090 --> 00:22:25.529
und kommuniziert weiterhin mit der Cloud
und kann verwendet werden. Was mich viel
00:22:25.529 --> 00:22:29.580
mehr interessiert hat war das Upgrade weil
ich ja eigentlich meine eigene Firma
00:22:29.580 --> 00:22:35.399
reinbringen wollte und dazu hatte
ich eine Lampe, die hat eine neue
00:22:35.399 --> 00:22:42.120
Firmware, ein Firmware-Upgrade gehabt und
das funktioniert im Endeffekt so, auf dem
00:22:42.120 --> 00:22:47.429
Handy wird gefragt, ob das Upgrade
durchgeführt werden soll. Dann wird ein
00:22:47.429 --> 00:22:51.710
Trigger ausgelöst und der Trigger wird an
die Lampe gesendet und die Lampe fragt
00:22:51.710 --> 00:23:01.260
über HTTP, wo gibt's die neue Firmware und
welche Version hat die, und so weiter.
00:23:01.260 --> 00:23:06.620
Dann lädt sich die Lampe einfach von einem
HTTP-Server das Binary und installiert es
00:23:06.620 --> 00:23:13.130
in die nicht genutzte User Partition. Für
mich war es ganz einfach, ich habe mir als
00:23:13.130 --> 00:23:20.769
allererstes mal einen eigenen MQTT-Server
genommen und hab dann versucht das Trigger
00:23:20.769 --> 00:23:27.669
selbst zu generieren. Und danach habe ich
mit einer Man-in-the-Middle Attack den HTTP
00:23:27.669 --> 00:23:31.500
Request verändert und hab der Glühbirne
eben gesagt, dass sie von meinem eigenen
00:23:31.500 --> 00:23:38.389
Server die Firmware laden soll.
Funktionieren tut das ganz einfach so, der
00:23:38.389 --> 00:23:43.610
eigene MQTT-Server wird benutzt. Dafür
musste ich einfach den DNS-Server
00:23:43.610 --> 00:23:50.840
umbiegen, dass eben nicht mehr auf den
MQTT-Server des Cloud Anbieters geschaut
00:23:50.840 --> 00:23:56.679
wird sondern auf meinen Lokalen. Man sieht
dass sich die Lampe anmeldet und
00:23:56.679 --> 00:24:05.299
irgendwelche Nachrichten ausgetauscht
werden. Das Nächste war eigentlich so das
00:24:05.299 --> 00:24:12.210
kniffligste. Das war der Upgrade-Trigger,
den hab ich erst mal analysiert, der kommt
00:24:12.210 --> 00:24:16.690
tatsächlich verschlüsselt und wurde dann
entschlüsselt mit einem Local Key und dann
00:24:16.690 --> 00:24:23.289
hat man darin gesehen dass das Protokoll
15 quasi das Upgrade triggert und man kann
00:24:23.289 --> 00:24:29.690
sich dann einfach mit meinen Skripts die
Trigger generieren. Beim Timestamp der
00:24:29.690 --> 00:24:33.570
verwendet wird ist es auch so, dass es die
Lampe sehr sehr gnädig ist. Der kann auch
00:24:33.570 --> 00:24:36.659
gerne mal ein bisschen älter sein oder man
kann das auch öfter verwenden. Das
00:24:36.659 --> 00:24:45.700
funktioniert dann auch immer wieder und so
konnte man einfach über den Moskito Befehl
00:24:45.700 --> 00:24:50.320
das Upgrade triggern. Ja, ich habe dann
noch ein bisschen automatisiert, dass
00:24:50.320 --> 00:24:56.340
alles mit einem Klick passiert quasi, das
hab ich auch eigentlich gemacht für euch
00:24:56.340 --> 00:24:59.340
alle, weil ich es dann später alles
veröffentlichen werde.
00:24:59.340 --> 00:25:07.259
Applaus
00:25:07.259 --> 00:25:12.360
Punkt war das Ändern der Upgrade-Quelle;
hierzu habe ich ein fertiges Tool benutzt
00:25:12.360 --> 00:25:19.419
das heißt bettercap; damit kann man HTTP-
Requests einfach in Realtime ändern. Und
00:25:19.419 --> 00:25:26.009
da ich ja eh Kali Linux als Access Point
benutzt habe, konnte ich auch relativ gut
00:25:26.009 --> 00:25:33.110
dran und habe quasi dann in die URL und in
den MD5 einfach die Daten meiner neuen
00:25:33.110 --> 00:25:42.600
Firmware geschrieben. Und das geht auch
mit ein paar kleinen Skripts. Das heißt,
00:25:42.600 --> 00:25:49.669
man gibt an, dass er irgendwelche fertigen
Strings in den HTTP-Replies sucht und dann
00:25:49.669 --> 00:25:54.600
einfach ersetzt und danach ging es
eigentlich nur noch darum einen eigenen
00:25:54.600 --> 00:26:02.500
HTTP-Server zu installieren und die Lampe
hat nach dem Upgrade Trigger das Binary
00:26:02.500 --> 00:26:10.110
von meinem Server gezogen. Ja, jetzt
geht's noch zum Thema eigene Firmware. Ich
00:26:10.110 --> 00:26:17.480
habe euch ja schon gesagt - ach genau -
die hab ich ja schon erwähnt, dass ich da
00:26:17.480 --> 00:26:21.299
verschiedene Versionen machen wollte unter
anderem die eine die eigentlich nur das
00:26:21.299 --> 00:26:26.659
WLAN Passwort mal raus pusht. Und dann hab
ich die einfach mal eingespielt. Generell
00:26:26.659 --> 00:26:29.710
ist es so, ich hab jetzt hier verschiedene
Terminal Windows auf, das kann man
00:26:29.710 --> 00:26:34.779
natürlich noch alles vereinfachen, ganz
oben in der ersten Zeile sehen wir den
00:26:34.779 --> 00:26:40.980
Access Point, dann den Moskito Server auf
der anderen Seite, hab ich ein HTTP-Server
00:26:40.980 --> 00:26:46.011
gestartet auf dem mein Binary liegt und
ein Script, das mir alle Kommandos in
00:26:46.011 --> 00:26:54.220
Realtime entschlüsselt. Dann gibt's noch
das bettercap, das eben die Anfragen
00:26:54.220 --> 00:27:00.080
verändert und unten rechts sehen wir ein
Terminal, in dem wir eigentlich nur die
00:27:00.080 --> 00:27:07.909
die seriellen Ausgaben der Lampe sieht und
die hab ich jetzt gestartet und danach
00:27:07.909 --> 00:27:14.680
sende ich mit dem letzten Befehl unten
noch einfach mal den Trigger Request. Und
00:27:14.680 --> 00:27:23.809
dann sollte man sehen wie die, ja genau
jetzt kommt der Request und jetzt kommen
00:27:23.809 --> 00:27:29.080
überall Anfragen und die Lampe bootet neu
und es ist eine neue Firmware drauf, also
00:27:29.080 --> 00:27:39.409
geht ganz schnell. Genau so jetzt ging es
um die Firmware, die draufgeht. Ich habe
00:27:39.409 --> 00:27:44.570
euch gesagt, ich wollte ein Proof-of-
Concept machen von einem Trojaner. Was
00:27:44.570 --> 00:27:48.279
macht der Trojaner? Ganz einfach, der
verbindet sich zu meinem eigenen Server
00:27:48.279 --> 00:27:54.190
der irgendwo extern im Internet steht,
schickt die WLAN Credentials und öffnet
00:27:54.190 --> 00:28:00.299
noch einen Reverse Tunnel über den ich
dann zurück in das lokale Netzwerk gehe.
00:28:00.299 --> 00:28:04.340
Der agiert bei mir in meiner
Implementation einfach als HTTP oder Socks
00:28:04.340 --> 00:28:10.799
Proxy, d.h. man kann einfach irgendeinen
Browser nehmen, gibt die von meinem
00:28:10.799 --> 00:28:19.710
externen Server die IP-Adresse ein und den
Port und ist dann im lokalen Netzwerk des
00:28:19.710 --> 00:28:25.260
Lampenbetreibers. Das Ganze war mir noch
sehr wichtig, dass es transparent ist,
00:28:25.260 --> 00:28:30.659
d.h. der Nutzer der Lampe bekommt das
überhaupt nicht mit und die ganz normale
00:28:30.659 --> 00:28:36.510
Lampenfunktion ist noch genauso gegeben
wie vorher. Hier habe ich auch eine kleine
00:28:36.510 --> 00:28:42.799
Demo davon. Oben habe ich wieder das
Terminal der Lampe selbst; dann hab ich
00:28:42.799 --> 00:28:48.370
mal auf meinem Server selbst einen Proxy
Forwarder, ist auch ein kleines Python
00:28:48.370 --> 00:28:55.211
Script, und unten hab ich irgendwo im
Internet dann einen Rechner, das sehen wir
00:28:55.211 --> 00:29:00.279
jetzt gleich. Dann hab ich einfach mal
eine IP-Abfrage gemacht. Genau. Jetzt
00:29:00.279 --> 00:29:07.919
verbindet sich die Lampe zu meinem Server
und ich mache unten eine Abfrage der IP,
00:29:07.919 --> 00:29:13.620
dass ist also die externe IP, ist in dem
Fall 213 irgendwas; jetzt mache ich das
00:29:13.620 --> 00:29:22.639
Gleiche mit dem Proxy, genau da habe ich
jetzt einfach meinen eigenen Proxy noch
00:29:22.639 --> 00:29:26.830
mit reingesetzt und sehe auf einmal dass
bei der Lampe selbst die Anfrage kommt und
00:29:26.830 --> 00:29:33.419
auf einmal die lokale IP der Lampe
gesendet wird, und dann wollte ich noch
00:29:33.419 --> 00:29:40.249
zum Test mal im internen Netzwerk was
zugreifen und habe jetzt einfach mal auf
00:29:40.249 --> 00:29:47.639
fritz.box eine Abfrage gestellt und konnte
somit sehen dass in dem Netzwerk auch eine
00:29:47.639 --> 00:29:56.259
Fritzbox drin ist. Also das heißt, man
kann mit dem Proxy nicht nur den Internet
00:29:56.259 --> 00:30:01.610
Account des Opfers benutzen für Bot-Netze
und so weiter, oder für alles andere,
00:30:01.610 --> 00:30:04.539
sondern man kann sich ja auch im lokalen
Netzwerk ganz einfach bewegen.
00:30:04.539 --> 00:30:14.009
Applaus
00:30:14.009 --> 00:30:21.440
Die große Frage ist: Warum ist es so
gefährlich? Es ist eigentlich so, man weiß
00:30:21.440 --> 00:30:26.379
nie was in so einem Gerät drin steckt und
gerade auch dieser Button "Silent Upgrade"
00:30:26.379 --> 00:30:31.289
hat mich sehr verwundern lassen und in
meinem Fall war es noch nicht einmal so,
00:30:31.289 --> 00:30:35.640
dass dass zum Upgraden der Firmware der
Lampe irgendeine Bestätigung vom User
00:30:35.640 --> 00:30:40.970
kommen musste oder so weiter. Das heißt
man, man bekommt es nicht mit und man kann
00:30:40.970 --> 00:30:46.380
einfach Trojaner in irgendwelche Lampen
rein flashen und das halt auch im ganz
00:30:46.380 --> 00:30:51.070
großen Bereich. Das heißt, wenn ich jetzt
20 000 Lampen verkauft hab, dann kann ich
00:30:51.070 --> 00:30:56.149
einfach mich durch meine Web-Applikationen
klicken, lade das neue Binary mit dem
00:30:56.149 --> 00:31:00.019
Trojaner hoch und gestern war es noch eine
sichere Lampe und morgen ist es einfach
00:31:00.019 --> 00:31:04.990
der Trojaner und der Nutzer selbst bekommt
es einfach überhaupt nicht mit. Und, ja,
00:31:04.990 --> 00:31:12.210
wie gesagt, ich habe das Flashen selbst
gemacht durch, durch Löten am Anfang, es
00:31:12.210 --> 00:31:15.380
geht aber auch mit der ganz normalen Man-
in-the-Middle-Attack, oder der Cloud
00:31:15.380 --> 00:31:22.629
Provider kann das einfach mit seinen ganz
normalen Tools jederzeit durchführen. Was
00:31:22.629 --> 00:31:27.759
auch noch ein Thema war für mich, war
eben: Kann ich das Ding auch ohne Cloud
00:31:27.759 --> 00:31:34.879
betreiben? Wenn ich jetzt so eine
Lampe zuhause hab, dann hab ich gedacht,
00:31:34.879 --> 00:31:41.370
Ok, es gibt verschiedene Open Source
Software die auch sehr viele tolle
00:31:41.370 --> 00:31:47.450
Funktionen haben sogar danach noch mehr
können und so weiter und der normale
00:31:47.450 --> 00:31:52.289
Workflow, das zu flashen ist einfach dass
man wirklich die Lampe aufbricht und dann
00:31:52.289 --> 00:31:57.299
die Kontakte anlötet und so weiter und da
hört bei den meisten Leuten auf. Jetzt
00:31:57.299 --> 00:32:02.830
können wir aber auch mit der Methode wie
ich sie gezeigt habe natürlich auch eine
00:32:02.830 --> 00:32:07.039
andere Firmware in die Lampe flashen um
sie eben ohne die Cloud betreiben zu
00:32:07.039 --> 00:32:10.590
können. Und wie gesagt,ich werde es dann
auch veröffentlichen da kann dann jeder
00:32:10.590 --> 00:32:19.809
damit machen was er möchte. Ja, zum Fazit.
Das Sicherheitslevel von diesen Geräten
00:32:19.809 --> 00:32:26.820
ist tatsächlich minimal. Also es ist
wirklich so, dass alles was ich
00:32:26.820 --> 00:32:33.460
probiert habe hat direkt funktioniert. Es
gab keinerlei Verschlüsselung von Daten
00:32:33.460 --> 00:32:41.250
die in dem Gerät selbst abgelegt werden.
Die Firmware war weder signiert noch die
00:32:41.250 --> 00:32:46.380
Updates waren signiert. Also ich kann
direkt Änderungen direkt daran machen. Die
00:32:46.380 --> 00:32:52.059
Datenspeicherung ist unverschlüsselt und
die Datenübertragung war auch eigentlich
00:32:52.059 --> 00:32:57.549
in den kritischsten Fällen
unverschlüsselt. Und da war, wo sie
00:32:57.549 --> 00:33:06.039
verschlüsselt war es ja keine
Hürde. Das viel Erschreckendere jedoch ist
00:33:06.039 --> 00:33:13.830
das große Datensammeln. Für mich ist es
völlig unklar warum der Hersteller und der
00:33:13.830 --> 00:33:20.019
Reseller oder wer auch immer Zugriff auf
den Account hat, wissen muss wo genau
00:33:20.019 --> 00:33:23.049
diese Lampe sich befindet und das war
wirklich so, dass die GPS-Koordinaten die
00:33:23.049 --> 00:33:28.110
waren über das Handy ermittelt, bei der
Registrierung. Aber die waren sehr genau
00:33:28.110 --> 00:33:34.080
und ich habe quasi den Schreibtisch an dem
ich gesessen habe quasi in den Koordinaten
00:33:34.080 --> 00:33:40.020
wiedergefunden und da sehe ich keinen
Grund dafür. Und es ist natürlich auch
00:33:40.020 --> 00:33:46.320
erschreckend wer alles darauf Zugriff hat.
Die Datenweitergabe und -Speicherung ist
00:33:46.320 --> 00:33:53.679
auch äußerst undurchsichtig. Also es wird
zwar teilweise gesagt, dass die Daten mit
00:33:53.679 --> 00:33:58.749
auch in Deutschland gehostet werden aber
auch jederzeit nach Fernost übertragen
00:33:58.749 --> 00:34:04.730
werden können. Und wer wirklich darauf
Zugriff hat, das weiß natürlich keiner und
00:34:04.730 --> 00:34:15.540
ist auch nicht bekannt. Und. Ja. Das große
Problem für mich ist, dass es die
00:34:15.540 --> 00:34:19.360
einfachsten Verbrauchsgegenstände, weil
eine Glühbirne ist ja wirklich eigentlich
00:34:19.360 --> 00:34:26.580
nur dazu da ein bisschen Licht zu machen,
und für mich vergleichbar zu Klopapier ein
00:34:26.580 --> 00:34:31.000
einfacher Verbrauchsgegenstand. Und jetzt
wird nach und nach alles Smart und wenn
00:34:31.000 --> 00:34:36.880
selbst so kleine Geräte, die so normal für
uns alle sind, weil jeder hat eine
00:34:36.880 --> 00:34:40.640
Glühbirne zuhause, auf einmal smart sein
müssen dann bringt man natürlich auch
00:34:40.640 --> 00:34:44.990
viele Gefahren mit in seinen eigenen
Haushalt. Und den meisten Leuten ist es
00:34:44.990 --> 00:34:48.990
einfach nicht bewusst weil sie denken: Ok.
Wenn jemand die Glühbirne hackt, was will
00:34:48.990 --> 00:34:54.590
er machen? Das Licht an-ausschalten? Aber
die tatsächliche Konsequenz ist natürlich
00:34:54.590 --> 00:35:03.560
ganz anders, dass auf einmal das komplette
lokale Netzwerk von außen offen ist und
00:35:03.560 --> 00:35:09.620
auch auf private Daten und so weiter zu
zugegriffen werden kann. Das einzig
00:35:09.620 --> 00:35:14.310
Positive jedoch aus dem, aus meinen
Erkenntnissen ist eben, dass man die
00:35:14.310 --> 00:35:19.600
Hersteller-Cloud doch recht gut abschalten
kann. Das zeigt aber auch wieder, dass es
00:35:19.600 --> 00:35:23.720
eigentlich überhaupt nicht notwendig ist,
weil man kann die Lampe mit den anderen
00:35:23.720 --> 00:35:27.910
Firrmwaren noch viel besser benutzen und
so weiter, ohne dass eben diese Daten
00:35:27.910 --> 00:35:33.350
gespeichert werden. Und eigentlich ist es
von meiner Seite ein Appell an die IoT-
00:35:33.350 --> 00:35:39.400
Hersteller eben, dass diese gute Technik
und schöne Technik und bequeme Technik den
00:35:39.400 --> 00:35:45.410
Usern bereitzustellen ohne diese ganzen
Daten zu sammeln. Und wenn der Anbieter zu
00:35:45.410 --> 00:35:52.200
mir sagt: "it is avoidless", auf die Frage
ob die Daten denn nicht gespeichert werden
00:35:52.200 --> 00:36:01.160
können, ist es tatsächlich eine Lüge und
auch nicht, ja, notwendig. Ja. Ich habe
00:36:01.160 --> 00:36:08.630
schon angekündigt, ich werde noch weitere
Infos auf der, auf unserer Website zum
00:36:08.630 --> 00:36:14.750
Download bereit geben. Unter anderem halt
auch Skripte mit denen man dann andere
00:36:14.750 --> 00:36:17.743
Firmware auf solche Geräte flashen kann
00:36:17.743 --> 00:36:21.040
und bin leider noch nicht dazu
gekommen das alles fertig
00:36:21.040 --> 00:36:29.070
zu machen aber das wird in Kürze folgen.
Ja, jetzt sind wir beim Fragenteil
00:36:29.070 --> 00:36:36.690
angekommen und ich glaube jetzt kommt
jemand auch auf die Bühne zum Fragen.
00:36:36.690 --> 00:36:48.133
Applaus
00:36:48.133 --> 00:36:54.620
Herald: Ja, vielen lieben Dank Micha. Ich
bin immer noch beunruhigt und fühle mich
00:36:54.620 --> 00:37:00.100
überhaupt nicht Military-Grade-Irgendwas.
Frage an den jungen Mann oder den jungen
00:37:00.100 --> 00:37:06.040
Besucher der vorhin die Lampe bekommen
hat. Willst du sie noch behalten? Bist du
00:37:06.040 --> 00:37:13.140
sicher? Okay, gut. Haben wir denn Fragen?
Geht schon los. Fangen wir da an.
00:37:13.140 --> 00:37:18.280
Mikro 2 bitte.
Mikro 2: Ist MQTT jetzt verschlüsselt,
00:37:18.280 --> 00:37:20.490
oder nicht ? Ich habe es nicht ganz
verstanden.
00:37:20.490 --> 00:37:25.540
Michael: MQTT ist verschlüsselt. Ist mit
AES verschlüsselt und mit dem Local-Key,
00:37:25.540 --> 00:37:29.570
den man über den HTTP Befehl in Klartext
angezeigt bekommt.
00:37:29.570 --> 00:37:35.430
Gelächter
Herald: Dankeschön. Wir machen gleich bei
00:37:35.430 --> 00:37:41.080
Dir weiter. Ihr mommt dann als nächster.
Deine Frage bitte.
00:37:41.080 --> 00:37:44.880
Mikrofon: Wie lösen die alternativen
Firmwares [unverständlich] Problem von dem
00:37:44.880 --> 00:37:49.570
Klartextpassword fürs WLAN?
Michael: Um ehrlich zu sein habe ich da
00:37:49.570 --> 00:37:52.470
nicht weiter geschaut. Ich habe nur..
Dadurch dass es Open-Source ist kann
00:37:52.470 --> 00:37:59.200
natürlich jeder da reinprogrammieren was
er möchte und hat da volle Kontrolle. Und
00:37:59.200 --> 00:38:02.610
ob das jetzt in Klar abgespeichert wird
oder nicht kann ich jetzt nicht direkt sagen.
00:38:02.610 --> 00:38:10.974
Herald: Okay, vielen Dank.
So, nächste Frage, Mikro 1 bitte.
00:38:10.974 --> 00:38:14.020
Mikro 1: Wenn die Lampen so populär sind
00:38:14.020 --> 00:38:19.850
könnte man nicht eine Stiftung haben die
zehn Millionen Lampen verkauft auf denen
00:38:19.850 --> 00:38:24.740
wir dann zehn Millionen Tor-Exit-Nodes
laufen lassen?
00:38:24.740 --> 00:38:33.140
Gelächter & Applaus
00:38:33.140 --> 00:38:35.060
Michael: Das ist natürlich eine sehr
00:38:35.060 --> 00:38:40.420
interessante Idee und man kann da noch
viel mehr damit machen. Theoretisch könnte
00:38:40.420 --> 00:38:44.970
man auch sagen, man macht nur einen
Katalog aus verschiedenen Firmwaren die
00:38:44.970 --> 00:38:47.830
für verschiedene Modelle eben
funktionieren und macht da eben solche
00:38:47.830 --> 00:38:53.730
Sachen mit rein. Und dann könnte man das
sehr gut betreiben wobei aber die ja die
00:38:53.730 --> 00:38:58.880
Power oder die CPU Power doch sehr
limitiert ist.
00:38:58.880 --> 00:39:08.790
Herald: Ok, Ich denke mal wir nehmen jetzt die
nächste Frage Mikro 1 nochmal.
00:39:08.790 --> 00:39:14.380
Mikro 1: Du hattest am Anfang des Vortrags
gesagt, das ist ein sehr bekannter und
00:39:14.380 --> 00:39:18.700
namhafter Hersteller, was allein die
Cloud-Plattform und die Dashboards
00:39:18.700 --> 00:39:23.220
hergegeben haben. Kannst du uns vielleicht
ein bisschen mehr dazu sagen welche
00:39:23.220 --> 00:39:27.020
Produkte der Hersteller noch herstellt und
verkauft außer von Glühbirnen.
00:39:27.020 --> 00:39:31.400
Michael: Also es gibt wirklich alles. Es
ist nicht ein Hersteller das ist eben
00:39:31.400 --> 00:39:34.910
genau das Schlimme daran deswegen kann man
ja auch nicht einfach so nennen das sind
00:39:34.910 --> 00:39:38.250
10000 verschiedene Hersteller die eben
genau diese Technologie einfach einsetzen
00:39:38.250 --> 00:39:44.090
und die sind wirklich weltweit überall das
heißt es gibt deutsche Hersteller, die
00:39:44.090 --> 00:39:47.260
diese Technologie benutzen und man denkt
man kauft ein deutsches Produkt.
00:39:47.260 --> 00:39:53.500
Tatsächlich steckt aber das drin. Und
Produkte gibts auch alles. Ich habe von
00:39:53.500 --> 00:40:00.170
Küchengeräten, Kühlschränke und so weiter.
Der Hersteller nennt 30 verschiedene
00:40:00.170 --> 00:40:05.440
Kategorien. Es ist tatsächlich fast
überall drin. Für mich war die Glühbirne
00:40:05.440 --> 00:40:10.690
das einfachste und auch diese elektrischen
Steckdosen weil sie einfach sehr populär
00:40:10.690 --> 00:40:16.730
sind und überall eingesetzt werden.
Herald: Ich würde jetzt gern mit Mikro
00:40:16.730 --> 00:40:21.510
Nummer 3 weitermachen da stehen nämlich
auch schon zwei Leute. Ihre Frage bitte.
00:40:21.510 --> 00:40:26.571
Mikro 3: Die Frage ist ob ihr auch die
Shelleys angeguckt hat. Haben ja diese
00:40:26.571 --> 00:40:32.070
Jumperkabelansteckmöglichkeit aber die
haben auch die Cloud ausgeschaltet. Weißt
00:40:32.070 --> 00:40:36.180
Du da was zu?
Michael: Nee, das weiß ich nicht aber ich
00:40:36.180 --> 00:40:41.610
weiß auch nicht ob die von Haus aus diese
Cloud benutzen. Hab ich nicht gemacht. Ich
00:40:41.610 --> 00:40:47.690
glaube dass es einfach nur eine Open-
Source Hardware ist auf der jetzt nichts
00:40:47.690 --> 00:40:53.390
von dem Anbieter selbst läuft.
Herald: Ok danke, dann nehmen wir das
00:40:53.390 --> 00:40:59.990
nächste Mikro Nr. 2 bitte.
Mikro 2: Ich bin kein Programmierer, meine
00:40:59.990 --> 00:41:04.710
Nächte werden deswegen aber auch nicht
besser und deswegen meine Frage einmal
00:41:04.710 --> 00:41:08.820
raus in die Welt an die Bildschirme,
welchen Tipp gibst du? Nicht im fernen
00:41:08.820 --> 00:41:13.360
Osten kaufen? Nur Markenware?
Michael: Es ist natürlich relativ
00:41:13.360 --> 00:41:18.520
schwierig was zu nennen weil man weiß
natürlich nie was drin steckt und wie ich
00:41:18.520 --> 00:41:24.100
gesagt habe es gibt auch deutsche
Hersteller die das benutzen. Ich hab mir
00:41:24.100 --> 00:41:28.960
die Konkurrenzprodukte noch nicht
angeschaut und kann deswegen auch nicht
00:41:28.960 --> 00:41:32.840
sagen was man kaufen soll aber für mich
ist natürlich auch ein Tipp eigene
00:41:32.840 --> 00:41:37.700
Firmware zu verwenden und auch namhafte
Hersteller weil die ganz andere Sachen zu
00:41:37.700 --> 00:41:44.700
verlieren haben. Also wenn jetzt eine
kleine Firma aus Fernost die machen
00:41:44.700 --> 00:41:48.320
einfach unter verschiedenen Namen Firmen
auf und danach ist es egal ob da
00:41:48.320 --> 00:41:53.520
irgendwelche Hacks oder Sachen rauskommen.
Wenn da große Namen hinten dran stehen ist
00:41:53.520 --> 00:42:00.150
das natürlich eine andere Sache. Deswegen
lieber was mit einem bekannten Namen kaufen.
00:42:00.150 --> 00:42:05.540
Herald: Ok, danke. Ich sehe ein Licht. Ein
Licht sagt mir das Internet hat ne Frage.
00:42:05.540 --> 00:42:08.122
Lieber Signalengel.
00:42:08.122 --> 00:42:11.710
Signalengel: Ja die Frage: Welche
Alternative zur Klartextablage des Wlan-
00:42:11.710 --> 00:42:15.760
Passworts bzw. des relevanten Schlüssels
siehst du?
00:42:15.760 --> 00:42:21.060
Michael: Naja, in Wirklichkeit rausfinden
tut mans immer das ist mir auch bewusst
00:42:21.060 --> 00:42:25.650
aber es muss natürlich nicht so obvious
sein weil wenn man wirklich nur das Binary
00:42:25.650 --> 00:42:31.170
ausliest und danach den Klartext Schlüssel
hat dann ist es natürlich sehr verdächtig
00:42:31.170 --> 00:42:35.250
und man findet schon beim Durchscrollen
durchs Binary oder wenn man einfach
00:42:35.250 --> 00:42:41.310
strings eingibt. Wenn man alleine nur was
drüber xored hätte wäre es schon nicht so
00:42:41.310 --> 00:42:47.830
auffällig wie es tatsächlich wirklich ist.
Herald: Ok, Dankeschön. Ich nehme erst mal
00:42:47.830 --> 00:42:51.920
das Mikro Nr. 7. Da wartet schon jemand
länger. Die Frage bitte.
00:42:51.920 --> 00:42:55.310
Mikro 7: Ja das ist jetzt fast eher eine
Anmerkung. Zudem...
00:42:55.310 --> 00:42:58.670
Herald: Das tut mir leid aber wir nehmen
leider keine Anmerkungen. Wenn du eine
00:42:58.670 --> 00:43:02.690
Frage hast dann melde dich bitte mit einer
Frage. Kommentare möchten wir bitte nicht.
00:43:02.690 --> 00:43:06.680
Dankeschön. Dann Mikro Nummer 8.
Bitteschön, danke.
00:43:06.680 --> 00:43:12.980
Mikro 8: Der MQTT-Request geht ja direkt
an den Cloudhersteller oder?
00:43:12.980 --> 00:43:18.920
Michael: Genau, also die MQTT ist im
Endeffekt das Protokoll das verwendet wird
00:43:18.920 --> 00:43:24.050
um aus dem Internet ins lokale Netzwerk zu
kommen und da wird quasi ein MQTT Tunnel
00:43:24.050 --> 00:43:29.681
aufgestellt und es gibt ein Topic das
quasi subscribed wird von der Lampe selbst
00:43:29.681 --> 00:43:34.590
wo es quasi Befehle annimmt. Und einer der
verwendet wird um Publishes zu machen wo
00:43:34.590 --> 00:43:40.140
Statusmeldung rausgehen.
Herald: Ok danke, wir haben noch eine
00:43:40.140 --> 00:43:44.550
Frage auf der 5, die wartet schon
länger, Bitteschön.
00:43:44.550 --> 00:43:50.080
Mikro 5: Danke sehr, gibt es irgendwelche
Einschränkungen wenn ich ein Internet of
00:43:50.080 --> 00:43:53.300
Things WLAN aufbaue mit sehr
eingeschränktem Internetzugang?
00:43:53.300 --> 00:44:01.250
Michael: Es ist tatsächlich möglich auch
mit der Firmware die drauf ist einen
00:44:01.250 --> 00:44:04.730
lokalen Betrieb zu machen. Ich glaube
nicht mit allen Geräten die ich getestet
00:44:04.730 --> 00:44:12.810
habe, aber die Lampe ist noch auf dem Port
6668 offen; nimmt da sehr ähnliche Befehle
00:44:12.810 --> 00:44:19.300
an und man kann sie quasi auch damit
selbst steuern. Auch mit dem selben local
00:44:19.300 --> 00:44:23.780
key werden die Daten dann verschlüsselt
und das heißt ist es auch möglich wenn man
00:44:23.780 --> 00:44:28.710
der Lampe selbst das Internet abstellt die
lokal mit dem Handy zu steuern.
00:44:28.710 --> 00:44:36.330
Herald: Ok, Dankeschön. Ich würde sagen
drei Fragen machen wir noch.
00:44:36.330 --> 00:44:38.630
Michael: ja gerne.
Herald: Ok, dann hier vorne die 1 bitte.
00:44:38.630 --> 00:44:42.870
Mikro 1: Hast du dir angeschaut wie die
Sicherheit auf der Serverseite von diesem
00:44:42.870 --> 00:44:47.050
Cloud-Anbieter ist. Also ob man da was
machen kann, ob man in die Daten von
00:44:47.050 --> 00:44:52.130
Fremdgeräten kommt und ob man
potentiell über das MQTT mit fremden
00:44:52.130 --> 00:44:55.900
Devices sprechen kann.
Michael: Also ich hab mal probiert einen
00:44:55.900 --> 00:44:59.900
MQTT zu einem anderen Device zu schicken.
Das hat nicht funktioniert aber ich habe
00:44:59.900 --> 00:45:05.620
auch nicht weiter geschaut, also nicht so
genau und auch nicht probiert um
00:45:05.620 --> 00:45:09.440
irgendwelche Accounts zu kapern.
Mikro 1: Danke.
00:45:09.440 --> 00:45:14.040
Herald: Ok, wir haben dann ein bisschen
Zeit. Deswegen wir machen noch ein paar
00:45:14.040 --> 00:45:18.330
Fragen mehr wenn Dir das recht ist
Michael. Ok, dann würde ich jetzt den
00:45:18.330 --> 00:45:19.880
Signalengel nochmal einen leuchten
lassen.
00:45:19.880 --> 00:45:25.380
Signalengel: Die Frage was wäre in der
Praxis Update best practices für IOT-
00:45:25.380 --> 00:45:30.470
Devices? Wenn du Autoupdates machst bist
du angreifbar, wenn du keine Autoupdates
00:45:30.470 --> 00:45:34.660
machst bist du nie gepatched.
Michael: Ja also eigentlich ist das eine
00:45:34.660 --> 00:45:40.570
sehr schwere Frage weil man wirklich das
schlecht realisieren kann aber trotzdem
00:45:40.570 --> 00:45:45.070
denke ich dass es Möglichkeiten gibt wo
dann zum Beispiel das Update von der App
00:45:45.070 --> 00:45:50.011
kommt und die dann so ist dass der User
definitiv Kontrolle darüber hat und das
00:45:50.011 --> 00:45:55.410
auch mitbekommt. Natürlich ist es immer
eine Implementationsache und relativ
00:45:55.410 --> 00:46:00.520
schwierig Updates anzubieten für solche
Geräte.
00:46:00.520 --> 00:46:07.740
Herald: Ok, ich glaube Mikro 7 ist noch
jemand. Deine Frage bitte.
00:46:07.740 --> 00:46:09.920
Mikro 7: Es war die gleiche Frage.
Michael: Ja okay.
00:46:09.920 --> 00:46:14.110
Herald: Es war die gleiche Frage ok dann
Mikro 8.
00:46:14.110 --> 00:46:18.641
Michael: Ich glaub da vorne im Eck sind
noch ganz viele.
00:46:18.641 --> 00:46:19.760
Lachen
Herald: Hat jemand aufgegeben. Okay es
00:46:19.760 --> 00:46:23.040
blinkt noch, hab ich das richtig gesehen?
Michael: Ja, hier vorne.
00:46:23.040 --> 00:46:30.450
Herald: Ah ok, die 3 Bitteschön, danke.
Mikrofon 3: Thank you, so this cleartext
00:46:30.450 --> 00:46:37.690
local key of HTTP how often is it sent?
Only the first time or does it send more
00:46:37.690 --> 00:46:40.750
often?
Michael: This is basically only during the
00:46:40.750 --> 00:46:49.900
registration but there's more clear
messages. I mean HTTP in general is not
00:46:49.900 --> 00:46:57.590
encrypted when the cloud sends something
to the bulb. But the keys are only
00:46:57.590 --> 00:47:07.250
transmitted during activation.
Herald: Ok, vielen Dank. Wir haben da noch
00:47:07.250 --> 00:47:16.090
ein Licht. Deine Frage bitte noch.
Signalangel: Ist der Sprecher bereits
00:47:16.090 --> 00:47:26.464
einem sicheren IOT-Gegenstand begegnet?
Michael: Vielleicht aber nicht meines Wissens.
00:47:26.464 --> 00:47:34.621
Lachen & Applaus
00:47:34.621 --> 00:47:36.360
Herald: Mikro 3 Bitteschön.
00:47:36.360 --> 00:47:44.190
Mikro 3: Gibt es Anzeichen dass die Daten
der User verkauft werden? Und wenn nein
00:47:44.190 --> 00:47:48.780
wie leicht könnte man das rauskriegen?
Also ich denke an einen Talk den es hier Mal
00:47:48.780 --> 00:47:54.210
gab, der hieß build your own NSA. Da
hat ne Fakefirma die Daten versucht zu
00:47:54.210 --> 00:47:59.320
kaufen. Also das wär ja möglich.
Michael: Also alles was ich jetzt sagen
00:47:59.320 --> 00:48:03.930
würde wär Spekulation und das will ich
eigentlich nicht, aber es ist sehr
00:48:03.930 --> 00:48:08.610
auffällig wie viel Geld hinter den Firmen
steckt und wie viele Geräte sie verkaufen
00:48:08.610 --> 00:48:14.030
und irgendwie geht bei mir die Mathematik
nicht auf. Und es geht für mich um mehr
00:48:14.030 --> 00:48:18.040
Geld als man mit solchen Geräten verdienen
kann. Aber wie gesagt es ist alles
00:48:18.040 --> 00:48:21.930
Spekulation und dazu kann ich dann weiter
nichts sagen.
00:48:21.930 --> 00:48:24.140
Herald: Wär doch mal eine gute Idee für
einen neuen Talk.
00:48:24.140 --> 00:48:25.830
Michael: Ja.
Herald: Vielleicht mag das ja mal jemand
00:48:25.830 --> 00:48:28.900
eruieren. Eine Frage haben wir noch an der
7. Bitteschön.
00:48:28.900 --> 00:48:35.150
Mikro 7: Bin ich richtig in der Annahme
dass Zigbee-Geräte nicht betroffen sind?
00:48:35.150 --> 00:48:44.040
Michael: Das kommt drauf an ob der Zigbee-
Server der es dann ans Internet ankuppelt
00:48:44.040 --> 00:48:49.310
damit betroffen ist. Weil das gibt's
natürlich auch, also wenn die Bridge
00:48:49.310 --> 00:48:55.450
selbst diese Technologie z.B. benutzt dann
ist es das gleiche Spiel weil dann ist das
00:48:55.450 --> 00:49:01.250
Opfer nicht mehr die Glühbirne selbst
sondern die Bridge.
00:49:01.250 --> 00:49:06.120
Herald: Mmh. Mikro 1 haben wir noch eine
Frage. Bitteschön.
00:49:06.120 --> 00:49:09.681
Mikro 1: Ich hätte eine kleine Frage zu
dem smartconfig. Bei dem smartconfig ist
00:49:09.681 --> 00:49:14.010
es ja so das die Konfiguration über SSID
usw. zu dem IOT device geschickt wird.
00:49:14.010 --> 00:49:16.500
Michael: Ja.
Mikro 1: Inwiefern kann ich einfach in,
00:49:16.500 --> 00:49:22.100
sagen wir mal, einem großen Wohnblock
einfach selber ein Expressif-Gerät
00:49:22.100 --> 00:49:25.360
simulieren und die Informationen abgreifen
die das dann rumschickt.
00:49:25.360 --> 00:49:30.320
Michael: Man muss das gar nicht groß
simulieren weil das Protokoll ist ja auch
00:49:30.320 --> 00:49:37.700
sehr offen und im Endeffekt ist es sehr
einfach diese Aktivierungsprozesse
00:49:37.700 --> 00:49:42.660
mitzuhören und im Klartext auszugeben. Das
heißt man kann einfach die WLAN
00:49:42.660 --> 00:49:45.550
Zugangsdaten und auch den Token sehr sehr
einfach entschlüsseln.
00:49:45.550 --> 00:49:51.870
Herald: Ok, wir haben noch eine Frage aus
dem Internet. Bitte noch die Frage stellen
00:49:51.870 --> 00:49:54.180
Signalengel.
Signalengel: Entschuldigung, nein keine
00:49:54.180 --> 00:49:57.810
weitere Frage aus dem Internet.
Herald: Ok, dann würde ich sagen wir haben
00:49:57.810 --> 00:50:02.190
auf der 1 noch eine Frage und dann kann
man auch langsam Schluss machen. Deine
00:50:02.190 --> 00:50:04.940
Frage bitte.
Mikro 1: Es wurde ja gesagt das es auch
00:50:04.940 --> 00:50:10.030
deutsche Anbieter gibt die diesen Service
nutzen. Ist es denn überhaupt legal nach
00:50:10.030 --> 00:50:13.940
deutschem Datenschutzrecht, jetzt auf
diesem Recht auf das Löschen von Daten.
00:50:13.940 --> 00:50:18.210
Michael: Also ich bin kein Fachmann was
das angeht. Mein Kollege hat sich damit
00:50:18.210 --> 00:50:26.400
ein bisschen mehr beschäftigt im Laufe
des.. also als ich die ganzen Sachen
00:50:26.400 --> 00:50:31.960
analysiert habe und vielleicht kriege ich
ihn ja noch dazu ermuntert das er auch
00:50:31.960 --> 00:50:36.310
noch einen Talk darüber hält. Weil da
gibt's wirklich viele Sachen und ich
00:50:36.310 --> 00:50:40.250
glaube auch da kann man sehr sehr lange
und sehr viel drüber sprechen weil da sehr
00:50:40.250 --> 00:50:43.290
groteske Sachen auch mit den
Datenschutzbestimmungen stehen.
00:50:43.290 --> 00:50:48.440
Herald: Klingt nach einem interessanten
Follow up. Ok.
00:50:48.440 --> 00:50:50.500
Applaus
00:50:50.500 --> 00:50:51.607
Herald: Das ist Dein Applaus
00:50:51.607 --> 00:50:58.470
Applaus
00:50:58.470 --> 00:51:18.010
35c3 closing music plays
00:51:18.010 --> 00:51:22.000
Untertitel erstellt von c3subtitles.de
im Jahr 2020. Mach mit und hilf uns!