๐Ÿง—Privilege Escalation

Source

Tools

Windows Version and Configuration

Extract patchs and updates

Architecture

List all env variables

List all drives

Applications Enumeration

User Enumeration

Get current username

List user privilege

List all users

List logon requirements; useable for bruteforcing

Get details about a user (i.e. administrator, admin, current user)

List all local groups

Get details about a group (i.e. administrators)

Get Domain Controllers

Network Enumeration

List all network interfaces, IP, and DNS.

List current routing table

List the ARP table

List all current connections

List all network shares

SNMP Configuration

Antivirus & Detections

Enumerate antivirus on a box with

Windows Defender

Firewall

List firewall state and current configuration

List firewall's blocked ports

Disable firewall

AppLocker Enumeration

  • With the GPO

  • HKLM\SOFTWARE\Policies\Microsoft\Windows\SrpV2 (Keys: Appx, Dll, Exe, Msi and Script).

  • List AppLocker rules

  • Applocker Bypass

    • https://github.com/api0cradle/UltimateAppLockerByPassList/blob/master/Generic-AppLockerbypasses.md

    • https://github.com/api0cradle/UltimateAppLockerByPassList/blob/master/VerifiedAppLockerBypasses.md

    • https://github.com/api0cradle/UltimateAppLockerByPassList/blob/master/DLL-Execution.md

Powershell

Default powershell locations in a Windows system.

Powershell Constrained Mode

Example of AMSI Bypass.

Default Writeable Folders

EoP - Looting for passwords

SAM and SYSTEM files

The Security Account Manager (SAM), often Security Accounts Manager, is a database file. The user passwords are stored in a hashed format in a registry hive either as a LM hash or as a NTLM hash. This file can be found in %SystemRoot%/system32/config/SAM and is mounted on HKLM/SAM.

Generate a hash file for John using pwdump or samdump2.

Either crack it with john -format=NT /root/sam.txt or use Pass-The-Hash.

HiveNightmare

CVE-2021โ€“36934 allows you to retrieve all registry hives (SAM,SECURITY,SYSTEM) in Windows 10 and 11 as a non-administrator user

Check for the vulnerability using icacls

Then exploit the CVE by requesting the shadowcopies on the filesystem and reading the hives from it.

Search for file contents

Search for a file with a certain filename

Search the registry for key names and passwords

Read a value of a certain sub key

Passwords in unattend.xml

Location of the unattend.xml files.

Display the content of these files with dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul.

Example content

Unattend credentials are stored in base64 and can be decoded manually with base64.

The Metasploit module post/windows/gather/enum_unattend looks for these files.

IIS Web config

Other files

Wifi passwords

Find AP SSID

Get Cleartext Pass

Oneliner method to extract wifi passwords from all the access point.

Sticky Notes passwords

The sticky notes app stores it's content in a sqlite db located at C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite

Passwords stored in services

Saved session information for PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP using SessionGopher

Powershell History

Disable Powershell history: Set-PSReadlineOption -HistorySaveStyle SaveNothing.

Powershell Transcript

Password in Alternate Data Stream

EoP - Processes Enumeration and Tasks

  • What processes are running?

  • Which processes are running as "system"

  • Do you have powershell magic?

  • List installed programs

  • List services

  • Enumerate scheduled tasks

  • Startup tasks

EoP - Incorrect permissions in services

A service running as Administrator/SYSTEM with incorrect file permissions might allow EoP. You can replace the binary, restart the service and get system.

Often, services are pointing to writeable locations:

  • Orphaned installs, not installed anymore but still exist in startup

  • DLL Hijacking

  • PATH directories with weak permissions

Alternatively you can use the Metasploit exploit : exploit/windows/local/service_permissions

Note to check file permissions you can use cacls and icacls

icacls (Windows Vista +) cacls (Windows XP)

You are looking for BUILTIN\Users:(F)(Full access), BUILTIN\Users:(M)(Modify access) or BUILTIN\Users:(W)(Write-only access) in the output.

Example with Windows 10 - CVE-2019-1322 UsoSvc

Prerequisite: Service account

Example with Windows XP SP1 - upnphost

If it fails because of a missing dependency, try the following commands.

Using accesschk from Sysinternals or accesschk-XP.exe - github.com/phackt

EoP - Windows Subsystem for Linux (WSL)

Technique borrowed from Warlockobama's tweet

With root privileges Windows Subsystem for Linux (WSL) allows users to create a bind shell on any port (no elevation needed). Don't know the root password? No problem just set the default user to root W/ .exe --default-user root. Now start your bind shell or reverse.

Binary bash.exe can also be found in C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe

Alternatively you can explore the WSL filesystem in the folder C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\

EoP - Unquoted Service Paths

The Microsoft Windows Unquoted Service Path Enumeration Vulnerability. All Windows services have a Path to its executable. If that path is unquoted and contains whitespace or other separators, then the service will attempt to access a resource in the parent path first.

  • Metasploit exploit : exploit/windows/local/trusted_service_path

  • PowerUp exploit

Example

For C:\Program Files\something\legit.exe, Windows will try the following paths first:

  • C:\Program.exe

  • C:\Program Files.exe

EoP - $PATH Interception

Requirements:

  • PATH contains a writeable folder with low privileges.

  • The writeable folder is before the folder that contains the legitimate binary.

EXAMPLE:

Because (in this example) "C:\Program Files\nodejs" is before "C:\WINDOWS\system32" on the PATH variable, the next time the user runs "cmd.exe", our evil version in the nodejs folder will run, instead of the legitimate one in the system32 folder.

EoP - Named Pipes

  1. Find named pipes: [System.IO.Directory]::GetFiles("\\.\pipe\")

  2. Check named pipes DACL: pipesec.exe <named_pipe>

  3. Reverse engineering software

  4. Send data throught the named pipe : program.exe >\\.\pipe\StdOutPipe 2>\\.\pipe\StdErrPipe

EoP - Kernel Exploitation

List of exploits kernel : https://github.com/SecWiki/windows-kernel-exploits

#Security Bulletin #KB #Description #Operating System

  • MS17-017 ใ€€[KB4013081]ใ€€ใ€€[GDI Palette Objects Local Privilege Escalation]ใ€€ใ€€(windows 7/8)

  • CVE-2017-8464 ใ€€[LNK Remote Code Execution Vulnerability]ใ€€ใ€€(windows 10/8.1/7/2016/2010/2008)

  • CVE-2017-0213 ใ€€[Windows COM Elevation of Privilege Vulnerability]ใ€€ใ€€(windows 10/8.1/7/2016/2010/2008)

  • CVE-2018-0833 [SMBv3 Null Pointer Dereference Denial of Service] (Windows 8.1/Server 2012 R2)

  • CVE-2018-8120 [Win32k Elevation of Privilege Vulnerability] (Windows 7 SP1/2008 SP2,2008 R2 SP1)

  • MS17-010 ใ€€[KB4013389]ใ€€ใ€€[Windows Kernel Mode Drivers]ใ€€ใ€€(windows 7/2008/2003/XP)

  • MS16-135 ใ€€[KB3199135]ใ€€ใ€€[Windows Kernel Mode Drivers]ใ€€ใ€€(2016)

  • MS16-111 ใ€€[KB3186973]ใ€€ใ€€[kernel api]ใ€€ใ€€(Windows 10 10586 (32/64)/8.1)

  • MS16-098 ใ€€[KB3178466]ใ€€ใ€€[Kernel Driver]ใ€€ใ€€(Win 8.1)

  • MS16-075 ใ€€[KB3164038]ใ€€ใ€€[Hot Potato]ใ€€ใ€€(2003/2008/7/8/2012)

  • MS16-034 ใ€€[KB3143145]ใ€€ใ€€[Kernel Driver]ใ€€ใ€€(2008/7/8/10/2012)

  • MS16-032 ใ€€[KB3143141]ใ€€ใ€€[Secondary Logon Handle]ใ€€ใ€€(2008/7/8/10/2012)

  • MS16-016 ใ€€[KB3136041]ใ€€ใ€€[WebDAV]ใ€€ใ€€(2008/Vista/7)

  • MS16-014 ใ€€[K3134228]ใ€€ใ€€[remote code execution]ใ€€ใ€€(2008/Vista/7) ...

  • MS03-026 ใ€€[KB823980]ใ€€ใ€€ [Buffer Overrun In RPC Interface]ใ€€ใ€€(/NT/2000/XP/2003)

To cross compile a program from Kali, use the following command.

EoP - AlwaysInstallElevated

Check if these registry values are set to "1".

Then create an MSI package and install it.

Technique also available in :

  • Metasploit : exploit/windows/local/always_install_elevated

  • PowerUp.ps1 : Get-RegistryAlwaysInstallElevated, Write-UserAddMSI

EoP - Insecure GUI apps

Application running as SYSTEM allowing an user to spawn a CMD, or browse directories.

Example: "Windows Help and Support" (Windows + F1), search for "command prompt", click on "Click to open Command Prompt"

EoP - Evaluating Vulnerable Drivers

Look for vuln drivers loaded, we often don't spend enough time looking at this:

EoP - Printers

Universal Printer

Create a Printer

Execute the driver

PrinterNightmare

Bring Your Own Vulnerability

Concealed Position : https://github.com/jacob-baines/concealed_position

EoP - Runas

Use the cmdkey to list the stored credentials on the machine.

Then you can use runas with the /savecred options in order to use the saved credentials. The following example is calling a remote binary via an SMB share.

Using runas with a provided set of credential.

EoP - Abusing Shadow Copies

If you have local administrator access on a machine try to list shadow copies, it's an easy way for Privilege Escalation.

EoP - From local administrator to NT SYSTEM

EoP - Living Off The Land Binaries and Scripts

Living Off The Land Binaries and Scripts (and also Libraries) : https://lolbas-project.github.io/

The goal of the LOLBAS project is to document every binary, script, and library that can be used for Living Off The Land techniques.

A LOLBin/Lib/Script must:

  • Be a Microsoft-signed file, either native to the OS or downloaded from Microsoft. Have extra "unexpected" functionality. It is not interesting to document intended use cases. Exceptions are application whitelisting bypasses

  • Have functionality that would be useful to an APT or red team

EoP - Impersonation Privileges

Full privileges cheatsheet at https://github.com/gtworek/Priv2Admin, summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.

Privilege
Impact
Tool
Execution path
Remarks

SeAssignPrimaryToken

Admin

3rd party tool

"It would allow a user to impersonate tokens and privesc to nt system using tools such as potato.exe, rottenpotato.exe and juicypotato.exe"

Thank you Aurรฉlien Chalot for the update. I will try to re-phrase it to something more recipe-like soon.

SeBackup

Threat

Built-in commands

Read sensitve files with robocopy /b

- May be more interesting if you can read %WINDIR%\MEMORY.DMP - SeBackupPrivilege (and robocopy) is not helpful when it comes to open files. - Robocopy requires both SeBackup and SeRestore to work with /b parameter.

SeCreateToken

Admin

3rd party tool

Create arbitrary token including local admin rights with NtCreateToken.

SeDebug

Admin

PowerShell

Duplicate the lsass.exe token.

Script to be found at FuzzySecurity

SeLoadDriver

Admin

3rd party tool

1. Load buggy kernel driver such as szkg64.sys or capcom.sys 2. Exploit the driver vulnerability Alternatively, the privilege may be used to unload security-related drivers with ftlMC builtin command. i.e.: fltMC sysmondrv

1. The szkg64 vulnerability is listed as CVE-2018-15732 2. The szkg64 exploit code was created by Parvez Anwar

SeRestore

Admin

PowerShell

1. Launch PowerShell/ISE with the SeRestore privilege present. 2. Enable the privilege with Enable-SeRestorePrivilege). 3. Rename utilman.exe to utilman.old 4. Rename cmd.exe to utilman.exe 5. Lock the console and press Win+U

Attack may be detected by some AV software. Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege.

SeTakeOwnership

Admin

Built-in commands

1. takeown.exe /f "%windir%\system32" 2. icalcs.exe "%windir%\system32" /grant "%username%":F 3. Rename cmd.exe to utilman.exe 4. Lock the console and press Win+U

Attack may be detected by some AV software. Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege.

SeTcb

Admin

3rd party tool

Manipulate tokens to have local admin rights included. May require SeImpersonate. To be verified.

Restore A Service Account's Privileges

This tool should be executed as LOCAL SERVICE or NETWORK SERVICE only.

Meterpreter getsystem and alternatives

RottenPotato (Token Impersonation)

  • Binary available at : https://github.com/foxglovesec/RottenPotato

  • Binary available at : https://github.com/breenmachine/RottenPotatoNG

Juicy Potato (Abusing the golden privileges)

If the machine is >= Windows 10 1809 & Windows Server 2019 - Try Rogue Potato If the machine is < Windows 10 1809 < Windows Server 2019 - Try Juicy Potato

  • Binary available at : https://github.com/ohpe/juicy-potato/releases

  1. Check the privileges of the service account, you should look for SeImpersonate and/or SeAssignPrimaryToken (Impersonate a client after authentication)

  2. Select a CLSID based on your Windows version, a CLSID is a globally unique identifier that identifies a COM class object

  3. Execute JuicyPotato to run a privileged command.

Rogue Potato (Fake OXID Resolver)

  • Binary available at https://github.com/antonioCoco/RoguePotato

EFSPotato (MS-EFSR EfsRpcOpenFileRaw)

  • Binary available at https://github.com/zcgonvh/EfsPotato

EoP - Privileged File Write

DiagHub

โš ๏ธ Starting with version 1903 and above, DiagHub can no longer be used to load arbitrary DLLs.

The Microsoft Diagnostics Hub Standard Collector Service (DiagHub) is a service that collects trace information and is programmatically exposed via DCOM. This DCOM object can be used to load a DLL into a SYSTEM process, provided that this DLL exists in the C:\Windows\System32 directory.

Exploit

  1. Create an evil DLL e.g: payload.dll and move it into C:\Windows\System32

  2. Build https://github.com/xct/diaghub

  3. diaghub.exe c:\\ProgramData\\ payload.dll

The default payload will run C:\Windows\System32\spool\drivers\color\nc.exe -lvp 2000 -e cmd.exe

Alternative tools:

  • https://github.com/Accenture/AARO-Bugs/tree/master/CVE-2020-5825/TrigDiag

  • https://github.com/decoder-it/diaghub_exploit

UsoDLLLoader

โš ๏ธ 2020-06-06 Update: this trick no longer works on the latest builds of Windows 10 Insider Preview.

An alternative to the DiagHub DLL loading "exploit" found by James Forshaw (a.k.a. @tiraniddo)

If we found a privileged file write vulnerability in Windows or in some third-party software, we could copy our own version of windowscoredeviceinfo.dll into C:\Windows\Sytem32\ and then have it loaded by the USO service to get arbitrary code execution as NT AUTHORITY\System.

Exploit

  1. Build https://github.com/itm4n/UsoDllLoader

    • Select Release config and x64 architecure.

    • Build solution.

      • DLL .\x64\Release\WindowsCoreDeviceInfo.dll

      • Loader .\x64\Release\UsoDllLoader.exe.

  2. Copy WindowsCoreDeviceInfo.dll to C:\Windows\System32\

  3. Use the loader and wait for the shell or run usoclient StartInteractiveScan and connect to the bind shell on port 1337.

WerTrigger

Weaponizing for privileged file writes bugs with Windows problem reporting

  1. Clone https://github.com/sailay1996/WerTrigger

  2. Copy phoneinfo.dll to C:\Windows\System32\

  3. Place Report.wer file and WerTrigger.exe in a same directory.

  4. Then, run WerTrigger.exe.

  5. Enjoy a shell as NT AUTHORITY\SYSTEM

EoP - Common Vulnerabilities and Exposure

MS08-067 (NetAPI)

Check the vulnerability with the following nmap script.

Metasploit modules to exploit MS08-067 NetAPI.

If you can't use Metasploit and only want a reverse shell.

MS10-015 (KiTrap0D) - Microsoft Windows NT/2000/2003/2008/XP/Vista/7

'KiTrap0D' User Mode to Ring Escalation (MS10-015)

MS11-080 (afd.sys) - Microsoft Windows XP/2003

MS15-051 (Client Copy Image) - Microsoft Windows 2003/2008/7/8/2012

MS16-032 - Microsoft Windows 7 < 10 / 2008 < 2012 R2 (x86/x64)

Check if the patch is installed : wmic qfe list | findstr "3139914"

MS17-010 (Eternal Blue)

Check the vulnerability with the following nmap script or crackmapexec: crackmapexec smb 10.10.10.10 -u '' -p '' -d domain -M ms17-010.

Metasploit modules to exploit EternalRomance/EternalSynergy/EternalChampion.

If you can't use Metasploit and only want a reverse shell.

CVE-2019-1388

Exploit : https://packetstormsecurity.com/files/14437/hhupd.exe.html

Requirement:

  • Windows 7

  • Windows 10 LTSC 10240

Failing on :

  • LTSC 2019

  • 1709

  • 1803

Detailed information about the vulnerability : https://www.zerodayinitiative.com/blog/2019/11/19/thanksgiving-treat-easy-as-pie-windows-7-secure-desktop-escalation-of-privilege

Last updated

Was this helpful?