viernes, 28 de enero de 2011

Auditoria de passwords : Brute Forcing VNC

Hola.

Queria empezar el primer articulo de este año compartiendo con ustedes un escenario real en los servicios que realizamos. Hace unas semanas me encontraba en la ultima (y mas interesante) etapa de un proyecto de Ethical Hacking: la explotacion o comprobacion de vulnerabilidades.

Los resultados fueron los esperados: control de varios equipos sensibles tanto externa como internamente, nuevo conocimiento adquirido en el ambito tecnico asi como en la gestion de un proyecto y ademas una carpeta llena de archivos de evidencia esperando ser plasmados en la siguiente etapa : la elaboracion de entregables que tanto le gusta a los consultores de Open-Sec.

Nota: Toda informacion relevante presentada (rangos ip, passwords, numero de hosts, capturas, etc, etc) ha sido modificada para guardar la confidencialidad respectiva.

Revisando los resultados de Nmap veo que muchas de las estaciones de trabajo cuentan con el puerto 5900 abierto. Como saben, este es uno de los puertos por defecto que utiliza el protocolo RFB. RFB es utilizado por las distinas implementaciones del sistema VNC (Virtual Network Computing) que permiten la administracion grafica y remota de un equipo. Pero, estaciones de trabajo con VNC ? Esto es algo que ya he visto en otras organizaciones, es una solucion normalmente utilizada para que el personal de soporte pueda gestionar los problemas de los usuarios remotamente.

Los que han utilizado VNC antes sabran que en instalaciones por defecto lo unico que se configura en el servidor para la autenticacion es un password. En el caso de RealVNC, por ejemplo, es necesario obtener una versión de pago para contar con la funcionalidad de autenticacion nativa. TightVNC, no cuenta con esa funcionalidad mientras que en UltraVNC si es posible asociar la autenticación nativa o incluso al dominio (pero por defecto es solo un password).


Teniendo en cuenta que estoy enfrentado a una red corporativa con mas de 500 nodos será posible que cada una de las instalaciones VNC tenga un password distinto ? O los administradores eligieron un único password para el control de todos, o la mayoria, de los equipos ?

Vamos a comprobar esta hipotesis. Primero utilizamos el siempre util nmap para determinar el subconjunto de equipos que cuentan con el servicio VNC activo en uno de los segmentos de red.

 nmap -p 5900 -oG vnc_servers 10.0.0.0/24  

Nmap nos permite crear 3 tipos de reportes. Utilizo el parametro -oG para crear el reporte, como nmap le llama, "grepeable" que puede ser tratado de manera eficiente con el comando grep que es lo que haremos. De esta forma, sera mas facil crear una lista de equipos.


Ahora jugamos un poco con grep y cut.

 cat vnc_servers | grep open | cut -d" " -f2  

Lista de servidores VNC creada. Lo siguiente es crear un diccionario customizado para la organizacion, pueden utilizar una herramienta como rsmangler que permite crear un diccionario recibiendo algunos parametros que utiliza como semilla para el resultado.





La herramienta a utilizar para la auditoria de passwords en este caso sera medusa que tiene un modulo para la autenticacion VNC. Otra opcion es hydra que tambien soporta conexiones hacia VNC. Ahora a correr medusa y esperar los resultados :

 medusa -H vnc_hosts -u "" -P dict.txt -M vnc -r 5 -T 1 -t 1  



Si enviamos el output a un archivo y luego "grepeamos" veremos el resultado final.

Interesante resultado. Para comprobarlo, pueden utilizar cualquier cliente VNC, en mi caso xtightvncviewer


Eso fue todo,  espero que haya sido de interes para alguien. Seria interesante ver comentarios, quejas, consultas, divagaciones.

Happy Hacking,

Mauricio Velazco
http://twitter.com/mvelazco