Detection rules › Elastic

Suspicious Execution via Microsoft OfficeCmd URL Handler

Source
github.com/elastic/protections-artifacts

Identifies Microsoft Local Bridge executable with suspicious arguments that may indicate an attempt to exploit Microsoft ms-officecmd URL handler via an argument injection vulnerability.

MITRE ATT&CK coverage

TacticTechniques
Initial Access

Rule body

[rule]
description = """
Identifies Microsoft Local Bridge executable with suspicious arguments that may indicate an attempt to exploit Microsoft
ms-officecmd URL handler via an argument injection vulnerability.
"""
id = "12e6ac2e-a429-4f54-abb2-eaa5713a4d06"
license = "Elastic License v2"
name = "Suspicious Execution via Microsoft OfficeCmd URL Handler"
os_list = ["windows"]
reference = ["https://positive.security/blog/ms-officecmd-rce"]
version = "1.0.27"

query = '''
process where event.action == "start" and
 (process.name : "LocalBridge.exe" and process.command_line : "*ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*") or
 (process.parent.name : "LocalBridge.exe" and process.parent.command_line : "*ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*") or
 /* generic condition to capture abuses of Electron Apps --gpu-launcher switch for proxy execution */
 (process.parent.command_line : "*--disable-gpu-sandbox*--gpu-launcher=*" and not process.parent.name : "LocalBridge.exe")
'''

min_endpoint_version = "7.15.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1189"
name = "Drive-by Compromise"
reference = "https://attack.mitre.org/techniques/T1189/"


[threat.tactic]
id = "TA0001"
name = "Initial Access"
reference = "https://attack.mitre.org/tactics/TA0001/"

[internal]
min_endpoint_version = "7.15.0"

Stages and Predicates

Stage 1: process

process where event.action == "start" and
 (process.name : "LocalBridge.exe" and process.command_line : "*ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*") or
 (process.parent.name : "LocalBridge.exe" and process.parent.command_line : "*ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*") or
 (process.parent.command_line : "*--disable-gpu-sandbox*--gpu-launcher=*" and not process.parent.name : "LocalBridge.exe")

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
process.command_linewildcard
  • *ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*
field:"CommandLine" kind:wildcard value:"*ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*"
process.namewildcard
  • LocalBridge.exe
field:"process_name" kind:wildcard value:"LocalBridge.exe"
process.parent.command_linewildcard
  • *--disable-gpu-sandbox*--gpu-launcher=*
  • *ms-officecmd*LaunchOfficeAppForResult*--gpu-launcher*
field:"ParentCommandLine" kind:wildcard
process.parent.namewildcard
  • LocalBridge.exe
field:"parent_process_name" kind:wildcard value:"LocalBridge.exe"