Underc0de

[In]Seguridad Informática => Seguridad => Mensaje iniciado por: Stiuvert en Abril 09, 2012, 06:10:13 PM

Título: Acceso a Windows desde "Pass-the-hash"
Publicado por: Stiuvert en Abril 09, 2012, 06:10:13 PM
Tradicionalmente se ha considerado que Windows no almacenaba las credenciales de sistema en claro en ningún momento. Ni siquiera en memoria, para evitar que pudiesen ser recuperadas de un equipo comprometido. La propia documentación (http://support.microsoft.com/kb/913485/en) de Microsoft inducia a ello.

Es por esto que se han popularizado en el mundo del pentesting las técnicas de Pass-the-hash (http://en.wikipedia.org/wiki/Pass_the_hash) para poder obtener (http://www.pentester.es/2009/09/tecnicas-pass-hash.html) acceso a otros equipos de la red desde un sistema comprometido sin tener acceso a las credenciales en claro (aprovechando las características de la autenticación NTLM de Windows).

Pero un investigador francés apodado "Gentil Kiwi" ha desvelado (http://blog.gentilkiwi.com/securite/pass-the-pass) que esto no es del todo cierto. Veamos porque:

Dentro del sistema LSA (Local Security Authority) de Windows existen una serie de proveedores de autenticación activos por defecto, que podemos listar accediendo a su configuración en el registro: HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages



(http://4.bp.blogspot.com/-mEp4yCWRu-k/Tyj2WHJBXvI/AAAAAAAAAKw/-qSxJq36HGo/s400/b1.png) (http://4.bp.blogspot.com/-mEp4yCWRu-k/Tyj2WHJBXvI/AAAAAAAAAKw/-qSxJq36HGo/s1600/b1.png"%20imageanchor=1)

A primera vista muchos de estos nombres no revelan su utilidad. El más importante es MSV1_0 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa378753.aspx) que es el utilizado para los procesos de logon en local si no existe un proceso de autenticación  personalizado. Cuando un usuario accede al equipo el servicio de LSA llama a MSV1_0 para que procese los datos recibidos por GINA (Graphical Identification and Authentication) desde el proceso Winlogon.

Además este proveedor almacena las contraseñas en memoria en forma de hashes, como estaba previsto, de manera que es relativamente seguro. Pero de la lista que hemos visto antes; ¿harán todos lo mismo?

Pues parece ser que al menos 2 de ellos no lo hacen así: tspkg y wdigest

Ambos almacenan en memoria las credenciales de los usuarios que hayan accedido al sistema en local o mediante escritorio remoto codificadas de forma reversible. Es decir, la contraseña puede ser obtenida en claro sin necesidad de un proceso de cracking.

Aunque no conectemos nunca con servidores que requieran autenticación de tipo Digest o no utilicemos nunca conexiones de escritorio remoto con SSO, tendremos alguno de estos 2 módulos habilitados por defecto y nuestras contraseñas estarán accesibles en memoria.

Para recuperar las credenciales en claro solo es necesario contar con privilegios de Debug sobre el proceso LSASS. Privilegios normalmente disponibles para los usuarios del grupo de administradores.

Podemos comprobarlo con la herramienta que el propio "Gentil Kiwi" nos proporciona: mimikatz (http://blog.gentilkiwi.com/mimikatz)
 



(http://3.bp.blogspot.com/-tJNk9PbF-6o/Tyj2-klGgUI/AAAAAAAAAK8/H811VLabkUs/s400/b2.png) (http://3.bp.blogspot.com/-tJNk9PbF-6o/Tyj2-klGgUI/AAAAAAAAAK8/H811VLabkUs/s1600/b2.png"%20imageanchor=1)

Esta demostración esta realizada en un sistema Windows 7, pero cualquier Windows XP o posterior sería vulnerable por defecto.

Solo nos queda preguntarnos porque este hecho ha tardado tanto tiempo en salir a la luz. ¿Se ha ocultado intencionadamente esta información por parte de Microsoft? ¿Los investigadores punteros en materia de seguridad tenían guardado este as en la manga? ¿O tal vez nadie se había dado cuenta antes?

Ramón Pinuaga
Dep. Auditoría S21SEC
Título: Re:Acceso a Windows desde "Pass-the-hash"
Publicado por: REC en Abril 10, 2012, 02:04:28 PM
Gran aporte! Stiuvert salu2