Detection rules › Elastic
Process Discovery via Built-In Applications
Identifies the use of built-in tools attackers can use to discover running processes on an endpoint.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Discovery | T1057 Process Discovery, T1518.001 Software Discovery: Security Software Discovery |
Rule body elastic
[metadata]
creation_date = "2023/07/11"
integration = ["endpoint"]
maturity = "production"
updated_date = "2026/03/02"
[rule]
author = ["Elastic"]
building_block_type = "default"
description = """
Identifies the use of built-in tools attackers can use to discover running processes on an endpoint.
"""
from = "now-119m"
index = ["logs-endpoint.events.*", "endgame-*"]
interval = "60m"
language = "kuery"
license = "Elastic License v2"
name = "Process Discovery via Built-In Applications"
risk_score = 21
rule_id = "3f4d7734-2151-4481-b394-09d7c6c91f75"
severity = "low"
tags = [
"Domain: Endpoint",
"OS: Linux",
"OS: macOS",
"Use Case: Threat Detection",
"Tactic: Discovery",
"Rule Type: BBR",
"Data Source: Elastic Defend",
"Data Source: Elastic Endgame",
]
timestamp_override = "event.ingested"
type = "new_terms"
query = '''
event.category:process and host.os.type:(linux or macos) and event.type:start and event.action:(exec or exec_event) and
process.name:("ps" or "pstree" or "htop" or "pgrep") and not (
process.parent.name:("amazon-ssm-agent" or "snap") or
process.parent.args:("/usr/local/ASR/Vx/bin/status" or "/usr/sbin/ksmtuned") or
process.parent.executable:(
"/usr/bin/check_mk_agent" or /opt/gitlab/* or "/usr/bin/pmlogctl" or "/usr/libexec/pcp/bin/pmlogger_daily" or
"/usr/libexec/pcp/bin/pmlogger_check"
)
)
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1057"
name = "Process Discovery"
reference = "https://attack.mitre.org/techniques/T1057/"
[[rule.threat.technique]]
id = "T1518"
name = "Software Discovery"
reference = "https://attack.mitre.org/techniques/T1518/"
[[rule.threat.technique.subtechnique]]
id = "T1518.001"
name = "Security Software Discovery"
reference = "https://attack.mitre.org/techniques/T1518/001/"
[rule.threat.tactic]
id = "TA0007"
name = "Discovery"
reference = "https://attack.mitre.org/tactics/TA0007/"
[rule.new_terms]
field = "new_terms_fields"
value = ["process.parent.executable", "process.command_line", "host.id"]
[[rule.new_terms.history_window_start]]
field = "history_window_start"
value = "now-5d"
Stages and Predicates
Stage 1: new_terms
event.category:process and host.os.type:(linux or macos) and event.type:start and event.action:(exec or exec_event) and
process.name:("ps" or "pstree" or "htop" or "pgrep") and not (
process.parent.name:("amazon-ssm-agent" or "snap") or
process.parent.args:("/usr/local/ASR/Vx/bin/status" or "/usr/sbin/ksmtuned") or
process.parent.executable:(
"/usr/bin/check_mk_agent" or /opt/gitlab/* or "/usr/bin/pmlogctl" or "/usr/libexec/pcp/bin/pmlogger_daily" or
"/usr/libexec/pcp/bin/pmlogger_check"
)
)
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
process.parent.args | in | /usr/local/ASR/Vx/bin/status, /usr/sbin/ksmtuned |
process.parent.executable | eq | /usr/bin/check_mk_agent |
process.parent.executable | eq | /usr/bin/pmlogctl |
process.parent.executable | eq | /usr/libexec/pcp/bin/pmlogger_check |
process.parent.executable | eq | /usr/libexec/pcp/bin/pmlogger_daily |
process.parent.executable | starts_with | /opt/gitlab/ |
process.parent.name | in | amazon-ssm-agent, snap |
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.
| Field | Kind | Values |
|---|---|---|
event.action | in |
|
event.category | eq |
|
event.type | eq |
|
process.name | in |
|