Detection rules › Elastic

Suspicious Troubleshooting Pack Cabinet Execution

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

Identifies the execution of the Microsoft Diagnostic Wizard to open a diagcab file from a suspicious path and with an unusual parent process. This may indicate an attempt to execute malicious Troubleshooting Pack Cabinet files.

MITRE ATT&CK coverage

Event coverage

Rule body elastic

[metadata]
creation_date = "2023/09/26"
integration = ["endpoint", "windows", "system"]
maturity = "production"
updated_date = "2026/03/24"

[rule]
author = ["Elastic"]
building_block_type = "default"
description = """
Identifies the execution of the Microsoft Diagnostic Wizard to open a diagcab file from a suspicious path and with an
unusual parent process. This may indicate an attempt to execute malicious Troubleshooting Pack Cabinet files.
"""
from = "now-119m"
index = [
    "endgame-*",
    "logs-endpoint.events.process-*",
    "logs-system.security*",
    "logs-windows.*",
    "winlogbeat-*",
]
interval = "60m"
language = "eql"
license = "Elastic License v2"
name = "Suspicious Troubleshooting Pack Cabinet Execution"
references = ["https://irsl.medium.com/the-trouble-with-microsofts-troubleshooters-6e32fc80b8bd"]
risk_score = 21
rule_id = "808291d3-e918-4a3a-86cd-73052a0c9bdc"
severity = "low"
tags = [
    "Domain: Endpoint",
    "OS: Windows",
    "Use Case: Threat Detection",
    "Tactic: Defense Evasion",
    "Rule Type: BBR",
    "Data Source: Elastic Defend",
    "Data Source: Elastic Endgame",
    "Data Source: Windows Security Event Logs",
]
timestamp_override = "event.ingested"
type = "eql"

query = '''
process where host.os.type == "windows" and event.action == "start" and
  (process.name : "msdt.exe" or ?process.pe.original_file_name == "msdt.exe") and process.args : "/cab" and
  process.parent.name : (
    "firefox.exe", "chrome.exe", "msedge.exe", "explorer.exe", "brave.exe", "whale.exe", "browser.exe",
    "dragon.exe", "vivaldi.exe", "opera.exe", "iexplore", "firefox.exe", "waterfox.exe", "iexplore.exe",
    "winrar.exe", "winrar.exe", "7zFM.exe", "outlook.exe", "winword.exe", "excel.exe"
  ) and
  process.args : (
    "?:\\Users\\*",
    "\\\\*",
    "http*",
    "ftp://*"
  )
'''


[[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.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"

[[rule.threat]]
framework = "MITRE ATT&CK"

[[rule.threat.technique]]
id = "T1204"
name = "User Execution"
reference = "https://attack.mitre.org/techniques/T1204/"

[[rule.threat.technique.subtechnique]]
id = "T1204.002"
name = "Malicious File"
reference = "https://attack.mitre.org/techniques/T1204/002/"

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

Stages and Predicates

Stage 1: process

process where host.os.type == "windows" and event.action == "start" and
  (process.name : "msdt.exe" or ?process.pe.original_file_name == "msdt.exe") and process.args : "/cab" and
  process.parent.name : (
    "firefox.exe", "chrome.exe", "msedge.exe", "explorer.exe", "brave.exe", "whale.exe", "browser.exe",
    "dragon.exe", "vivaldi.exe", "opera.exe", "iexplore", "firefox.exe", "waterfox.exe", "iexplore.exe",
    "winrar.exe", "winrar.exe", "7zFM.exe", "outlook.exe", "winword.exe", "excel.exe"
  ) and
  process.args : (
    "?:\\Users\\*",
    "\\\\*",
    "http*",
    "ftp://*"
  )

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
event.actioneq
  • start corpus 16 (elastic 16)
process.argswildcard
  • /cab
  • ?:\Users\* corpus 2 (elastic 2)
  • \\* corpus 4 (elastic 4)
  • ftp://*
  • http* corpus 2 (elastic 2)
process.namewildcard
  • msdt.exe corpus 8 (elastic 6, splunk 2)
process.parent.namewildcard
  • 7zFM.exe corpus 4 (elastic 4)
  • brave.exe corpus 3 (elastic 3)
  • browser.exe corpus 3 (elastic 3)
  • chrome.exe corpus 3 (elastic 3)
  • dragon.exe corpus 3 (elastic 3)
  • excel.exe corpus 8 (elastic 8)
  • explorer.exe corpus 20 (elastic 19, splunk 1)
  • firefox.exe corpus 3 (elastic 3)
  • iexplore corpus 2 (elastic 2)
  • iexplore.exe corpus 3 (elastic 3)
  • msedge.exe corpus 3 (elastic 3)
  • opera.exe corpus 2 (elastic 2)
  • outlook.exe corpus 7 (elastic 7)
  • vivaldi.exe corpus 3 (elastic 3)
  • waterfox.exe corpus 2 (elastic 2)
  • whale.exe corpus 2 (elastic 2)
  • winrar.exe corpus 5 (elastic 4, splunk 1)
  • winword.exe corpus 8 (elastic 8)
process.pe.original_file_nameeq
  • msdt.exe corpus 8 (sigma 6, elastic 2)