jueves, 17 de enero de 2008

(casi) Cero Seguridad en routers WIFI vía UPnP

Se publicó hace poco un par de papers sobre el uso del protocolo UPnP como un herramienta para el acceso ilegal a un sistema. Acá hay un artículo muy bueno, en buen español, contando rápidamente y en general algunos bits & bytes de este tema. A diferencia de lo que sigue.


UPnP
UPnP (Universal Plug and Play Protocol), es un protocolo que permite la interacción punto a punto (p2p) entre dispositivos, cualquier dispositivo y medio en gral. puede soportar UPnP (routers, dispositivos que usan bluetooth, dispositivos firewire, cámaras web inalámbricas, un sistema operativo, etc.), y no se requiere drivers (instalados) para que funcione (se usa protocolos comunes ya incluídos en los dispositivos "UPnP Compatibles").

Qué se puede hacer con UPnP? Un dispositivo UPnP compatible de cualquier marca y tipo puede unirse dinámicamente a una red, obteniendo de otro/s dispositivo (un router x ejemplo) la dirección IP (servidores DHCP y DNS son opcionales), tambien anuncia su nombre y publica sus propias capacidades, al igual que puede preguntar a otros dispositivos sobre las suyas. Lo último, los dispositivos pueden abandonar la red sin dejar atrás ninguna información de estado detrás.


Cómo funciona UPnP
El protocolo funciona en texto plano, sin autenticación y en muchos dispositivos (el 90% al parecer), permite realizar tareas administrativas.

Sigo la explicación traduciendo libremente el texto de Gnucitizen (claro y conciso):

"UPnP está basado en varias tecnologías: SSDP (Simple Service Discovery Protocol), GENA (Generic Event Notification Architecture), SOAP (Simple Object Access Protocol) y XML (formato libre). Cada una de estas tecnologías es responsable de tratar con partes particulares del stack UPnP, Aquí hay algunas pocas cosas que deberías conocer acerca de UPnP:

- Direccionamiento: primero que todo, dado el hecho de que cada dispositivo necesita ser conectado en caliente a una red, este dispositivo debería tener un cliente DHCP (que le permitiría tomar una IP automáticamente). No es muy interesante, pero es cierto que casi siempre que el dispositivo no tiene habilitado DHCP, tampoco suele tener habilitado UPnP. 

(N.del T. yo discrepo de esto, si en el conjunto de instrucciones UPnP de un dispositivo "consultante" hubiera una extensión - privada - de comandos UPnP que permitiera configurar la IP/DNS del dispositivo "consultante" UPnP - por ejemplo, una aplicación UPnP en modo Administrador en XP que puede cambiar la configuración de red de la PC - , el cliente DHCP sería irrelevante, y si el dispositivo "consultado" brinda todos datos necesarios para conectarse a la red, bingo! conexión sin DHCP)

- Descubrimiento: Hay un momento en que SSDP entra en escena. Cada dispositivo UPnP compatible publica sus servicios en una URL particular. Para detectar todos los dispositivos UPnP se necesita enviar paquetes que tengan el formato SSDP (un paquete). No voy a detalles de cómo hacer esto, pero es trivial, muy similar a cómo funciona HTTP con pocas excepciones.

- Descripción: Una vez que los dispositivos son descubiertos, es momento de leer la descripción del dispositivo. Esta información está en archivos XML que pueden ser traídos desde la URL obtenida en el proceso de descubrimiento. Una vez que leemos los archivos, ya sabremos que clase de métodos (comandos) y parámetros son soportados por ese dispositivo en particular.

- Control: Aquí ya podremos controlar el dispositivo enviando los tipos correctos de pedidos como mensajes SOAP. En el cuerpo del mensaje SOAP colocamos el nombre del método (comando), parámetros y valores; luego lo envíamos al punto de control del dispositivo, el cual procesa el comando y envía algún tipo de output, que es tambien encapsulado en un mensaje SOAP.

Esto es cómo funciona en general UPnP. Se sugiere leer más sobre el procolo porque es algo que vale la pena conocer (como se ve luego)."

Hackeando con UPnP
Acá sigo con la traducción libre de uno de los papers:

"En general, cualquier dispositivo que soporte UPnP es hackeable. Supongamos que te conectas a una red WIFI y puedes ver que el gateway es algún tipo de router. Como atacante/pen-tester, tratarás de adivinar la contraseña de administración para poder usar la interfaz web de administración del equipo. Si el dispositivo fue dejado con la configuración por defecto es cuestión de pocas pruebas (o google) para encontrar la contraseña correcta. Qué ocurre si la contraseña fue cambiada? Agarrar los forzadores (de claves) por fuerza bruta!!!

Alto ahí. En situaciones como esa, yo probaría en cambio con UPnP. Primero que todo, UPnp no soporta ningun tipo de autenticación, segundo, muchos routers WIFI proveen funcionalidades UPnP para modificar todas las opciones de configuración del dispositivo y así, exponerlo a otros (tipos de) ataques subsiguientes.

En muchos dispositivos puedes modificar los valores de los DNS que usa el router (ello es equivalente a controlar el tráfico de capa 3: http, ftp, correo, etc.), otros soportan cambiar la contraseña de administración directamente, otros soportan el añadido de puertos redireccionados (port forwarding), rebootear el router, desconectar PPP, obtener (robar) las credenciales (user/pass) PPP, borrar las credenciales PPP, configurar valores WIFI, obtener valores WIFI, etc."

Por si no queda claro, la gente de Gnucitizen resalta en el paper claramente:

"La verdad es que es trivial acceder sin autorización y controlar un router WIFI, todo lo que un atacante necesita es: localizar el AP (router WIFI), enviar un pedido SSDP, leer la descripción del AP, verificar si existe un método (comando) para modificar los DNS, si es así (bastante seguro), ejecutar un pedido SOAP para cambiar el/los DNS a uno controlado por el atacante y luego seguir con el siguiente objetivo."

Todo ello sin ninguna autenticación, solo tu PC/notebook en el rango de la red WIFI, y con las herramientas apropiadas puedes hacer lo anterior.


UPnP desde LAN y/o Internet
Una cuestión clave de UPnP es que se creía que solo podía ser usado en entornos LAN. Gnucitizen ha publicado dos papers más,

- uno donde explican detalladamente cómo usar una vulnerabilidad XSS para acceder dispositivos UPnP
- otro donde explican cómo utilizar flash para hacer lo mismo de antes (sin ninguna vulnerabilidad de por medio), no está demás aclarar que ningun antivirus/antispyware/firewall detendría esto.

Conclusiones
Hasta el momento en que aparezcan la herramientas más automatizadas, es limitado el ámbito en que puden utilizar estos conocimientos; sin embargo la customización de paquetes en general es muy conocida a nivel de especialistas en seguridad/hackers, y la necesaria para utilizar UPnP como medio de penetración de sistemas no se sale de lo normal.

La gente de Gnucitizen declara que publican toda la información para hacer conocer estos riesgos y con la idea de que en poco tiempo la situación mejore dramáticamente en cuanto la seguridad de las implementaciones de UPnP en dispositivos.

Referencias

Hacking con UPnP
http://www.gnucitizen.org/blog/hacking-with-upnp-universal-plug-and-play

Hacking con UPnP desde Internet, usando XSS
http://www.gnucitizen.org/blog/bt-home-flub-pwnin-the-bt-home-hub-5

Hacking con UPnP desde Internet, usando Flash
http://www.gnucitizen.org/blog/hacking-the-interwebs

http://es.wikipedia.org/wiki/Universal_Plug_and_Play (muy general)
http://en.wikipedia.org/wiki/Universal_Plug_and_Play (mucho mejor)

No hay comentarios: