Tuya-Convert: IoT-Geräte ohne Löten vom Cloud-Zwang befreien

Viele Smart-Home-Geräte aus dem Baumarkt oder vom Discounter senden Daten an Tuyas IoT-Cloud. Grund genug, sich aus der Tuya-Cloud zu befreien! So klappt es ohne Schraubendreher und Lötkolben mit alternativer Firmware.

In Pocket speichern vorlesen Druckansicht 134 Kommentare lesen
Tuya-Convert: Lötfrei aus der IoT-Cloud raus

(Bild: VTRUST)

Lesezeit: 9 Min.
Von
  • Andrijan Möcker
Inhaltsverzeichnis

English version

Unternehmen, die gern eigene Smart-Home-Geräte anbieten möchten, stoßen bei der Internetrecherche schnell auf den Anbieter Tuya. Die in China ansässige Firma verlangt 1500 US-Dollar, danach kann man sich die Smart-Home-Produktpalette komfortabel auf einer Webseite zusammenklicken und zum Sub-Hersteller werden. Dass die versprochene "Military grade security" nicht gerade auf festem Boden steht, hat Michael Steigerwald vom IT-Startup VTRUST auf dem 35C3 gezeigt.

Der Vortrag zeigt, an welchen Stellen Tuyas Einrichtungsvorgang Schwächen hat. So werden die Schlüssel, mit denen später die MQTT-Nachrichten verschlüsselt werden, unverschlüsselt per HTTP übertragen. Ein Angreifer, der sich während der Einrichtungsphase in der Nähe befindet, könnte außerdem die WLAN-Zugangsdaten abgreifen, die das Tuya-Gerät per Broadcast empfängt.

Die Erkenntnisse lassen sich aber auch praktisch nutzen, um eigene Tuya-Geräte aus der Cloud des Herstellers zu befreien und eine eigene Firmware aufzuspielen, die quelloffen ist und sich nicht mit Servern in der Cloud unterhalten muss, um eine Steckdose zu schalten. Die Firmware kommt ohne Lötkolben und ohne Aufschrauben auf das Gerät.

In den Tagen nach dem 35C3-Vortrag haben VTRUST und c't angefangen, zusammen daran zu arbeiten, den Hack jedem zugänglich zu machen. Da in vielen der Tuya-Geräte ein ESP8266 oder ESP8285 steckt, ist es ein leichtes, eine alternative Firmware zu installieren. Die bereitgestellten Skripte erzeugen eine lokale Serverumgebung, wie sie in Tuyas Cloud existiert. Sie leiten den Verkehr der Tuya-Geräte auf den lokalen Server um und schieben ihm eine alternative Firmware wie Sonoff-Tasmota unter.

Sie sollten sich im Klaren sein, was es heißt, eine alternative Firmware zu flashen. Tuya stellt nach eigenen Angaben den Cloud-Service für tausende von individuellen Produkte bereit. VTRUST und c't können nicht sicherstellen, dass der Hack bei allen Tuya-Produkten funktioniert. Aus diesem Grund liegt das Risiko allein bei Ihnen.

Bitte beachten Sie auch, dass Ihnen mit einer alternativen Firmware unter Umständen Funktionen verloren gehen, die Sie nachträglich mit einer lokalen Smart-Home-Steuerung (zum Beispiel Node-Red) neu einrichten müssen. Zusätzliche Teile der Hardware (zum Beispiel Chips zur Leistungsmessung in Schaltsteckdosen) können vollständig unbenutzbar sein, wenn keine alternativen Bibliotheken existieren. Hinzu kommt, dass batteriebetriebene Tuya-Geräte oft einen zusätzlichen Mikrocontroller enthalten, der über die serielle Schnittstelle mit dem ESP8266/85 kommuniziert.

Dieser Praxisartikel beschränkt sich auf das Flashen von Sonoff-Tasmota da die Tasmota dynamische Zuweisung von GPIOs ermöglicht. Einfache Schaltaktoren (Relais) bekommt man damit so gut wie immer zum Laufen.

Das Skript sichert die Original-Firmware und gibt Informationen zum Flash-Modus des Tuya-Geräts aus.

Tuya-Geräte sind von außen nur selten eindeutig zu erkennen. Gelegentlich gibt es Produkte, die einen QR-Code mit kleinem "t" auf dem Gehäuse haben oder direkt in der Anleitung zur Installation der Tuya-Smart-Life-App auffordern. Ist beides nicht der Fall, können Sie probieren, ihr Gerät direkt in die Tuya-Smart-Life-App einzubinden – darauf sollten Sie jedoch verzichten, wenn Sie Tuya nicht bereits Ihre Daten durch die App des Sub-Herstellers überreicht haben.

Viele Tuya-Geräte öffnen einen Hotspot, wenn Sie die Pairing-Taste zweimal lange gedrückt halten. Das erste Mal, bis die LED am Gerät blinkt, das zweite Mal bis sie nur noch langsam blinkt. Schauen Sie auf Ihrem Smartphone oder Rechner in den WLAN-Einstellungen nach einem WLAN namens "Smart-Life-XXX". Im Wiki zum GitHub-Projekt haben wir kompatible Geräte aufgelistet. Wenn Sie neue Tuya-Geräte finden und flashen konnten, freuen wir uns über einen Pull-Request oder Hinweis bei GitHub.

Grundsätzlich sollten die Skripte auf jedem Linux-Computer mit WLAN-Adapter laufen. Da wir jedoch nicht jede Distribution abdecken und testen können, beschränkt sich dieser Artikel auf den Raspberry Pi (ab 2 mit ext. WLAN-Adapter, ab Raspberry Pi 3 intern) mit aktuellem Raspbian Stretch Lite (ohne Desktop).

Wenn Sie Ihren Raspberry Pi bereits als Smart-Home-Zentrale oder für andere Dinge einsetzen, sollten Sie für den Flash-Vorgang ein neues Raspbian auf eine separate SD-Karte schreiben. So stellen Sie sicher, dass diese nicht beeinträchtigt wird. Sie können den Hack sowohl per SSH als auch per Tastatur am Pi direkt starten.

Booten Sie zunächst Ihr neues Raspbian und melden Sie sich (gegebenenfalls per SSH) am Terminal an. Dann aktualisieren Sie die Paketlisten:

sudo apt-get update

und installieren eventuell notwendige Updates:

sudo apt-get upgrade

Um die Dateien aus dem GitHub-Repository auf Ihren Raspberry Pi zu übertragen, benötigen Sie die Versionsverwaltung git:

sudo apt-get install git

Klonen Sie das Repository mit dem Befehl:

git clone https://github.com/ct-Open-Source/tuya-convert

Wechseln Sie in den Ordner und starten Sie die Installation der benötigten Zusatzsoftware

cd tuya-convert
sudo ./install_prereq.sh

Das Tuya-Convert Skript simuliert eine Umgebung wie sie Tuya sonst zur Provisionierung der Geräte bereitstellt. Hier die Ausgaben des Webservers.


Sobald die Installation der Zusatzsoftware abgeschlossen ist, geben Sie

sudo ./start_flash.sh

ein, um das Flash-Skript zu starten. Lesen Sie den Text aufmerksam durch und bestätigen Sie, dass Sie eigenverantwortlich handeln, indem Sie yes eintippen und mit Enter bestätigen.

Das Skript öffnet nun einen Access Point sowie zusätzliche Dienste (DHCP-, DNS-, MQTT- u. HTTP-Server) für den Flash-Vorgang auf Ihrem Raspberry Pi. Das von Tuya zur Provisionierung verwendete Smartconfig-Protokoll versendet die WLAN-Zugangsdaten sowie den Cloud-Token mittels UDP-Broadcast.

Dieses Verhalten simuliert jetzt Ihr Raspi. Damit der WLAN-Adapter die Broadcast-Pakete sendet, braucht er einen Client, also ein Gerät, das mit dem WLAN verbunden ist – ansonsten weigern sich manche Adapter leider. Die Zugangsdaten für das WLAN zeigt Ihnen das Skript an.

Versetzen Sie Ihr Tuya-Gerät in den Smartconfig-Modus. Den erkennt man durch die schnell blinkende LED am Gerät. Der Modus automatisch aktiv, wenn das Gerät noch nie eingerichtet wurde. Ist es bereits provisioniert, halten Sie den Pairing-Knopf gedrückt, bis die LED schnell blinkt. Wenn Sie keinen Pairing-Knopf finden können, suchen Sie zunächst den prägnantesten Knopf (zum Beispiel einen großen An/Aus-Taster) am Gerät. Alternativ hilft die Anleitung weiter.

Blinkt die LED am Gerät, drücken Sie erneut Enter. Haben Sie etwas Geduld, da es rund eine Minute dauern kann, bis Ihr Gerät die Smartconfig-Pakete empfangen und sich mit dem WLAN verbunden hat. Die LED hört meist auf zu blinken, sobald die Verbindung hergestellt wurde.

Während Sie nur Punkte sehen, lösen die Skripte im Hintergrund den Update-Vorgang mit einer Übergangs-Firmware aus. Sobald sich diese mit Ihrem Raspberry Pi verbunden hat, sichert das Skript im Vordergrund die Original-Firmware Ihres Geräts – deutlich zu erkennen am Datenstrom.

Nach der Installation der Updater-Firmware, kann man den Flashvorgang rückgängig machen oder eine alternative Firmware wie etwa Sonoff-Tasmota einspielen.

Am Ende des Backup-Vorgangs gibt das Skript die Eigenschaften Ihres Gerätes aus. Der Flash-Modus ist besonders wichtig, beispielsweise: FlashMode: 1M QIO @ 40MHz. Wobei 1M(Byte) die Speicherkapazität ist, QIO der Flash-Modus und 40MHz die Taktfrequenz des Bus. Flashen Sie im Nachgang eine alternative Firmware, die mit dem falschen Flash-Modus kompiliert wurde, bootet der ESP unter Umständen nicht und Sie müssen ihn über die serielle Schnittstelle neu flashen. Notieren Sie sich die Informationen aus der Ausgabe.

Nach Ende des Skripts können Sie die Übergangs-Firmware mit dem Befehl

curl http://10.42.42.42/undo

wieder entfernen. Das enthaltene Tasmota-Image nutzt den DOUT-Flashmodus der auf allen Geräten funktionieren sollte. Den Flashvorgang lösen Sie mit

curl http://10.42.42.42/flash3

in der Konsole aus. Die vorläufige Firmware lädt die Datei herunter und schreibt sie in den Flash-Speicher. Aufgrund der limitierten Größe der möglichen Firmwares, stellen wir zur Installation die Basic-Variante von Sonoff-Tasmota bereit. Diese Variante öffnet nach dem erfolgreichen Flashen einen Access-Point mit einem Namen nach dem Schema "Sonoff-XXX"

Unter http://192.168.4.1 können Sie die Firmware konfigurieren. Wenn Sie gleich eine eigene Firmware flashen möchten, kopieren Sie sie im Ordner tuya-convert in den Unterordner files und ändern Sie den Namen auf thirdparty.bin.

Tuya hat laut eigenen Angaben mehr als zehntausend unterschiedliche Geräte auf den Markt gebracht und man kann davon ausgehen, dass diese weltweit verteilt sind. Wenn Sie also ein Tuya-Gerät finden, sollten Sie anderen Interessierten dies mitteilen. Dazu haben VTRUST und c't ein Wiki im GitHub-Repository eingerichtet, in das Sie Ihr Gerät und zusätzliche Informationen eintragen können, sofern diese noch nicht vorhanden sind. Alternativ können Sie uns auch unter ctsmarthome@ct.de schreiben.

Mit Ihrem Beitrag zur Dokumentation helfen Sie nicht nur, das Ausmaß des Tuya-Angebots zu dokumentieren, sondern auch Entwicklern alternativer Firmware wie Tasmota, ESPEasy und Espurna, fertige Geräteprofile zu bauen. Menschen mit weniger Wissen im technischen Bereich haben es so einfacher, Dinge aus der Cloud in ein lokales Smart Home zu übertragen. Vielen Dank! (amo)