Detection rules › Elastic

WMI Image Load via Microsoft Office

Time window
30s
Sequence by
user.id
Source
github.com/elastic/protections-artifacts

Identifies a suspicious image load (wmiutils.dll) from Microsoft Office processes followed by a child process spawned via Windows Management Instrumentation (WMI). This behavior may indicate adversarial activity to avoid spawning a suspicious MS Office child process.

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Identifies a suspicious image load (wmiutils.dll) from Microsoft Office processes followed by a child process spawned
via Windows Management Instrumentation (WMI). This behavior may indicate adversarial activity to avoid spawning a
suspicious MS Office child process.
"""
id = "46952f58-6741-4280-8e74-fa43f63c9604"
license = "Elastic License v2"
name = "WMI Image Load via Microsoft Office"
os_list = ["windows"]
reference = [
    "https://medium.com/threatpunter/detecting-adversary-tradecraft-with-image-load-event-logging-and-eql-8de93338c16",
]
version = "1.0.31"

query = '''
sequence by user.id with maxspan=30s
    [library where dll.name : ("wmiutils.dll", "fastprox.dll", "wbemprox.dll") and 
     process.name : ("excel.exe", "powerpnt.exe", "winword.exe")]
    [process where event.action == "start" and
     process.parent.name : "wmiprvse.exe" and
     not process.Ext.token.integrity_level_name == "system" and
     (process.pe.original_file_name :
        (
          "cscript.exe",
          "wscript.exe",
          "PowerShell.EXE",
          "Cmd.Exe",
          "pwsh.exe",
          "bitsadmin.exe",
          "certutil.exe",
          "hh.exe",
          "MSHTA.EXE",
          "RUNDLL32.EXE",
          "REGSVR32.EXE",
          "MSBuild.exe",
          "InstallUtil.exe",
          "RegAsm.exe",
          "RegSvcs.exe",
          "msxsl.exe",
          "CONTROL.EXE",
          "EXPLORER.EXE",
          "Microsoft.Workflow.Compiler.exe",
          "msiexec.exe",
          "sc.exe",
          "schtasks.exe",
          "WMIC.exe",
          "curl.exe"
        ) or
      process.executable : ("?:\\Users\\*.exe", "?:\\ProgramData\\*.exe")
     ) and
     not (process.name : "powershell.exe" and process.command_line : "*\\windows\\CCM\\*")

    ]
'''

min_endpoint_version = "7.15.0"
optional_actions = []
[[actions]]
action = "kill_process"
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 = "T1047"
name = "Windows Management Instrumentation"
reference = "https://attack.mitre.org/techniques/T1047/"


[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"

[internal]
min_endpoint_version = "7.15.0"

Stages and Predicates

Ordered sequence: each step below must occur in order within 30s, correlated by user.id.

Stage 1: library

[library where dll.name : ("wmiutils.dll", "fastprox.dll", "wbemprox.dll") and 
     process.name : ("excel.exe", "powerpnt.exe", "winword.exe")]

Stage 2: process

[process where event.action == "start" and
     process.parent.name : "wmiprvse.exe" and
     not process.Ext.token.integrity_level_name == "system" and
     (process.pe.original_file_name :
        (
          "cscript.exe",
          "wscript.exe",
          "PowerShell.EXE",
          "Cmd.Exe",
          "pwsh.exe",
          "bitsadmin.exe",
          "certutil.exe",
          "hh.exe",
          "MSHTA.EXE",
          "RUNDLL32.EXE",
          "REGSVR32.EXE",
          "MSBuild.exe",
          "InstallUtil.exe",
          "RegAsm.exe",
          "RegSvcs.exe",
          "msxsl.exe",
          "CONTROL.EXE",
          "EXPLORER.EXE",
          "Microsoft.Workflow.Compiler.exe",
          "msiexec.exe",
          "sc.exe",
          "schtasks.exe",
          "WMIC.exe",
          "curl.exe"
        ) or
      process.executable : ("?:\\Users\\*.exe", "?:\\ProgramData\\*.exe")
     ) and
     not (process.name : "powershell.exe" and process.command_line : "*\\windows\\CCM\\*")

    ]

Exclusions

The rule actively suppresses these predicates.

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
dll.namewildcard
  • fastprox.dll
  • wbemprox.dll corpus 2 (elastic 2)
  • wmiutils.dll corpus 6 (elastic 6)
field:"dll.name" kind:wildcard
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
process.executablewildcard
  • ?:\ProgramData\*.exe corpus 9 (elastic 9)
  • ?:\Users\*.exe corpus 6 (elastic 6)
field:"Image" kind:wildcard
process.namewildcard
  • excel.exe corpus 34 (elastic 34)
  • powerpnt.exe corpus 31 (elastic 31)
  • winword.exe corpus 35 (elastic 35)
field:"process_name" kind:wildcard
process.parent.namewildcard
  • wmiprvse.exe corpus 25 (elastic 19, splunk 5, kusto 1)
field:"parent_process_name" kind:wildcard value:"wmiprvse.exe"
process.pe.original_file_namewildcard
  • CONTROL.EXE corpus 3 (elastic 2, splunk 1)
  • Cmd.Exe corpus 81 (sigma 43, elastic 21, splunk 17)
  • EXPLORER.EXE corpus 4 (elastic 3, splunk 1)
  • InstallUtil.exe corpus 21 (elastic 11, sigma 6, splunk 4)
  • MSBuild.exe corpus 20 (elastic 15, splunk 4, sigma 1)
  • MSHTA.EXE corpus 40 (elastic 21, sigma 13, splunk 6)
  • Microsoft.Workflow.Compiler.exe corpus 12 (elastic 7, sigma 3, splunk 2)
  • PowerShell.EXE corpus 138 (sigma 84, splunk 30, elastic 24)
  • REGSVR32.EXE corpus 37 (sigma 17, elastic 15, splunk 5)
  • RUNDLL32.EXE corpus 78 (sigma 35, elastic 22, splunk 21)
  • RegAsm.exe corpus 14 (elastic 7, sigma 6, splunk 1)
  • RegSvcs.exe corpus 13 (elastic 7, sigma 5, splunk 1)
  • WMIC.exe corpus 80 (sigma 38, elastic 24, splunk 18)
  • bitsadmin.exe corpus 20 (sigma 9, elastic 8, splunk 2, kusto 1)
  • certutil.exe corpus 30 (sigma 14, elastic 10, splunk 6)
  • cscript.exe corpus 32 (sigma 17, elastic 15)
  • curl.exe corpus 24 (sigma 13, elastic 8, splunk 3)
  • hh.exe corpus 11 (sigma 5, splunk 4, elastic 2)
  • msiexec.exe corpus 20 (elastic 11, sigma 5, splunk 4)
  • msxsl.exe corpus 11 (elastic 8, sigma 3)
  • pwsh.exe corpus 7 (elastic 7)
  • sc.exe corpus 30 (sigma 12, splunk 10, elastic 8)
  • schtasks.exe corpus 31 (sigma 18, elastic 9, splunk 4)
  • wscript.exe corpus 38 (elastic 21, sigma 17)
field:"OriginalFileName" kind:wildcard