viernes, 23 de agosto de 2013

Script para 2wire 4011g mejorado y geolocalización de ruteadores vulnerables


Mejoré mi script que explota una vulnerabilidad en los módems 2wire modelo 4011g-001, la intención fue aprender más sobre la Nmap Scripting Engine o NSE y el lenguaje de programación LUA. Si tienes este modelo pide cambio, son muy inseguros.

Lista de mejoras:
  • Abarca el caso general: busca la administración remota en puerto tcp 80 que esta abierto desde la LAN o cuando su firewall esta desactivado, si no la encuentra ahí busca un puerto tcp abierto entre el 2000 y 2999, ese puerto es aleatorio y su función principal es la de Petición de Conexión del protocolo TR-069, sin embargo deja expuesta la administración remota.
  • Si ya se conoce el puerto vulnerable, se puede forzar la ejecución del script usando +.
  • Obtiene información como dispositivos conectados, modelo exacto y número de serie directamente de la página de inicio de la configuración.
  • Obtiene información sensible de sus archivos como dirección MAC, configuración de la red inalámbrica, credenciales ppp, valores de fábrica, usuarios.
  • Muestra contraseñas conocidas de los usuarios root, tech, admin si estas no han sido cambiadas (muy poco probable que un usuario común lo haga por los pasos que hay que seguir para lograrlo). Además genera la contraseña del usuario rma, este usuario solo sirve para entrar por CLI, útil para ruteadores de otros ISP en el mundo.
  • Agregué una función experimental que intenta obtener la ubicación geográfica de un módem vulnerable usando la API de Geolocalización de Mapas de Google. Se envía el BSSID junto con la lista de dispositivos que se han conectado, si uno de esos dispositivos es o ha sido un Punto de Acceso podremos obtener coordenadas (radio-punto) muy exactas. Solo se muestran si el radio de incertidumbre es menor a 1500 metros. Se necesita una API Key activada para dicho servicio.
  • Uso de argumentos para cambiar el tipo de salida: normal (default), completa (muestra archivos obtenidos), corta (csv), o usando la librería vulns.

Ejemplo de la salida:
# nmap --script http-2wire-dtvuln -p 8080 192.168.1.254
...
PORT     STATE SERVICE
8080/tcp open  http
| http-2wire-dtvuln: 
|   modem: 2wire 4011G-001 fw 9.1.1.16
|   serie: 09230A01230
|   mac: 00:25:3c:00:11:22
|   bssid: 00:25:3c:00:11:23
|   default_essid: INFINITUM1230
|   default_wepkey1: 1234567890
|   essid: MY_WIFI
|   wepkey1: 1111122222
|   wpapass: emptypass
|   wifisec: wep
|   ppp: user@prodigyweb.com:password
|   dispositivos: 
|     00:19:e0:33:f2:01: TP-Link
|   usuarios: 
|     tech: 1234567890
|     root: mickey
|     admin: 1234567890
|     rma: 7Fh34#sd
|   coords: 20.0,-90.0,23
|_  vuln_ip_port: 192.168.1.254:80

Descarga el script


Agradezco a Paulino Calderón Pale por regalarme su libro Nmap 6: Network Exploration and Security Auditing Cookbook ya que me sirvió mucho. Es una excelente guía que muestra desde como instalar Nmap, sus opciones, su utilidad en varios casos prácticos hasta como hacer nuestros scripts. Precisamente mi capítulo favorito es el 9 "Writing Your Own NSE Scripts" porque algunas de las recetas me ayudarón a concretar ideas que quería implementar en mi nuevo script.








domingo, 24 de febrero de 2013

Vulnerabilidad WPS en módems Huawei HG532e


Adquirí un módem Huawei HG532e de los que esta dando TELMEX últimamente para ver que opciones tiene y que tan estable es.

Revisando la configuración de la red inalámbrica me encontré con un problema importante de seguridad, WPS (Wi-Fi Protected Setup) está habilitado de fábrica y el PIN del Punto de Acceso es predecible. Para los que visitan esta entrada y no están familiarizados con los términos, esto permite a cualquiera conectarse a nuestra red sin conocer la clave, solo ingresando el PIN de 8 dígitos.

El PIN de estos módems es formado al convertir a decimal los últimos 3 bytes del BSSID (que es la dirección MAC del Punto de Acceso) y agregando al final el checksum correspondiente. Ya existen programas que hacen el cálculo porque esto no es nuevo, muchos dispositivos forman su PIN de manera similar. Usando la herramienta reaver, se puede obtener la clave en una sola línea:

reaver -b f8:3d:ff:aa:bb:cc -p $(printf "%07d" $((0xaabbcc%10000000))) ...

Para protegerse y evitar intrusos, debes deshabilitar WPS de la siguiente manera:
  1. Apretar el botón reset que está atrás del módem por 10 segundos para regresar a los valores de fábrica, esto es importante para borrar la configuración de DDNS y múltiples SSIDs que pueden ser usados por intrusos para volver a obtener acceso.
  2. Ingresar en el navegador a http://192.168.1.254, el usuario es TELMEX y la contraseña es la WPA KEY de fábrica (ve la estampa de tu módem).
  3. En el menú izquierdo dirigirse a Básico > WLAN.
  4. En "Uso WPS" quitar la marca del cuadro Habilitar, los cambios son guardados automáticamente.
  5. Elegir una nueva "Clave compartida inicial", te recomiendo formar una que tenga más de 20 caracteres y dar clic en Guardar.


Deshabilitar WPS

Aunque es posible cambiar el AP PIN de WPS, las pruebas que hice muestran que es posible obtener la clave nuevamente hasta en 49 días en el peor de los casos usando reaver (cada 10 intentos fallidos de PIN entra en estado bloqueado por 1 hora). Por eso es mejor deshabilitar WPS.

lunes, 31 de diciembre de 2012

Vulnerabilidad Directory Traversal en módems 2wire 4011G y 5012NV

Dispositivos afectados:
2wire 4011G-001 con firmware <= 9.1.1.16
2wire 5012NV-002 con firmware <= 9.3.1.29
Posiblemente otros con firmware 9.x.x.x

Descripción:
Existe una vulnerabilidad en el formulario de inicio de sesión del portal de configuración por http de estos módems, específicamente en el control oculto llamado __ENH_ERROR_REDIRECT_PATH__ que no es validado correctamente en el servidor. Un atacante sin autenticación puede manipular su valor para obtener del dispositivo archivos con contraseñas de fábrica en texto plano, configuraciones, etc.

Severidad:
Alta

Contramedidas:
Al no contar con una Lista de Control de Acceso, no es posible protegerse efectivamente contra este ataque. Los usuarios que cuenten con estos modelos deben exigir un nuevo firmware (aún no disponible) o pedir un cambio de módem a su ISP.

Historial:
  • La descubrí en septiembre del 2012
  • Intento de contacto con Pace. De su página web: "if you are an end-user of a Pace set-top box or gateway product that you acquired from a service operator or retailer, please contact them directly for any support issues."
  • Intento de contacto con el ISP (TELMEX en mi caso). Envío de datos atravez de redes sociales: Nunca llaman de regreso.
  • Publicada el 31 de diciembre de 2012

Prueba de concepto:
Hice un script para nmap, si identifica al objetivo como 2wire intenta obtener varios archivos.
Enlace de descarga: PoC
Estadísticas (buscar rhttpd): internetcensus2012.bitbucket.org
ACTUALIZACIÓN: El enlace de descarga apunta a la versión más reciente del script y la salida será diferente, sin embargo la funcionalidad es la misma, ver mejoras.

viernes, 2 de marzo de 2012

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

He encontrado una forma más fácil y rápida de obtener usuario y password para la administración remota de los módems 2WIRE 2701HG-T que da Telmex para su servicio Infinitum ADSL. Aun así recomiendo leer la [parte 1] ya que gracias a eso pude identificar de inmediato los valores.

Es una página en XML y solo es posible obtenerla desde la LAN. No es necesario saber la contraseña del sistema, aunque en algunos modelos es posible que pida establecer una si antes no la tenía.

Este es el URL:
http://[ip-local]/xslt?PAGE=BJ_STATUS

El usuario como ya sabemos es el SerialNumber y el password aparece como el Nonce.


ACTUALIZACIÓN: Muchas gracias a Pedro Joaquín de Websec por incluir esta vulnerabilidad en su herramienta Routerpwn


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]

lunes, 21 de diciembre de 2009

Solución al problema con Pocket MSN en Windows Mobile 5

ACTUALIZACIÓN IMPORTANTE (ENERO 2011): A partir de octubre del 2010 Pocket MSN para Windows Mobile 5 dejó de funcionar definitivamente, hice las mismas pruebas pero ahora el servidor rechaza la conexión. Por esto aclaro que los siguientes pasos ya no funcionan. Dejaré este artículo solo para el recuerdo.

Desde principios de diciembre del 2009 todos los que tenemos una Pocket PC con Windows Mobile 5 no podíamos usar Pocket MSN para checar nuestros correos ni para usar el messenger. Al tratar de iniciar sesión salía el siguiente error:

Español: "Error al iniciar sesión. Vuelve a intentarlo."
Ingles: "Sign-in failed. Please try again."
Español desde messenger: "Error de inicio de sesión en MSN Messenger Service. El servicio no responde. Vuelva a intentarlo mas tarde."

Veo en los foros que muchos tienen este problema y los de "Soporte de Microsoft" solo se limitan a decir que ya no habrá servicio para nosotros y que actualicemos nuestros aparatos a Windows Mobile 6.x, como si todo fuera así de sencillo. Una solución temporal era usar Windows Live desde Internet Explorer y para el correo configurar nuestra cuenta usando POP3 y SMTP pero los que ya estamos acostumbrados a usar el Pocket MSN sabemos que no es lo mismo.

Como ya me había pasado algo parecido por tener el reloj desajustado supe de inmediato que podía ser un problema con los certificados de seguridad y lo confirmé cuando al entrar a la página web de MSN Mobile me salió una advertencia además de analizar el comportamiento de la aplicación con un sniffer. Lo que pasa es que cuando hay un conflicto con estos certificados el Pocket MSN no te muestra una advertencia como lo hace Internet Explorer y simplemente no te dejará conectarte al servicio. En nuestro caso no tenemos los certificados actualizados, de hecho algunos de los que vienen precargados ya caducaron.

Despues de un rato de buscar por Google finalmente encontré los certificados raíz mas actuales de VeriSign®, los instalé en mi dispositivo y adivinen que? problema resuelto.

Aquí pongo los pasos a seguir para descargar el certificado necesario e instalarlo en el Pocket PC:

1. Desde su computadora vayan a http://www.verisign.com/support/roots.html

2. Llenar el formulario y dar clic en "Accept", empezará la descarga de "roots.zip"

3. Abrir el zip que acabamos de bajar y localizar dentro del mismo el archivo "Class 3 Public Primary Certification Authority - G2.cer" que se encuentra en "VeriSign Root Certificates\Generation 2 (G2) PCAs\", ese es el certificado que necesitamos. Deben extraerlo y copiarlo al Pocket PC.

4. Usen el Explorador de Archivos para abrirlo, nos preguntará si deseamos instalarlo, dar "Si"

5. Para comprobar que ya está instalado ir a Inicio>Configuración>Sistema>Certificados, debe aparecer dentro de la pestaña "Raíz" como "Verisign Trust Network"

6. Ya deben poder entrar al Pocket MSN.


Si tu dispositivo lee archivos comprimidos en formato zip entonces puedes hacer la descarga desde ahí y abrir directamente el certificado sin tener que descomprimir todo. Dentro del zip que descargamos hay muchos certificados, podrían instalarlos todos en su Pocket PC pero el único que nos interesa por ahora es el que les indiqué. Yo por ejemplo ya instalé varios.

Espero me hagan saber si les funcionó.


INFORMACIÓN PARA DISPOSITIVOS BLOQUEADOS

Algunas personas recibirán el siguiente mensaje al tratar de instalar el certificado en la PDA:
Español - "El permiso de seguridad no fué suficiente para actualizar el dispositivo"
Inglés - "Security permission was insufficient to update your device"

Esto es debido a la configuración de seguridad que les dan algunos fabricantes a sus aparatos. Antes de meterse con el registro de Windows Mobile les recomiendo seguir estos pasos para instalarlo:

a) Mueve el certificado a una tarjeta de memoria dentro del PDA, si no tienes una entonces debes crear una carpeta llamada "Storage" en el directorio raíz y moverlo ahí. Esto es porque la herramienta que vamos a descargar solo busca certificados en "\Storage" o "\Storage Card".
b) Descarga desde tu computadora el ejecutable SmartPhoneAddcert.exe
c) Abrelo y descomprimelo en una carpeta fácil de encontrar.
d) Ve a esa carpeta y localiza "SpAddCert.exe", copialo al PDA y ejecutalo ahí.
e) Seleccionas el certificado, das OK y otra vez OK para instalarlo.
f) Reinicia tu PDA (Soft-Reset), consulta el manual si no sabes como hacerlo.




REFERENCIAS

(1) Cómo instalar certificados raíz en un dispositivo con Windows Mobile
(2) SmartPhoneAddcert.exe
(3) Installing SSL Certificates to a Locked Smartphone (Motorola Q, Cingular 3125 etc)
(4) Install SSL Certificates on a Windows Mobile Phone
(5) How to add root certificates to Windows Mobile 2003 Smartphone and to Windows Mobile 2002 Smartphone
(6) How to add your own root cert via CAB file

viernes, 18 de septiembre de 2009

Razones para no confiar en un GPS en el DF

Estas son algunas de las razones por las que uno no debe confiar en las rutas que calcula un dispositivo GPS para llegar de un lugar a otro, la lista se irá actualizando.

- Los ejes reversibles no estan programados en el GPS
- Bloqueos en calles y avenidas debido a obras, eventos, mercados u otras razones
- Falta incluir nuevos caminos en los mapas
- Algunas calles cerradas aparecen como transitables
- Software poco inteligente
- El nombre de las calles no esta bien registrado
- Las busquedas son algo complicadas porque el software no esta bien adaptado a nuestras direcciones

Actualmente estoy usando Destinator 7.

Ahora explico algunos detalles, aunque el programa recalcula la ruta una vez que tomamos otro camino es posible que al no tener considerados bloqueos desde un inicio nos lleve por una ruta mas larga.

Hay cosas muy simples que los programadores olvidaron considerar, por ejemplo, me sucedió que al pasar por debajo de una avenida (Churubusco) y tomar una de sus laterales, el software después de retomar la señal GPS me mostraba sobre el puente como si mi auto hubiera saltado, lo peor es que no corrigió y me mandaba por otro camino.

Aun así, creanme que es una gran herramienta.