Seguridad

Cómo hackear un Router de casa para conseguir la Password SIP: una PoC Just for Fun!

Este artículo llega con un retraso de aproximadamente cinco años. Ha residido en estado latente mientras escribía el libro de 0xWord titulado «Hacking Home Devices I: PoCs & Hacks Just for Fun!«. La razón de esta “dilatación” es que este artículo fue el detonante que inspiró mi nuevo libro, gracias a Chema Alonso, quien me sugirió convertirlo en un libro completo. Hoy os traigo un resumen de lo que explico en el libro.

Así nació este proyecto que lo bauticé como “Book & Roll”, el libro que me mantuvo ocupado durante aproximadamente cuatro años mientras desarrollaba otras ideas que tenía en mente.


El nuevo libro de 0xWord para aprender a buscar bugs en casa.
Escrito por Gerard Fuguet.

Señoras y señores, hackers, a continuación se expone el artículo en versión resumida pero ofreciendo más nivel de detalles sí lo requerís oportuno, pues incluye el combo de White Paper + vídeo del proceso (como de costumbre).


Comodidad VS Seguridad


La comodidad ha llevado a la despreocupación por ciertas cosas elementales, como la seguridad digital al estar conectados a Internet. Recuerdo mi primer módem, un U.S. Robotics 56K faxmodem, donde se apreciaba un surfista saliendo de una pantalla CRC en la caja.

Figura 3: Caja del U.S. Robotics 56K faxmodem versión alemana

Y cómo la tecnología ha evolucionado desde esos días hasta los routers sofisticados que tenemos hoy en día.
Cambié en aquel entonces de Movistar a Adamo, (motivado por razones personales) y me encontré explorando la seguridad de los routers proporcionados por Adamo, específicamente el Inteno EG200 basado en OpenWRT.


Configuración de VoIP


Decidí investigar para sacar la configuración de la VoIP de mi nuevo router para así configurarlo como cliente SIP en otro equipo (tal y como lo tuve anteriormente con el router SmartWiFi de Movistar – la versión antigua -). Comencé antes con pruebas de velocidad y algunas llamadas telefónicas para cerciorarme de que el servicio funcionaba correctamente.  Con VoiP se pueden hacer muchas cosas… ya sabéis.

Después investigué la configuración SIP en foros de Internet, encontrando información útil pero incompleta en bandaancha.eu. Aunque enfrenté algunos desafíos, persistí en mi búsqueda para dar con una solución.


Interceptando Tráfico &m; Information Gathering


Utilicé un TAP pasivo (Throwing Star LAN Tap Pro) para interceptar el tráfico de red entre el router y la ONT.

Figura 5: Dirección que toman los paquetes en Throwing Star LAN Tap Pro

Con herramientas como Wireshark, capturé la autenticación SIP mediante el protocolo Digest.

Figura 6: Capturando autenticación Digest

Aunque no logré descifrar la información, esta técnica me permitió acercarme un poco más a mi objetivo. Intenté obtener la contraseña SIP a través de ingeniería social, pero tampoco funcionó. A través de un SMS que llegaba a tu móvil al darte de alta, pude deducir que el usuario se componía de 6 números y el password de 8 caracteres alfanuméricos (a-z, A-Z y 0-9).

Figura 7: SMS de alta enviado por Adamo

El servicio técnico me confirmó que sí se componía la clave de 8 dígitos, y eso era todo hasta el momento…


Jugando con Exploits y WebSockets


Probé alternativa con varios exploits conocidos para routers Inteno, todos ya parcheados por Neonsea. Entonces, decidí investigar la comunicación a través de WebSockets. Utilizando herramientas como curl y Firefox, interactué con el router mediante comandos ubus para obtener información.

Convertimos a nuestro Firefox en un auténtico cliente WebSocket, sacamos jugo de su buena referencia y así lo plasmamos:

1. Creando el socket con su correspondiente protocolo.
var superSocket = new WebSocket(«ws://192.168.1.1/», «ubus-json»)
2. Log, muestra las respuestas por cada mensaje enviado.
superSocket.onmessage = function (event) {console.log(event.data)}

 3. Solicitando un id de sesión haciendo un login con el usuario del router (user) y su contraseña del WiFi que viene por defecto.


superSocket.send(JSON.stringify({«jsonrpc»:»2.0″,»method»:»call»,»params»:[«00000000000000000000000000000000″,»session»,»login»,{«username»:»user»,»password»:»wifis-password»}],»id»:0}))
Figura 8: Listando los comandos que brinda y ejemplo de ejecución

Esto generó más juego con los comandos ofrecidos así que, la diversión prosiguió… Luego descubrí un archivo .enc que parecía contener datos valiosos.

Figura 9: Petición GET, HTTP del fichero .enc

Pero el fichero estaba cifrado… nuevo reto.

Descifrando el Archivo .enc

Descubrí el algoritmo 3DES utilizado para cifrar el archivo .enc en un manual de Inteno.

Figura 10: Mecanismo de cifrado usando 3DES

Utilizando comandos en openssl (como se hacía en WhatsApp para ver las fotos de 1 sólo uso) y la llave de cifrado obtenida en los params de la llamada que capturamos a través de WebSockets (Figura 8) logré descifrar el archivo.

Figura 11: Mostrando el contenido de Provisioning.conf

Revelando un archivo .tar.gz que contenía la configuración de aprovisionamiento, incluida la contraseña SIP.

Reporte de la Vulnerabilidad y CVE

Compartí mi hallazgo con Inteno y Adamo. Cooperé con ellos para solucionar la vulnerabilidad y finalmente, se implementó un parche.

Figura 12: Comunicación para solucionar el problema

Recibí el CVE ID (CVE-2019-13140) por esta vulnerabilidad. El proceso no fue sencillo, pero la cooperación y la persistencia dieron sus frutos.


Reflexiones Finales


Creía que Movistar era de lo más restrictivo con los dispositivos que brinda a los clientes… y resulta que no, todo lo contrario, y se pueden hacer muchísimas cosas con SmartWiFi – que lo tienes hasta en la Televisión –. He podido hacer más cosas a mi “aire” con ellos que con cualquier otro operador… Supongo que el temor encoge/restringe protegiendo a los suyos ante cualquier exposición peligrosa. 
¿Pero cómo proteger? ¿Estaríamos más seguros si nos quedásemos en casa todo el día sin salir al exterior? Sí uno decide hacerlo, es totalmente libre de acogerse a lo que quiera, pero que tenga al menos la opción de abrir la puerta. El router de Inteno que Adamo brindaba no daba la opción de cambiar la contraseña, si alguien la adivina, si alguien sabía su “secreto”, hasta que no se cambiase de dispositivo, no había nada que hacer… Y es una pena, porque son equipos que no están nada mal. Se desaprovechan muchas características por la decisión de acotamiento de funciones.
El password de la WiFi cumple con los criterios de robustez, solo que el hecho de “momificarse” le puede convertir en “carne de cañón”.

Sólo quería aquello que me pertenecía, y sólo faltaba una parte vital para que funcionase, una contraseña para deshacer la esclavitud por la que estaba pasando la VoIP ¿Porque negártelo? Apunto estuve en adentrarme por la vía física, por consola RS232 (USB-TTL) pinchando en la placa del router, pensé que esa era mi única salida (o terminar con un trágico final, en un callejón sin salida).

 
Quise probar otros caminos y ver si era factible realizar la fuerza bruta usando HashCat una vez capturado el hash MD5 con el TAP. No emplee ningún diccionario, utilice que se oscilara en un rango de dígitos. Tal que:

hashcat64.exe -m 11400 -a 3 adamo.hash -1 ?l?u?d ?1?1?1?1?1?1?1?1
Figura 14: Password crackeado bajo HashCat

Finalmente, agradezco a la comunidad de BandaAncha.eu por todo su apoyo. La pregunta que formulé fue: ¿Facilitará Adamo la contraseña SIP a quienes lo soliciten?

Conclusión

Este viaje en la seguridad de dispositivos del hogar ha demostrado la importancia de la seguridad digital y la cooperación entre usuarios y proveedores. Con determinación y recursos adecuados, es posible mejorar la seguridad y obtener las configuraciones críticas para el correcto funcionamiento de los dispositivos.

El histórico, o llamado Timeline, fue:

2019-06-29 – White Paper done
2019-07-01 – CVE assigned
2019-07-09 – Notified to Inteno
2019-07-11 – Adamo aware and ask for detailed info
2019-07-12 – Info facilitated
2019-07-25 – Early patch available and applied (Cooperation starts)
2019-07-26 – Tested and failed (VoIP not working)
2019-08-27 – New firmware available
2019-08-30 – Firmware EG200-WU7P1U_ADAMO3.16.8-190820_0937 applied on router
2019-08-31 – Tested OK
2019-09-04 – Disclosure published

¡Bonus Track!

Para mas detalles, os dejo aquí el “White Paper” de todo este mejunje digital.


Y un vídeo sobre lo visto, esta vez en castellano con subs y textos en inglés (international mode ON). No hubiera tenido tal buen aspecto sin la ayuda de Esther Martínez (la chica que señala con el dedo en el vídeo), que se lo curra para dejar unos acabados más pulidos (que esto de los vídeos creerme ¡Que tiene su miga!). 

Figura 16: Hack retrieve the SIP Password of Adamo Telecom
[CVE-2019-13140]

Nota: Hasta el segundo 37, Se hace mención especial a la gente del foro de Banda Ancha. Prometí compartirlo con tod@s ell@s si tenía éxito extrayendo el password de la SIP.

Remember… Be Good, Be Hackers!


Autor: Gerard Fuguet (Contactar con Gerard Fuguet)


Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.