Skip to content

ADExplorer

ADExplorer is a Sysinternals utility for browsing Active Directory, creating snapshots of AD state, and comparing snapshots to detect changes. It’s essential for AD reconnaissance, offline analysis, and red team engagements where you need detailed attribute inspection and historical change detection.

ADExplorer is part of the Sysinternals Suite and runs on Windows without installation.

MethodSteps
Direct DownloadDownload ADExplorer.exe from live.sysinternals.com/ADExplorer.exe
Sysinternals SuiteDownload the full Sysinternals Suite and extract all tools to a folder
No Admin RequiredMost features work without elevation; snapshots may require admin for sensitive attributes
# Download directly
curl "https://download.sysinternals.com/files/ADExplorer.zip" -OutFile ADExplorer.zip
Expand-Archive ADExplorer.zip -DestinationPath C:\Tools\Sysinternals
C:\Tools\Sysinternals\ADExplorer.exe

Launch ADExplorer and connect to a domain controller or AD-reachable server.

# Start ADExplorer GUI
ADExplorer.exe

# Default connection via DC discovery
# File > Connect > [hostname or DC IP]

Connection Dialog:

OptionDescription
ServerHostname, FQDN, or IP of domain controller (leave blank for local DC)
Port389 (standard LDAP), 636 (LDAPS), 3268 (Global Catalog), 3269 (GC SSL)
User NameDomain\username or UPN; leave blank for anonymous bind or null session
PasswordLeave blank for null session; enter credentials for authenticated access
Logon ViaSSL or Standard; use SSL for LDAPS port 636
# Anonymous bind (if enabled)
# File > Connect
# [DC IP] : 389
# [Leave User/Password blank] > Connect

# Authenticated bind
# File > Connect
# [DC IP] : 389
# DOMAIN\username : password > Connect

Navigate the LDAP tree, inspect attributes, and explore AD structure.

Navigation:

  • Left pane shows DN tree (Domain → OUs → Objects)
  • Right pane shows attributes of selected object
  • Expand nodes to drill down through organizational units
# Typical AD structure:
# dc=domain,dc=com
#   ├── CN=Users
#   ├── CN=Computers
#   ├── CN=System
#   └── OU=Custom
#       └── OU=Servers

Right-Click Context Menu:

ActionPurpose
Expand AllRecursively expand subtree (slow on large OUs)
ViewToggle attribute pane visibility
Copy DNCopy distinguished name to clipboard
PropertiesOpen object details dialog

Use ADExplorer’s search to find objects by attribute matching.

Search Menu Options:

# LDAP Filter Syntax
(objectClass=user)
(sAMAccountName=admin)
(memberOf=CN=Administrators,CN=Builtin,DC=domain,DC=com)
(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=524))

Scope Levels:

ScopeBehavior
BaseSearch only the specified object (testing DN validity)
One LevelSearch direct children only (one OU level down)
SubtreeRecursive search from current node downward

Common Searches:

# Find all users
(objectClass=user)

# Find service accounts
(objectClass=user)(servicePrincipalName=*)

# Find inactive accounts (no recent logon)
(&(objectClass=user)(lastLogon<=[old timestamp]))

# Find users with delegation set
(msDS-AllowedToDelegateTo=*)

# Find disabled accounts
(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))

# Find computers
(objectClass=computer)

# Find groups
(objectClass=group)

Search Results:

  • Double-click results to navigate to object
  • Right-click results to copy DN or open properties

Create point-in-time snapshots of AD state for offline analysis and comparison.

Creating Snapshots:

# Via GUI
# File > Create Snapshot
# [Select base DN, e.g., dc=domain,dc=com]
# [Wait for scan to complete] > Save snapshot file (.dat)

Command Line Snapshot Creation:

# Create snapshot from command line (requires admin)
ADExplorer.exe -snapshot "" "C:\snapshots\ad-baseline.dat"

# Specify base DN
ADExplorer.exe -snapshot "dc=domain,dc=com" "C:\snapshots\ad-prod.dat"

# Non-interactive mode for automation
ADExplorer.exe -snapshot "" "C:\snapshots\$(Get-Date -f 'yyyy-MM-dd-HHmmss').dat"

Snapshot File Details:

PropertyNotes
FormatBinary .dat file (not human-readable)
SizeVaries with AD size (10MB–500MB+)
PortabilitySnapshots load offline on any Windows machine with ADExplorer
TimestampedFilename convention: ad-YYYY-MM-DD-HHMMSS.dat

Load snapshots offline and compare against current AD or previous snapshots.

Loading a Snapshot:

# File > Open Snapshot
# [Browse to .dat file] > Open
# View read-only snapshot in ADExplorer tree

Comparing Two Snapshots:

# File > Compare Snapshots
# [Select snapshot 1 (baseline)]
# [Select snapshot 2 (current)]
# View comparison report

Comparison Report Shows:

CategoryDetails
New ObjectsObjects added since baseline (new users, computers, groups)
Deleted ObjectsRemoved objects (deprovisioned accounts, stale computers)
Modified ObjectsChanged attributes (group membership, account status, descriptions)
Attribute ChangesBefore/after values for each modification

Red Team Analysis:

# Create baseline snapshot Day 1
ADExplorer.exe -snapshot "" "C:\snapshots\ad-day1.dat"

# Create follow-up snapshot Day 7
ADExplorer.exe -snapshot "" "C:\snapshots\ad-day7.dat"

# Compare to detect:
# - New service accounts created (potential persistence)
# - Privilege escalations (group membership changes)
# - Account resets or password changes
# - New AD trusts or delegation settings

Critical attributes for AD security assessment and exploitation:

AttributePurposeWhat to Look For
adminCountTracks admin history; 1=protected accountAccounts with 1 = former admins (credential theft targets)
servicePrincipalNameService account associationService accounts for AS-REP roasting / Kerberoasting
userAccountControlAccount flags (disabled, MustChangePassword, etc.)Flags like 524=disabled, 512=enabled
memberOfGroup membershipDomain admins, delegation groups, GPO targets
msDS-AllowedToDelegateToConstrained delegation targetsAccounts with delegation abuse potential
lastLogonLast interactive loginStale accounts (0 = never logged in)
pwdLastSetLast password changeOld passwords = weak reset policies
descriptionFree-form notes fieldCleartext passwords, hints, API keys
mailEmail addressUser enumeration, phishing targets
managerReports-to relationshipOrganizational hierarchy
scriptPathLogon script pathPotential lateral movement via script modification

Flags in userAccountControl:

# Common values (bit flags):
# 2 = ACCOUNTDISABLE
# 16 = LOCKOUT
# 32 = PASSWD_NOTREQD
# 512 = NORMAL_ACCOUNT
# 524 = NORMAL_ACCOUNT + ACCOUNTDISABLE
# 4096 = WORKSTATION_TRUST_ACCOUNT (computer)
# 8192 = SERVER_TRUST_ACCOUNT (DC)
# 65536 = DONT_EXPIRE_PASSWD
# 131072 = MustChangePassword

Common AD object classes and their purpose:

ClassPurposeContains
userUser accountsInteractive logon accounts, service accounts
computerComputer objectsWorkstations, servers, domain controllers
groupSecurity/Distribution groupsUsers, computers, other groups
organizationalUnitContainerUsers, computers, other OUs
groupPolicyContainerGroup Policy objectPolicy settings, access control
trustedDomainDomain trust relationshipParent/child domains, external trusts
domainDNSDNS zone objectZone records, replication metadata
contactExternal contactNon-AD users (distribution lists)
printQueuePrinter objectPrinter shares, drivers, permissions

Bookmark frequently accessed AD objects for quick navigation.

Adding Favorites:

# Right-click object in tree > Add to Favorites
# Or: Favorites menu > [object DN]

Favorites Use Cases:

  • Bookmark critical OUs (Domain Admins, Tier-0 accounts)
  • Track high-privilege group memberships
  • Monitor sensitive containers (AdminSDHolder, System)
  • Flag objects with interesting attributes (delegation, scripts)

Automate snapshot creation and integrate with pentesting frameworks.

OptionSyntaxPurpose
-snapshot-snapshot "baseDN" "outputfile.dat"Create snapshot non-interactively (requires admin)
-compareNot supported via CLIUse GUI for snapshot comparison
-server-server hostnameConnect to specific server (not commonly used)

Automation Examples:

# Daily baseline snapshots
$date = Get-Date -f 'yyyy-MM-dd'
ADExplorer.exe -snapshot "dc=corp,dc=local" "C:\snapshots\ad-$date.dat"

# Batch snapshot across multiple domains
$domains = @('dc=corp,dc=local', 'dc=subsidiary,dc=local')
foreach ($dn in $domains) {
    $name = $dn -replace 'dc=|,', '_'
    ADExplorer.exe -snapshot "$dn" "C:\snapshots\ad-$name.dat"
}

# Capture snapshot with timestamp for change tracking
$timestamp = Get-Date -f 'yyyy-MM-dd-HHmmss'
ADExplorer.exe -snapshot "" "C:\snapshots\ad-$timestamp.dat"

ADExplorer capabilities for offensive AD assessment.

Reconnaissance:

  • Browse AD tree to map organizational structure
  • Identify high-value targets (tier-0 admins, service accounts)
  • Extract email addresses, groups, computer names for phishing
  • Find stale accounts (weak resets, forgotten credentials)

Snapshot-Based Analysis:

# Baseline snapshot pre-compromise
# Exfiltrate snapshot to attacker machine
# Long-term monitoring: Compare Week 1 → Week 4 snapshots
# Detect: New persistence accounts, privilege escalation, domain trusts

Attribute Mining:

  • Search description fields for passwords, API keys, secrets
  • Identify servicePrincipalName targets for Kerberoasting
  • Find msDS-AllowedToDelegateTo for delegation abuse
  • Check scriptPath for logon script lateral movement
  • Enumerate group memberships for privilege analysis

Offline Analysis:

  • Exfiltrate snapshot files from domain
  • Load on non-domain machine with ADExplorer
  • Analyze offline without detection (no LDAP queries logged on DC)
  • Compare multiple snapshots to track persistence
IssueCauseSolution
”Could not contact server”DC unreachable, firewall blocking port 389Verify DC IP, port 389/636 accessible, correct credentials
”Access Denied” on snapshotNon-admin user trying to snapshot sensitive attributesRun ADExplorer as admin or use authenticated domain account
Snapshot creation hangsLarge AD, network latencyAllow more time or reduce scope (specify base OU)
Comparison shows no changesSnapshots taken at same time or filtered viewCreate new baseline, verify full subtree scope selected
Attributes missing/truncatedLDAP size limit exceededReduce query scope or adjust DC LDAP policy
Cannot load snapshot fileCorrupted .dat or version mismatchRe-create snapshot; ensure consistent ADExplorer version
  • Regular Baselines: Create weekly snapshots for change detection and anomaly tracking
  • Secure Snapshots: Snapshots contain sensitive AD data; store encrypted or restricted
  • Authenticated Access: Use explicit domain credentials for comprehensive attribute access
  • Offline Analysis: Export snapshots for analysis on secure analyst machine (no domain access)
  • Scope Limiting: For large forests, snapshot specific OUs instead of entire tree (faster, smaller files)
  • Timestamped Naming: Use consistent naming convention (e.g., ad-YYYY-MM-DD-HHmmss.dat) for tracking
  • Comparison Frequency: Compare snapshots at regular intervals to detect unauthorized changes
  • Documentation: Record snapshot dates, scope, and any findings for audit trail
ToolPurpose
BloodHoundAD visualization, attack path analysis, privilege relationships
PowerViewPowerShell AD enumeration, detailed attribute queries, delegation discovery
ADFindCommand-line LDAP queries, scriptable AD enumeration, attribute export
ldapdomaindumpLDAP domain information dump, offline analysis, HTML reports
ADReconComprehensive AD reconnaissance, Excel-based reporting, security gaps
Get-ADObjectPowerShell native AD cmdlet for attribute inspection and filtering
ldapsearchNative LDAP client, portable, scriptable AD queries
Impacket (GetADUsers.py)Python-based AD enumeration, no agent required