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.