ldapdomaindump

Extrait les informations du domaine Active Directory (utilisateurs, groupes, ordinateurs, politiques, trusts) via LDAP dans des rapports HTML/JSON/greppables navigables. Dumps Active Directory domain information (users, groups, computers, policies, trusts) via LDAP into browsable HTML/JSON/greppable reports.

↗ https://github.com/dirkjanm/ldapdomaindump

Overview

ldapdomaindump connects to a domain controller over LDAP and pulls a comprehensive picture of the Active Directory environment — user accounts, group memberships, computers, password/lockout policies, trusts, and ACL/GPO-relevant attributes — then renders it as human-browsable HTML reports plus raw JSON/greppable output. It’s a fast way to get AD domain enumeration output in a reviewable format right after obtaining any valid domain credentials.

Common Usage

Dump domain info using valid credentials

ldapdomaindump -u 'DOMAIN\username' -p 'password' <dc_ip>

Use an NTLM hash instead of a plaintext password (pass-the-hash)

ldapdomaindump -u 'DOMAIN\username' --hashes :<NTHASH> <dc_ip>

Specify an output directory for the generated reports

ldapdomaindump -u 'DOMAIN\username' -p 'password' -o domain_dump/ <dc_ip>

Authenticate over LDAPS (encrypted)

ldapdomaindump -u 'DOMAIN\username' -p 'password' ldaps://<dc_ip>

Anonymous / null session bind (if allowed by the domain)

ldapdomaindump <dc_ip>

Example Workflow

Step 1: Obtain a valid low-privilege domain credential (e.g. via password spraying) Step 2: Dump full domain information

ldapdomaindump -u 'CORP\jsmith' -p 'Summer2025!' -o dump_corp dc01.corp.local

Step 3: Browse the generated HTML reports

firefox dump_corp/domain_users.html

Step 4: Cross-reference privileged groups/computers for lateral movement targets

grep -i "domain admins" dump_corp/domain_groups.html

Output Files

domain_users.html/json/grep         all domain user accounts and attributes
domain_groups.html/json/grep         groups and their memberships
domain_computers.html/json/grep       computer accounts (OS, last logon, etc.)
domain_policy.html/json/grep           password/lockout policy
domain_trusts.html/json/grep            domain/forest trust relationships
domain_users_by_group.html              users grouped by group membership

Options

-u USERNAME          DOMAIN\username or username@domain
-p PASSWORD            password (prompted if omitted)
--hashes LM:NT          authenticate with an NTLM hash instead of password
-o DIR                   output directory for reports
-r RESOLVE               resolve computer hostnames to IPs
-n NO-JSON/GREP           skip JSON/greppable output, HTML only
--no-html                  skip HTML output
-m, --minimal              minimal attribute dump (faster, less detail)

Tips

  • Works with as little as one valid low-privilege domain account — no elevated rights needed for a baseline dump under default AD permissions.
  • Pair with BloodHound for graph-based attack path analysis — ldapdomaindump is better for a quick readable report and policy/trust overview.
  • The generated domain_users_by_group.html is a fast way to spot users in privileged groups (Domain Admins, Enterprise Admins) without wading through raw LDAP attributes.
Help / Man page
usage: ldapdomaindump [-h] [-u USERNAME] [-p PASSWORD] [--hashes HASHES]
                       [-o DIRECTORY] [-r] [-n] [--no-html] [--no-json]
                       [--no-grep] [-m] [-d]
                       HOSTNAME

Domain information dumper via LDAP

positional arguments:
  HOSTNAME              hostname/IP or ldap://, ldaps:// URI of the DC

optional arguments:
  -h, --help            show this help message and exit
  -u USERNAME           DOMAIN\username for authentication
  -p PASSWORD           password for authentication
  --hashes LMHASH:NTHASH authenticate via pass-the-hash
  -o DIRECTORY           directory to write output files to
  -r                     resolve computer hostnames to IP addresses
  -n                     do not output JSON/greppable files
  --no-html              do not output HTML files
  -m, --minimal           only dump minimal attribute set (faster)
  -d, --delimiter         delimiter for greppable output

Vue d’ensemble

ldapdomaindump se connecte à un contrôleur de domaine via LDAP et récupère une vue d’ensemble complète de l’environnement Active Directory : comptes utilisateurs, appartenances aux groupes, ordinateurs, politiques de mot de passe/verrouillage, trusts, et attributs pertinents pour les ACL/GPO, puis le restitue sous forme de rapports HTML navigables ainsi qu’une sortie JSON/greppable brute. C’est un moyen rapide d’obtenir une énumération de domaine AD dans un format exploitable juste après avoir obtenu des identifiants de domaine valides.

Utilisation courante

# Extraire les infos du domaine avec des identifiants valides
ldapdomaindump -u 'DOMAIN\username' -p 'password' <dc_ip>

# Utiliser un hash NTLM plutôt qu'un mot de passe en clair (pass-the-hash)
ldapdomaindump -u 'DOMAIN\username' --hashes :<NTHASH> <dc_ip>

# Spécifier un répertoire de sortie pour les rapports générés
ldapdomaindump -u 'DOMAIN\username' -p 'password' -o domain_dump/ <dc_ip>

# S'authentifier via LDAPS (chiffré)
ldapdomaindump -u 'DOMAIN\username' -p 'password' ldaps://<dc_ip>

# Bind en session anonyme / null (si autorisé par le domaine)
ldapdomaindump <dc_ip>

Exemple de workflow

Étape 1 : obtenir un identifiant de domaine faiblement privilégié valide (par exemple via password spraying). Étape 2 : extraire les informations complètes du domaine

ldapdomaindump -u 'CORP\jsmith' -p 'Summer2025!' -o dump_corp dc01.corp.local

Étape 3 : parcourir les rapports HTML générés

firefox dump_corp/domain_users.html

Étape 4 : croiser les groupes/ordinateurs privilégiés pour identifier des cibles de mouvement latéral

grep -i "domain admins" dump_corp/domain_groups.html

Fichiers de sortie

domain_users.html/json/grep         tous les comptes utilisateurs du domaine et leurs attributs
domain_groups.html/json/grep         groupes et leurs appartenances
domain_computers.html/json/grep       comptes ordinateurs (OS, dernière connexion, etc.)
domain_policy.html/json/grep           politique de mot de passe/verrouillage
domain_trusts.html/json/grep            relations de trust domaine/forêt
domain_users_by_group.html              utilisateurs regroupés par appartenance à un groupe

Options

-u USERNAME          DOMAIN\username ou username@domain
-p PASSWORD            mot de passe (demandé si omis)
--hashes LM:NT          s'authentifier avec un hash NTLM au lieu d'un mot de passe
-o DIR                   répertoire de sortie pour les rapports
-r RESOLVE               résoudre les noms d'hôtes en IP
-n NO-JSON/GREP           ignorer la sortie JSON/greppable, HTML uniquement
--no-html                  ignorer la sortie HTML
-m, --minimal              extraction d'attributs minimale (plus rapide, moins de détails)

Conseils

  • Fonctionne avec un seul compte de domaine faiblement privilégié valide : aucun droit élevé n’est nécessaire pour une extraction de base sous les permissions AD par défaut.
  • À associer avec BloodHound pour l’analyse de chemins d’attaque sous forme de graphe : ldapdomaindump est plus adapté pour un rapport lisible rapide et une vue d’ensemble des politiques/trusts.
  • Le fichier domain_users_by_group.html généré est un moyen rapide de repérer les utilisateurs dans des groupes privilégiés (Domain Admins, Enterprise Admins) sans devoir parcourir les attributs LDAP bruts.
Aide / Page de manuel
usage: ldapdomaindump [-h] [-u USERNAME] [-p PASSWORD] [--hashes HASHES]
                       [-o DIRECTORY] [-r] [-n] [--no-html] [--no-json]
                       [--no-grep] [-m] [-d]
                       HOSTNAME

Domain information dumper via LDAP

positional arguments:
  HOSTNAME              hostname/IP or ldap://, ldaps:// URI of the DC

optional arguments:
  -h, --help            show this help message and exit
  -u USERNAME           DOMAIN\username for authentication
  -p PASSWORD           password for authentication
  --hashes LMHASH:NTHASH authenticate via pass-the-hash
  -o DIRECTORY           directory to write output files to
  -r                     resolve computer hostnames to IP addresses
  -n                     do not output JSON/greppable files
  --no-html              do not output HTML files
  -m, --minimal           only dump minimal attribute set (faster)
  -d, --delimiter         delimiter for greppable output