Auditoria de Passwords - Bruteforcing VNC

Hace unas semanas me encontraba en la última (y más interesante) etapa de un proyecto de Ethical Hacking: la explotación o comprobación de vulnerabilidades.

Los resultados fueron los esperados: control de varios equipos sensibles tanto externa como internamente, nuevo conocimiento adquirido en el ámbito técnico así como en la gestión de un proyecto y además una carpeta llena de archivos de evidencia esperando ser plasmados en la siguiente etapa : la elaboración de entregables que tanto le gusta a los consultores de Open-Sec.


Nota: Toda información 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 distintas implementaciones del sistema VNC (Virtual Network Computing) que permiten la administración gráfica y remota de un equipo. Pero, estaciones de trabajo con VNC ? Esto es algo que ya he visto en otras organizaciones, es una solución normalmente utilizada para que el personal de soporte pueda gestionar los problemas de los usuarios remotamente.

Los que han utilizado VNC antes sabrán que en instalaciones
por defecto lo único que se configura en el servidor para la autenticación es un password. En el caso de RealVNC, por ejemplo, es necesario obtener una versión de pago para contar con la funcionalidad de autenticación 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 mayoría, de los equipos ?

Vamos a comprobar esta hipótesis. Primero utilizamos el siempre útil 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 parámetro -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 organización, pueden utilizar una herramienta como rsmangler que permite crear un diccionario recibiendo algunos parámetros 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 autenticación VNC. Otra opción es hydra que también 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 interés para alguien. Seria interesante ver comentarios, quejas, consultas, divagaciones.


Happy Hacking,


Mauricio Velazco

http://twitter.com/mvelazco

Entrada original

3 comentarios :

  1. Soy un poco novato en todo esto de la Seguridad,pero me han entrado ganas de probar Hydra o medusa.

    Gracias por el tutorial dejo mi divagación y me voy a probarlo =P

    ResponderEliminar
  2. Realmente con un diccionario crees que se puede sacar el password? No se como estará el tema de los diccionarios hoy en día, pero hay muchas permutaciones de números y letras? O sólo son palabras con algún número?

    En fin, que veo complicado romper un password con un diccionario... Almenos los mios ;)

    Por otro lado, imagino que a nivel de servidor VNC se podrá establecer un número máximo de autenticaciones probadas/fallidas, no? No es fácil de configurar este parámetro?

    Buena entrada !

    ResponderEliminar
  3. Por desgracias para unos y un punto a favor de otros (devil), las personas suelen utilizar password simples o comunes (fácil de recordar). típicos 1234, gata, nombres etc. y estos el tipo de palabras que contiene un diccionario.

    Aca puedes encontrar un ejemplo a lo que me refiero.
    http://bit.ly/dVTToA

    ResponderEliminar