Zum Hauptinhalt Zur Navigation

Reverse Engineering: Mehr Spaß mit Amazons Dash-Button

33C3
In beeindruckender Feinarbeit hat ein Hacker die Hard- und Software von Amazons Dash-Button auseinandergenommen, um zu verstehen, wie das Gerät funktioniert. Sein Lohn: die Ausführung von Code auf dem Gerät. Warum? Weil es geht!
/ Hauke Gierow
184 Kommentare News folgen (öffnet im neuen Fenster)
Mit dem Dash-Button kann man mehr als nur einkaufen. (Bild: Ingo Pakalski/Golem.de)
Mit dem Dash-Button kann man mehr als nur einkaufen. Bild: Ingo Pakalski/Golem.de

Wie genau funktioniert eigentlich Amazons bei Verbraucherschützern unbeliebter Dash-Button? Das hat der Hacker Hunz auf dem Chaos Communication Congress in Hamburg vorgestellt(öffnet im neuen Fenster) . Hunz untersuchte die aktuelle, zweite Revision des Geräts, mit dem Amazon-Kunden per Knopfdruck bestimmte Produkte nachbestellen können. Er sagt: "Wenn wir keinen Code auf dem Gerät ausführen können, gehört es uns nicht wirklich" .

Hardwareseitig steckt der Dash-Button in einem verklebten Plastikgehäuse, es lassen sich also nicht einfach Schrauben lösen, um einen Blick auf die Innereien werfen zu können. Die Rechenleistung wird von einem 120 MHz schnellen ARM Cortex-M4 mit Floating-Point-Unit (FPU) bereitgestellt.

Amazon Dash Button zerlegt
Amazon Dash Button zerlegt (53:19)

Außerdem gibt es 512 KByte an Flash-Speicher und 16 KByte Arbeitsspeicher. Für die Wi-Fi-Verbindung sorgt ein Atwinc1500B von Atmel, der im Bereich von 2,4 GHz mit einer Geschwindigkeit von bis zu 72 MBit pro Sekunden funkt und die Verbindung per WPA 2 absichert.

Softwareseitig gibt es einen vollen IP-Stack, der DHCP, DNS, SSL und andere Funktionen zur Verfügung stellt. Daten können auf einem 4 MByte großen FPI-Flash vom Typ Micron N25Q032 abgelegt werden. Auch ein Bluetooth-Low-Energy-Chip ist verbaut, der von Amazon aber derzeit aktiv wohl nur in der iOS-App verwendet wird.

Eine AAA-Batterie sorgt für Energie

Wird der Button gedrückt, aktiviert sich der interne Spannungswandler und das Gerät wird eingeschaltet. Dies ist nach Angabe von Hunz der einzige Weg, das Gerät zu aktivieren. Es ist also nicht möglich, den Dash-Button über Wi-Fi-Befehle aufzuwecken. Die in einer AAA-Batterie bereitgestellte Energie reicht für 75 Minuten WLAN-Betrieb aus oder für 10 Stunden Betrieb mit guten Stromspareinstellungen.

Amazon Dash - Trailer
Amazon Dash - Trailer (01:26)

Wird der Button gedrückt, startet die Firmware die Funktion onButtonPressed() und löst zwei Post-Requests auf die Adresse parker-gw-eu.amazon.com aus. Dabei werden zunächst einige statistische Daten übertragen, außerdem kann der Server ein Firmware-Update des Dash-Buttons forcieren.

Der Server überträgt auch einen Statuscode an den Dash-Button. Ist die Bestellung erfolgreich, blinkt das Gerät grün, ist kein Produkt ausgewählt oder die Bestellung nicht erfolgreich, leuchtet das Gerät rot auf.

Eigene FPGA-Testumgebung

Um mehr über die Verbindungen herauszufinden, verband Hunz den Dash-Button mit einer FPGA-Testumgebung und erforschte die Verbindungen des Dash-Buttons per Reverse-Engineering. Dazu nahm er einen Man-in-the-Middle-Angriff vor, indem er verschiedene Verbindungen hardwareseitig abgriff.

Konfiguration per Android-App

Zunächst muss der Button aber per Android-App konfiguriert werden, damit er Verbindungen mit dem Internet aufnimmt. Dabei werden zunächst die von Amazon vorgesehenen Schritte durchgeführt. Der Vorgang wird aber vor der Zuweisung der gewünschten Handelsware durch Schließen der App abgebrochen. Hunz verweist in seinem Vortrag explizit auf die Android-Version der App, möglicherweise wird die lokale Konfiguration nicht korrekt gespeichert, wenn die Einrichtung per iOS-App vorgenommen und vor dem Ende abgebrochen wird.

Weil die Informationen für das WLAN und andere Verbindungen lokal gespeichert werden, der Server aber die Informationen über die Produktkonfiguration enthält, ist dies überhaupt möglich. Der Dash-Button kann somit betätigt werden, ohne dass tatsächlich ein Produkt bestellt wird.

Gute Krypto, schlechte Krypto

Das Reverse-Engineering und die Umwidmung der Geräte werden durch eine solide Security seitens Amazon erschwert. Zur Absicherung der Verbindung nutzt Amazon den Diffie-Hellman-Schlüsselaustausch mittels elliptischer Kurven (ECDH) mit der Prime256v1-Kurve. Die übertragenen Tokens und der restliche Netzwerk-Traffic werden mit AES im Galois-Counter-Modus verschlüsselt. Die Buttons selbst haben kein eigenes Zertifikat, sondern authentifizieren sich mit der HMAC.

Amazon-eigenes Betriebssystem

Der Dash-Button nutzt ein offenbar von Amazon selbst entwickeltes Betriebssystem. Bei einer früheren Version wurde noch auf das von Broadcom entwickelte Betriebssystem Wiced mit Express Logic Real Time Operating System und dem Netx IP-Stack gesetzt.

Die Firmware wurde extrahiert, indem der SPI-Flash von dem Dash-Button losgelötet wurde. Darin ist immerhin ein Teil der Firmware enthalten, andere Methoden des Firmware-Dumpings wie Single Wire Debug werden durch das Hardwarelayout des Geräts unterbunden.

Nachdem er die Firmware an der richtigen Stelle lokalisiert hatte, versuchte Hunz, die Firmware auf einen kompatiblen, leeren Speicherchip vom Typ Samg55 zu schreiben und ohne Amazons Bootloader zu starten, was auch funktionierte.

Jetzt war es auch möglich, Single Wire Debugging zu nutzen und eine Entwicklerkonsole zu öffnen. Der Dump enthält jedoch keine Informationen über den Bootloader, die User-config-Sektion und die privaten Schlüssel. Eine Verbindung zu Amazon kann mit dem extrahierten Image also noch nicht vorgenommen werden.

Die Firmware wird per Audiosignal gehackt

Um die fehlenden Informationen zu beschaffen, versuchte Hunz, Schwachstellen der Firmware auszunutzen, um den internen Speicher des Dash-Buttons auszulesen, der die Konfigurationsdateien und das für die Verschlüsselung genutzte Nutzergeheimnis enthält.

Zum Erfolg führte schließlich die Analyse der bereits im ersten Dash-Button in der iOS-Version der App genutzten Möglichkeit zur Authentifizierung per Voice-Sampling. Diese Funktion hatte, anders als andere Bereiche der Firmware, keinen Length-Check für eingegebene Befehle.

Um die Schwachstelle auszunutzen, entwickelte Hunz dann einen per Audiosignal ausgelieferten Exploit. Ein Skript erzeugt eine kurze Audiodatei, die dann per Kopfhörer dem Dash-Button in einer Schleife vorgespielt wird. Danach kann der gesamte Speicherinhalt ausgelesen werden.

Amazon könnte Schwachstelle beseitigen

Die Schwachstelle, so Hunz, werde vermutlich bald von Amazon behoben. Dies sei bei vorhandenen Buttons aber nur möglich, wenn der Server ein Firmware-Update erzwingen kann. Hunz empfiehlt inspirierten Hackern daher, Verbindungen zu den Update-Servern von Amazon zu unterbinden. Der Code für den Exploit kann bei Github abgerufen werden(öffnet im neuen Fenster) .

Andere gehen für 10 Euro ins Kino, ich hacke für 5 Euro die Wochenenden durch

Wie lange er an dem Hack gearbeitet hat, konnte Hunz auf Nachfrage aus dem Publikum nicht sagen: "Ich behalte die Zeit nicht im Auge. Manche Menschen kaufen für 10 Euro ein Kinoticket und haben 90 Minuten lang Spaß, ich kaufe für 5 Euro einen Dash-Button und habe viele Wochenenden meinen Spaß!"

Weitere Forschungen an dem Gerät will Hunz vermutlich nicht vornehmen, ist aber gern bereit, interessierten Bastlern Hilfestellung zu leisten. Am Ende der Frage-und-Antwort-Session wurde noch auf das Mindesthaltbarkeitsdatum des Dash-Buttons hingewiesen.

Weil der Timestamp nur 4 Byte lang sei, könne das Gerät längstens bis zum Jahr 2038 funktionieren. Bis dahin dürfte es Amazon zwar vermutlich gelingen, ein Softwareupdate bereitzustellen, doch der Zuhörer scheint nicht überzeugt: "Ich denke, das ist sehr nachlässig von ihnen!"


Relevante Themen