OSCP Active Directory Checklist
🔍Initial Enumeration
Scan all TCP ports
Scan UDP ports
Check LDAP for anonymous access
Check RPC for anonymous access
Check SMB for anonymous access
Check for public shares
👥 Username Collection
Use
kerbrutewith SecLists xato username wordlistUse
netexec --rid-bruteUse
netexec --userson SMB protocolUse
netexec ldap --userson LDAP protocol (sometimes rid-brute works, --users doesn't)Use
rpcclientwithenumdomusersCheck user descriptions for passwords (--users ldap smb)
Actively collect and sort usernames
🎯 Kerberos Attacks
AS-REP Roasting - Test after collecting usernames
Crack AS-REP hashes if obtained
Try
--downgradeflagKerberoasting - After getting username and password
🔐 Credential Testing
Try
netexecon all protocols: SMB, WinRM, LDAP, RDP, SSH, MSSQLTry
--local-auth(local auth never forgets)Password spray always
Spray hashes/passwords actively
Have username and SSH? Bruteforce
📁 Share Enumeration
Enumerate shares for every user you get access to
Check all shares even IPC$, SYSVOL, all default and non-default shares
Every new user = recheck their shares
gpp-decryptif applicableCheck if writeable share could steal hashes with
responder
💻 Shell Access
Use RDP as much as possible (avoid Kerberos Double-Hop issue with WinRM)
Use
runascs.exeto switch shell if have creds but user doesn't have remote desktop accessTry to open cmd/powershell as privileged user (open as admin)
Gained shell? Try responder
dir \\192.168.119.2\testeven in shell
🔍 Local Enumeration & Credential Hunting
Run Enumeration Tools
Run WinPEAS
Check for local privilege escalation
PowerShell History
Stored Credentials
cmd
Stored creds always there -
cmdkey /list
Registry Credentials
cmd
Browser Credentials
powershell
Firefox credentials - firefox_decrypt
LaZagne - LaZagne
File System Hunting
powershell
powershell
IBD MySQL/Database Files (.ibd)
powershell
If MySQL found:
cmd
Deep Enumeration
Enumerate cache - look around all dir / poke around files, hidden documents, log files
Check all folders C:, Program Files, xampp inside files storing passwords
Look for hidden files - recurse all directories that stand out
Use
exiftool -a -uon all PDFs, images, DOCX filesEnum deeper - check all folders in C:, Program Files
When we find passwords in configuration or text files, always try them for all possible users or services as passwords are often reused
👑 Local Administrator Access
Credential Harvesting
Dump SAM
Dump SYSTEM
Dump NTDS.dit
LSA dump - Look for passwords
Run Mimikatz - Check
logonpasswordsHash collection - look around everywhere
Collect all hashes for later cracking/lateral movement
Lots of hashes? Crack those - auth with password sometimes hash doesn't allow
local auth sometimes workks
Post-Admin Tools
Run WinPEAS after becoming local admin
Run SharpHound (use sharphound | sharpdpi.exe)
Check PowerShell history again
Check autologon creds
Local admin? Must poke around | WinPEAS | creds hunt | PowerShell history
Note:
netexecdoesn't show pwned all time - manually check with winrm username pass, else usenxc winrm --local-auth. Sometimesnxcdoesn't show pwned while you have administrator hash - manually do it, it works.
🩸 BloodHound
Run BloodHound / Rust-hound and check for attack paths, roasting, and DCSync
Check for exploitable ACLs/permissions
Big lesson: Always re-collect BloodHound data - new user = new BloodHound collection
🌐 Pivoting & Lateral Movement
Network Pivoting
Check for additional network adapters (pivoting needed?)
Set up ligolo-ng also add 240 route
Run
nmapthrough pivot
Lateral Movement
Spray collected passwords/hashes across all machines
sometimes in shell run with
RunasCs.exe username password whoamiTry
--local-authfor password reuseTest credentials on all protocols
Most sensitive data may be stored in locations that don't require domain admin privileges (databases, file servers)
Use credspray nice tool
🔄 Continuous Cycle
Enumerate >> Enumerate >> Gain new account >> Repeat all enum from 0
Every new user = Recheck shares
Every new credentials = Test all protocols
Every new admin access = Dump credentials and run BloodHound
If stuck, rescan - verify tools are working properly and you're running them properly
Key Reminders:
New user = New BloodHound collection
When passwords found = Try for ALL users/services
Local auth never forgets - try
--local-authPrefer RDP over WinRM (Kerberos Double-Hop issue)
Powershell History
Check All Users Desktop pcap? on boarding doc?
Registry Passwords
Locally running services
Last updated