Xiaomi Mi Router 4A

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

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  mt7612

Ab Firmwareversion 20221201 werden beide Varianten des v1-Layouts vom selben Image unterstützt und müssen nicht unterschieden werden. Das v2-Layout wird aktuell nicht unterstützt. Solltest du ein Gerät mit v2-Layout erhalten haben, nimm bitte Kontakt mit den Firmware-Entwicklern oder der Community auf.

 
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

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 Windows gibt es eine Dockervariante, die in der oben verlinkten Anleitung beschrieben wird. (nicht getestet)

  • Git Repository klonen:
    git clone https://github.com/acecilia/OpenWRTInvasion.git
    
  • python3-pip installieren
  • Im geklonten Repository ./remote_command_execution_vulnerability.py ausführen:
    cd OpenWRTInvasion
    ./remote_command_execution_vulnerability.py
    
  • IP Adresse des Routers und stok (nur den Teil nach stok#) eingeben

Firmware flashen #

  • Mit telnet auf dem Router einloggen (User: root, Passwort: root):
    telnet 192.168.31.1
    
  • Ein OpenWrt oder Freifunk sysupgrade Image nach /tmp/firmware.bin kopieren
    • openwrt-[version]-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
    • fff-[variant]-[version]-xiaomi_mi-router-4a-gigabit-sysupgrade.bin
    cd /tmp
    wget -O firmware.bin <firmware-url>
    
  • Prüfsumme berechnen:
    ./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 DSA und benutzt noch swconfig um die Ports zu konfigurieren.
Geräteport Untagged Tagged
Internet 0 0t
2 2t
•• 4 4t