Detection rules › Elastic

Potential UAC Bypass via IElevatedFactoryServer

Time window
5m
Sequence by
Effective_process.entity_id, process.entity_id
Source
github.com/elastic/protections-artifacts

Identifies attempt to elevate privileges to bypass User Account Control via an elevated function ServerCreateElevatedObject exposed by the Virtual Factory for MaintenanceUI COM object. Attackers may attempt to instantiate other privileged COM objects by proxy such as the ITaskService to execute with elevated permissions.

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Identifies attempt to elevate privileges to bypass User Account Control via an elevated function
ServerCreateElevatedObject exposed by the Virtual Factory for MaintenanceUI COM object. Attackers may attempt to
instantiate other privileged COM objects by proxy such as the ITaskService to execute with elevated permissions.
"""
id = "99da9371-dca4-400c-8b62-3c222553d2d3"
license = "Elastic License v2"
name = "Potential UAC Bypass via IElevatedFactoryServer"
os_list = ["windows"]
reference = [
    "https://www.zcgonvh.com/post/Advanced_Windows_Task_Scheduler_Playbook-Part.2_from_COM_to_UAC_bypass_and_get_SYSTEM_dirtectly.html",
    "https://github.com/zcgonvh/TaskSchedulerMisc/blob/master/schuac.cs",
    "https://strontic.github.io/xcyclopedia/library/clsid_A6BFEA43-501F-456F-A845-983D3AD7B8F0.html",
    "https://www.trendmicro.com/en_us/research/23/e/attack-on-security-titans-earth-longzhi-returns-with-new-tricks.html",
]
version = "1.0.11"

query = '''
sequence with maxspan=5m
 [process where event.action == "start" and
  process.name : "dllhost.exe" and process.args : "/Processid:{A6BFEA43-501F-456F-A845-983D3AD7B8F0}"] by process.entity_id
 [file where file.path : "?:\\Windows\\System32\\Tasks\\*"] by Effective_process.entity_id
'''

actions = []
min_endpoint_version = "8.4.0"
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 1

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1053"
name = "Scheduled Task/Job"
reference = "https://attack.mitre.org/techniques/T1053/"
[[threat.technique.subtechnique]]
id = "T1053.005"
name = "Scheduled Task"
reference = "https://attack.mitre.org/techniques/T1053/005/"



[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[[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 = "8.4.0"

Stages and Predicates

Ordered sequence: each step below must occur in order within 5m, correlated by Effective_process.entity_id, process.entity_id.

Stage 1: process

[process where event.action == "start" and
  process.name : "dllhost.exe" and process.args : "/Processid:{A6BFEA43-501F-456F-A845-983D3AD7B8F0}"] by process.entity_id

Stage 2: file

[file where file.path : "?:\\Windows\\System32\\Tasks\\*"] by Effective_process.entity_id

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
file.pathwildcard
  • ?:\Windows\System32\Tasks\* corpus 6 (elastic 6)
field:"TargetFilename" kind:wildcard value:"?:\Windows\System32\Tasks\*"
process.argswildcard
  • /Processid:{A6BFEA43-501F-456F-A845-983D3AD7B8F0}
field:"process.args" kind:wildcard value:"/Processid:{A6BFEA43-501F-456F-A845-983D3AD7B8F0}"
process.namewildcard
  • dllhost.exe corpus 19 (elastic 17, splunk 2)
field:"process_name" kind:wildcard value:"dllhost.exe"