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!