Detection rules › Elastic

Execution via Outlook Application COM Object

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

Identifies the execution of commonly abused utilities to run DLLs or scripts via the Outlook.Application COM Object. This behavior may indicate adversarial activity to evade defenses on the system.

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Identifies the execution of commonly abused utilities to run DLLs or scripts via the Outlook.Application COM Object.
This behavior may indicate adversarial activity to evade defenses on the system.
"""
id = "17030515-5ed0-43c8-9602-f97cbebd43c0"
license = "Elastic License v2"
name = "Execution via Outlook Application COM Object"
os_list = ["windows"]
reference = ["https://www.darkoperator.com/blog/2017/11/11/windows-defender-exploit-guard-asr-rules-for-office"]
version = "1.0.33"

query = '''
sequence with maxspan=1m
   /* Outlook started via DCOM */
 [process where event.action == "start" and
  process.name : "outlook.exe" and process. command_line : "*-Embedding*" and
  process.parent.name : "svchost.exe"] by process.entity_id
   /* Suspicious Outlook child processes */
 [process where event.action == "start" and
   process.pe.original_file_name :
               ("cscript.exe",
                "wscript.exe",
                "powershell.exe",
                "rundll32.exe",
                "cmd.exe",
                "mshta.exe",
                "msbuild.exe",
                "InstallUtil.exe",
                "Microsoft.Workflow.Compiler.exe",
                "wmic.exe",
                "regsvr32.exe",
                "pwsh.exe",
                "ScriptRunner.exe") and not
   /* Issue #330 */
   (process.name:"rundll32.exe" and process.args : ("--eoim", "--enable-speech-input")) and

   not (process.name : "rundll32.exe" and process.args : "?:\\WINDOWS\\sys*\\spool\\DRIVERS\\x64\\3\\*.dll,MonitorPrintJobStatus")] by process.parent.entity_id
'''

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 = "T1566"
name = "Phishing"
reference = "https://attack.mitre.org/techniques/T1566/"
[[threat.technique.subtechnique]]
id = "T1566.001"
name = "Spearphishing Attachment"
reference = "https://attack.mitre.org/techniques/T1566/001/"



[threat.tactic]
id = "TA0001"
name = "Initial Access"
reference = "https://attack.mitre.org/tactics/TA0001/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[threat.technique.subtechnique]]
id = "T1059.001"
name = "PowerShell"
reference = "https://attack.mitre.org/techniques/T1059/001/"

[[threat.technique.subtechnique]]
id = "T1059.007"
name = "JavaScript"
reference = "https://attack.mitre.org/techniques/T1059/007/"



[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1218"
name = "System Binary Proxy Execution"
reference = "https://attack.mitre.org/techniques/T1218/"
[[threat.technique.subtechnique]]
id = "T1218.005"
name = "Mshta"
reference = "https://attack.mitre.org/techniques/T1218/005/"

[[threat.technique.subtechnique]]
id = "T1218.010"
name = "Regsvr32"
reference = "https://attack.mitre.org/techniques/T1218/010/"

[[threat.technique.subtechnique]]
id = "T1218.011"
name = "Rundll32"
reference = "https://attack.mitre.org/techniques/T1218/011/"



[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"

[internal]
min_endpoint_version = "7.15.0"

Stages and Predicates

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

Stage 1: process

[process where event.action == "start" and
  process.name : "outlook.exe" and process. command_line : "*-Embedding*" and
  process.parent.name : "svchost.exe"] by process.entity_id

Stage 2: process

[process where event.action == "start" and
   process.pe.original_file_name :
               ("cscript.exe",
                "wscript.exe",
                "powershell.exe",
                "rundll32.exe",
                "cmd.exe",
                "mshta.exe",
                "msbuild.exe",
                "InstallUtil.exe",
                "Microsoft.Workflow.Compiler.exe",
                "wmic.exe",
                "regsvr32.exe",
                "pwsh.exe",
                "ScriptRunner.exe") and not
   (process.name:"rundll32.exe" and process.args : ("--eoim", "--enable-speech-input")) and
   not (process.name : "rundll32.exe" and process.args : "?:\\WINDOWS\\sys*\\spool\\DRIVERS\\x64\\3\\*.dll,MonitorPrintJobStatus")] by process.parent.entity_id

Exclusions

The rule actively suppresses these predicates.

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
  • *-Embedding* corpus 2 (sigma 1, elastic 1)
field:"CommandLine" kind:wildcard value:"*-Embedding*"
process.namewildcard
  • outlook.exe corpus 9 (elastic 7, splunk 2)
field:"process_name" kind:wildcard value:"outlook.exe"
process.parent.namewildcard
  • svchost.exe corpus 19 (elastic 12, splunk 5, kusto 2)
field:"parent_process_name" kind:wildcard value:"svchost.exe"
process.pe.original_file_namewildcard
  • InstallUtil.exe corpus 21 (elastic 11, sigma 6, splunk 4)
  • Microsoft.Workflow.Compiler.exe corpus 12 (elastic 7, sigma 3, splunk 2)
  • ScriptRunner.exe corpus 6 (sigma 3, elastic 3)
  • cmd.exe corpus 81 (sigma 43, elastic 21, splunk 17)
  • cscript.exe corpus 32 (sigma 17, elastic 15)
  • msbuild.exe corpus 20 (elastic 15, splunk 4, sigma 1)
  • mshta.exe corpus 40 (elastic 21, sigma 13, splunk 6)
  • powershell.exe corpus 138 (sigma 84, splunk 30, elastic 24)
  • pwsh.exe corpus 7 (elastic 7)
  • regsvr32.exe corpus 37 (sigma 17, elastic 15, splunk 5)
  • rundll32.exe corpus 78 (sigma 35, elastic 22, splunk 21)
  • wmic.exe corpus 80 (sigma 38, elastic 24, splunk 18)
  • wscript.exe corpus 38 (elastic 21, sigma 17)
field:"OriginalFileName" kind:wildcard