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!