
Herramienta de auditoría de contraseñas de dominio para pentesters
DPAT es una herramienta de seguridad basada en Python que analiza hashes de contraseñas extraídos de controladores de dominio de Active Directory. Genera informes HTML completos que muestran estadísticas de uso de contraseñas, violaciones de políticas y perspectivas de seguridad tanto de volcados NTDS como de resultados de cracking de contraseñas.



Instalar dependencias principales:
pip install -r requirements.txt
Para desarrollo y pruebas:
pip install -r requirements-dev.txt
Si prefieres instalar dependencias individualmente:
pip install pycryptodome
poetry install
python dpat.py -n customer.ntds -c hashcat.potfile -p 8
python dpat.py -n <archivo_ntds> -c <archivo_crackeado> -p <longitud_mínima_contraseña>
-n, --ntdsfile: Archivo NTDS (salida de secretsdump.py)-c, --crackfile: Archivo de salida de cracking de contraseñas (hashcat.potfile, john.pot, etc.)-p, --minpasslen: Longitud mínima de contraseña según la política del dominio-o, --outputfile: Nombre del informe HTML (por defecto: _DomainPasswordAuditReport.html)-d, --reportdirectory: Directorio de salida (por defecto: "DPAT Report")-s, --sanitize: Sanitiza contraseñas y hashes en los informes-g, --groupsdirectory: Directorio que contiene archivos de pertenencia a grupos-m, --machineaccts: Incluye cuentas de máquina en el análisis-k, --krbtgt: Incluye la cuenta krbtgt en el análisis-kz, --kerbfile: Archivo que contiene cuentas Kerberoastable-w, --writedb: Escribe la base de datos SQLite al disco para inspección--no-prompt: Omite el aviso del navegador (útil para automatización)-dbg, --debug: Habilita la salida de depuraciónAnálisis básico:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8
Con análisis de grupos:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -g /ruta/a/grupos
Informe sanitizado:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -s
Con cuentas Kerberoastable:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -kz kerberoastable.txt
El archivo NTDS debe estar en el formato de salida de secretsdump.py:
dominio\nombredeusuario:RID:lmhash:nthash:::
Formato Hashcat:
nthash:contraseña
lmhash:contraseña
Formato John the Ripper:
$NT$nthash:contraseña
$LM$lmhash:contraseña
Contraseñas codificadas en hex:
nthash:$HEX[68656c6c6f]
Los archivos de pertenencia a grupos deben contener un nombre de usuario por línea:
dominio\nombredeusuario
En un controlador de dominio, crea una copia de seguridad IFM (Install From Media):
ntdsutil "ac in ntds" "ifm" "cr fu c:\temp" q q
Esto crea:
c:\temp\Active Directory\ntds.ditc:\temp\registry\SYSTEMUsa secretsdump.py para convertir la copia de seguridad:
secretsdump.py -system registry/SYSTEM -ntds "Active Directory/ntds.dit" LOCAL -outputfile customer
Para historial de contraseñas (si está disponible):
secretsdump.py -system registry/SYSTEM -ntds "Active Directory/ntds.dit" LOCAL -outputfile customer -history
Usando Hashcat:
hashcat -m 1000 customer.ntds /ruta/a/wordlist
Usando John the Ripper:
john --format=NT customer.ntds
DPAT genera informes completos que incluyen:
El repositorio incluye datos de muestra en el directorio sample_data/ para pruebas:
customer.ntds: Archivo NTDS de muestraoclHashcat.pot: Contraseñas crackeadas de muestrahistory/: Datos de muestra con historial de contraseñasPrueba con datos de muestra:
python dpat.py -n sample_data/customer.ntds -c sample_data/oclHashcat.pot -p 8
Crea archivos de pertenencia a grupos usando PowerShell:
Get-NetGroupMember -Recurse -GroupName "Domain Admins" > "Domain Admins.txt"
Usa el script parse-kerberoastable.py de CypherHound para generar archivos de cuentas Kerberoastable para un análisis mejorado.
Puedes conectar archivos generados por CypherHound a DPAT para proporcionar más estadísticas a los informes de DPAT. Actualmente, las estadísticas adicionales son:
Si deseas utilizarlo para proporcionar estas estadísticas adicionales, necesitarás usar los scripts aquí:
-g.-kz.Son scripts simples con uso enlazado arriba y usarlos debería ser sencillo.
Usa la bandera -s para crear informes sanitizados aptos para compartir:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -s
"No module named 'distutils'"
Informes vacíos
Enlaces de detalles faltantes
Habilita la salida de depuración para solucionar problemas:
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -dbg
Ejecuta el conjunto de pruebas:
python -m unittest tests.unit.test_core -v
python -m unittest tests.integration.test_integration -v
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
Para problemas, preguntas o contribuciones, utiliza el rastreador de issues de GitHub.