Xiaomi devices: Datenschutz gewährleistet ?

Begonnen von KölnSolar, 23 Dezember 2020, 22:04:12

Vorheriges Thema - Nächstes Thema

KölnSolar

Seit kurzer Zeit habe ich mein erstes Xiaomi device. Ein air-purifier 3H. Design u. Funktion sind prima. Als seeeeehhhhr vorsichtiger u. skeptischer Mensch habe ich vorerst nicht den üblichen Weg einer Erstinstallation über eine App-Blackbox gewählt.

Meinen außergewöhnlichen Beginn einer FHEM-Anbindung hab ich hier bereits beschrieben.

Problem ist also der token. Nun gibt es zahlreiche Infos im Net, wie man denn an ihn kommt. Leider ist immer nur der Weg beschrieben. Nie die Zusammenhänge.

Nach meinem Kenntnisstand MUSS einmal mit der App "initialisiert" werden. Danach findet sich der token in der Cloud, von wo er ausgelesen werden kann. Klingt eigentlich nicht dramatisch.

Aber was passiert bei der "Initialisierung" ? Man teilt dem device seinen WLAN-Zugang(SSID,key) mit. Logisch, wie soll es auch sonst lokal kommunizieren. Dass diese Daten auch nach China wandern, äußerst unschön. Aber hey, einmal mit fakeSSID u. onetime-key initialisieren müsste ja gehen. DENKSTE. Jede Änderung des lokalen Netzwerks erfordert auch die erneute "Initialisierung" des devices.

Zwischenfazit: Netzwerkanbindung eines devices ist gleichbedeutend mit der Offenlegung des WLAN-Zugangs an die Chinesen.

Erst einmal nur unschön. Hätte man nicht die Info, dass auch noch die Lokation übertragen wird(slide 22.)Und spätestens jetzt hört der Spaß auf.

Fazit: Netzwerkanbindung eines devices ist gleichbedeutend mit der Offenlegung des WLAN-Zugangs an die Chinesen. Und dem  Ort des WLANs
Hinzu kommt die permanente Datenübermittlung des devices. Der Grundriss der Wohnung(vacuum cleaner), womöglich Streams/Bilder der Cam....Dagegen kann man sich wenigstens noch wehren, indem man dem device den Internetzugriff "verbietet".

Was soll nun dieser Thread ? Aufklären u. vielleicht eine Lösung finden, die eine FHEM-Anbindung möglich macht, ohne dass der Chinese morgen vor der Tür steht, sich im WLAN anmeldet u. dann Gott-weiß-was anrichtet.

Wer also irgendwelche Infos hat, wie man dem Hersteller seine Spionage abgewöhnen, man seinen WLAN-Zugang verschleiern kann, bitte hier posten.
Wenn ich etwas falsch oder unzureichend dargestellt haben sollte: Kritik willkommen.

Und noch eins: aufgrund der Vielzahl der device typen, unterschiedlichen Generationen und firmwares ist das WWW mit Vorsicht zu genießen. Selten sind die Infos allgemeingültig. So lassen sich manche devices mit alternativer firmware flashen(z.B. Valetudo bei vacuum cleanern  :-\). Aber eben nur manche.

Ich recherchier mal weiter u. versuche mal die dustcloud zu verstehen.....

Grüße Markus

Edit: Kaspersky Hintergrundinfo
dustcloud: Do Xiaomi know the exact position of the vacuum or my smart device(e.g. address)?
.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

dominik

Hi,

was mir dazu einfällt (leider gehen die WLAN Daten trotzdem einmalig nach China):

- Saugroboter: Valetudo und somit keine Wohnungsdaten mehr
- Xiaomi Mijia Gateway3: https://github.com/AlexxIT/XiaomiGateway3#zigbee-home-automation-mode damit wird das Ding auch von der Cloud getrennt
- Zigbee2MQTT oder ähnliches: Als Ersatz für Gateways und damit komplett cloudfrei für die Sensoren

Ich glaube man wird je Device eine Möglichkeit zum Rooten finden müssen. Eventuell mal Aufschrauben und nach entsprechenden PINs suchen die man dann seriell nutzen kann um die Firmware zu bearbeiten.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

KölnSolar

Zitat(leider gehen die WLAN Daten trotzdem einmalig nach China)
Einmalig wäre ja nicht schlimm. Dann könnte man ja
Zitateinmal mit fakeSSID u. onetime-key
Oder etwa jedesmal, wenn die WLAN-Zugangsdaten lokal geändert werden ?  :o
Wenn Letzteres, auch bei z.B. Valetudo(hab ja keinen cleaner), also gerooteten devices ?
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

dominik

Gute Frage, da bin ich mir jetzt nicht sicher. Eigentlich sollte mit root am Saugroboter problemlos ein WLAN Wechsel möglich sein.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

MadMax-FHEM

#4
Ja, mit root-Zugang bei den Xiaomi/rockrobo vacuum kann das WLAN lokal umgestellt werden...

Und wie im anderen Thread geschrieben hab ich mir für meine Sauger mal eine FW-Brutzel-VM" gebastelt"...

Hier mal noch mal meine Links aus dem anderen Post:

https://python-miio.readthedocs.io/en/latest/vacuum.html
https://github.com/Hypfer/Valetudo
https://valetudo.cloud/pages/installation/roborock.html
https://heinz-otto.blogspot.com/2019/06/root-und-gut.html

Einen Xiaomi-Gateway hatte (also hab ich noch, nutze EDIT: jaja ;) ihn es aber nicht mehr) ich auch mal.
Ging auch ohne Cloud aber nat. 1x anmelden WLAN (denke ich)...
Beim Anlernen neuer Geräte weiß ich nicht mehr, denke aber ging (bei mir) auch nur mit App (also wieder kurz Zugang)...
War noch V1 und die zugehörigen Sensoren haben mich (trotz des niedrigen Preises) nicht überzeugt...

-> Grabbelkiste... ;)

EDIT: bei Kameras hab ich auch kurz überlegt mir so ein China-Ding zu kaufen und zu flashen/rooten/hacken... Aber dazu fehlte dann doch die Zeit...

Ich "hör" hier mal mit... :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

dominik

Und hier noch der Hack für die Xiaomi 1080p 360 Kamera
https://github.com/telmomarques/xiaomi-360-1080p-hacks

Gibt es auch für dafang Modelle.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

KölnSolar

Das klingt ja wenigstens danach, dass man bei gerooteten devices Abhilfe schaffen kann.
Ich wette aber, dass die meisten folgende Vorgehensweise wählen:
- Erstinstallation mit App/Cloud.... --> WLAN-Zugangsdaten landen in China
- rooting und man ist glücklich dem Chinesen ein Schnippchen geschlagen zu haben
- wer ändert jetzt noch seine Zugangsdaten.  ::)
==> nur die Vorgehensweise Ersteinrichtung mit "fakeSSID u. onetime-key "(also kurzzeitig veränderte Zugangsdaten) hält die Cloud dumm

Ich kenne da einen, der mich vermutlich bestätigen/berichten kann.  ;)  ;D Er hat sich auch mit dustcloud hier im Forum auseinandergesetzt. Vermutlich aber nie ausprobiert, da der Thread dann abrupt abbricht.   :'(

Ich denke, dass dustcloud der Ansatz ist. Entweder nur zum rooten von bereits gehackten device typen(Liste hier u. hier) oder um evtl. aus dem Programm code etwas abzuleiten(für mich kaum lösbar; für dominik u. Markus.M sicherlich einfacher nachzuvollziehen).

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

MadMax-FHEM

Beim Sauger geht es auch anders, sofern man ihn nicht in der Cloud bruacht...

Zurückgesetztes Gerät mit "Root-FW" versorgen und dann per ssh-Zugang WLAN setzen...
(Ansonsten braucht man für das Rooten ja schon den Token ;)  )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amenomade

[OT: Frage an die Deutschen]
ZitatEinen Xiaomi-Gateway hatte (also hab ich noch, nutze ihn aber nicht mehr) ich auch mal.
Der, die oder das Gateway?
:D
[/OT]
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

yersinia

viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

KölnSolar

[OT]
ZitatDer, die oder das Gateway?
Das ist doch noch einfach. Aber der oder das token ?  ;D[OT]

Zurück zum Thema. Dummycloud(Bestandteil von dustcloud ?  :-\) scheint mir ganz interessant. Nur welchen "key" zur Hölle muss man angeben ?(Ich hab ja zwischenzeitlich gelernt: es gibt den "device-key"[gerätespezifisch,fix] zur Kommunikation mit der Cloud u. das "token"[generiert bei der "Initialisierung"] zur Kommunikation mit der App(oder alternativ halt FHEM....) Jemand ne Idee ?

Und noch eine Anmerkung am Rande: mein 3h befand sich ja im lokalen Netz ohne Zugang zum Inet(1. Stufe pi-hole, 2.Stufe Fritte). Nun las ich, dass angeblich auch IP-Adressen fest in der firmware verdrahtet sind. Da die Fritte auch deren Zugriff nicht zulässt, wollte ich mir mal im Ereignisprotokoll ansehen, ob ich IP's finde. Keine vorhanden. Allerdings stellte ich fest, dass der 3h sich permanent an- u. abmeldet. Seit ein paar Tagen hab ich auch permanent Probleme im WLAN. Also hab ich den 3h mal wieder resettet und seitdem scheinen meine WLAN-Probleme weg zu sein.

Was ich auch nirgends finden konnte: Lässt sich der Schlüssel des WLAN-Zugangs ändern, ohne dass ein neues token generiert wird ?
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

dominik

Du kannst es Mal mit miio probieren
https://github.com/aholstenson/miio/blob/master/docs/management.md#changing-the-wifi-settings-of-a-device

Ich weiß nicht ob sich dann der Token ändert, wenn nicht, hätten wir schon eine Lösung für alle Geräte.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

KölnSolar

ZitatIch weiß nicht ob sich dann der Token ändert, wenn nicht, hätten wir schon eine Lösung für alle Geräte.
Das war mein Gedanke bei meiner Frage.  ;)
ZitatDu kannst es Mal mit miio probieren
Ich ja leider nicht. Ich komm doch gar nicht so weit mangels token. Deshalb hoffte ich, dass das von Euch mal jemand probiert.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

ZitatNur welchen "key" zur Hölle muss man angeben ?(Ich hab ja zwischenzeitlich gelernt: es gibt den "device-key"[gerätespezifisch,fix] zur Kommunikation mit der Cloud u. das "token"[generiert bei der "Initialisierung"] zur Kommunikation mit der App(oder alternativ halt FHEM....) Jemand ne Idee ?
Ich denke, ich habs selber herausgefunden. Valetudo gibt die Antwort
ZitatdeviceId and cloudSecret can be found in the /mnt/default/device.conf as did and key on the robot. Since both values are static, you'll only need to do that once.

The localSecret can be found in the robots FS as well: /mnt/data/miio/device.token. Note that this one might change when you're switching wireless networks etc.

Mist. Alles was ich finde ist immer auf die vacuum cleaner zugeschnitten.  :'(
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

#14
wieder etwas weiter im Verständnis. Ich befürchte, dass das device nach der Übertragung der WLAN-Zugangsdaten den neuen token verschlüsselt mit dem device-key in die Cloud schickt. Die Cloud kennt den device-key und bestätigt dann das neue token. Mit gesperrtem Inet empfing ich per wiresharkmagic bytes
  I  length bytes
  I    I                 counter(id)
  I    I                      I             32-character token ???? encrypted ???
  I    I                      I                              I
21310020ffffffffffffffff00000075 0da9a61ffd3b38c0713854b5c4cde5af
21310020ffffffffffffffff00000077 05d8c015a71b5b12513d6ce3dada22f6
21310020ffffffffffffffff00000079 bca5fca713105bd177d58d02fbaa57e6
21310020ffffffffffffffff00000084 9c4047bca36cc5d8524cdb475203359c
21310020ffffffffffffffff00000086 bb4a594451b1e7875ed8963e3272adb4
21310020ffffffffffffffff00000088 8b8d09b31ab51cae380f8acac426dd50
21310020ffffffffffffffff00000093 0f0f27c99adce2c765b4cd084fa01e20
21310020ffffffffffffffff00000095 c0bca63141bbe8587fa44d55a3c866b3
21310020ffffffffffffffff00000097 87f6d32906e2578cc87316606ac0cfd5
21310020ffffffffffffffff00000ba2 8c99385bae7438d9ac8c96be566f7435
21310020ffffffffffffffff00000ba5 ba192a633a033f3089f05793762c322c
21310020ffffffffffffffff00000baf 5893466b3364db5ac5868848cee63929
21310020ffffffffffffffff00000bb2 2e5b84cf27bf194e986d86fe08d9daf3
21310020ffffffffffffffff00000bb4 c1aa242d495b1d3d5397fc0c019b16e8
21310020ffffffffffffffff00000bbe ffe4dd206e45f768cec731e37bc7e7b3
21310020ffffffffffffffff00000bc1 198fac288e8b538b15cf41b74f14bcf6
21310020ffffffffffffffff00000bc3 fd3db4369adde79754595ffcc34fb97c
21310020ffffffffffffffff00000bcd b6afd9b3e7192f32e8824e90fd4f7699
21310020ffffffffffffffff00000bd0 50f38124b180f1fc28485104bec6c2c3
21310020ffffffffffffffff00000bd2 e926f4871da2448893e8f20dc24e50d5
21310020ffffffffffffffff00000bdd 59e876a4351c8d356227448a42c9c347
21310020ffffffffffffffff00000bdf 5d81be7aff9aafcc25c958d26c64437a
21310020ffffffffffffffff00000be1 d9e8a8411ba7e1851414a330483a73a4
21310020ffffffffffffffff00000bec 0c69563a84352c4475322518434cddac
21310020ffffffffffffffff00000bee bfd3092f445be1090d527c9ce85f0473
21310020ffffffffffffffff00000da6 995d3da1dd6a859b9f7e3952ca5e9abb


Nach einigen Versuchen probiert das device eine TLS-Verbindung aufzubauen.

Domains u. IPs
udp 161.117.49.2, 161.117.52.228  ot.io.mi.com
https 161.117.93.220 ots.io.mi.com
dns ohne traffic: dlg.io.mi.com 124.251.58.88, 124.251.58.124, 183.84.6.98

Und dann wurde noch dieser unverschlüsselte request an dns.io.mi.com[110.43.0.83] übertragen GET /gslb?tver=2&id=317353509&dm=ots.io.mi.com&timestamp=21&sign=Oiv14ZbzR46frBEmyxt%2BQgR8udGtCyho6DW3hGVlLaQ%3D HTTP/1.1\r\n
Antwort: <html><head><title>302 Document moved</title></head><body><h1>302 Document moved</h1>This document has moved <a href="http://fritz.box/tools/kids_not_allowed.lua?account=IPdesDevice">here</a>.<p></body></html>

Keine Ahnung wie das überhaupt durchgehen konnte.  :o :-\

Und die App erhält wohl nach Authorisierung einen temporären service-key aus der Cloud und überträgt dann die device-id. Der Kreis(Dreieck) ist geschlossen.

Wie gesagt, Spekulation....
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt