
Una herramienta en C# para generar hashes DPAPI descifrables a partir de las MasterKeys de usuario.
Una herramienta en C# que extrae hashes DPAPI crackeables de las MasterKeys de usuario y de los archivos CREDHIST.
Apunta tanto a la MasterKey ($DPAPImk$) como a toda la cadena CREDHIST ($credhist$), con soporte para rutas locales y recursos compartidos SMB remotos.
$DPAPImk$)La MasterKey de cada usuario se puede encontrar en \Users\<user>\AppData\Roaming\Microsoft\Protect\<SID>\.
Crackearla permite obtener la contraseña de dominio del usuario y desbloquea todos los secretos protegidos por DPAPI de esa época.
La versión del hash depende del SO:
El campo de contexto codifica el tipo de cuenta:
$credhist$)Cada entrada del archivo CREDHIST de cada usuario. Cada entrada está cifrada con una contraseña anterior y se descifra al SHA1 + NTLM de la contraseña anterior a ella.
Crackear la cadena reconstruye todas las contraseñas históricas y sus hashes NTLM.
Las entradas se etiquetan en el campo de nombre de usuario para que la salida sea autodescriptiva:
alice[current]:$credhist$*... ← encrypted with the current password; crack this first
alice[prev1]:$credhist$*... ← encrypted with the previous password
alice[prev2]:$credhist$*...
La versión del hash de la entrada depende del SO:
-m 15920-m 15930DPAPISnoop.exe [rootDir] [options]
rootDir usa %HOMEDRIVE% por defecto si se omite. Las rutas UNC son totalmente compatibles.
# Local machine — dump everything (defaults to %HOMEDRIVE%)
DPAPISnoop.exe
# Local machine — walk CREDHIST chain from a known password
DPAPISnoop.exe C: --password Summer2026!
# Local machine — walk CREDHIST chain from a known SHA1
# (e.g. from sekurlsa::wdigest pwdhash or dpapi cache)
DPAPISnoop.exe C: --sha1 da39a3ee5e6b4b0d3255bfef95601890afd80709
# Remote share — dump everything
DPAPISnoop.exe \\server01\c$
# Remote share — CREDHIST only, redirect hashes to file
DPAPISnoop.exe \\server01\c$ --credhist-only > credhist_hashes.txt
# Remote share — walk CREDHIST chain from a known password
DPAPISnoop.exe \\server01\c$ --password Summer2026!
hashcat -a0 -m 15300 hashes.txt wordlist.txt # v1 local/domain pre-1607
hashcat -a0 -m 15310 hashes.txt wordlist.txt # v1 domain post-1607
hashcat -a0 -m 15900 hashes.txt wordlist.txt # v2 local/domain pre-1607
hashcat -a0 -m 15910 hashes.txt wordlist.txt # v2 domain post-1607
hashcat -a0 -m 15920 credhist_hashes.txt wordlist.txt # 3DES entries (≤ Vista)
hashcat -a0 -m 15930 credhist_hashes.txt wordlist.txt # AES-256 entries (≥ Win10 20H2)
Después de crackear, pasa la contraseña recuperada de vuelta a DPAPISnoop para recorrer la cadena completa e imprimir cada SHA1 y NTLM histórico:
DPAPISnoop.exe C:\ --password Summer2024! > ntlms.txt
DPAPISnoop.exe C:\ --sha1 <40-hex-sha1> > ntlms.txt
Consulta el README
Este esfuerzo de investigación y desarrollo se llevó a cabo de forma colaborativa entre un humano y herramientas asistidas por IA, utilizando los modelos de IA GPT-5.5 y Claude Sonnet 4.6.
Los modelos de IA se utilizaron para ayudar con la generación de código y el soporte de ingeniería inversa.
Sin embargo, toda la dirección de la investigación, validación, depuración, pruebas, análisis de seguridad y las decisiones técnicas finales fueron realizadas por un humano (Imdefinelyhuman).
Todo el contenido, código y análisis generados fueron revisados, validados, modificados e integrados manualmente como parte de un flujo de trabajo iterativo guiado por humanos.
La declaración anterior es una forma elegante de decir también que el código tiene errores y que lo uses bajo tu propio riesgo.
Lefteris (lefty) Panos @ LRQA Red Team 2026
| Flag | Descripción |
|---|
| (ninguno) | Volcar $DPAPImk$ y $credhist$ para nuestro usuario |
--credhist-only / -c | Omitir la salida de MasterKey; emitir solo líneas $credhist$ |
--password <plaintext> / -p | Recorrer la cadena CREDHIST desde la contraseña actual en texto plano |
--sha1 <40-hex> | Recorrer la cadena CREDHIST desde un SHA1 conocido de la contraseña actual |
--pre1607 | Emitir contexto 2 (dominio pre-1607) en lugar del contexto 3 para hashes de MasterKey de dominio |