Amazon Dash Button Hackingcongenio

* Der Amazon Dash Button

Amazon hat nun auch in Europa den sogenannten Dash Button eingeführt - ein Produkt, über -> dessen Sinn man sich trefflich streiten kann und das sicher auch nicht -> ganz ohne Kritik zu betrachten ist. So fragt man sich z.B. bei diesem Button doch unwillkürlich, wo man ihn am besten platzieren sollte:

Amazon Dash Button



Man kann das Produkt für Heimprojekte allerdings auch ganz anders einsetzen, als Amazon sich das ursprünglich vorgestellt hat, nämlich als günstigen "WLAN-Knopf". Ähnliche Produkte kosten leicht 30€, während Amazon für den Dash Button gerade einmal 5€ haben will - und dieser Kaufpreis wird bei der ersten Bestellung auch noch gutgeschrieben.

Der Weg dahin ist recht einfach: Man richtet den Dash-Button mit einer App soweit ein, dass er sich mit dem eigenen WLAN verbinden kann, lässt jedoch die Auswahl eines zu bestellenden Produktes aus. Danach löst jeder Knopfdruck einen Verbindung ins WLAN aus, die man per Lauschen auf ARP-Requests erkennen und darauf reagieren kann.

Zu diesem Thema gibt es etliche Projekte für die verschiedensten Zwecke, eine Zusammenfassung findet sich -> z.B. hier und -> hier.

Es gibt außerdem viele Analysen der Hardware in Internet, u.a. -> diese. Man muss dabei allerdings berücksichtigen, dass die jetzt in der EU vertriebene Version schon die Revision 2 mit der Produkt-ID JK29LP anstelle von JK76PL ist (Analyse -> hier). Entsprechend sind auch viele Analysen der Funktionsweise inzwischen überholt.


* Eigene Erkenntnisse

  • Das Anlernen der WLAN-Parameter erfolgt bei der Revision 2 sowohl in der Android- als auch in der iOS-App jetzt offenbar direkt über eine Funkverbindung und nur noch als Fallback über Ultrasound.
  • Die bei der Initialisierung aktive Webseite auf http://192.168.0.1 im "Amazon ConnectMe" WLAN hat keine Eingabefelder für die SSID und das WLAN-Passwort, sondern zeigt die Firmware-Versionsnummer, die Seriennummer, die MAC und den Batteriezustand des Buttons:

    Konfigurationsseite


    Es gibt jedoch die Möglichkeit, über einen entsprechenden Request "http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASSWORT" diese zu übergeben.
  • Bei der Revision 1 wurde die Namensauflösung ausschließlich über den Google-DNS (IP-Adresse 8.8.8.8) gemacht, so dass es relativ schwierig war, dem Dash Button eine andere Gegenstelle unterzuschieben und somit zu verhindern, dass der Button doch "nach Hause telefoniert". Die aktuelle Version verwendet offenbar doch den per DHCP zugewiesenen DNS-Server, so dass durch Eintragung einer alternativen IP für parker-gw-eu.amazon.com (in Amerika parker-gw-na.amazon.com) die Requests umgelenkt werden können.
  • Es findet auch ein Zeitabgleich mit dem NTP-Server time-c.nist.gov statt.
  • Es scheint so, dass die Revision 2 eine Zertifikatsprüfung vornimmt, wenn sie auf die Amazon-Webseite zugreift, zumindest wurde ein SSL-Proxy mit inoffiziellem Zertifikat nicht akzeptiert, dies könnte jedoch auch an der verwendeten Ciphersuite gelegen haben. Damit ist es schwierig, eine Analyse des Traffics vorzunehmen.
  • Die SSL-Kommunikation läuft anscheinend über diese URLs:
    /2/f
    /2/b
    /2/v
    /2/d
    /2/r/oft
    
    Man kann z.B. im Browser -> diese URL aufrufen und erhält eine Fehlermedlung aufgrund der falschen GET-Methode (es wird ein HTTP-POST erwartet).
  • -> Die GitHub-Seite von dekuNukem legt nahe, dass Amazon die Firmware verändern kann, man beachte die Zeile 189: "gUpdateFirmwareFlag = 0". Der -> Firmware-Dump zeigt ebenfalls solche Anzeichen:
    Zeile 5565: "Setting RDP to Level-0.... wiping out flash"
    Zeile 5742: "Going to do the update........."
    Zeile 5745: "fwupd_body = %d"
    
    Leider scheint es, als ob die Revision 2 der Hardware ein Auslesen des Firmware-Images über JTAG über Fuse-Bits verhindert, es liegt bislang auch nur ein Dump der Revision 1 vor. Es steht also zu vermuten, dass in Zukunft seitens Amazon weitere Maßnahmen getroffen werden könnten, um eine Fremdnutzung der Dash Buttons zu verhindern. Der URL-Präfix /2 legt nahe, dass es sich um die jeweilige API-Version handelt, es in Zukunft also z.B. auch eine V3 mit /3 geben könnte.

Man kann trotzdem mit der Revision 2 einiges anstellen, u.a.:
  • hat man außer dem üblicherweise vorgeschlagenen Weg über das Lauschen auf ARP-Requests (-> z.B. hier) eine zusätzliche Möglichkeit, den eigentlichen Knopfdruck zu detektieren, nämlich, indem man den DNS verändert und auf einem Zielserver auf Port 443 (HTTPS) auf eingehende Verbindungen lauscht.
  • kann man jetzt auf jeden Fall per DNS-Änderung das "Nach Hause telefonieren" des Buttons abklemmen.

 congenio empfiehlt:


HomeTunnel
Für die Digitalnomaden von heute

HomeTunnel ist die Lösung, wenn Sie auf die Geräte in Ihrem Heimnetz von überall in der Welt aus zugreifen wollen, als ob Sie zu Hause wären.