
Outil d'audit de mots de passe de domaine pour testeurs d'intrusion
DPAT est un outil de sécurité basé sur Python qui analyse les hachages de mots de passe extraits des contrôleurs de domaine Active Directory. Il génère des rapports HTML complets montrant les statistiques d'utilisation des mots de passe, les violations de la politique et les informations de sécurité à partir des vidages NTDS et des résultats de craquage de mots de passe.



Installer les dépendances principales :
pip install -r requirements.txt
Pour le développement et les tests :
pip install -r requirements-dev.txt
Si vous préférez installer les dépendances individuellement :
pip install pycryptodome
poetry install
python dpat.py -n customer.ntds -c hashcat.potfile -p 8
python dpat.py -n <fichier_ntds> -c <fichier_craque> -p <longueur_min_mot_de_passe>
-n, --ntdsfile : Fichier NTDS (sortie de secretsdump.py)-c, --crackfile : Fichier de sortie de craquage de mots de passe (hashcat.potfile, john.pot, etc.)-p, --minpasslen : Longueur minimale du mot de passe issue de la politique du domaine-o, --outputfile : Nom du fichier du rapport HTML (par défaut : _DomainPasswordAuditReport.html)-d, --reportdirectory : Répertoire de sortie (par défaut : "DPAT Report")-s, --sanitize : Assainir les mots de passe et les hachages dans les rapports-g, --groupsdirectory : Répertoire contenant les fichiers d'appartenance à un groupe-m, --machineaccts : Inclure les comptes machine dans l'analyse-k, --krbtgt : Inclure le compte krbtgt dans l'analyse-kz, --kerbfile : Fichier contenant les comptes Kerberoastable-w, --writedb : Écrire la base de données SQLite sur le disque pour inspection--no-prompt : Ignorer l'invite du navigateur (utile pour l'automatisation)-dbg, --debug : Activer la sortie de débogageAnalyse de base :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8
Avec analyse de groupe :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -g /chemin/vers/groupes
Rapport assaini :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -s
Avec comptes Kerberoastable :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -kz kerberoastable.txt
Le fichier NTDS doit être au format produit par secretsdump.py :
domaine\nom_utilisateur:RID:lmhash:nthash:::
Format Hashcat :
nthash:mot_de_passe
lmhash:mot_de_passe
Format John the Ripper :
$NT$nthash:mot_de_passe
$LM$lmhash:mot_de_passe
Mots de passe encodés en hexadécimal :
nthash:$HEX[68656c6c6f]
Les fichiers d'appartenance à un groupe doivent contenir un nom d'utilisateur par ligne :
domaine\nom_utilisateur
Sur un contrôleur de domaine, créez une sauvegarde IFM (Install From Media) :
ntdsutil "ac in ntds" "ifm" "cr fu c:\temp" q q
Ceci crée :
c:\temp\Active Directory\ntds.ditc:\temp\registry\SYSTEMUtilisez secretsdump.py pour convertir la sauvegarde :
secretsdump.py -system registry/SYSTEM -ntds "Active Directory/ntds.dit" LOCAL -outputfile customer
Pour l'historique des mots de passe (si disponible) :
secretsdump.py -system registry/SYSTEM -ntds "Active Directory/ntds.dit" LOCAL -outputfile customer -history
Avec Hashcat :
hashcat -m 1000 customer.ntds /chemin/vers/wordlist
Avec John the Ripper :
john --format=NT customer.ntds
DPAT génère des rapports complets incluant :
Le dépôt contient des exemples de données dans le répertoire sample_data/ pour les tests :
customer.ntds : Exemple de fichier NTDSoclHashcat.pot : Exemple de mots de passe craquéshistory/ : Exemple de données avec historique de mots de passeTest avec les données d'exemple :
python dpat.py -n sample_data/customer.ntds -c sample_data/oclHashcat.pot -p 8
Créez des fichiers d'appartenance à un groupe à l'aide de PowerShell :
Get-NetGroupMember -Recurse -GroupName "Domain Admins" > "Domain Admins.txt"
Utilisez le script parse-kerberoastable.py de CypherHound pour générer des fichiers de comptes Kerberoastable pour une analyse améliorée.
Vous pouvez insérer des fichiers générés par CypherHound dans DPAT afin de fournir davantage de statistiques aux rapports DPAT. Actuellement, les statistiques supplémentaires sont :
Si vous souhaitez l'utiliser pour fournir ces statistiques supplémentaires, vous devrez utiliser les scripts suivants :
-g.-kz.Ce sont des scripts simples dont l'utilisation est liée ci-dessus et leur utilisation devrait être simple.
Utilisez l'option -s pour créer des rapports assainis adaptés au partage :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -s
"No module named 'distutils'"
Rapports vides
Liens de détails manquants
Activez la sortie de débogage pour le dépannage :
python dpat.py -n customer.ntds -c hashcat.potfile -p 8 -dbg
Exécutez la suite de tests :
python -m unittest tests.unit.test_core -v
python -m unittest tests.integration.test_integration -v
Ce projet est sous licence MIT - voir le fichier LICENSE pour les détails.
Pour les problèmes, questions ou contributions, veuillez utiliser le traqueur de problèmes GitHub.