 Diese zwei Herren sind Forscher von den zwei der renommiertesten Universitäten. Wegen persönlichen finanziellen Beschränkungen waren sie interessiert in den Smart Home Devices. Lasst uns ihnen ein warmes Willkommen geben. Vielen Dank, Distance2Eye. Vielen Dank. Das ist Dennis. Ich bin Daniel. Heute werden wir über Staubsauger und im Speziellen über Xayomi Staubsaugerroboter reden. Dahin gibt es schon ein paar Fans. Ich entschuldige mich für ein falsches Aussprechen des Namen des Verkäuvers. Weil ich keine Ahnung habe, wie man richtig ausspricht. Wir beginnen mit ein paar Zahlen an. Warum haben wir uns dafür entschieden, uns auf die Xayomi-Devices zu beschränken? Die Behauptung ist, dass es 50 Millionen verbundene Geräte gibt in 2016. Sie behaupten auch, dass sie 1,9 Billionen Euro in 2016 erwirtschaftet haben. Das sind sehr beeindruckende Zahlen. Der größte Punkt für uns war, dass die Geräte extrem billig sind im Vergleich zu anderen. Wie zum Beispiel andere Staubsaugerroboter, die im Bereich von 1.000 Euro liegen. Dafür kriegt man vier Staubsaugerroboter von Xayomi für denselbe Geld. Deshalb haben wir uns für Xayomi entschieden. Dann haben wir diese Werbung hergesehen. Für ihre Staubsaugerroboter haben sie drei CPUs. Warum braucht man drei CPUs in einem Staubsaugerroboter? Unsere Augen waren bereits wie dieses Bild hier. Wir waren sehr daran interessiert, was da los ist auf diesen Staubsaugerrobottern. Wir haben einen Strick zurückgemacht und haben uns angeschaut, wie das Ökosystem von einem Staubsauger aussieht. Der zentralen Punkt ist das Smartphone und die App drauf. Dann gibt es natürlich die Smart Devices, also die Staubsauger und die Glühbirnen. Es gibt auch Smart Wasserocher und andere Sensoren, die über ein Gateway angesprochen werden. Das zeigt schon, dieser Pfeil hier ist punktiert. Das bedeutet, während der Verbindungsphase sprechen Sie direkt mit einem Smartphone. Nachdem Sie dann verbunden sind, werden Sie eine direkte Verbindung zum Xayomi Cloud haben. Es gibt also keine Kommunikation über die App mehr, also direkt mit dem Gerät. Es geht alles über Cloud. Man kann auch sehen, dass es auch andere Techniken und Protokolle gibt, zum Beispiel Bluetooth und ZigBee. Das ist das Ende meines Teils. Jetzt wird euch Dennis etwas mehr Details über dieses Staubsauger geben. Ich werde einfach nur das Gerät hier vorstellen. Danke Daniel. Jetzt schauen wir uns den Staubsauger genauer an. Das ist wieder eine Werbung. Man sieht, das hat sehr viele Sensoren. Der wichtigste ist dieser Lidar-Sensor. Hier sind sehr viele Infrarots-Sensoren, um das Gerät herum. Ein Gyroscope, ein Beschleunigungs-Sensor. Man fragt sich natürlich, warum es braucht, aber es ist eigentlich ganz nett. Wir haben gesehen, es hat sehr viele Sensoren. Wenn wir es knacken, dann wäre das ganz nett. Wir haben sehr viele Sachen probiert, um Zugriff auf das Gerät zu kommen. Ein Weg war, direkt über Hardware draufzukommen. Das andere war ein Netzwerk-basierter Angriff. Das hat einfach auf Micro-USB angeschlossen. Unglücklicherweise, das funktioniert nicht, weil man eine Autonomifizierung dafür braucht. Dann haben wir geschaut, ob es eine serielle Schnittstelle gibt auf dem Board. Aber das haben Sie leider auch nicht beschriftet. Das heißt, wir hätten auch keine Möglichkeiten. Dann schauen wir mal, wie es im WLAN-Funkt ist. Und ob es irgendwelche Ports offen sind. Zum Beispiel Telnet. Und so Geräte lieben es, offene Telnet-Ports zu haben. Aber Portscann hat leider auch nicht funktioniert. Alle Ports waren geschlossen. Und den Netzwerkverkehr mitzulesen, hat auch nicht funktioniert, weil alles verschlüsselt war. Der nächste Schritt ist, man baut es komplett auseinander. Man löst die Schraube und schaut das ganze Gerät an. Man ist sehr überrascht, dass es sehr einfach war, das auseinanderzubauen. Und wir glauben, dass man es einfach ausstecken und die Teile auseinanderziehen. Was wir hier sehen, ist das Layout des Boards. Man sieht hier, hier ist der Anwendungsprozessor, das ist ein Quadcore. Mit 1.6 GHz pro Kern. Und angeschlossen daran sind 512 MB von RAM. Es hat auch 4 GB Flash und ein WLAN-Modul, dass man das ganze Gerät mit dem WLAN kommunizieren kann. Für die ganzen Sensoren haben wir hier ein STM-MCU, das die ganzen Sensoren handelt. Das ist ein AM Cortex. Das kennen wahrscheinlich viele von euch. Es gibt ja auch noch ein zusätzliches MCU in dem L-Lieder, das wir vorhin gesehen haben. Das sieht man aber hier in dem Bild nicht. Auf der Rückseite sieht man sehr viele Testpunkte, die beschriftet sind mit Testband 1 bis wie auch immer. Und das Problem damit ist, das gibt uns absolut keine Informationen, ob wo jetzt ein New Art Anschluss ist. Wir haben gesehen, die einzigen zwei Testpunkte ohne eine Beschriftung sind tatsächlich die UART-Anschlüsse. Aber wenn man sich da ranverbindet, sieht man leider auch gar nichts. Im nächsten Schritt müssen wir eben die Hardware irgendwie angreifen, um Ruhrzugriff zu bekommen. Und unsere Waffe, die wir gewählt haben, war Aluminiumfolie. Die Idee dahinter ist, dass wenn man ins Datenblatt schaut, dann sieht man, dass es ein Fallback-Mode gibt. Und wir haben die Aluminiumfolie unter den Chip gesetzt und haben da die gewisse Data-Lines im Kurzschluss verursacht. Und dadurch konnten wir dann mit USB verbunden und ein kleines Tool hochladen, das dann das komplette Speicher auf den USB-Speicher damppt. Mit dem Speicher konnten wir dann ein paar Änderungen machen. Wir hatten leider keine Checks. Und dann haben wir es einfach wieder drauf gespielt auf den Chip. Das Interessante darüber war, dass genau eine Schicht von Aluminiumfolie darunter passt. Wenn wir dann einen Blick in dieses Bild von dem Cleaner reinstecken, läuft der Ubuntu-Software. Und die meisten davon sind noch ein Original-Software. Zur Navigation verwenden wir den Player, eine Open-Software. Eine Sache, was wir herausgefunden haben ist, dass auf dem USB läuft ein gewisses ADB. Aber die machen auch eine eigene Autohinifizierung und da haben wir leider die Information nicht so. Um diesen Port zugreifen zu können. Aber interessanterweise haben sie SSH, aber die SSH läuft, aber es ist über IP-Tables gesperrt. Schauen wir uns jetzt mal die Daten an, die auf dem Gerät sind. Anscheinend lieben sie Lock-Files. Sie haben Sys-Logs drunter stehen, wie lange das Gerät gebraucht hat um etwas zu reinigen. Und das Gerät, das Gebiet, das abgefahren wird. Und auch SSIDs vom Netzwerk. Und wir haben auch hier TCB-Dump benutzt, warum wir das weiß nicht. Aber das könnt ihr euch wahrscheinlich selbst denken. Selbst wenn das Gerät einfach nur rumsteht, generiert dieses Gerät sehr viel Daten. Und wenn man es zum Putzen einsetzt, dann ist es noch viel mehr Daten. Und da ist es natürlich sehr interessant, dieses Gerät zu routen. All das geht in die Cloud, der Verkäufer hat diese Daten. Und wenn man das Gerät zurücksetzt, dann wird das Betriebssystem von einem Recovery wiederhergestellt. Aber die Daten werden nicht gelöscht. Das heißt, die sind immer noch auf dem Gerät. Das heißt, wenn du dein Gerät zurücksetzt und es dann weiter verkaufst, dann hat dann der nächste Käufer Zugriff auf deine Daten wie deinen SSID und das Passwort von deinem WLAN Zugang. Das hier sind die Karten, wie sie auf dem Gerät aussehen. Das ist ein Open-Source-Player-Software und das sind hier Bitmaps. 1024 immer 1024 Pixel. Und ein Pixel sind ungefähr fünf Zentimeter. Der Lieder ist wesentlich genauer, aber die Auflösung wird halt nur in einer Genauigkeit von fünf Zentimeter abgespeichert. Bevor wir uns jetzt genau die Kommunikation anschauen, wollen wir uns die Konfiguration anschauen. Eine Sache, die relativ gewöhnlich ist, dass man das Gerät eine eindeutige Device-ID hat. Das kommt von der Herstellung. Theoretisch kann man es ändern, aber es gibt zwei Arten von Keys zu entschlüsseln. Also ein Cloud-Schlüssel für die Kommunikation mit der Cloud und das ist nie geändert. Und ein Token, der nur benutzt wird, um mit der abzukommunizieren. Und dieser setzt sich jedes Mal zurück, wenn du deinen Gerät zurücksetzt. Wir wissen, dass es sehr viele Angriffe über diesen Token gibt. Aber jedes Mal, wenn du jedes Mal noch mal zum WLAN-Verbindest, wird dieser Token zurückgesetzt. Wenn man es einfach an einer einfachen Ansicht nimmt, diese Cloud-Kommunikation. Alles in dieser linken Box hier sind die Interna, das Staubsaugers. Also sehr viele Prozesse, die auf dem Gerät laufen. Und der Zentralste ist dieser Mio-Client, der die Kommunikation zwischen außen und in übernimmt. Hier sind ein paar Beispiele, was gesendet werden könnte. Mit dem Cloud-Schlüssel. Die werden dann verschlüsselt und entschlüsselt und wieder im plaintext. Und die Antwort wird wieder zurückgeschickt an den Mio-Client. Wieder verschlüsselt und wieder an die Cloud geliefert. Die Firmware und einzelne App-Daten werden auch verschlüsselt über HTTP gesendet. Werfen wir einen Blick auf den Update-Prozess. Von der Cloud kommt ein verschlüsseltes Paket. Mit der Information, wo die mit der URL von der Seite, auf der die Firmware gedownloadet werden kann. Also kann das ziemlich einfach angegriffen werden. Denn im nächsten Schritt beim Download. Das ist hier jetzt sehr vereinfacht dargestellt werden des Speichers. Als erstes kommt eine aktive Kopie auf dem IoT-Device. Weil für gewöhnlich gibt es ein zwei Kopien des Betriebssystems. Das Paket wird gedownloadet. Es wird gecheckt, ob der MD5 okay ist. Wenn das okay ist, gibt es einen geheimen Geschüssel, mit dem das Ganze entschlüsselt wird. Und und packt wird. Im nächsten Schritt, das ist jetzt wichtig, wird es mit dem Boot Passwort abgedatet. Und danach wird die passive Partition abgedatet. Der Stocksocke wird dann etwas rebooten. Und im nächsten Schritt die ursprünglich aktive Kopie bespielt. Wie funktionieren Firmware-Updates? Da sind zwei Arten von Firmware-Updates. Einmal die verschlüsselten Tag GZ-Archiebern. Oder ein vollständiges Image der Disk. Sie waren sehr kreativ bei dem statischen Passwort. Das ist nämlich einfach ROGROBO. Die Firmware-Updates sind verschüsselt mit RIS. Und die Integrity ist dabei begeschützt. Die MD5 wird dabei von der Cloud zu viel gestellt. Jetzt haben wir das Passwort von der Firmware und können die neu bauen. Wir nehmen einfach die Firmware und bauen sie selbst. Wir bauen unsere selbstgebauten Key-Files rein. Wir entfernen die IP-Tables und können dann die Update-Befäle selber schicken. Der Stocksocke akzeptiert das wunderbar, wenn der Token stimmt, wie zum Beispiel von der App zur Verfügung gestellt wird. Nach ein paar Minuten konnten wir uns dann einloggen. Es ist einfach ein normales Ubuntu-System. Wir hätten hier unsere eigene Software instillieren können. Von da aus können wir auch direkt die Sensoren ansprechen und auslesen. Das ist ein Bild von einem Lichtsensor. Nun wollen wir unabhängig werden von der XAMIC Cloud werden. Dafür haben wir zwei Möglichkeiten. Entweder, wenn wir noch die App benutzen wollen, ersetzen wir das gesamte Clouds-Unterface. Wenn wir die Cloud komplett wegnehmen wollen, nehmen wir den alten Kleint weg und installieren unseren neuen Kleint. Wir nehmen dann zum Beispiel ein FM Home Assistant Cloud oder ähnliches. Oder wir schalten die Kommunikation zur Cloud aus. Die andere Möglichkeit wäre über die Proxy-Kommunikation. Dafür gibt es einen... Das ist eine komplette Emulation. Man kann also Pakete in die wirkliche Cloud weiterleiten oder man kann es einfach als lokale Cloud laufen lassen. Also einfach Befehle ändern, komplett oder total unterdrücken. Man möchte natürlich Firmen-Updates nicht haben, damit man die eigenen Änderungen nicht überschrieben werden. Das ist also eine Art, was mir das machen kann. Wir haben das auch auf unserem GIST GitHub für öffentlich ein paar Nutzbeispiele. Man kann es an eigenen Home-Automatisierung-Server benutzen. Oder als Webradio oder als Dateiserver. Das geht halt nur bis 2 GB, das ist also nicht sehr groß. Aber das gute Ding ist, dass das Gerät 2 Tage lang hält, wenn das Strom auswählt. Und ich weiß, dass die Frage kommt, kann man es für benutzen Bitcoins zu meinen. Aber ich glaube, die sind heutzutage einfach zu langsam. Tut mir leid. Aber vielleicht, wenn man eine Million von den Geräten hat, wird das wahrscheinlich für den Home-Automation-Server. Haben wir ein paar Beispiele, Firmenware, wo wir FHM installiert haben, auf dem Staubsauger. Und wir sehen hier, dass man lokal laufen lassen kann. Wir kennen den Token, weil wir ihn direkt drauf zugreifen können. Und dann kann man sein eigenes Home-Automation-System drauflaufen lassen. Also man braucht keinen Raspberry Pi, sondern nur ein Staubsauger. Wir haben auch etwas DLC für euch. Das ist ja nicht EA, aber wir wollen kein Geld dafür. Das ist also alles kostenlos. Wir haben ein paar Firmenwares modifiziert. Da könnt ihr euch runterladen und installieren. Dann könnt ihr auch unsere Cloud-Emulation runterladen. Das Problem ist, ich bin nicht sehr gut mit Python. Das heißt, es ist ziemlich kaputt und nicht sicher. Also setzt das besser nicht für Produktivsysteme ein und tut es auch nicht online. Und ich bin auch sehr glücklich, wenn sich das jemand genauer anschauen kann. Es gibt auch Bilder und Pinouts und weitere Sachen veröffentlicht. Das findet ihr alle hier auf dieser Domain. Also wir landen das heute Abend nach dem Vortrag hoch. Es gibt noch zwei Sachen, die wir erwähnen möchten. Also zwei Worte der Warnung. Lasst eure Gehte nie. Also ich möchte jetzt vertrauen nicht der Cloud und das ist einfach nicht ins Wi-Fi. Aber seid sehr vorsichtig mit gebrauchenden Geräten. Weil böse Menschen können diese bestellen und dann mal weiter darauf installieren und dann weiter verkaufen. Wenn man das in den Ruhm macht, dann könnte man anderen machen, welche Leute eher die teureren Geräte kaufen. Und das ist jetzt das Ende des Vortrags. Wir möchten zwei Leuten oder zwei oder auch mehr Leuten danken. Dem Simulabs in Darmstadt und Professor Agueva von der North Eastern University und wir freuen uns jetzt auf Fragen. Eine Frage. Vielen Dank für die Rede. Wie viele Roboter haben Sie in Ihrer Untersuchung aufgemacht? Insgesamt haben wir neun davon gekauft und alle funktionieren noch. Also 100% Chancen, das erfolgreich zu roten. Es gibt keine Gebrickten, also keine Zerstörten. Du hast gesagt, wenn das im Wi-Fi hängt, dann snifft er die ganzen Daten ab und sendet sich Albenfahrt zu Cloud. Es gibt mindestens einen Befehl, der den Xiaomi senden kann an das Gerät, das dann den Monitor-Mode anmacht und das aktiviert dann den TCP Sniffing. Wir wissen nicht genau, warum man das macht, aber wir haben nur den String gesehen und gesehen, dass es diesen Befehl gehen und wir haben dann nicht weiter reingeschaut, bis jetzt. Also sind die Logs an sich da, aber die werden nicht ausgeführt? Nein, die müssen einen Befehl senden, aber die Logs gehen die ganze Zeit in den Cloud. Die Logs werden hochgeladen, aber das bedeutet nicht, dass gewisse Dateien von dem Befehl generiert werden müssen. Habt ihr in irgendwelchen anderen Xiaomi-Devices angeschaut? Das sind jetzt natürlich Spoiler, aber ja, wir haben zum Beispiel ein Smart-Leucht-Lampen angeschaut und haben versucht, auf diese Zugriff zu kriegen. Also sagen wir mal, wir haben geschafft, in deinen eigenen Cloud zu bekommen und wir werden das auf der Recon Anfang Februar vorstellen. Eine Frage vom Internet. Habt ihr versucht, den Roboter umzuprogrammieren und eure eigenen Software draufzuschreiben? Also ja, dann eine Frage ist, ob wir, wir haben vollständigen Ruhrzugang, wir können installieren, was wir möchten und die Player Software ist eigentlich Open Source, die wird auch für andere Sachen, auf andere Roboter Sachen eingesetzt und das ist einfach nur die Standard Open Source Version davon, die sie einfach benutzen, um mit den Sensoren zu kommunizieren, das Roboter ist. War das deine Frage? Nee, war nur neugierig. Ihr habt erwähnt, dass ihr es unter USB-D zum Laufen gebracht habt? Ja, das haben wir versucht und wir haben herausgefunden, dass man gewisse Strings braucht, wie z.B. eine Route passen wollte, was man in der Regel nicht hat, weil das da für Käufer in ihrer Datenbank haben. Das haben wir recht gut gemacht, also die Autoimmigriktion ist nicht richtig trivial und es gibt sogar mehrere Level, mehrere Ebenen, aber wenn man dann auf der einer Ebene ist, dann muss man auf eine andere Ebene kommen. Das ist also wesentlich einfacher, um das Gerät zu routen und dann das Open Source ADB zu installieren und dann kann man einfach über USB und mit der ADB-Shell darauf zugreifen. Und wenn man das als Recovery-Methode haben, dann kann man das so machen, aber um diese Autoimmigriktion zu reverse-Engineeren, das ist viel zu schwer. Also es akzeptiert eine herrschte Version des Passwords? Das ist so eine Challenge-Response, was wir dir machen. Wir haben eine erste Ebene, aber es gibt auch noch eine zweite Ebene. Es gibt wahrscheinlich sogar noch eine dritte, wenn man eine Scheile haben will. Also es ist wie ein Spiel. Habt ihr einen Xayomi-Gebiet, einen Xayomi-Rauschleppes gerade vor schon mal geöffnet? Nein, haben wir nicht. Und der Grund ist, weil wir nicht worten, dass sie den Bug schließen, aber es ist eigentlich kein wirklicher Bug, aber die Sache ist, sobald das geroutet ist und sobald man die Verschlüssel hat, dann können sie nichts mehr machen, weil man kann seine eigene Firma installieren. Also sobald man den Schlüssel hat, ist man geschützt vor Updates von Xayomi. Aber wenn wir jetzt ein Roboter bauen und sie irgendwas ändern in ihrer Firma, dann müssen wir halt wieder von vorne anfangen. Oder man muss halt wieder Hallominiumfolie auspacken. Also gegen diesen Angriff ist es ziemlich schwierig, aber gegen die Hardware-Stachstelle ist es sehr schwierig, sich zu schützen. Aber wenn man, bitte, nimmt nicht die Hallominiumfolie, weil man kann schlimme Sachen passieren. Man kann sein MMC-Rösten. Also wenn man keine Idee hat, was man macht, dann lasst die Finger von der Hallominiumfolie. Könnte man dieses Vorgehen auch verwenden, um mehrere Roboter zusammenarbeiten zu lassen? Ja, also die Player-Software kann das von Haus aus. Also man nimmt diese Player-Software, um die kleinen Roboter zu kontrollieren, um gewisse Sachen zu machen. Die Regel ist, man kann mit dem Gerät alles machen, was man will. Wie habt ihr dieses Passwort bekommen oder die verschiedenen Passwörtern? Ja, also wir haben die Binarys Revers engineered und die haben noch alle Box-Symbolen drin, also alle Debux-Symbolen drin gelassen. Und dann war es sehr einfach, die Strings auszulesen. Und das war in der Nähe der Grip-Befehls. Und wir wussten nicht, dass es ein Passwort war, aber es war zu einfach aus, aber sobald wir das Passwort hatten für die Audio-Files, dann haben wir das genauer angeschaut und rausgefunden, dass tatsächlich Rock-Robo das Passwort ist. Das stand alles in den Binarys drin. Vielen Dank.