*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!