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

10 comentarios:

  1. Medusa o Hydra ? Cual es mejor ?

    ResponderEliminar
  2. Creo que sería un tema de gustos y colores, o de comodidad, o de cual conoces mas, en lo personal mi primera opción sería hydra, sin embargo si no me funciona o bota la información que estoy requiriendo, pensaría en probar que tal me funciona medusa...

    Pensandolo bien, otra opción para la toma de decisiones puede ser el tipo de reporte que te arrojan cada una de las herramientas...

    Recuerda que para un ethical necesitas plasmar todo el trabajo realizado en un informe, entonces, lo ideal es que sea lo mas manejable posible para poder importarlo a una tabla por ejemplo....

    Espero haber sido de ayuda...

    Salu2...

    ResponderEliminar
  3. @ Anónimo1 @Juan Pablo Quiñe

    Pienso igual que Juan Pablo, es un tema de gustos personales. Depende desde el angulo que veas la pregunta. Sin embargo, para conocer algunas comparaciones tecnicas hechas por otros usuarios les dejo 2 links.

    http://www.foofus.net/~jmk/medusa/medusa-compare.html
    http://itbreathes.com/?p=4


    @ Anonimo2

    Gracias! me alegra que te haya gustado.

    ResponderEliminar
  4. Precision es el punto :

    HYDRA :

    ./hydra -l admin -P /home/user/toolz/dicts/test.pwd 192.168.1.137 http-get /dvwa/vulnerabilities/brute/
    Hydra v6.0 (c) 2011 by van Hauser / THC - use allowed only for legal purposes.
    Hydra (http://www.thc.org) starting at 2011-01-30 15:27:48
    [DATA] 16 tasks, 1 servers, 667 login tries (l:1/p:667), ~41 tries per task
    [DATA] attacking service http-get on port 80
    [80][www] host: 192.168.1.137 login: admin password: password
    [80][www] host: 192.168.1.137 login: admin password: passwordpassword
    [80][www] host: 192.168.1.137 login: admin password: PASSWORD
    [80][www] host: 192.168.1.137 login: admin password: Password
    [80][www] host: 192.168.1.137 login: admin password: drowssap
    [STATUS] attack finished for 192.168.1.137 (waiting for childs to finish)
    [80][www] host: 192.168.1.137 login: admin password: passworded
    [80][www] host: 192.168.1.137 login: admin password: passwording
    [80][www] host: 192.168.1.137 login: admin password: pwpassword
    [80][www] host: 192.168.1.137 login: admin password: pwdpassword
    [80][www] host: 192.168.1.137 login: admin password: adminpassword
    [80][www] host: 192.168.1.137 login: admin password: syspassword
    [80][www] host: 192.168.1.137 login: admin password: passwordpwd
    [80][www] host: 192.168.1.137 login: admin password: passwordpw
    [80][www] host: 192.168.1.137 login: admin password: passwordadmin
    [80][www] host: 192.168.1.137 login: admin password: p4ssw0rd
    [80][www] host: 192.168.1.137 login: admin password: passwordsys
    Hydra (http://www.thc.org) finished at 2011-01-30 15:27:48

    MEDUSA

    root@31337:/home/user/toolz/hydra-6.0-src# medusa -h 192.168.1.137 -u admin -P /home/user/toolz/dicts/test.pwd -M http -m DIR:dvwa/vulnerabilities/brute/
    Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks

    ACCOUNT CHECK: [http] Host: 192.168.1.137 (1 of 1, 0 complete) User: admin (1 of 1, 0 complete) Password: password (1 of 667 complete)
    ACCOUNT FOUND: [http] Host: 192.168.1.137 User: admin Password: password [SUCCESS]

    Incluso usando el parametro -f con Hydra, termina mostrando una lista de falsos positivos como se ve en la primera salida.

    ResponderEliminar
  5. bueno ami me gusto el tuto pero desde el punto de como se explota ahora para una auditoria se supone que la idea es simular al maximo un caso real y al ver lo q hiso mi duda seria q tanto ruido podria ocacionar que un "atacante" al hacer todo eso?
    bueno eso como duda :)
    por lo demas estuvo genial ;) saludos

    ResponderEliminar
  6. sin duda como ya dicen es cuestion de gustos...metasploit tambien tiene modulos para VNC , o exiten algunos explotis echos en java por internet , que me salvaron alguna vez ;)
    Solo te quedaste ahi con El VNC? para una auditoria?
    no revisaste otros servicios?
    ataque ing. social?

    etc...??

    ResponderEliminar
  7. @PerverthsO

    Gracias por los comentarios. Buena tu pregunta. Puede depender del tipo de servicio realizado. Si el personal operativo del cliente tiene conocimiento que una evaluación de seguridad esta siendo llevada a cabo, no hay problema. De lo contrario se pueden implementar tecnicas de evasion.

    Sin embargo, independientemente del tipo de evaluacion, el ruido creado no es del todo indeseable. Porque ? Porque ayuda a determinar si los mecanimso de protección desplegados por el cliente estan cumpliendo su labor y ese es uno de los objetivos de una evaluacion de seguridad informatica.

    @ Bl4ck_D4wn

    La gama de modulos auxiliares que tiene Metasploit son muy interesantes. Aunque cuidado con correr herramientas encontradas por Internet, algunas pueden ser maliciosas.

    Ciertamente esta auditoria a la robustez de las contraseñas VNC fue una de las varias tareas que realizamos en un servicio integral que duro mas de 40 dias calendarios. Escribir un post de todo el informe tomaria mucho tiempo ademas de violar acuerdos de confidencialidad :P

    ResponderEliminar
  8. si es peligroso, usar herramientas de Internet pero suelen ser opensource y el código es auditable..
    @PerverthsO tiene razón si la empresa hubiese tenido un buen IDS y IPS hubiese detectado el bruteforce a su servicio VNC... y como mínimo hubiese denegado vuestra ip por un tiempo ..
    Pero interesante 40 dias para una auditoria completa ..buen trabajo ;)

    ResponderEliminar
  9. Buenas tardes,
    Me ha gustado mucho tu articulo, yo siempre use gusta pero veo que medusa también funciona muy bien.
    Quisiera saber que archivo de passwords usastE, si le pasastes John the ripper con alguna regla para cubrir combinaciones y si es asi, que regla usaste.
    Normalmente yo he tirado de contraseñas de skull Security modificadas con algunas reglas de John.
    Gracias :) Un saludo

    ResponderEliminar