jueves, 11 de febrero de 2010

Explotando SMB NTLM

Hace unos días, los investigadores Hernán Ochoa y Agustín Azubel, publicaron una vulnerabilidad en la implementación de NTLMv1 de Microsoft, el protocolo que utilizan los sistemas operativos Microsoft para la autenticación a través de la red.

A pesar de que Microsoft ya ha publicado un parche que corrige la vulnerabilidad, existe un riesgo muy alto para aquellos usuarios que no se encuentren al día con sus actualizaciones. La vulnerabilidad afecta a TODOS los productos Microsoft que soporten NTLMv1, es decir, absolutamente TODOS los sistemas operativos Microsoft que existen en el mercado. La vulnerabilidad existe, por tanto, desde hace 17 años.

La vulnerabilidad consiste en una debilidad en la elección del Reto en el mecanismo Reto-Respuesta utilizado para realizar la autenticación. Según se ha publicado en el advisory de la vulnerabilidad, realizando un número suficiente de conexiones a un servicio SMB, los Retos este envía al cliente para realizar la autenticación comienzan a repetirse en un corto espacio de tiempo.

Esta vulnerabilidad puede ser explotada de varias formas, teniendo como consecuencia la autenticación en un sistema con los privilegios de un usuario sin conocer la contraseña de dicho usuario, algo similar a lo que conseguirías como las técnicas de Pass-The-Hash pero mucho más terrorífico, sin necesidad de tomar el control de ninguno de los equipos.

Uno de los posibles vectores de ataque consiste en recolectar de un equipo tantos Retos como podamos, comprobando que efectivamente comienzan repetirse.


Una vez hecho esto, si conseguimos de alguna manera que algún usuario que pueda autenticarse en ese sistema visite un HTML especialmente preparado para hacerle acceder a un servicio Samba que hemos dejado a la escucha para la ocasión, podemos proporcionar a cada una de esas conexiones uno de los Retos que hemos obtenido, con lo que el usuario legítimo nos devolverá las Respuestas adecuadas a cada reto.




Ahora que ya tenemos un montón de Retos y sus respectivas Respuestas de un usuario legítimo, solo tenemos que volvernos a ir al servidor que queríamos atacar y lanzarle la conexión que queramos (escribir un fichero, ejecutar un comando, etc). Si el Reto que nos manda el servidor no lo tenemos en nuestra lista de Reto-Respuesta, lo descartamos y realizamos otra conexión. En el momento que el servidor nos envíe un reto que tengamos en nuestra lista, nosotros le devolveremos la Respuesta que nos devolvió el usuario, por lo que quedaremos autenticados en la máquina con sus privilegios, ejecutándose nuestra acción.


Podemos ver todo esto en vivo en un pequeño video que hemos preparado. Siento la marca de agua, queda un poco cutre pero no encuentro ningún software free para Mac para hacer ScreenCast, pero como me parece que es una vulnerabilidad interesante y de actualidad he preferido poneros el video así y cambiarlo por otro sin marca de agua en cuanto pueda. Perdón por las molestias. Os dejo con el video:





Los script ruby utilizados están contenidos el propio advisory.

17 comentarios :

Dmitry Evteev dijo...

very nice :)

Jose Selvi dijo...

Thanks @Dimitry :)

Unknown dijo...

Tiene buena e interesante pinta, a ver si lo puedo probar.

NaCl u2

César dijo...

Excelente.

Una vulnerabilidad que se puede explotar en lugares y equipos muy específicos, casi sólo en lugares donde utiliza el single sing-on, en esos lugares valdría bastante probar esta vulnerabilidad.

pd: ahora entiendo por que consultabas por algún programa para hacer screencast en osx que no fuera de pago.

Salu

Jose Selvi dijo...

Gracias por vuestros comentarios @Rigolox y @César.

No solamente afecta a infraestructuras de SingleSignOn, de hecho las dos máquinas con las que he hecho el video no estaban en dominio ni nada. Por la manera que tiene de funcionar Windows, esto funcionará entre cualquier par de equipos que tengan un mismo usuario con una misma contraseña, algo muy común en todo tipo de redes, ya que aunque no haya SSO, los usuarios e incluso los admins tienden a utilizar la misma contraseña para todos los equipos, por una razón evidente de usabilidad.

P.D: Siii, sigo necesitando algún otro software para rehacer el video :P

hernan dijo...

El ataque se puede hacer sobre una misma maquina Windows (es el caso mas sencillo, mencionado en el advisory). No hacen falta dos maquinas.

1-setup*.rb contra la maquina windows W
2-se fuerza a esa misma maquina windows W conectarse al atacante A(setup*.rb esta escuchando)
3-se usa fullcreds.log contra la *misma* maquina windows W del principio y se entro.


no hacen falta dos maquinas windows.

Jose Selvi dijo...

Lectores del blog, os presento a @Hernan Ochoa, uno de los descubridores de esta vulnerabilidad y el autor del famoso Pass-The-Hash Toolkit.

Encantado de tenerte por aquí @Hernan ;)

Como él dice (esto ya va para los lectores), no hace falta que sean dos máquinas Windows distintas, podría ser una sola. Lo hemos hecho en dos máquinas por aquello de hacerlo contra un PC de usuario (que es el que navega) y acabar accediendo a un servidor, que nos ha parecido que resultaba más vistoso.

@Hernan, muchas gracias por ponernos un comentario y enhorabuena por tu magnifico trabajo en el mundo de la seguridad :)

Jose Selvi dijo...

El Advisory, además de este vector de ataque, tiene otro muy interesante que no hemos comentado en este post, pero que probaremos y comentaremos en breve.

"Explotando (otra vez) SMB NTLM" está de camino ;)

Anónimo dijo...

Muy buena explicación!

Newlog

Douglas Berdeaux dijo...

hah! That's awesome! :D

Pablo Sanchez dijo...

Una vulnerabilidad muy interesante.

w3wes@jamon-espana.com.es

Arán dijo...

Muchas gracias!!!
para el proximo video puedes usar este http://www.screentoaster.com/ no lo he probado pero tiene buena pinta!

Un salu2!

Jose Selvi dijo...

Gracias @Arán, acabo de probar el programa que me dices para "regrabar" el video de este post pero se para a los 2 minutos de grabación. Parece una limitación que le han puesto :(

Gracias igualmente, si os enteráis de algo más me lo decís.

Aran dijo...

@Jose Selvi:
Hola, Lo he estado probando y como comentas se para al tiempo, ami ha sido a los 20mb todas las veces, luego me he registrado y no se me ha parado.
Un saludo!

craked dijo...

No tienes ningun software freeware para Mac--
normal, es lo que tiene usar un Mac, que no vale pa ná
Salu2

Anónimo dijo...

Hola a todos!

Es la primera vez que posteo por aquí, aunque realmente creo que es la primera vez que posteo en un blog.. y lo hago para agradecer el aporte tan grande que hacéis en pentester.es.

Saludos de un seguidor incondicional de vuestro trabajao!

VCC

Jose Selvi dijo...

Gracias @Anónimo, nos alegra que el blog te resulte de utilidad ;)