Organise¶
The organise module processes Active Directory datasets (NTDS dumps and BloodHound exports) and generates the artefacts required for password auditing and analysis. Recovered NTLM passwords can also be mapped to user accounts using a Hashcat potfile.
It performs two primary functions:
- Parses NTDS and BloodHound data and generate audit artefacts
- Maps recovered NTLM passwords back to user accounts using a Hashcat potfile
$ password-audit organise -h
usage: main.py organise [-h] -N NTDS -B BLOODHOUND [-F FILTER] [-O OUTPUT] [-P POTFILE]
Parse NTDS, BloodHound, and Hashcat datasets and generate analysis artefacts.
options:
-h, --help show this help message and exit
required arguments:
-N, --ntds NTDS Secretsdump NTDS file
-B, --bloodhound BLOODHOUND
BloodHound ZIP export
optional arguments:
-F, --filter FILTER Comma-separated usernames to exclude (default: None)
-O, --output OUTPUT Output directory (default: ntds-organiser)
-P, --potfile POTFILE
Hashcat potfile containing recovered passwords (default: None)
Example:
password-audit organise \
-N company.ntds \
-B bloodhound.zip
Domain Data Parsing¶
After collecting the NTDS dump and BloodHound data, the first step is to parse both datasets and extract the information required for password auditing:
# Process NTDS and BloodHound data
$ password-audit organise \
--ntds company.ntds \
--bloodhound bloodhound.zip
[*] Password Audit Organise
NTDS Summary
| Object | Value |
|-------------------|-------|
| Enabled Accounts | 481 |
| Disabled Accounts | 42 |
| User Accounts | 273 |
| Machine Accounts | 208 |
| NTLM Hashes | 164 |
| LM Hashes | 88 |
| Domain Admins | 23 |
| Company Words | 3 |
[+] Output written to: ntds-organiser
The following artefacts are generated:
company-words.txtcontaining organisation-specific words extracted from account names and group namesdomain-admins.txtcontaining Domain Administrator accounts identified from BloodHound datadomain-policy.txtcontaining the domain password policyenabled-users.txtcontaining enabled user accounts indomain\usernameformatntlm-hashes.txtcontaining extracted NTLM hashes for password auditingntds-users-clean.txtcontaining enabled user accounts in SecretsDump format (domain\username:rid:lm:nt:::)
Hidden datasets are also generated for internal processing and troubleshooting:
.ntds-enabled.txtcontaining all enabled accounts.ntds-disabled.txtcontaining all disabled accounts.ntds-machines.txtcontaining machine accounts
The following datasets are generated only when applicable:
lm-hashes.txtcontaining extracted LM hashes (only if LM hashes exist)lm-users.txtcontaining accounts associated with LM hashes (only if LM hashes exist)mapped-ntlm-passwords.txtcontaining recovered NTLM passwords mapped to user accounts (only when-P/--potfileis supplied).testing-accounts.txtcontaining accounts matching the supplied filter (only when-F/--filteris used)
$ tree -a ntds-organiser
ntds-organiser
├── company-words.txt
├── domain-admins.txt
├── domain-policy.txt
├── enabled-users.txt
├── lm-hashes.txt
├── lm-users.txt
├── .ntds-disabled.txt
├── .ntds-enabled.txt
├── .ntds-machines.txt
├── ntds-users-clean.txt
└── ntlm-hashes.txt
Password Mapping¶
Providing a Hashcat potfile allows organise to map recovered NTLM passwords back to user accounts:
$ password-audit organise \
--ntds company.ntds \
--potfile hashcat.potfile \
--bloodhound bloodhound.zip
[*] Password Audit Organise
NTDS Summary
| Object | Value |
|-------------------|-------|
| Enabled Accounts | 481 |
| Disabled Accounts | 42 |
| User Accounts | 273 |
| Machine Accounts | 208 |
| NTLM Hashes | 164 |
| LM Hashes | 88 |
| Domain Admins | 23 |
| Company Words | 3 |
| Mapped Passwords | 191 |
[+] Output written to: ntds-organiser
This generates an additional dataset containing recovered NTLM passwords mapped to their corresponding user accounts:
$ ls ntds-organiser/mapped-ntlm-passwords.txt
ntds-organiser/mapped-ntlm-passwords.txt
$ head -1 ntds-organiser/mapped-ntlm-passwords.txt
domain.local\mike:Welcome123!