Detection rules › Elastic

Windows Installer with Suspicious Properties

Status
production
Kind
building block (feeds higher-level correlation rules; not a standalone alert)
Severity
low
Time window
1m
Sequence by
host.id
Author
Elastic
Source
github.com/elastic/detection-rules

Identifies the execution of an installer from an archive or with suspicious properties. Adversaries may abuse msiexec.exe to launch local or network accessible MSI files in an attempt to bypass application whitelisting.

MITRE ATT&CK coverage

Telemetry coverage

Rule body

[metadata]
creation_date = "2023/09/26"
integration = ["endpoint"]
maturity = "production"
updated_date = "2026/07/28"

[rule]
author = ["Elastic"]
building_block_type = "default"
description = """
Identifies the execution of an installer from an archive or with suspicious properties. Adversaries may abuse
msiexec.exe to launch local or network accessible MSI files in an attempt to bypass application whitelisting.
"""
from = "now-119m"
index = ["logs-endpoint.events.*"]
interval = "60m"
language = "eql"
license = "Elastic License v2"
name = "Windows Installer with Suspicious Properties"
references = ["https://lolbas-project.github.io/lolbas/Binaries/Msiexec/"]
risk_score = 21
rule_id = "55f07d1b-25bc-4a0f-aa0c-05323c1319d0"
severity = "low"
tags = [
    "Domain: Endpoint",
    "OS: Windows",
    "Use Case: Threat Detection",
    "Tactic: Defense Evasion",
    "Rule Type: BBR",
    "Data Source: Elastic Defend",
]
type = "eql"

query = '''
sequence by host.id with maxspan=1m
  [registry where host.os.type == "windows" and event.type == "change" and process.name : "msiexec.exe" and
   (
    (registry.value : "InstallSource" and
     registry.data.strings : ("?:\\Users\\*\\Temp\\Temp?_*.zip\\*",
                             "?:\\Users\\*\\*.7z\\*",
                             "?:\\Users\\*\\*.rar\\*")) or

    (registry.value : ("DisplayName", "ProductName") and registry.data.strings : "SetupTest")
    )]
  [process where host.os.type == "windows" and event.action == "start" and
    process.parent.name : "msiexec.exe" and
    not process.name : "msiexec.exe" and
    not (process.executable : ("?:\\Program Files (x86)\\*.exe", "?:\\Program Files\\*.exe") and process.code_signature.trusted == true)]
'''


[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1218"
name = "System Binary Proxy Execution"
reference = "https://attack.mitre.org/techniques/T1218/"
[[rule.threat.technique.subtechnique]]
id = "T1218.007"
name = "Msiexec"
reference = "https://attack.mitre.org/techniques/T1218/007/"



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

Stages and Predicates

Ordered sequence: each step below must occur in order within 1m, correlated by host.id.

Stage 1: registry

[registry where host.os.type == "windows" and event.type == "change" and process.name : "msiexec.exe" and
   (
    (registry.value : "InstallSource" and
     registry.data.strings : ("?:\\Users\\*\\Temp\\Temp?_*.zip\\*",
                             "?:\\Users\\*\\*.7z\\*",
                             "?:\\Users\\*\\*.rar\\*")) or

    (registry.value : ("DisplayName", "ProductName") and registry.data.strings : "SetupTest")
    )]

Stage 2: process

[process where host.os.type == "windows" and event.action == "start" and
    process.parent.name : "msiexec.exe" and
    not process.name : "msiexec.exe" and
    not (process.executable : ("?:\\Program Files (x86)\\*.exe", "?:\\Program Files\\*.exe") and process.code_signature.trusted == true)]

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"
event.typeeq
  • change corpus 94 (elastic 94)
field:"event.type" kind:eq value:"change"
process.namewildcard
  • msiexec.exe corpus 46 (elastic 41, splunk 5)
field:"process_name" kind:wildcard value:"msiexec.exe"
process.parent.namewildcard
  • msiexec.exe corpus 19 (elastic 14, splunk 3, kusto 2)
field:"parent_process_name" kind:wildcard value:"msiexec.exe"
registry.data.stringswildcard
  • ?:\Users\*\*.7z\*
  • ?:\Users\*\*.rar\*
  • ?:\Users\*\Temp\Temp?_*.zip\*
  • SetupTest
field:"Details" kind:wildcard
registry.valuewildcard
  • DisplayName
  • InstallSource corpus 2 (elastic 2)
  • ProductName
field:"registry_value_name" kind:wildcard