35C3 Preroll Music Herald: So, der nächste Talk heißt "Smart Home - Smart Hacks" und ich weiß nicht wie es euch geht, ich hab immer so ein bisschen Probleme und hab mir noch gar nichts installiert zu Hause, obwohl es mich jedes Mal in den Fingern kribbelt. Ich würd's mir so gern kaufen, es gibt so tollen Kram. Aber ich traue mich nicht und deswegen habe ich mich sehr gefreut, dass ich diesen Talk heute announcen darf. Danach weiß ich dann Bescheid. Also, hier ist Michael Steigerwald und ich bitte euch um einen großen Applaus. Vielen Dank. Applaus Michael Steigerwald: Hallo. Heute geht's um die Glühbirne. Naja eigentlich nicht nur um die Glühbirne, sondern es geht um fast alle Smart Home Geräte die man sich vorstellen kann, weil eigentlich in fast allem das Gleiche drin steckt. Und warum habe ich mir gerade die Glühbirne ausgesucht? Das ist ganz einfach, die Glühbirne ist so der einfachste Gegenstand den man sich vorstellen kann, das ist einfach ein Verbrauchsmaterial. Früher war es einfach nur ne Glühbirne, heute muss alles smart sein und überall muss Internet drin sein und Cloud. Und wenn das sogar schon in der Glühbirne drin ist, können wir uns überlegen, wo das sonst noch überall drin ist. Jeder hat Angst vor Geräten mit Kamera und Mikrofon. Warum man aber vielleicht auch mal schauen muss welche Gefahren in so einer Glühbirne stecken,das erfahren wir heute in meinem Vortrag. Weiter geht es darum, dass es viele IT-Cloud-Anbieter gibt, wo man ganz einfach jegliches Gerät in die Cloud bringen kann und dazu gar kein know-how braucht und so einen Anbieter, den habe ich mir ein bisschen genauer angeschaut. Und mal geschaut, wie sicher das ist und dann auch ein proof of concept verschiedener Angriffszenarien gemacht und werde euch noch sagen, welche Konsequenzen das für den User hat. Genau. In der Presse liest man ständig irgendwelche Sachen über Smart Home und über die Gefahren, was da alles passieren kann und so weiter und selbst die Bundesnetzagentur hat vor Weihnachten gewarnt vor smarten Weihnachtsgeschenken. Besonders vor Kameras und Geräten mit Mikrofonen drin. Und weil eben Weihnachten war hab ich gedacht, ich habe auch noch eine smarte Glühbirne die ich jetzt einfach mal irgendjemandem hier vorne schenken möchte. Bitteschön. Sehr gut gefangen. Applaus Zu meiner Person: Mein Name ist Michael Steigerwald. Ich bin Hard- und Softwareentwickler. Besonders bin ich tätig im Bereich Security Research und habe Mitte des Jahres ein Startup gegründet die VTRUST GmbH, bei der wir uns auch um IT-Sicherheit kümmern. Die Motivation zu meinem Vortrag war so, dass ein Kunde auf uns zukam, der sein smartes Gerät an die Cloud anbinden wollte und gesagt hat: Das ist nicht unsere Expertise. Wir kennen uns mit unserem Produkt aus, aber nicht mit der Cloud und nicht mit der Sicherheit, die damit verbunden ist und hat gefragt, ob wir denen helfen können das in die Cloud anzubinden. Und wie man das natürlich immer so macht, man schaut sich mal um. Was gibt's so? Gibt es schon fertige Lösungen? Gibt's irgendwas im Markt was man dafür benutzen kann? Und da bin ich auf einen Anbieter gestoßen der ganz tolle, ja, der über 11.000 verschiedene Produkte schon in die Cloud gebracht hat. Mit über 10 000 Herstellern und das in 200 Ländern und mit über 20 Milliarden Requests am Tag. Die Versprechen dieses Herstellers sind auch sehr groß, also er spricht von rapid development und dass man schon in sechs Stunden eine Demo haben kann und die Massenproduktion auch schon nach 15 Tagen starten kann. Das hört sich sehr wenig an, aber tatsächlich habe ich mir das ein bisschen angeguckt und ist es auch wirklich so. Man kann sehr schnell seine Geräte mit der Technik ins Internet bringen. Und was mir noch sehr gefallen hat natürlich, war, dass sie Military- Grade security versprechen und dazu kommen wir später nochmal. So, der erste Schritt ist, man meldet sich an. Das geht in fünf Minuten und danach kann man schon anfangen und kann seine Geräte anlegen oder aus einem großen Portfolio auswählen. Eine OEM App zu installieren ist auch ganz einfach. Man kann einfach die vorhandene App mit seinen Logos personalisieren und seinen Farben und hat die dann innerhalb kürzester Zeit im Internet und in den Play Stores und Apple Store. Das war vor einem halben Jahr noch kostenlos. Jetzt kostet es 1.500 Dollar oder so in dem Preisrahmen, aber für das Geld kann man definitiv keine App programmieren. Wenn man das gemacht hat, kann man einfach fertige Module bestellen und oder auch direkt fertige Geräte. Also zum Beispiel auch diese Glühbirnen kann man direkt bestellen, sein eigenes Label drauf drucken und ist danach IoT-Anbieter. Genau. So. Jetzt hab ich bei dem Durchklicken in diesem Webformular aber auch eine Seite gefunden, die mich ein bisschen stutzig gemacht hat. Zwar gab's Firmware-updates und da gab es die Punkte Silent Upgrade und Forced Upgrade. Wo ich gedacht habe, okay, ja, wie macht man ein upgrade an einer Glühbirne? Generell geht es vielleicht über die App oder sowas, aber was da wirklich in der Glühbirne passiert, das weiß ja niemand. Und ich hatte mir zwar schon 20 Module zum Spielen bestellt, aber bis die aus Fernost geliefert werden, dachte ich mir, ich nehme einfach mal einen großen Versandanbieter, die liefern am Folgetag und hab mir mal verschiedene Glühbirnen und auch smarte Steckdosen bestellt. Genau. Dann: Wie funktioniert das? Das ist ganz einfach. Man registriert die Glühbirne mit seinem Handy. Das geht ganz schnell. Man bringt ihn in den Einrichtungsmodus und danach wird die Konfiguration übertragen und die Glühbirne verbindet sich dann selbst mit der Cloud des Herstellers über HTTP und MQTT. Und schon kann man sie aus- und anschalten. Weil jetzt immer wieder MQTT fällt und das vielleicht nicht jedem ein Begriff ist: MQTT ist ein Message Queuing Telemetry Transport Protocol. Das ist eigentlich, wird es in jedem IoT-Gerät verwendet. Das ist einfach ein Protokoll, wie man eine Lampe, die irgendwo im privaten Netzwerk ist von außen auch steuern kann. Das heißt, die Lampe selbst verbindet sich mit dem MQTT-Broker und kann danach, ja, Daten an Geräte pushen wie den Zustand oder kann auch darüber geschaltet werden. So, jetzt war der erste Punkt: Was steckt denn da überhaupt drin? Ich habe mal ein paar verschiedene aufgemacht. Eigentlich hab ich immer so ein ESP8266 gefunden. Der wird den meisten hier bekannt sein. Das ist ein sehr, sehr günstiger 32-Bit Prozessor mit einem WLAN integriert und es war 1 MB Flash drin und der ist auch sehr, sehr einfach auslesbar. Das heißt, ich habe einfach die fünf Lötstellen, also fünf Lötpunkte, gesetzt und hab den mal an einen seriellen Port gehängt. Und dann kann man das mit dem esp tool einfach auslesen und hat ein Binary, ja, die Firmware. Was sehr wichtig ist, ist, dass man da aufpasst, dass die Produzenten aus Fernost es nicht immer so mit der Bezeichnung halten. Das heißt, es kann auch mal auf dem DC-Ground eine Phase sein und das musste ich auch schmerzlich mal feststellen. Also ganz wichtig: Achtung, 230 Volt. So. Das Flash hab ich jetzt ausgelesen. Generell ist es so, das hat verschiedene Partitionen, erst einmal ein Bootloader, der an Stelle 0 sitzt. Und dann gibt's zweimal zwei user Partitions, in denen die Firmware sitzt. Das liegt daran, dass es eine Upgrade-Funktionalität gibt und wenn dann z.B. user 1 gebootet ist, kann user 2 überschrieben werden und umgedreht und dann gibt es noch eine Konfigurationspartition, bei der, ja, die Konfiguration erhalten bleibt, auch bei einem Upgrade. Und was mir dann aufgefallen ist, ist, dass mein WLAN-SSID und mein Passwort unverschlüsselt in der Konfigurationspartition abgelegt sind. So viel nochmal zum Thema Military-Grade security. Man kann auch denken: Ja, was ist jetzt da so schlimm daran? Aber ich kenne Leute, die benutzen solche Glühbirnen in ihrem Garten zu Hause. Da kann der Nachbar einfach mal die Glühbirne holen und weiß danach die WLAN Passwörter. Und es gibt noch mehrere Anwendungsfälle wo das eigentlich nicht so sein sollte und es gibt eigentlich überhaupt keinen Grund sowas unverschlüsselt im Flash abzulegen. Des Weiteren habe ich noch diverse Keys gefunden und Schlüssel. Also einmal zum Beispiel ist die Seriennummer die drin liegt, die bildet sich auch aus der MAC- Adresse und noch ein Prefix, dann gibts den AUZ-Key, das ist ein Schlüssel der verwendet wird, dass der Hersteller weiß oder der Cloud-Anbieter weiß, dass es auch ein wirkliches Modul von ihm ist. Und dann gibts noch eine Product ID. Diese Product ID wird generiert beim Anlegen des Produkts in der Cloud. Das heißt, vorhin hab ich diese Oberfläche gezeigt, wo man einfach Produkte anlegen kann. Und wenn ich die anlege, wird diese Produkt ID generiert und die wird danach vom Hersteller in das Modul rein programmiert. Es gibt auch noch einen local Key und einen sec Key, also der wurde auch genau so genannt in dem Jason-File im Flash. Die sind für die Verschlüsselung und Signierung von der Kommunikation zuständig. Da ich jetzt ja eigentlich nur gekaufte Produkte von einem Fremdanbieter hatte, hab ich mir überlegt: Wie kann ich das denn kapern? Und das Einzigste was mir eingefallen ist, das Erste war, ich schreib doch mal ins Flash an der Stelle wo die Product ID steht, meine Product ID rein und danach musste man noch die Checksumme korrigieren - das geht auch mit dem esp tool, oder die standard esp- Checksumme - und hab's zurück geflasht in die Glühbirne und siehe da: Die gekaufte Glühbirne war in meinem Account. Jetzt hat es mich doch sehr verwundert, dass ich direkt gesehen habe, dass... ach ja genau: auch nochmal soviel zum Thema Military- Grade security. Aber mich hat sehr verwundert, warum da die E-Mail-Adresse, die ich zum Registrieren benutzt habe mit drinsteht in der Sache. Und dann habe ich gesehen, dass wenn man auf die Details geht, gibt's noch viel mehr Informationen. Also es steht die binding E-Mail-Adresse drin mit den Seriennummern und so weiter. Wobei das auch sehr oft eine Handynummer ist, wenn man sich mit dem Handy registriert hat. Oder es stehen zum Beispiel auch die Koordinaten drin und wo man sich befindet. Jetzt weiß ich nicht, warum der Hersteller oder der Reseller von meiner Glühbirne wissen muss, wo die eingesetzt wird. Aber dafür gibts wahrscheinlich auch Gründe. Die Anschalt- und Ausschaltvorgänge: weiß auch jeder wann wer zuhause ist und schaltet. Das bekommt auch jeder raus. Und standardmäßig bekommt man nur 7 Tage Logs seiner Kunden. Wenn man aber mehr will, muss man einfach nur fragen. Dann gibt es noch schöne Auswertungen, wo man sieht, wie viele Kunden wann welche Geräte aktiviert haben, dass man einfach den Markt besser nutzen kann. Für mich war das ein bisschen komisch und meine Kundennachfrage war eigentlich auch so, dass es gerade darum ging, den Kunden und seine Daten zu schützen. Und weil ich überhaupt keine Ahnung habe, wer auf die Daten alles zugreifen kann, habe ich doch einfach mal an den Hersteller eine E-Mail geschrieben und hab gefragt, ob man deren Technik auch benutzen kann, ohne dass die Daten an die Cloud geschickt werden. Weil, wie gesagt, auch für meinen Kunden nicht gut ist, wenn die Koordinaten seiner Kunden in der Cloud gespeichert werden. Die Antwort war: Nein. Also es ist nicht möglich diese ... Ja ...IoT-Geräte ohne die Cloud, nein ohne die Daten zu betreiben. Und sie haben mir aber versichert, sie beschützten die Daten "sehr gut". Und was sie auch noch gemacht haben in diesem Kontext war: sie haben mir direkt noch ein Dokument mitgeschickt, das mir zeigt, wie ich die Nutzerdaten besser für mich ausnutzen kann. Vom Prinzip ist es so, dass in den Apps immer Datenschutzrichtlinien drin sind, die sind aber sehr, sehr ... erstens mal lang und auch verwirrend. Und wenn ich jetzt da drüber sprechen würde, bräuchte ich noch eine Stunde länger. Das heißt, da könnten wir nochmal einen kompletten anderen Talk draus machen und da will ich jetzt nicht weiter darauf eingehen. Das Bundesministerium für Sicherheit hat einen Lagebericht zur IT-Sicherheit 2018 rausgebracht und hat dann das in verschiedene Gefährdungslagen aufgeteilt. Erstens: die Gefährdungslage, wo der User der IoT-Geräte das Ziel ist und den Schaden hat. Und da gibt es Punkte wie die Manipulation von Daten, das Ausspähen von Daten, Sabotage und IoT-Geräte als Hintertür. Und als zweite Gefährdungslage hat er die Gefährdungslage genannt, bei der andere Personen dadurch zu Schaden kommen können, wie zum Beispiel der Aufbau von Bot-Netzwerken, Identitäts- Verschleierung, Crypto-Mining, Klick- Betrug bei Werbebannern und so weiter. Und ich muss sagen, das sind die Gefährdungslagen die das BSI genannt hat, die sind alle mit der Glühbirne machbar. Crypto-Mining ist zwar ein bisschen schlecht, weil die Performance nicht ausreichend ist aber theoretisch würde das auch funktionieren. Jetzt habe ich mal mir überlegt, was könnte denn ein mögliches Angriffs-Szenario sein beim Benutzen einer Glühbirne. Und generell ist es ja so, dass die Glühbirne als Netzwerk-Teilnehmer auf das komplette, lokale Netzwerk zugreifen kann und auch ganz oft auf Urlaubsbilder und so weiter oder auch irgendwelche anderen Daten durch ARP-Spoofing und so weiter abgreifen könnte und dann einfach zu einem Server nach außen schicken kann. Und das hab ich auch dann gemacht. Also vom Prinzip die erste Idee war: Ich hab mir einfach mal die WLAN Daten selbst rausgeschickt und hab das mit reingemacht und das funktioniert ohne Probleme. So, ganz kurz zwischendurch: Jeder kann Hersteller und Reseller werden. Also es geht wirklich innerhalb von fünf Minuten oder man kann auch irgendwelche Geräte kaufen, kann die mit der eigenen Produkt- ID verbinden und dann hat man sie in der eigenen Cloud, um auf die Daten komplett zugreifen zu können. Und danach kann wirklich der Cloud-Anbieter selbst kann auf die Daten zugreifen, der Hersteller und auch die Lieferanten, wenn die das wollen Die haben alle auch Zugriff auf die Firmware. Man kann die Firmware auch während des Betriebes ändern und ganz schlimm natürlich ist, dass dann auf alle User-Daten zugreifen kann. Und das Datensammeln ist wirklich in einem extrem hohen Ausmaß: also mit Koordinaten und so weiter; das muss eigentlich bei der Glühbirne alles gar nicht sein. Das Datensammeln kann nicht abgestellt werden, wurde mir ja gesagt, weil es, ja, nicht möglich ist. Und ja auch ein großer Punkt. Das heißt: Eigentlich kann man als deutscher Hersteller solche Anbieter überhaupt nicht verwenden. Das Inverkehrbringen von solchen Geräten ist auch sehr einfach: Man kann die ganz einfach verkaufen: Man kann sich viele kaufen und die Retouren zurückgehen lassen. Man kann ... im Gebrauchtmarkt muss man sehr aufpassen ,weil man nie weiß was drin ist. Und der junge Herr zum Beispiel hat von mir eine geschenkt bekommen. Das ist natürlich noch eine andere Möglichkeit auch, solche Geräte in den Verkehr zu bringen. Jetzt war eigentlich für mich die Arbeit beendet, weil meinem Kunden konnte ich natürlich nicht mehr helfen oder nicht sagen, okay wir nehmen einen tollen Military-Grade Anbieter aus Fernost, sondern wir müssen was Eigenes machen. Trotzdem hatte ich eine eigene, neue Motivation. Und zwar erstens mal, ist es denn möglich, diese ganzen Geräte, wie sie alle hier sind, auch ohne die Cloud zu betreiben. Und zweitens wollte ich natürlich auch noch mal den wirklichen Proof of Concept von dem Trojaner haben. Und das heißt es ging jetzt für mich nochmal eine Runde weiter. So, dafür habe ich mir ein kleines Testsetup aufgebaut. Ich habe einfach einen Raspberry Pi mit einem Kali Linux benutzt und da einen Software-Access Point laufen lassen, einen hostapd. Dann brauchte ich meine eigenen DNS-Server, um auch Anfragen umleiten zu können. Hab den eigenen HTTP-Server gebraucht, Und den MQTT-Broker und zum Analysieren habe ich Wireshark benutzt und man-in-the-middle-Attacken mit bettercap gemacht. Ja, dann ging es erst einmal zur Netzwerkanalyse, Ich habe mir erst einmal angeguckt, was geht denn da rein und raus auf der Netzwerk Seite. Es ist ganz einfach. Es gibt eigentlich drei Sachen: Es gibt DNS-Requests. Es gibt HTTP Anfragen. Die sind eigentlich meistens unverschlüsselt bzw. auch die wichtigen Sachen, die zum Beispiel Schlüssel enthalten, sind dann unverschlüsselt. Und MQTT ist auch vorhanden und verschlüsselt. Aber es wird auch, wenn in der Lampe selbst https und die MQTTs implementiert sind, einfach nicht benutzt. Und das ist wieder "sehr sicher". Wie gesagt, in dem Feld. man sieht es hier nicht, aber da ist auch der local Key in clear drin, in der Anfrage. Und dann habe ich eine kleine Crypto Analyse gemacht, um auch zu sehen was sonst noch so alles in den verschlüsselten Nachrichten drin steckt und dadurch dass der ESP verwendet wird und diesen Tensilica XTENSA Core hat, ist das Disassemblieren sehr mühselig von dem Binary, weil es eben keine guten Plugins gibt und auch keine guten Disassembler. Und dann hab ich mich mal ein bisschen umgeschaut. Und es gibt von dem Cloud- Anbieter eine sehr gute API Dokumentation, die zwar auch sehr viele Fehler hat, aber da drin sind auch sehr wichtige Teile wie Verschlüsselungen teilweise dokumentiert. Und es gibt noch ein SDK das habe ich angefragt aber bevor ich es geschickt bekommen habe, habe ich es auch im Internet gefunden, ist eigentlich auch öffentlich zugänglich und mit dem SDK waren pre- compiled Libraries drin, die ich dann auch analysieren konnte und wenn ich meine eigene Firmware damit kompiliert habe, hatte ich ein Sample Output und brauchte kein wirkliches Disassembling. Das Ergebnis der Crypto-Analyse war, dass ich dann in einem kleinen 60 Zeilen Skript ja alle verwendeten Verschlüsselungen drin hatte und es wird eigentlich nur ein AES-128 verwendet mit dem Local Key und die MD5 Check-Summe teilweise über gewisse Teile davon gebildet, auch als Sicherheit und signiert werden die Daten auch mit einem MD5. So, dann hab ich erst mal geguckt wie funktioniert denn so eine Registrierung. Also die Registrierung selbst einer Lampe an der Cloud funktioniert so, dass die Mobile-App einen Token anfragt an der Cloud, schickt den über Morse Protokoll namens SmartConfig mit den Wifi-Credentials zur Lampe, die meldet sich im WLAN an und schickt dann den Token zurück an die Cloud und bekommt die MQTT-Login Daten und fragt nach der Activation. Das ist eine HTTP-Anfrage auch, bei der dann der Local Key und der Security Key in clear zurückkommen. Der Local Key geht auch zur App und danach kann sich die Lampe anmelden an der Cloud und kommuniziert weiterhin mit der Cloud und kann verwendet werden. Was mich viel mehr interessiert hat war das Upgrade weil ich ja eigentlich meine eigene Firma reinbringen wollte und dazu hatte ich eine Lampe, die hat eine neue Firmware, ein Firmware-Upgrade gehabt und das funktioniert im Endeffekt so, auf dem Handy wird gefragt, ob das Upgrade durchgeführt werden soll. Dann wird ein Trigger ausgelöst und der Trigger wird an die Lampe gesendet und die Lampe fragt über HTTP, wo gibt's die neue Firmware und welche Version hat die, und so weiter. Dann lädt sich die Lampe einfach von einem HTTP-Server das Binary und installiert es in die nicht genutzte User Partition. Für mich war es ganz einfach, ich habe mir als allererstes mal einen eigenen MQTT-Server genommen und hab dann versucht das Trigger selbst zu generieren. Und danach habe ich mit einer Man-in-the-Middle Attack den HTTP Request verändert und hab der Glühbirne eben gesagt, dass sie von meinem eigenen Server die Firmware laden soll. Funktionieren tut das ganz einfach so, der eigene MQTT-Server wird benutzt. Dafür musste ich einfach den DNS-Server umbiegen, dass eben nicht mehr auf den MQTT-Server des Cloud Anbieters geschaut wird sondern auf meinen Lokalen. Man sieht dass sich die Lampe anmeldet und irgendwelche Nachrichten ausgetauscht werden. Das Nächste war eigentlich so das kniffligste. Das war der Upgrade-Trigger, den hab ich erst mal analysiert, der kommt tatsächlich verschlüsselt und wurde dann entschlüsselt mit einem Local Key und dann hat man darin gesehen dass das Protokoll 15 quasi das Upgrade triggert und man kann sich dann einfach mit meinen Skripts die Trigger generieren. Beim Timestamp der verwendet wird ist es auch so, dass es die Lampe sehr sehr gnädig ist. Der kann auch gerne mal ein bisschen älter sein oder man kann das auch öfter verwenden. Das funktioniert dann auch immer wieder und so konnte man einfach über den Moskito Befehl das Upgrade triggern. Ja, ich habe dann noch ein bisschen automatisiert, dass alles mit einem Klick passiert quasi, das hab ich auch eigentlich gemacht für euch alle, weil ich es dann später alles veröffentlichen werde. Applaus Punkt war das Ändern der Upgrade-Quelle; hierzu habe ich ein fertiges Tool benutzt das heißt bettercap; damit kann man HTTP- Requests einfach in Realtime ändern. Und da ich ja eh Kali Linux als Access Point benutzt habe, konnte ich auch relativ gut dran und habe quasi dann in die URL und in den MD5 einfach die Daten meiner neuen Firmware geschrieben. Und das geht auch mit ein paar kleinen Skripts. Das heißt, man gibt an, dass er irgendwelche fertigen Strings in den HTTP-Replies sucht und dann einfach ersetzt und danach ging es eigentlich nur noch darum einen eigenen HTTP-Server zu installieren und die Lampe hat nach dem Upgrade Trigger das Binary von meinem Server gezogen. Ja, jetzt geht's noch zum Thema eigene Firmware. Ich habe euch ja schon gesagt - ach genau - die hab ich ja schon erwähnt, dass ich da verschiedene Versionen machen wollte unter anderem die eine die eigentlich nur das WLAN Passwort mal raus pusht. Und dann hab ich die einfach mal eingespielt. Generell ist es so, ich hab jetzt hier verschiedene Terminal Windows auf, das kann man natürlich noch alles vereinfachen, ganz oben in der ersten Zeile sehen wir den Access Point, dann den Moskito Server auf der anderen Seite, hab ich ein HTTP-Server gestartet auf dem mein Binary liegt und ein Script, das mir alle Kommandos in Realtime entschlüsselt. Dann gibt's noch das bettercap, das eben die Anfragen verändert und unten rechts sehen wir ein Terminal, in dem wir eigentlich nur die die seriellen Ausgaben der Lampe sieht und die hab ich jetzt gestartet und danach sende ich mit dem letzten Befehl unten noch einfach mal den Trigger Request. Und dann sollte man sehen wie die, ja genau jetzt kommt der Request und jetzt kommen überall Anfragen und die Lampe bootet neu und es ist eine neue Firmware drauf, also geht ganz schnell. Genau so jetzt ging es um die Firmware, die draufgeht. Ich habe euch gesagt, ich wollte ein Proof-of- Concept machen von einem Trojaner. Was macht der Trojaner? Ganz einfach, der verbindet sich zu meinem eigenen Server der irgendwo extern im Internet steht, schickt die WLAN Credentials und öffnet noch einen Reverse Tunnel über den ich dann zurück in das lokale Netzwerk gehe. Der agiert bei mir in meiner Implementation einfach als HTTP oder Socks Proxy, d.h. man kann einfach irgendeinen Browser nehmen, gibt die von meinem externen Server die IP-Adresse ein und den Port und ist dann im lokalen Netzwerk des Lampenbetreibers. Das Ganze war mir noch sehr wichtig, dass es transparent ist, d.h. der Nutzer der Lampe bekommt das überhaupt nicht mit und die ganz normale Lampenfunktion ist noch genauso gegeben wie vorher. Hier habe ich auch eine kleine Demo davon. Oben habe ich wieder das Terminal der Lampe selbst; dann hab ich mal auf meinem Server selbst einen Proxy Forwarder, ist auch ein kleines Python Script, und unten hab ich irgendwo im Internet dann einen Rechner, das sehen wir jetzt gleich. Dann hab ich einfach mal eine IP-Abfrage gemacht. Genau. Jetzt verbindet sich die Lampe zu meinem Server und ich mache unten eine Abfrage der IP, dass ist also die externe IP, ist in dem Fall 213 irgendwas; jetzt mache ich das Gleiche mit dem Proxy, genau da habe ich jetzt einfach meinen eigenen Proxy noch mit reingesetzt und sehe auf einmal dass bei der Lampe selbst die Anfrage kommt und auf einmal die lokale IP der Lampe gesendet wird, und dann wollte ich noch zum Test mal im internen Netzwerk was zugreifen und habe jetzt einfach mal auf fritz.box eine Abfrage gestellt und konnte somit sehen dass in dem Netzwerk auch eine Fritzbox drin ist. Also das heißt, man kann mit dem Proxy nicht nur den Internet Account des Opfers benutzen für Bot-Netze und so weiter, oder für alles andere, sondern man kann sich ja auch im lokalen Netzwerk ganz einfach bewegen. Applaus Die große Frage ist: Warum ist es so gefährlich? Es ist eigentlich so, man weiß nie was in so einem Gerät drin steckt und gerade auch dieser Button "Silent Upgrade" hat mich sehr verwundern lassen und in meinem Fall war es noch nicht einmal so, dass dass zum Upgraden der Firmware der Lampe irgendeine Bestätigung vom User kommen musste oder so weiter. Das heißt man, man bekommt es nicht mit und man kann einfach Trojaner in irgendwelche Lampen rein flashen und das halt auch im ganz großen Bereich. Das heißt, wenn ich jetzt 20 000 Lampen verkauft hab, dann kann ich einfach mich durch meine Web-Applikationen klicken, lade das neue Binary mit dem Trojaner hoch und gestern war es noch eine sichere Lampe und morgen ist es einfach der Trojaner und der Nutzer selbst bekommt es einfach überhaupt nicht mit. Und, ja, wie gesagt, ich habe das Flashen selbst gemacht durch, durch Löten am Anfang, es geht aber auch mit der ganz normalen Man- in-the-Middle-Attack, oder der Cloud Provider kann das einfach mit seinen ganz normalen Tools jederzeit durchführen. Was auch noch ein Thema war für mich, war eben: Kann ich das Ding auch ohne Cloud betreiben? Wenn ich jetzt so eine Lampe zuhause hab, dann hab ich gedacht, Ok, es gibt verschiedene Open Source Software die auch sehr viele tolle Funktionen haben sogar danach noch mehr können und so weiter und der normale Workflow, das zu flashen ist einfach dass man wirklich die Lampe aufbricht und dann die Kontakte anlötet und so weiter und da hört bei den meisten Leuten auf. Jetzt können wir aber auch mit der Methode wie ich sie gezeigt habe natürlich auch eine andere Firmware in die Lampe flashen um sie eben ohne die Cloud betreiben zu können. Und wie gesagt,ich werde es dann auch veröffentlichen da kann dann jeder damit machen was er möchte. Ja, zum Fazit. Das Sicherheitslevel von diesen Geräten ist tatsächlich minimal. Also es ist wirklich so, dass alles was ich probiert habe hat direkt funktioniert. Es gab keinerlei Verschlüsselung von Daten die in dem Gerät selbst abgelegt werden. Die Firmware war weder signiert noch die Updates waren signiert. Also ich kann direkt Änderungen direkt daran machen. Die Datenspeicherung ist unverschlüsselt und die Datenübertragung war auch eigentlich in den kritischsten Fällen unverschlüsselt. Und da war, wo sie verschlüsselt war es ja keine Hürde. Das viel Erschreckendere jedoch ist das große Datensammeln. Für mich ist es völlig unklar warum der Hersteller und der Reseller oder wer auch immer Zugriff auf den Account hat, wissen muss wo genau diese Lampe sich befindet und das war wirklich so, dass die GPS-Koordinaten die waren über das Handy ermittelt, bei der Registrierung. Aber die waren sehr genau und ich habe quasi den Schreibtisch an dem ich gesessen habe quasi in den Koordinaten wiedergefunden und da sehe ich keinen Grund dafür. Und es ist natürlich auch erschreckend wer alles darauf Zugriff hat. Die Datenweitergabe und -Speicherung ist auch äußerst undurchsichtig. Also es wird zwar teilweise gesagt, dass die Daten mit auch in Deutschland gehostet werden aber auch jederzeit nach Fernost übertragen werden können. Und wer wirklich darauf Zugriff hat, das weiß natürlich keiner und ist auch nicht bekannt. Und. Ja. Das große Problem für mich ist, dass es die einfachsten Verbrauchsgegenstände, weil eine Glühbirne ist ja wirklich eigentlich nur dazu da ein bisschen Licht zu machen, und für mich vergleichbar zu Klopapier ein einfacher Verbrauchsgegenstand. Und jetzt wird nach und nach alles Smart und wenn selbst so kleine Geräte, die so normal für uns alle sind, weil jeder hat eine Glühbirne zuhause, auf einmal smart sein müssen dann bringt man natürlich auch viele Gefahren mit in seinen eigenen Haushalt. Und den meisten Leuten ist es einfach nicht bewusst weil sie denken: Ok. Wenn jemand die Glühbirne hackt, was will er machen? Das Licht an-ausschalten? Aber die tatsächliche Konsequenz ist natürlich ganz anders, dass auf einmal das komplette lokale Netzwerk von außen offen ist und auch auf private Daten und so weiter zu zugegriffen werden kann. Das einzig Positive jedoch aus dem, aus meinen Erkenntnissen ist eben, dass man die Hersteller-Cloud doch recht gut abschalten kann. Das zeigt aber auch wieder, dass es eigentlich überhaupt nicht notwendig ist, weil man kann die Lampe mit den anderen Firrmwaren noch viel besser benutzen und so weiter, ohne dass eben diese Daten gespeichert werden. Und eigentlich ist es von meiner Seite ein Appell an die IoT- Hersteller eben, dass diese gute Technik und schöne Technik und bequeme Technik den Usern bereitzustellen ohne diese ganzen Daten zu sammeln. Und wenn der Anbieter zu mir sagt: "it is avoidless", auf die Frage ob die Daten denn nicht gespeichert werden können, ist es tatsächlich eine Lüge und auch nicht, ja, notwendig. Ja. Ich habe schon angekündigt, ich werde noch weitere Infos auf der, auf unserer Website zum Download bereit geben. Unter anderem halt auch Skripte mit denen man dann andere Firmware auf solche Geräte flashen kann und bin leider noch nicht dazu gekommen das alles fertig zu machen aber das wird in Kürze folgen. Ja, jetzt sind wir beim Fragenteil angekommen und ich glaube jetzt kommt jemand auch auf die Bühne zum Fragen. Applaus Herald: Ja, vielen lieben Dank Micha. Ich bin immer noch beunruhigt und fühle mich überhaupt nicht Military-Grade-Irgendwas. Frage an den jungen Mann oder den jungen Besucher der vorhin die Lampe bekommen hat. Willst du sie noch behalten? Bist du sicher? Okay, gut. Haben wir denn Fragen? Geht schon los. Fangen wir da an. Mikro 2 bitte. Mikro 2: Ist MQTT jetzt verschlüsselt, oder nicht ? Ich habe es nicht ganz verstanden. Michael: MQTT ist verschlüsselt. Ist mit AES verschlüsselt und mit dem Local-Key, den man über den HTTP Befehl in Klartext angezeigt bekommt. Gelächter Herald: Dankeschön. Wir machen gleich bei Dir weiter. Ihr mommt dann als nächster. Deine Frage bitte. Mikrofon: Wie lösen die alternativen Firmwares [unverständlich] Problem von dem Klartextpassword fürs WLAN? Michael: Um ehrlich zu sein habe ich da nicht weiter geschaut. Ich habe nur.. Dadurch dass es Open-Source ist kann natürlich jeder da reinprogrammieren was er möchte und hat da volle Kontrolle. Und ob das jetzt in Klar abgespeichert wird oder nicht kann ich jetzt nicht direkt sagen. Herald: Okay, vielen Dank. So, nächste Frage, Mikro 1 bitte. Mikro 1: Wenn die Lampen so populär sind könnte man nicht eine Stiftung haben die zehn Millionen Lampen verkauft auf denen wir dann zehn Millionen Tor-Exit-Nodes laufen lassen? Gelächter & Applaus Michael: Das ist natürlich eine sehr interessante Idee und man kann da noch viel mehr damit machen. Theoretisch könnte man auch sagen, man macht nur einen Katalog aus verschiedenen Firmwaren die für verschiedene Modelle eben funktionieren und macht da eben solche Sachen mit rein. Und dann könnte man das sehr gut betreiben wobei aber die ja die Power oder die CPU Power doch sehr limitiert ist. Herald: Ok, Ich denke mal wir nehmen jetzt die nächste Frage Mikro 1 nochmal. Mikro 1: Du hattest am Anfang des Vortrags gesagt, das ist ein sehr bekannter und namhafter Hersteller, was allein die Cloud-Plattform und die Dashboards hergegeben haben. Kannst du uns vielleicht ein bisschen mehr dazu sagen welche Produkte der Hersteller noch herstellt und verkauft außer von Glühbirnen. Michael: Also es gibt wirklich alles. Es ist nicht ein Hersteller das ist eben genau das Schlimme daran deswegen kann man ja auch nicht einfach so nennen das sind 10000 verschiedene Hersteller die eben genau diese Technologie einfach einsetzen und die sind wirklich weltweit überall das heißt es gibt deutsche Hersteller, die diese Technologie benutzen und man denkt man kauft ein deutsches Produkt. Tatsächlich steckt aber das drin. Und Produkte gibts auch alles. Ich habe von Küchengeräten, Kühlschränke und so weiter. Der Hersteller nennt 30 verschiedene Kategorien. Es ist tatsächlich fast überall drin. Für mich war die Glühbirne das einfachste und auch diese elektrischen Steckdosen weil sie einfach sehr populär sind und überall eingesetzt werden. Herald: Ich würde jetzt gern mit Mikro Nummer 3 weitermachen da stehen nämlich auch schon zwei Leute. Ihre Frage bitte. Mikro 3: Die Frage ist ob ihr auch die Shelleys angeguckt hat. Haben ja diese Jumperkabelansteckmöglichkeit aber die haben auch die Cloud ausgeschaltet. Weißt Du da was zu? Michael: Nee, das weiß ich nicht aber ich weiß auch nicht ob die von Haus aus diese Cloud benutzen. Hab ich nicht gemacht. Ich glaube dass es einfach nur eine Open- Source Hardware ist auf der jetzt nichts von dem Anbieter selbst läuft. Herald: Ok danke, dann nehmen wir das nächste Mikro Nr. 2 bitte. Mikro 2: Ich bin kein Programmierer, meine Nächte werden deswegen aber auch nicht besser und deswegen meine Frage einmal raus in die Welt an die Bildschirme, welchen Tipp gibst du? Nicht im fernen Osten kaufen? Nur Markenware? Michael: Es ist natürlich relativ schwierig was zu nennen weil man weiß natürlich nie was drin steckt und wie ich gesagt habe es gibt auch deutsche Hersteller die das benutzen. Ich hab mir die Konkurrenzprodukte noch nicht angeschaut und kann deswegen auch nicht sagen was man kaufen soll aber für mich ist natürlich auch ein Tipp eigene Firmware zu verwenden und auch namhafte Hersteller weil die ganz andere Sachen zu verlieren haben. Also wenn jetzt eine kleine Firma aus Fernost die machen einfach unter verschiedenen Namen Firmen auf und danach ist es egal ob da irgendwelche Hacks oder Sachen rauskommen. Wenn da große Namen hinten dran stehen ist das natürlich eine andere Sache. Deswegen lieber was mit einem bekannten Namen kaufen. Herald: Ok, danke. Ich sehe ein Licht. Ein Licht sagt mir das Internet hat ne Frage. Lieber Signalengel. Signalengel: Ja die Frage: Welche Alternative zur Klartextablage des Wlan- Passworts bzw. des relevanten Schlüssels siehst du? Michael: Naja, in Wirklichkeit rausfinden tut mans immer das ist mir auch bewusst aber es muss natürlich nicht so obvious sein weil wenn man wirklich nur das Binary ausliest und danach den Klartext Schlüssel hat dann ist es natürlich sehr verdächtig und man findet schon beim Durchscrollen durchs Binary oder wenn man einfach strings eingibt. Wenn man alleine nur was drüber xored hätte wäre es schon nicht so auffällig wie es tatsächlich wirklich ist. Herald: Ok, Dankeschön. Ich nehme erst mal das Mikro Nr. 7. Da wartet schon jemand länger. Die Frage bitte. Mikro 7: Ja das ist jetzt fast eher eine Anmerkung. Zudem... Herald: Das tut mir leid aber wir nehmen leider keine Anmerkungen. Wenn du eine Frage hast dann melde dich bitte mit einer Frage. Kommentare möchten wir bitte nicht. Dankeschön. Dann Mikro Nummer 8. Bitteschön, danke. Mikro 8: Der MQTT-Request geht ja direkt an den Cloudhersteller oder? Michael: Genau, also die MQTT ist im Endeffekt das Protokoll das verwendet wird um aus dem Internet ins lokale Netzwerk zu kommen und da wird quasi ein MQTT Tunnel aufgestellt und es gibt ein Topic das quasi subscribed wird von der Lampe selbst wo es quasi Befehle annimmt. Und einer der verwendet wird um Publishes zu machen wo Statusmeldung rausgehen. Herald: Ok danke, wir haben noch eine Frage auf der 5, die wartet schon länger, Bitteschön. Mikro 5: Danke sehr, gibt es irgendwelche Einschränkungen wenn ich ein Internet of Things WLAN aufbaue mit sehr eingeschränktem Internetzugang? Michael: Es ist tatsächlich möglich auch mit der Firmware die drauf ist einen lokalen Betrieb zu machen. Ich glaube nicht mit allen Geräten die ich getestet habe, aber die Lampe ist noch auf dem Port 6668 offen; nimmt da sehr ähnliche Befehle an und man kann sie quasi auch damit selbst steuern. Auch mit dem selben local key werden die Daten dann verschlüsselt und das heißt ist es auch möglich wenn man der Lampe selbst das Internet abstellt die lokal mit dem Handy zu steuern. Herald: Ok, Dankeschön. Ich würde sagen drei Fragen machen wir noch. Michael: ja gerne. Herald: Ok, dann hier vorne die 1 bitte. Mikro 1: Hast du dir angeschaut wie die Sicherheit auf der Serverseite von diesem Cloud-Anbieter ist. Also ob man da was machen kann, ob man in die Daten von Fremdgeräten kommt und ob man potentiell über das MQTT mit fremden Devices sprechen kann. Michael: Also ich hab mal probiert einen MQTT zu einem anderen Device zu schicken. Das hat nicht funktioniert aber ich habe auch nicht weiter geschaut, also nicht so genau und auch nicht probiert um irgendwelche Accounts zu kapern. Mikro 1: Danke. Herald: Ok, wir haben dann ein bisschen Zeit. Deswegen wir machen noch ein paar Fragen mehr wenn Dir das recht ist Michael. Ok, dann würde ich jetzt den Signalengel nochmal einen leuchten lassen. Signalengel: Die Frage was wäre in der Praxis Update best practices für IOT- Devices? Wenn du Autoupdates machst bist du angreifbar, wenn du keine Autoupdates machst bist du nie gepatched. Michael: Ja also eigentlich ist das eine sehr schwere Frage weil man wirklich das schlecht realisieren kann aber trotzdem denke ich dass es Möglichkeiten gibt wo dann zum Beispiel das Update von der App kommt und die dann so ist dass der User definitiv Kontrolle darüber hat und das auch mitbekommt. Natürlich ist es immer eine Implementationsache und relativ schwierig Updates anzubieten für solche Geräte. Herald: Ok, ich glaube Mikro 7 ist noch jemand. Deine Frage bitte. Mikro 7: Es war die gleiche Frage. Michael: Ja okay. Herald: Es war die gleiche Frage ok dann Mikro 8. Michael: Ich glaub da vorne im Eck sind noch ganz viele. Lachen Herald: Hat jemand aufgegeben. Okay es blinkt noch, hab ich das richtig gesehen? Michael: Ja, hier vorne. Herald: Ah ok, die 3 Bitteschön, danke. Mikrofon 3: Thank you, so this cleartext local key of HTTP how often is it sent? Only the first time or does it send more often? Michael: This is basically only during the registration but there's more clear messages. I mean HTTP in general is not encrypted when the cloud sends something to the bulb. But the keys are only transmitted during activation. Herald: Ok, vielen Dank. Wir haben da noch ein Licht. Deine Frage bitte noch. Signalangel: Ist der Sprecher bereits einem sicheren IOT-Gegenstand begegnet? Michael: Vielleicht aber nicht meines Wissens. Lachen & Applaus Herald: Mikro 3 Bitteschön. Mikro 3: Gibt es Anzeichen dass die Daten der User verkauft werden? Und wenn nein wie leicht könnte man das rauskriegen? Also ich denke an einen Talk den es hier Mal gab, der hieß build your own NSA. Da hat ne Fakefirma die Daten versucht zu kaufen. Also das wär ja möglich. Michael: Also alles was ich jetzt sagen würde wär Spekulation und das will ich eigentlich nicht, aber es ist sehr auffällig wie viel Geld hinter den Firmen steckt und wie viele Geräte sie verkaufen und irgendwie geht bei mir die Mathematik nicht auf. Und es geht für mich um mehr Geld als man mit solchen Geräten verdienen kann. Aber wie gesagt es ist alles Spekulation und dazu kann ich dann weiter nichts sagen. Herald: Wär doch mal eine gute Idee für einen neuen Talk. Michael: Ja. Herald: Vielleicht mag das ja mal jemand eruieren. Eine Frage haben wir noch an der 7. Bitteschön. Mikro 7: Bin ich richtig in der Annahme dass Zigbee-Geräte nicht betroffen sind? Michael: Das kommt drauf an ob der Zigbee- Server der es dann ans Internet ankuppelt damit betroffen ist. Weil das gibt's natürlich auch, also wenn die Bridge selbst diese Technologie z.B. benutzt dann ist es das gleiche Spiel weil dann ist das Opfer nicht mehr die Glühbirne selbst sondern die Bridge. Herald: Mmh. Mikro 1 haben wir noch eine Frage. Bitteschön. Mikro 1: Ich hätte eine kleine Frage zu dem smartconfig. Bei dem smartconfig ist es ja so das die Konfiguration über SSID usw. zu dem IOT device geschickt wird. Michael: Ja. Mikro 1: Inwiefern kann ich einfach in, sagen wir mal, einem großen Wohnblock einfach selber ein Expressif-Gerät simulieren und die Informationen abgreifen die das dann rumschickt. Michael: Man muss das gar nicht groß simulieren weil das Protokoll ist ja auch sehr offen und im Endeffekt ist es sehr einfach diese Aktivierungsprozesse mitzuhören und im Klartext auszugeben. Das heißt man kann einfach die WLAN Zugangsdaten und auch den Token sehr sehr einfach entschlüsseln. Herald: Ok, wir haben noch eine Frage aus dem Internet. Bitte noch die Frage stellen Signalengel. Signalengel: Entschuldigung, nein keine weitere Frage aus dem Internet. Herald: Ok, dann würde ich sagen wir haben auf der 1 noch eine Frage und dann kann man auch langsam Schluss machen. Deine Frage bitte. Mikro 1: Es wurde ja gesagt das es auch deutsche Anbieter gibt die diesen Service nutzen. Ist es denn überhaupt legal nach deutschem Datenschutzrecht, jetzt auf diesem Recht auf das Löschen von Daten. Michael: Also ich bin kein Fachmann was das angeht. Mein Kollege hat sich damit ein bisschen mehr beschäftigt im Laufe des.. also als ich die ganzen Sachen analysiert habe und vielleicht kriege ich ihn ja noch dazu ermuntert das er auch noch einen Talk darüber hält. Weil da gibt's wirklich viele Sachen und ich glaube auch da kann man sehr sehr lange und sehr viel drüber sprechen weil da sehr groteske Sachen auch mit den Datenschutzbestimmungen stehen. Herald: Klingt nach einem interessanten Follow up. Ok. Applaus Herald: Das ist Dein Applaus Applaus 35c3 closing music plays Untertitel erstellt von c3subtitles.de im Jahr 2020. Mach mit und hilf uns!