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.