Detection rules › Elastic
UAC Bypass via WSReset Execution Hijack
Identifies attempts to bypass User Account Control (UAC) via WSReset execution hijack. Attackers bypass UAC to stealthily execute code with elevated permissions.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Rule body
[rule]
description = """
Identifies attempts to bypass User Account Control (UAC) via WSReset execution hijack. Attackers bypass UAC to
stealthily execute code with elevated permissions.
"""
id = "11c67af9-9599-4800-9e84-bd38f2a51581"
license = "Elastic License v2"
name = "UAC Bypass via WSReset Execution Hijack"
os_list = ["windows"]
reference = ["https://github.com/hfiref0x/UACME"]
version = "1.0.31"
query = '''
sequence with maxspan=60s
[registry where
registry.path :
("HKEY_USERS\\S-1-5-21-*Classes\\*\\Shell\\open\\command\\DelegateExecute",
"HKEY_USERS\\S-1-12-1-*Classes\\*\\Shell\\open\\command\\DelegateExecute",
"*\\ms-windows-store*")]
[process where event.action == "start" and process.parent.name : "WSReset.exe" and
process.Ext.token.integrity_level_name == "high" and
not process.executable :
("?:\\Windows\\System32\\WerFault.exe",
"?:\\Windows\\SysWOW64\\WerFault.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\SysWOW64\\mmc.exe",
"?:\\Windows\\system32\\conhost.exe",
"?:\\Windows\\SysWOW6\\conhost.exe")]
'''
min_endpoint_version = "7.15.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 1
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 1
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1548"
name = "Abuse Elevation Control Mechanism"
reference = "https://attack.mitre.org/techniques/T1548/"
[[threat.technique.subtechnique]]
id = "T1548.002"
name = "Bypass User Account Control"
reference = "https://attack.mitre.org/techniques/T1548/002/"
[threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
[internal]
min_endpoint_version = "7.15.0"
Stages and Predicates
Stage 1: registry
[registry where
registry.path :
("HKEY_USERS\\S-1-5-21-*Classes\\*\\Shell\\open\\command\\DelegateExecute",
"HKEY_USERS\\S-1-12-1-*Classes\\*\\Shell\\open\\command\\DelegateExecute",
"*\\ms-windows-store*")]
Stage 2: process
[process where event.action == "start" and process.parent.name : "WSReset.exe" and
process.Ext.token.integrity_level_name == "high" and
not process.executable :
("?:\\Windows\\System32\\WerFault.exe",
"?:\\Windows\\SysWOW64\\WerFault.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\SysWOW64\\mmc.exe",
"?:\\Windows\\system32\\conhost.exe",
"?:\\Windows\\SysWOW6\\conhost.exe")]
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.executable | eq | ?:\Windows\System32\WerFault.exe, ?:\Windows\SysWOW64\WerFault.exe, ?:\Windows\System32\mmc.exe, ?:\Windows\SysWOW64\mmc.exe, ?:\Windows\system32\conhost.exe, ?:\Windows\SysWOW6\conhost.exe | excludes:process.executable |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.Ext.token.integrity_level_name | eq |
| field:"process.Ext.token.integrity_level_name" kind:eq value:"high" |
process.parent.name | wildcard |
| field:"parent_process_name" kind:wildcard value:"WSReset.exe" |
registry.path | wildcard |
| field:"TargetObject" kind:wildcard |