Estos routers NuCom son una mina de vulnerabilidades. Después de lograr lo propio en el NuCom NU-GRNV5, os traigo otro tutorial sobre como hacerlo en el NuCom NC-DS224WTV.
Se trata de un router VDSL2/ADSL2+ y el exploit que voy a explicar lo he encontrado en un aparato con las siguientes especificaciones.
Product Type | NC-DS224WTV |
Hardware Version | V0.0.1 |
Software Version | DS224WTVSTA034 |
Specs | nucom.es/wp-content/uploads/2020/02/NC-DS224WTV.pdf |
- 1 Cuenta de usuario y superusuario
- 2 Requisitos
- 3 Pasos a realizar
- 4 ¿Y si no puedo acceder al router ni como user?
Cuenta de usuario y superusuario
Como viene siendo habitual, a las compañías telefónicas no les apetece dar control total a sus clientes sobre el router que instalan en su domicilios. Es por ello que nos facilitan una cuenta de usuario con privilegios capados. Con este modelo de router mi compañía me facilitó los datos de esa cuenta por medio de una pegatina adherida detrás del dispositivo. Esa cuenta se llama user
, y la contraseña vamos a suponer que fuera 1234
.
Este router cuenta además con una cuenta de superusuario llamada admin
cuya contraseña no es revelada al cliente. Vamos a suponer que esa contraseña misteriosa fuera 5678
.
Seguramente en este router como en tantos otros exista la posibilidad de resetearlo de fábrica manteniendo pulsado el escondido botón de reset durante un buen rato, para que de este modo la contraseña de admin
vuelva a ser 1234 o alguna de ese estilo. Lamentablemente, en ocasiones eso no es una opción porque se corre el riesgo de que al resetear se pierda la configuración de la línea telefónica IP o el paquete de televisión contratado.
Requisitos
Requisitos para poder llevar a cabo el hack.
- Conocer la contraseña de la cuenta user. En principio te la facilita tu ISP.
- Un navegador con herramientas de desarrollador. Actualmente, tanto Firefox como Chrome la tienen y es accesible mediante la tecla F12. Yo utilizaré Firefox.
- Conocimientos básicos de programación no vendrían mal, pero en la medida de lo posible trataré de que el tutorial lo pueda seguir cualquiera.
Pasos a realizar
1. Abrir un navegador y escribir en la barra de direcciones la dirección IP de tu router, típicamente es 192.168.1.1. En mis pantallazos veréis 172.16.0.1 porque yo me puse esa.
2. Identificarse con el usuario user
y la contraseña facilitada por la compañía. El router nos dará la bienvenida mostrándonos la página http://192.168.1.1/index.html
.
Si estás convencido de que sabes la contraseña de la cuenta user pero no puedes acceder a esa pantalla, me solidarizo contigo. A mi también me pasa. Ve al final del tutorial y sigue las instrucciones de la sección “¿Y si no puedo acceder al router ni como user?”
3. En el menú de la izquierda pulsar sobre Management → Account Management → Passwords. El router nos devolverá esta página:
Como veis contiene un desplegable para escoger a qué usuario queremos cambiarle la contraseña, un campo donde escribir la contraseña actual, y dos donde escribir la nueva contraseña. El botón Apply es el que pulsaremos cuando toque hacerlo.
En mi caso el desplegable de selección de usuario está habilitado (color blanco). Eso es porque ya lo tengo hackeado. En vuestro caso seguramente esté deshabilitado (color gris).
4. Pulsamos sobre el desplegable con el botón derecho y en el menú contextual que se abre escogemos Inspeccionar elemento. Aparece el menú de desarrollador mostrando el código HTML de la página web actual.
5. Pulsamos sobre el pequeño triángulo a la izquierda del elemento <select id=…
para revelar las opciones de ese desplegable.
6. Hay que cambiar el atributo value
de ese option
de user
a admin
. Para ello hacemos doble click sobre la palabra user
, y la cambiamos por admin
, quedando la cosa tal que así:
De este modo, cuando cambiemos la contraseña, realmente se la estaremos cambiando al usuario admin, no a user.
7. Pasamos a la pestaña Depurador desde la cual podremos alterar la ejecución del código Javascript que entrará en acción cuando pulsemos el botón de Apply. Hacemos click en el número de línea 73, esa que dice:
if(SHA256(node_psd[2].value) != OldPassword)
Con eso acabamos de crear un punto de ruptura, de manera que la ejecución del código se detendrá en esa sentencia cuando más adelante pulsemos el botón de Apply.
8. A continuación escribimos la antigua contraseña de admin en el primer campo de texto de la página. No la conocemos, así que escribid por ejemplo 8888
. Escribid la nueva contraseña que queréis para admin en los dos campos de texto siguientes y finalmente pulsad el botón de Apply. Voy a suponer que queremos poner como contraseña 6666
.
9. La ejecución se debería detener en la línea 73.
Veis ese chorizo largo de números y letras a la derecha de f8638b
… Es la contraseña actual de admin (5678, en teoría no la sabemos) encriptada mediante el algoritmo SHA256.
10. Si la contraseña es muy débil se puede directamente hacer un ataque de diccionario para tratar de revertir el hash. Se puede hacer ese ataque desde páginas como md5hashing.net/hash/sha256 y md5decrypt.net/en/Sha256, o directamente buscando en Google la contraseña encriptada. Si se averigua la contraseña actual de admin, el tutorial termina aquí, enhorabuena.
Pulsa F8 o el botón de play (triángulo señalando a la derecha) para que el guión termine la ejecución. Cierra sesión y entra de nuevo en el router como admin con la contraseña que acabas de descubrir.
11. Si revertir el hash resulta imposible, lo cual es lo más probable, no queda otra que machacarla con una nueva. Para ello vamos a alterar en tiempo real el valor de la variable OldPassword
de la línea 73 para que coincida con el valor que resulta de aplicar la función de hash SHA256 al valor que hemos escrito antes en el formulario como antigua contraseña (8888). Recordar que nos la hemos inventado porque la desconocíamos.
Para ello vamos a la pestaña Consola del menú de desarrollador y escribimos OldPassword=SHA256("8888")
y pulsamos Intro.
Volvemos a la pestaña Depurador y pulsamos F8 o pulsamos el botón de play (triángulo señalando a la derecha) para que el guión termine.
Por como está programado el código, acabamos de cambiar la contraseña de admin desde la cuenta user. Nos mostrará el mensaje "Web server will restart". Ahora ya podemos entrar como admin porque ahora la contraseña es la que hemos establecido nosotros (6666).
¿Y si no puedo acceder al router ni como user?
Es lo que me pasa a mi. No sé si es un bug en el software del router, pero muy normal no parece. Como admin puedo entrar sin problema, pero cada vez que quiero acceder como user, tengo que:
- Hacer una intentona fallida de entrar como admin, introduciendo una contraseña incorrecta. No os será difícil puesto que si estáis siguiendo este tutorial se supone que no conocéis la contraseña correcta. Os mostrará mensaje en rojo diciendo que la contraseña es incorrecta.
- A continuación introducir nombre de usuario user y su contraseña. Esta sí que la conocéis. A pesar de haber introducido una combinación válida de usuario y contraseña os quedaréis en la misma pantalla sin que se os muestre mensaje ninguno. Raro.
- Ahora en la barra de direcciones del navegador introducid
http://192.168.1.1/index.html
y pulsad intro. Llegaréis a la pantalla del punto 2 del tutorial. Ya podéis continuar por su punto 3.