Access Token Manipulation: Create Process with Token

Adversaries may create a new process with a duplicated token to escalate privileges and bypass access controls. An adversary can duplicate a desired access token with DuplicateToken(Ex) and use it with CreateProcessWithTokenW to create a new process running under the security context of the impersonated user. This is useful for creating a new process under the security context of a different user.

ID: T1134.002
Sub-technique of:  T1134
Tactics: Defense Evasion, Privilege Escalation
Platforms: Windows
Data Sources: API monitoring, Access tokens, Process command-line parameters, Process monitoring
Defense Bypassed: File system access controls, System access controls, Windows User Account Control
Version: 1.0
Created: 18 February 2020
Last Modified: 26 March 2020

Procedure Examples

Name Description

Aria-body has the ability to execute a process using runas.[1]


Azorult can call WTSQueryUserToken and CreateProcessAsUser to start a new process with local system privileges.[2]


Bankshot grabs a user token using WTSQueryUserToken and then creates a process by impersonating a logged-on user.[3]


Empire can use Invoke-RunAs to make tokens.[4]


KONNI has duplicated the token of a high integrity process to spawn an instance of cmd.exe under an impersonated user.[5]

Lazarus Group

Lazarus Group keylogger KiloAlfa obtains user tokens from interactive sessions to execute itself with API call CreateProcessAsUserA under that user's context.[6][7]


PipeMon can attempt to gain administrative privileges using token impersonation.[8]


PoshC2 can use Invoke-RunAs to make tokens.[9]


REvil can launch an instance of itself with administrative rights using runas.[10]


Turla RPC backdoors can impersonate or steal process tokens before executing commands.[11]


ZxShell has a command called RunAs, which creates a new process as another user or process context.[12]


Mitigation Description
Privileged Account Management

Limit permissions so that users and user groups cannot create tokens. This setting should be defined for the local system account only. GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Create a token object. [13] Also define who can create a process level token to only the local and network service through GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Replace a process level token.[14]

Administrators should log in as a standard user but run their tools with administrator privileges using the built-in access token manipulation command runas.[15]

User Account Management

An adversary must already have administrator level access on the local system to make full use of this technique; be sure to restrict users and accounts to the least privileges they require.


If an adversary is using a standard command-line shell, analysts can detect token manipulation by auditing command-line activity. Specifically, analysts should look for use of the runas command. Detailed command-line logging is not enabled by default in Windows.[16]

If an adversary is using a payload that calls the Windows token APIs directly, analysts can detect token manipulation only through careful analysis of user network activity, examination of running processes, and correlation with other endpoint and network behavior.

Analysts can also monitor for use of Windows APIs such as DuplicateToken(Ex) and CreateProcessWithTokenW and correlate activity with other suspicious behavior to reduce false positives that may be due to normal benign use by users and administrators.