Xiaomi Mi Router 4A
Hardware unterscheiden #
Es gibt verschiedene Hardware-Varianten des Xiaomi Mi 4A, die sich teilweise signifikant unterscheiden.
Die Variante muss bei der Installation zwingend berücksichtigt werden, da die Firmwares nicht zueinander kompatibel sind.
Xiaomi Mi 4A Gigabit
| Gerät | aktuell unterstützt |
|---|---|
| Xiaomi Mi 4A Gigabit v1 (GigaDevice SPI-Flash) | ✅ |
| Xiaomi Mi 4A Gigabit v1 (cFeon SPI-Flash) | ✅ |
Xiaomi Mi 4A Gigabit v2 (Model RB02) |
✅ |
Die Revision des Board-Layouts lässt sich nach Ausnutzen des Exploits über den Befehl ls /etc/Wireless feststellen.
- v1:
mt7603e mt7612 - v2:
mt7603e mt7663
root@XiaoQiang:~# ls /etc/Wireless
mt7603e mt7612Ab Firmwareversion 20221201 werden beide Varianten des v1-Layouts vom selben Image unterstützt und müssen nicht unterschieden werden.
Für das v2-Layout gibt es eine spezielle Firmware, die mit v2 im Dateinamen gekennzeichnet ist.
Xiaomi Mi 4A
| Gerät | aktuell unterstützt |
|---|---|
| Xiaomi Mi 4A (100m) | ✅ |
| Xiaomi Mi 4A (100m-intl) | ✅ |
Die Hardware beider Varianten ist identisch, allerdings wird die internationale Version mit einem anderen Partitionslayout ausgeliefert.
Die Revision des Board-Layouts lässt sich nach Ausnutzen des Exploits über den Befehl cat /proc/mtd | grep mtd6 feststellen.
- 100m:
mtd6: 00100000 00010000 “overlay” - 100m-intl:
mtd6: 00200000 00010000 “overlay”
root@XiaoQiang:~# cat /proc/mtd | grep mtd6
mtd6: 00200000 00010000 “overlay”Installation #
Zum Überschreiben der Herstellerfirmware ist ein Exploit des Web-UI nötig https://github.com/acecilia/OpenWRTInvasion (v1-Layout).
Für die v2-Variante muss der Fork von LordPinhead https://github.com/LordPinhead/OpenWRTInvasion genutzt und zweimal hintereinander ausgeführt werden. Siehe auch den dazugehörigen Pull-Request.
Videozusammenfassung des Exploits: https://www.youtube.com/watch?v=VxzEvdDWU_s
Die Videoanleitung sollte nur als zusätzliche Hilfestellung, nicht aber als Referenz genutzt werden!
Router vorbereiten #
- Router mit dem Internet verbinden (wichtig, da beim Installationsvorgang zusätzliche Daten vom Router aus dem Internet geladen werden müssen!)
- entweder über den WAN-Port
- oder per WiFi Client (Modus “WiFi Access Point”, hier ändert sich allerdings die IP Adresse des Web-UI!)
- PC mit einem der beiden LAN-Ports verbinden, IPv4 Adresse per DHCP beziehen
- Mit 192.168.31.1 verbinden und Setup-Assistenten durchlaufen
- Stok auslesen: Im Web UI einloggen. Die URL in der Adresszeile beinhaltet etwas wie
stok#3700b146c87e45fea51170f87f47d34c
Exploit ausnutzen #
Hierfür kann auch der Anleitung des OpenWRTInvasion Exploits gefolgt werden.
Für das v2-Layout: https://github.com/LordPinhead/OpenWRTInvasion.git
Docker-Methode:
- Lokales Docker-Image bauen (für
v2-Layout)docker build -t openwrtinvasion https://github.com/LordPinhead/OpenWRTInvasion.git - Exploit anwenden
docker run --network host -it openwrtinvasion - Beim
v2-Layout klappt es ggf nicht beim Erstversuch und man muss den Exploit ein zweites mal anwenden.
python/pip Methode
-
Git Repository klonen:
git clone https://github.com/acecilia/OpenWRTInvasion.git -
python3-pipinstallieren -
Im geklonten Repository
./remote_command_execution_vulnerability.pyausführen:cd OpenWRTInvasion ./remote_command_execution_vulnerability.py -
IP Adresse des Routers und stok (nur den Teil nach
stok#) eingeben
Firmware flashen #
-
Mit
telnetauf dem Router einloggen (User: root, Passwort: root):telnet 192.168.31.1 -
Ein OpenWrt oder Freifunk sysupgrade Image nach /tmp/firmware.bin kopieren.
Auf v1 / v2 Layout achten!openwrt-[version]-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.binfff-[variant]-[version]-xiaomi_mi-router-4a-gigabit-sysupgrade.bin
cd /tmp wget -O firmware.bin <firmware-url>wgetunterstützt ggf kein HTTPS. Der Download-Link muss vonhttps://aufhttp://umgeschrieben werden.
- Prüfsumme berechnen und vergleichen:
sha256sum firmware.bin # oder alternativ ./busybox sha256sum firmware.bin - Installieren:
mtd -e OS1 -r write firmware.bin OS1
Ports für Layer3 Konfiguration #
Xiaomi Mi 4A Gigabit Edition #
| Geräteport | Untagged | Tagged |
|---|---|---|
| Internet | wan:* |
wan:t |
| • | lan1:* |
lan1:t |
| •• | lan2:* |
lan2:t |
Xiaomi Mi 4A (100m/100m-intl) #
Der Xiaomi Mi 4A (100m/100m-intl) hat noch keine Unterstützung für
DSAund benutzt nochswconfigum die Ports zu konfigurieren.
| Geräteport | Untagged | Tagged |
|---|---|---|
| Internet | 0 |
0t |
| • | 2 |
2t |
| •• | 4 |
4t |