Kaffeemaschinenhacking - Ein Reversing-Abenteuer

12 Jul. 2023

8 Minuten Lesezeit

Trafficanalyse

Unser Werkstudent Oskar Zeino berichtet über das Projekt, das er neben seiner Tätigkeit als Werkstudent im Bereich IT-Security der viadee anging: Er hat unsere Kaffeemaschine gehackt!!! Dies wurde unter anderem dadurch ermöglicht, dass die viadee Mitarbeitenden und Studierenden die Freiräume und das Budget bereitstellt, sich und neue Technologien und Methoden auszuprobieren. 

Ich bin Oskar, Werkstudent im Security-Team des Bereichs Forschung und Entwicklung bei der viadee. Ich studiere IT-Sicherheit im Master an der Ruhr-Universität Bochum. In diesem Artikel berichte ich von meinem Reversing-Abenteuer der neuen Kaffeemaschine in unserem Büro. Reversing (Kurzform von Reverse Engineering) bedeutet, dass man die technische Funktionsweise eines Geräts oder einer Software versteht, ohne die tatsächlichen Aufbau des Geräts oder den Programmcode der Software zu kennen. In diesem Artikel gehe ich meine Schritte beim Untersuchen der Kaffeemaschine durch, beschreibe welche Tools ich dazu verwendet habe und welche lustigen sowie beunruhigenden Dinge dabei zum Vorschein gekommen sind. Aber warum würde man sich überhaupt so genau mit der Funktionsweise einer Bürokaffeemaschine beschäftigen? Unsere hat einen Bildschirm mit großen Bildchen zum Auswählen der Lieblingssorte, die kann jede Fünfjährige bedienen, ohne zu wissen, wie die Maschine genau funktioniert. Und ich bin auch noch Teetrinker...

Die Kaffeemaschine kann ja Wifi!

Kurz nachdem diese Maschine im Büro eingerichtet wurde, kam ein Kollege auf mich zu und sagte den verhängnisvollen Satz zu mir: "Oskar, die neue Kaffeemaschine, die kann ja Wifi!" Er würde sich freuen, wenn ich mir mal genauer anschauen könnte, was die Maschine so genau im Netzwerk macht. Es gebe nämlich keine Dokumentation zu dem Feature und es wäre ja toll, wenn es da eine versteckte API gäbe, "zum Ändern vom Milchgehalt zum Beispiel". Während mein Kollege sich also praktische Smart-Home Features ausmalte, gingen mir ganz andere Gedanken durch den Kopf: Undokumentierte Verbindung der Kaffeemaschine ins Internet? Spioniert uns der Hersteller etwa aus? Was, wenn das Gerät aus dem Internet erreichbar ist und gehackt wird? Ist das ein Einfallstor in das interne Unternehmensnetzwerk? Mir war sofort klar, dass ich die Kaffeemaschine genauer unter die Lupe nehmen möchte.

Trafficanalyse mit Wireshark

Mein erster Instinkt war, herauszufinden, was die Maschine so ins Internet funkt und mit wem sie da spricht. Zur Trafficanalyse hab ich mir das Tool Wireshark geschnappt. Wireshark eignet sich hervorragend dazu, beliebige IP-Pakete mitzuschneiden und die gesendeten Daten in darauf aufbauenden Protokollen wie TCP oder HTTP darzustellen. Damit ich aber den Traffic der Maschine analysieren kann, muss dieser zuerst irgendwie an meinen Laptop umgeleitet werden. Die Kaffeemaschine ist im Wifi-Netz natürlich direkt mit dem Router verbunden, von wo aus der Traffic ins Internet geht. Es fließen also keine Pakete der Maschine zu meinem Laptop. Ich erstelle also an meinem Laptop einen Wifi-Hotspot. Wenn ich nun die Kaffeemaschine mit meinem Hotspot verbinde, präsentiert sich mein Laptop gegenüber der Maschine als Router. Ihre IP-Pakete werden erst an meinen Laptop geschickt, der sie dann an den Wifi-Router leitet, von wo aus sie ins Internet kommen. Nur, dass ich in dieser Konstellation alle Pakete sehen und analysieren kann. Solch eine Position meines Laptops im Netzwerk zwischen der Kaffeemaschine und dem Internet nennt man auch Man in the Middle (MitM).

Trafficanalyse

Breakout

Meine nächste Aufgabe war also das Verbinden der Kaffeemaschine mit meinem Wifi-Hotspot. Nur war nirgends eine Einstellung für Wifi zu finden. Ich fragte also meinen Kollegen, der das mit dem Wifi einstellen ja schon geschafft hatte und er zeigte mir den notwendigen Trick: In den Einstellungen der Maschine gibt es einen Menüpunkt "Datum & Uhrzeit". Nur führt dieser Knopf in ein ganz anders aussehendes Menü: nämlich das "Datum & Uhrzeit"-Menü des Betriebssystems Android. In Android kann man mit einer Wischbewegung nach unten die Benachrichtigungsleiste öffnen, wo es einen Shortcut zu den Android Einstellungen gibt. Das bestätigt endgültig, dass der Bildschirm in der Kaffeemaschine einfach ein Android-Smartphone ist. Wie im Video zu sehen ist, habe ich nur mit einer einfachen Wischbewegung und durch den Aufbau der Kaffee-App einen Kiosk Breakout geschafft, es also aus der für Nutzer:innen zu verwendenden App herausgeschafft. In den Android-Einstellungen kann man nun einfach das Wifi konfigurieren, aber auch alles andere, was sich an einem Android Handy eben so einstellen lässt. Nur fehlt leider ein Home-Button, sodass man nicht auf den Homescreen kommt, wo man andere Apps außer den Einstellungen öffnen könnte.

Mysteriöser Server

Nachdem ich in den Einstellungen die Kaffeemaschine mit meinem Wifi-Hotspot verbunden habe, ist der Traffic der Maschine nun in Wireshark analysierbar. Die Kaffeemaschine verbindet sich nur mit einem einzigen Server, welcher sich anhand der IP wohl in China befindet. Die Kommunikation ist jedoch mit TLS verschlüsselt, dem sicheren Protokoll zur Verschlüsselung von Internet-Traffic. Anhand des genutzten Ports 8883 konnte ich aber schließen, dass es sich um verschlüsselten MQTT-Traffic handeln muss. Was genau das Protokoll MQTT ist, wird im Verlauf des Artikels noch beleuchtet. Eine unverschlüsselte DNS-Anfrage verrät auch die Domain des Servers: iotcloud.[redacted].com . (Die genaue Domain sowie andere identifizierende Details zum Kaffeemaschinenhersteller werden in diesem Artikel nicht genannt.) Unter der Domain läuft auch ein Webserver mit einer Loginmaske zu einer Art Verwaltungsdashboard für Kaffeemaschinen. Ich vermute also, dass dort Analysedaten von Kaffeemaschinen zusammenlaufen. Welche Daten genau aber an diesen Server gesendet werden, ist erstmal nicht klar, da nur verschlüsselt gesendet wird. Zeit also, die Verschlüsselung zu umgehen.

TLS "knacken" mit MITMProxy

MITMProxy ist ein praktisches Tool zum "knacken" von verschlüsselten HTTPS- und TLS-Verbindungen. Dabei bricht man die Verschlüsselung nicht wirklich, sondern bringt nur das verbundene Gerät dazu, mit dem MITMProxy eine verschlüsselte Verbindung aufzubauen. Der Proxy kann einem dann den entschlüsselten Traffic anzeigen, den Traffic danach neu verschlüsseln und an den eigentlichen Zielserver weiterleiten. Die Kaffeemaschine glaubt dabei, direkt mit dem Server unter iotcloud.[redacted].com verbunden zu sein. Damit dieser MitM-Angriff auf die Verschlüsselung funktioniert, erstellt das MITMProxy Tool automatisch von sich selbst signierte TLS-Zertifikate für die gerade angefragte Domain und antwortet damit auf TLS-Handshakes für jede Domain.

proxy

Damit nicht jeder so einen MitM-Angriff im Internet durchführen kann, wenn man gerade entspannt Online-Banking macht, verschlüsseln Clients nur mit Servern, welche ein signiertes TLS-Zertifikat vorweisen. Dabei muss die Signatur von einer vertrauenswürdigen Certificate Authority (CA) kommen, wodurch das Vertrauen quasi auf das signierte Zertifikat übergeht. Jedes Betriebsystem wie Android oder Windows hat eine Liste mit vertrauenswürdigen Root CAs hinterlegt, welchen immer vertraut wird. Vereinfacht gesagt, zeichnen sich diese Root CAs dadurch aus, dass sie nicht jeder Person einfach so ein TLS-Zertifikat für eine Domain ausstellen, sondern dies nur für bestätigte Inhaber:innen einer Domain tun (die Chain-of-Trust lasse ich hier zur Vereinfachung weg). Deswegen ist es normalerweise nicht möglich, sich selbst ein TLS-Zertifikat für www.bank.com auszustellen, welches von Clients auch akzeptiert wird. Eine vertrauenswürdige CA wird das Zertifikat nicht für mich signieren und wenn ich es selbst signiere, fällt dem Client das auch sofort auf.

Eine Möglichkeit in diesem Fall ist es, den Client umzukonfigurieren, sodass dieser mich bzw. MITMProxy für vertrauenswürdig hält. Das geht natürlich nur, wenn man Kontrolle über den Client hat - was bei der Kaffeemaschine ja der Fall ist. Zumindest kann ich auf der Maschine die Android-Einstellungsapp öffnen. Um das Vertrauen in MITMProxy aber auf der Maschine zu konfigurieren, muss ich eine Zertifikatsdatei auf dem Android Handy ablegen. Nur die Einstellungsapp reicht dazu jedoch nicht. Dort kann ich zum Beispiel keine Dateien aus dem Internet herunterladen.

Breakout II

Doch praktischerweise dachte sich der Hersteller der Kaffeemaschine das auch: Wenn Menschen auf der Maschine im Standbymodus coole, eigene Videos abspielen wollen, dann muss die Videodatei ja auch irgendwie auf die Maschine drauf. Zumindest sind für genau diesen Zweck zwei praktische USB-Ports hinter einer Abdeckung versteckt. Nachdem ich diese Abdeckung etwas unorthodox abgeschraubt habe, konnte ich also beliebige Dateien per USB-Stick auf die Kaffeemaschine draufkopieren. Dazu gehören auch .apk Dateien, Installationsdateien für Androidapps. Da es ja die ganze Zeit keinen Home-Button gab, habe ich zuerst die App VirtualSoftkeys installiert, welche einen Home-Button am unteren Bildschirmrand simuliert. Jetzt kann man endlich auch auf den Homescreen und beliebige Apps öffnen. Kombiniert mit der Fähigkeit, beliebige Apps per APK Datei über einen USB-Stick zu installieren, erlaubt uns das die vollständige Kontrolle über das verbaute Android-Smartphone. Zumindest die Kontrolle, die jeder User von seinem eigenen Smartphone in der Hosentasche kennt. Wie zum Beispiel (unbequem) Flappy Bird spielen, während man auf seinen Kaffee wartet.

Kaffeemaschine - open
USB Kaffeemaschine
Display Kaffeemaschine
Flappy Bird

Vorheriger Artikel

Phishing-Simulation – Ein fester Bestandteil für erfolgreiche Mitarbeitersensibilisierung?

Pishing zur Mitarbeitersensibilisierung

Nächster Artikel

Der methodische Umgang mit Workarounds: Prozessinnovation und Risikominimierung

Symbolbild: Eine KI interpretiert