UPnP (Universal Plug-N-Play) es un protocolo que permite que varios dispositivos de red se autoconfiguren por si mismos. Uno de los usos mas comunes de este protocolo es permitir que dispositivos o programas abran puertos en tu router casero con el objetivo de comunicarse apropiadamente con el mundo exterior (El Xbox, por ejemplo, lo hace). El protocolo UPnP está basado en protocolos y especificaciones pre-existentes, más precisamente en UDP, SSDP, SOAP y XML.
Este artículo tratará sobre algunos problemas de seguridad relacionados con UPnP, brevemente describe el funcionamiento interior del protocolo, y muestra como identificar y analizar los dispositivos UPnP en una red usando herramientas open source. En el artículo nos enfocaremos en IGDs (Internet Gateway Devices ó Dispositivos de pasarela a Internet, por ejemplo, routers), pero es importante recordar que hay muchos otros dispositivos y sistemas que soportan UPnP también, y pueden ser vulnerables a ataques similares.
El problema con UPnP
Permitir que programas legítimos alteren la configuración del router a medida que lo vayan necesito hace la vida de los usuarios de Joe mucho más fácil - desafortunadamente, también hace la vida de los hackers de Joe más fácil. Con el fin de que UPnP sea verdaderamente “plug-n-play”, no hay ninguna autenticación en este protocolo; es decir, cualquier programa puede usar UPnP para alterar la configuración del router (o de cualquier otro dispositivo UPnP).
A principios de este año, PDP (de GNUCITIZEN) publicó una investigación que había realizado sobre la seguridad de UPnP. Si bien los problemas de seguridad de UPnP no son nuevos, es un protocolo que normalmente solo funciona dentro de una red local, forzando al atacante a infiltrarse en la red antes de explotar cualquier vulnerabilidad de UPnP. Sin embargo, PDP mostró que era posible usar Flash para enviar peticiones UPnP desde dentro del navegador de un cliente a un router con UPnP habilitado y cambiar la configuración del firewall de este. Dado que el archivo Flash puede ser embebido dentro de una página maliciosa, o inyectada dentro de una página confiable via XSS o SQL Injection, un atacante podría usar esto para remotamente alterar la configuración del router. Lo que es peor es que en la mayoría de los casos, estos cambios en la configuración no son reflejados en la interfaz administrativa del router, dejando la víctima completamente sin conocimiento de lo que ha ocurrido.
Por supuesto, para las redes inalámbricas UPnP es peligroso incluso sin el ataque Flash, tanto que un atacante puede mantener distancia física de la red mientras gana acceso a la red interna. Una vez dentro, puede empezar a alterar la configuración del router vía UPnP.
¿Qué tan serio es esto?
La seriedad de este ataque depende en la implementación de UPnP usada por el router, como también de la configuración del router. Por ejemplo, el ataque de la alteración de la configuración vía Flash descrita anteriormente debe de adivinar cual es la dirección IP del router; esta es usualmente fácil de predecir, pero algunos router también se asignan sus propios hostnames lo cual hace que cualquier intento de adivinación de la dirección IP no funcione. Sin embargo, incluso si un router no se resuelve a un hostname, la seguridad a través de la oscuridad no es una buena práctica, y simplemente cambiar la dirección IP no debe considerarse como suficiente defensa contra un ataque de este tipo.
Además, algunas implementaciones UPnP son mas riesgosas que otras; varios IGDs con UPnP activado permiten que la configuración DNS sea directamente alterada vía UPnP, lo cual sería solo el comienzo de un ataque MiTM/Phishing. Otros, particularmente esos dispositivos que usan algún tipo de Linux embebido, de hecho, usan los valores que reciben a través de las peticiones UPnP sin filtrarlos, como parte de comandos shell ejecutados, dejándolos abiertos a ataques de inyección de comandos. Una lista de algunos router vulnerables puede ser encontrada aquí.
OK, digamos que ningún hostname es asignado a la IP del router, y su implementación UPnP no es vulnerable a DNS-Hijacking o inyección de comandos. Desafornatudamente, todavía no estamos fuera de peligros; recuerda que el uso mas común de UPnP es abrir puertos en un router. Debido a esto, casi todos los router que soportan UPnP también soportan la acción AddPortMapping; esta esencialmente permite a algun dispositivo o software decirle al router “redirige todo el tráfico proveniente del puerto X al host interno Y de la WAN el cual está en escucha en el puerto Z”. Bueno, ¿Y qué si redirigimos todo el tráfico proveniente de la WAN por el puerto 8080 a yahoo.com por el puerto 80? Ya sé, ya sé, yahoo.com no es un host interno! Pero algunas configuraciones UPnP no verifican lo que estan redirigiendo a los hosts internos, y en consecuencia se permite al atacante rebotar su tráfico por medio del router. Además, si el atacante conoce la dirección IP interna del router o su hostname, puede ser capaz de redirigir algun puerto del lado WAN del router al puerto 80 del lado LAN del router, abriendo efectivamente la interfaz administrativa del router al mundo.
Pronto la segunda parte…
http://www.dragonjar.org/hacking-de-redes-upnp-parte-i.xhtml
No hay comentarios:
Publicar un comentario