sábado, 20 de agosto de 2011

Como entrar a tu módem 2wire de Telmex por el puerto 50001 [parte 1]

Muchos ya saben que los módems 2WIRE que da Telmex traen abierto el puerto TCP 50001 y que al usar https nos pide usuario y password para poder entrar a lo que se sospechaba era una interfaz de configuración remota.

Hasta ahora no se conocían dichos valores, les voy a mostrar como logré obtenerlos.

Se me ocurrió que tal vez usando TR-069 podría obtener el usuario y contraseña de la administración remota. TR-069 describe el CPE WAN Management Protocol (CWMP), mediante este el ISP puede auto-configurar un Customer Premises Equipment o CPE (en nuestro caso el módem), actualizar su firmware, administrar módulos, monitorearlo y ejecutar diagnósticos, todo remotamente desde un Auto-Configuration Server (ACS). Para más información técnica leer http://www.broadband-forum.org/technical/download/TR-069_Amendment-3.pdf

La idea es que el 2wire use el ACS que levantemos y no el de Telmex (https://cwmp.telmex.com/), entre algunos pocos proyectos que encontré decidí probar el siguiente:
http://github.com/dpavlin/perl-cwmp

Me pareció ligero y fácil de instalar, básicamente se va a encargar de pedirle todos los parámetros que pueda a nuestro módem, aunque también puede hacer otras funciones como modificar valores.

Cuando empecé a probarlo me di cuenta de que entraba en un ciclo infinito donde solo obtenía el nombre de los parámetros y si estos son modificables o no. Así que recomiendo hacer el siguiente paso primero para ordenarle manualmente que obtenga también los valores (creando una cola):
$./bin/cpe-queue.pl [SerialNumber] --introspect

Ya podemos iniciar el servidor:
$ ./bin/acs.pl

Ahora debemos cambiar el ACS URL de Telmex que se encuentra en http://192.168.1.254/mdc > "Avanzada" > "Configurar Servicios" por el URL del servidor que pusimos localmente, por ejemplo http://192.168.1.1:3333/

NOTA: Al hacer esto, el usuario y contraseña para la conexión a Internet cambian a sus valores predeterminados.

Hay que esperar a que el módem inicie una conexión con el ACS para que le pueda pedir parámetros, esto puede ocurrir por un informe periódico u otros eventos, si tarda mucho podemos reiniciar el módem. También se podría hacer un "Connection Request" al puerto 3479 del 2wire al path '/tr069_connreq_[OUI]-[SerialNumber]' pero la contraseña no la conozco, sin embargo puede ser modificado por el ACS :). La función de ese puerto es la misma que tienen el 7547 en los Huawei y el 8085 de los Thompson, solo se le indica que se conecte al servidor, no es un acceso remoto.

Una vez iniciada la conexión empiezan los request, después de unos 500 pueden detenerlo y revisar el archivo .yml generado:
$ cat yaml/*.yml | grep MDC


El parámetro exacto es InternetGatewayDevice.X_00D09E_Custom.MDCURL y dentro del URL aparecen como usuario el número de serie y como contraseña un número hexadecimal de 36 dígitos.

Finalmente probamos si nos acepta esos valores desde https://IP-PUBLICA:50001/  y si todo va bien ya podemos hacer modificaciones a nuestro módem desde Internet.



Otra forma de obtener estos valores es ir a http://192.168.1.254/mdc y aplicar un filtro "cwmd" en el "Registro Detallado", y buscar una entrada similar a esta:
WRN [FECHA] cwmd: server=https://[OUI]-[SerialNumber]:[Password]@cwmp.telmex.com/ result 400 - retrying
pero no es seguro que dicha entrada este presente en el log.

Probado en los 2WIRE 2701HG-T con firmware 5.29.52.0 y 5.29.135.5

Es recomendable desactivar esta opción pues dispositivos como el de la prueba son vulnerables a un ataque de denegación de servicio. Vayan a http://192.168.1.254/ "Bloqueo de intrusos" > "Configuración avanzada" y desactiven la marca en "Administración remota".
http://www.hakim.ws/2wire/1-003.full.txt

Ir a la [parte 2]