Detection rules › Elastic
Elastic rules: 1k
AWS Lambda Function High-Frequency Invocation by a Single Principal
#Identifies a single principal directly invoking AWS Lambda functions at a high volume within a one-hour window. Adversaries may drive excessive invocations to abuse functions for resource hijacking or cryptomining, to inflate costs in a denial-of-wallet attack, or to enumerate function behavior. This is a volumetric heuristic: the threshold is environment-dependent and high-throughput applications can exceed it, so tune it to the deployment. This rule relies on AWS Lambda data event logging, which is not enabled by default.
Known False Positives
- Legitimate high-throughput applications, batch jobs, load tests, and automation can invoke functions at high volume and will exceed any fixed threshold. Validate the principal in `aws.cloudtrail.user_identity.arn` and the workload context, and tune the threshold to the environment.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Impact |
Telemetry Coverage
Rules Detecting the Same Action
These rules filter on the same operation.
- AWS Discovery API Calls via CLI from a Single Resource (Elastic)
- AWS Lambda Event Source Mapping Creation (Elastic)
- AWS Lambda Function Created or Updated (Elastic)
- AWS Lambda Function Invoked by an Unusual Principal (Elastic)
- AWS Lambda Function Invoked Cross-Account (Elastic)
- AWS Lambda Function Invoked from an Unusual Source ASN (Elastic)
- AWS Lambda Function Policy Updated to Allow Cross-Account Invocation (Elastic)
- AWS Lambda Function Policy Updated to Allow Public Invocation (Elastic)
Rule Body
[metadata]
creation_date = "2026/06/18"
integration = ["aws"]
maturity = "production"
updated_date = "2026/06/18"
[rule]
author = ["Elastic"]
description = """
Identifies a single principal directly invoking AWS Lambda functions at a high volume within a one-hour window.
Adversaries may drive excessive invocations to abuse functions for resource hijacking or cryptomining, to inflate costs
in a denial-of-wallet attack, or to enumerate function behavior. This is a volumetric heuristic: the threshold is
environment-dependent and high-throughput applications can exceed it, so tune it to the deployment. This rule relies on
AWS Lambda data event logging, which is not enabled by default.
"""
false_positives = [
"""
Legitimate high-throughput applications, batch jobs, load tests, and automation can invoke functions at high volume
and will exceed any fixed threshold. Validate the principal in `aws.cloudtrail.user_identity.arn` and the workload
context, and tune the threshold to the environment.
""",
]
from = "now-61m"
interval = "60m"
language = "esql"
license = "Elastic License v2"
name = "AWS Lambda Function High-Frequency Invocation by a Single Principal"
note = """## Triage and analysis
### Investigating AWS Lambda Function High-Frequency Invocation by a Single Principal
A principal issuing a high volume of direct Lambda invocations in a short window can indicate function abuse for resource hijacking or cryptomining, a denial-of-wallet cost attack, or behavioral enumeration. Because Lambda data events record only the invocation metadata (caller, function, source) and not the function's internal behavior, this rule is purely volumetric and should be treated as corroborating signal.
### Possible investigation steps
- Identify the principal in `aws.cloudtrail.user_identity.arn` and determine whether the volume exceeds its historical baseline.
- Determine whether the principal is a known high-throughput application or automation identity, or an unexpected user.
- Review `source.ip` / `user_agent.original` and recent credential activity for signs of compromise.
- Correlate with billing/concurrency metrics and with other Lambda or IAM activity by the same principal.
### False positive analysis
- High-throughput apps, batch processing, and load tests routinely exceed fixed thresholds. Tune the threshold and exclude known high-volume identities after validation.
### Response and remediation
- If abuse is confirmed, throttle or disable the affected functions (reserved concurrency), rotate or restrict the principal's credentials, and review function code and execution-role permissions.
- Apply per-function reserved concurrency and account-level guardrails to bound cost and blast radius.
### Additional information
- [Logging Lambda data events with CloudTrail](https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html)
- [Lambda function scaling and concurrency](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html)
"""
references = [
"https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html",
"https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html",
]
risk_score = 47
rule_id = "55260656-76d6-427b-bd02-7acdde131b64"
setup = """## Setup
This rule requires AWS Lambda data events to be logged in CloudTrail and ingested via the AWS integration. Lambda
invocation (`Invoke`) is a data-plane event and is NOT logged by default; enable data event logging for Lambda functions
in the trail (optionally scoped to sensitive functions to manage volume). Tune the invocation-count threshold in the
query to the environment before enabling.
"""
severity = "medium"
tags = [
"Domain: Cloud",
"Data Source: AWS",
"Data Source: Amazon Web Services",
"Data Source: AWS CloudTrail",
"Data Source: AWS Lambda",
"Use Case: Threat Detection",
"Tactic: Impact",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "esql"
query = '''
from logs-aws.cloudtrail-*
// Lambda invocation data events (data-plane; requires data event logging enabled)
| where
event.provider == "lambda.amazonaws.com"
and event.action like "Invoke*"
and event.outcome == "success"
and aws.cloudtrail.user_identity.arn IS NOT NULL
| stats
Esql.invocation_count = count(*),
Esql.source_ips = values(source.ip)
by
aws.cloudtrail.user_identity.arn
// Threshold is environment-dependent — tune to the deployment
| where Esql.invocation_count >= 1000
| keep
aws.cloudtrail.user_identity.arn,
Esql.invocation_count,
Esql.source_ips
| sort Esql.invocation_count desc
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1496"
name = "Resource Hijacking"
reference = "https://attack.mitre.org/techniques/T1496/"
[rule.threat.tactic]
id = "TA0040"
name = "Impact"
reference = "https://attack.mitre.org/tactics/TA0040/"
[rule.investigation_fields]
field_names = ["aws.cloudtrail.user_identity.arn", "cloud.account.id", "Esql.invocation_count", "Esql.source_ips"]
Stages and Predicates
Stage 1: from
from logs-aws.cloudtrail-*
Stage 2: where
| where
event.provider == "lambda.amazonaws.com"
and event.action like "Invoke*"
and event.outcome == "success"
and aws.cloudtrail.user_identity.arn IS NOT NULL
Stage 3: stats
| stats
Esql.invocation_count = count(*),
Esql.source_ips = values(source.ip)
by
aws.cloudtrail.user_identity.arn
Stage 4: where
| where Esql.invocation_count >= 1000
Stage 5: keep
| keep
aws.cloudtrail.user_identity.arn,
Esql.invocation_count,
Esql.source_ips
Stage 6: sort
| sort Esql.invocation_count desc
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Esql.invocation_count | ge |
| field:"Esql.invocation_count" kind:ge value:"1000" |
aws.cloudtrail.user_identity.arn | is_not_null | field:"aws::userIdentity.arn" kind:is_not_null | |
event.action | wildcard |
| field:"EventType" kind:wildcard value:"Invoke*" |
event.outcome | eq |
| field:"event.outcome" kind:eq value:"success" |
event.provider | eq |
| field:"Provider_Name" kind:eq value:"lambda.amazonaws.com" |
Output Fields
These fields are emitted when the rule matches.
| Field | Source |
|---|---|
aws.cloudtrail.user_identity.arn | KEEP aws.cloudtrail.user_identity.arn |
Esql.invocation_count | KEEP Esql.invocation_count |
Esql.source_ips | KEEP Esql.source_ips |
Cobalt Strike Command and Control Beacon
#Cobalt Strike is a threat emulation platform commonly modified and used by adversaries to conduct network attack and exploitation campaigns. This rule detects a network activity algorithm leveraged by Cobalt Strike implant beacons for command and control.
Known False Positives
- This rule should be tailored to either exclude systems, as sources or destinations, in which this behavior is expected.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
Rule Body
[metadata]
creation_date = "2020/07/06"
integration = ["network_traffic", "panw", "fortinet_fortigate"]
maturity = "production"
updated_date = "2026/08/26"
[rule]
author = ["Elastic"]
description = """
Cobalt Strike is a threat emulation platform commonly modified and used by adversaries to conduct network attack and
exploitation campaigns. This rule detects a network activity algorithm leveraged by Cobalt Strike implant beacons for
command and control.
"""
false_positives = [
"""
This rule should be tailored to either exclude systems, as sources or destinations, in which this behavior is
expected.
""",
]
from = "now-9m"
language = "esql"
license = "Elastic License v2"
name = "Cobalt Strike Command and Control Beacon"
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Cobalt Strike Command and Control Beacon
Cobalt Strike is a penetration testing tool often repurposed by attackers for malicious activities, particularly for establishing command and control (C2) channels. Adversaries exploit its beaconing feature to communicate with compromised systems using common protocols like HTTP or TLS. The detection rule identifies suspicious network patterns, such as specific domain naming conventions, indicative of Cobalt Strike's C2 activity, helping analysts pinpoint potential threats.
### Possible investigation steps
- Review the alert details to identify the specific domain that triggered the rule, focusing on the pattern [a-z]{3}.stage.[0-9]{8}\\..* to determine if it matches known malicious domains.
- Analyze the network traffic logs associated with the alert, specifically looking at events categorized under network or network_traffic with types tls or http, to gather more context about the communication.
- Investigate the source IP address and destination domain involved in the alert to determine if they have been associated with previous malicious activities or are listed in threat intelligence databases.
- Examine the timeline of the network activity to identify any patterns or anomalies that could indicate a larger campaign or coordinated attack.
- Check for any related alerts or incidents in the security information and event management (SIEM) system that might provide additional context or indicate a broader compromise.
- Assess the affected endpoint for any signs of compromise, such as unusual processes or connections, to determine if further containment or remediation actions are necessary.
### False positive analysis
- Legitimate software updates or patch management systems may use similar domain naming conventions. Review and whitelist known update servers to prevent false alerts.
- Internal development or testing environments might mimic Cobalt Strike's domain patterns for legitimate purposes. Identify and exclude these environments from the rule.
- Automated scripts or tools that generate network traffic with similar domain structures can trigger false positives. Monitor and document these tools, then create exceptions for their activity.
- Some content delivery networks (CDNs) might use domain patterns that match the rule's criteria. Verify and exclude trusted CDNs to reduce unnecessary alerts.
- Regularly review and update the list of exceptions to ensure that only verified non-threatening behaviors are excluded, maintaining the rule's effectiveness.
### Response and remediation
- Isolate the affected systems immediately to prevent further communication with the Cobalt Strike C2 server. This can be done by disconnecting the network or using network segmentation techniques.
- Conduct a thorough forensic analysis of the compromised systems to identify the extent of the breach and any additional payloads or backdoors that may have been installed.
- Remove any identified Cobalt Strike beacons or related malware from the affected systems using updated antivirus or endpoint detection and response (EDR) tools.
- Change all credentials and access tokens that may have been exposed or used on the compromised systems to prevent unauthorized access.
- Monitor network traffic for any signs of re-infection or communication attempts with known Cobalt Strike C2 domains, using updated threat intelligence feeds.
- Escalate the incident to the security operations center (SOC) or incident response team for further investigation and to determine if additional systems or data have been compromised.
- Implement network-level controls, such as blocking known malicious domains and IP addresses associated with Cobalt Strike, to prevent future attacks.
## Threat intel
This activity has been observed in FIN7 campaigns."""
references = [
"https://blog.morphisec.com/fin7-attacks-restaurant-industry",
"https://www.fireeye.com/blog/threat-research/2017/04/fin7-phishing-lnk.html",
"https://www.elastic.co/security-labs/collecting-cobalt-strike-beacons-with-the-elastic-stack",
]
risk_score = 73
rule_id = "cf53f532-9cc9-445a-9ae7-fced307ec53c"
severity = "high"
tags = [
"Use Case: Threat Detection",
"Tactic: Command and Control",
"Domain: Endpoint",
"Rule Type: ESQL",
"Data Source: Fortinet",
"Data Source: PAN-OS",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "esql"
query = '''
from packetbeat-*, filebeat-*, logs-network_traffic.*, logs-panw.panos*, logs-fortinet_fortigate.log-* metadata _id, _version, _index
| where (
(event.category in ("network", "network_traffic") and network.protocol in ("tls", "http")) or
(data_stream.dataset == "panw.panos" and network.application in ("ssl", "web-browsing")) or
data_stream.dataset in ("network_traffic.tls", "network_traffic.http", "fortinet_fortigate.log")
)
| where destination.domain RLIKE "[a-z]{3}\\.stage\\.[0-9]{8}\\..*"
| keep @timestamp, destination.domain, source.ip, destination.ip, network.protocol, data_stream.dataset, _id, _version, _index
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1071"
name = "Application Layer Protocol"
reference = "https://attack.mitre.org/techniques/T1071/"
[[rule.threat.technique.subtechnique]]
id = "T1071.001"
name = "Web Protocols"
reference = "https://attack.mitre.org/techniques/T1071/001/"
[[rule.threat.technique]]
id = "T1568"
name = "Dynamic Resolution"
reference = "https://attack.mitre.org/techniques/T1568/"
[[rule.threat.technique.subtechnique]]
id = "T1568.002"
name = "Domain Generation Algorithms"
reference = "https://attack.mitre.org/techniques/T1568/002/"
[rule.threat.tactic]
id = "TA0011"
name = "Command and Control"
reference = "https://attack.mitre.org/tactics/TA0011/"
Stages and Predicates
Stage 1: from
from packetbeat-*, filebeat-*, logs-network_traffic.*, logs-panw.panos*, logs-fortinet_fortigate.log-* metadata _id, _version, _index
Stage 2: where
| where (
(event.category in ("network", "network_traffic") and network.protocol in ("tls", "http")) or
(data_stream.dataset == "panw.panos" and network.application in ("ssl", "web-browsing")) or
data_stream.dataset in ("network_traffic.tls", "network_traffic.http", "fortinet_fortigate.log")
)
Stage 3: where
| where destination.domain RLIKE "[a-z]{3}\\.stage\\.[0-9]{8}\\..*"
Stage 4: keep
| keep @timestamp, destination.domain, source.ip, destination.ip, network.protocol, data_stream.dataset, _id, _version, _index
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
data_stream.dataset | eq |
| field:"data_stream.dataset" kind:eq value:"panw.panos" |
data_stream.dataset | in |
| field:"data_stream.dataset" kind:in |
destination.domain | regex_match |
| field:"DestinationHostname" kind:regex_match value:"[a-z]{3}.stage.[0-9]{8}..*" |
event.category | in |
| field:"event.category" kind:in |
network.application | in |
| field:"network.application" kind:in |
network.protocol | in |
| field:"DestinationPortName" kind:in |
Output Fields
These fields are emitted when the rule matches.
| Field | Source |
|---|---|
@timestamp | KEEP @timestamp |
destination.domain | KEEP destination.domain |
source.ip | KEEP source.ip |
destination.ip | KEEP destination.ip |
network.protocol | KEEP network.protocol |
data_stream.dataset | KEEP data_stream.dataset |
_id | KEEP _id |
_version | KEEP _version |
_index | KEEP _index |
Code Editor Untrusted or Unsigned Child Process Execution
#Detects when a code editor (VSCode, Cursor, or IntelliJ IDEA) spawns a shell to execute a self-signed and untrusted binary. This activity is indicative of a malicious 3rd party plugin or extension.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Telemetry Coverage
Rule Body
[rule]
description = """
Detects when a code editor (VSCode, Cursor, or IntelliJ IDEA) spawns a shell to execute a self-signed and untrusted
binary. This activity is indicative of a malicious 3rd party plugin or extension.
"""
id = "9b9776bb-6bf3-4c06-94ff-64159b52a2f3"
license = "Elastic License v2"
name = "Code Editor Untrusted or Unsigned Child Process Execution"
os_list = ["macos"]
version = "1.0.19"
query = '''
process where event.type == "start" and event.action == "exec" and
process.Ext.effective_parent.executable in ("/Applications/IntelliJ IDEA.app/Contents/MacOS/idea",
"/Applications/Visual Studio Code.app/Contents/MacOS/Electron",
"/Applications/Cursor.app/Contents/MacOS/Cursor") and
process.parent.name in ("bash", "sh", "zsh") and
(process.code_signature.trusted == false or process.code_signature.exists == false) and
process.code_signature.signing_id regex~ """[A-Za-z0-9\_\s]{2,}\-[a-z0-9]{40}""" and
process.args_count <= 4 and
not process.executable like~
("/opt/homebrew/*",
"/Users/*/.homebrew/Cellar/*",
"/nix/store/*",
"/usr/local/microsoft/powershell/7/pwsh",
"/usr/local/Cellar/*",
"/opt/nordic/ncs/toolchains/*/Cellar/*",
"/Users/*/homebrew/Cellar/*") and
not process.command_line like~ ("bento completion zsh --silent", "*http://localhost*") and
not process.code_signature.signing_id like~ ("python3-*",
"ruby-*",
"python-*",
"node-*",
"rg-*")
'''
min_endpoint_version = "8.7.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
[[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.004"
name = "Unix Shell"
reference = "https://attack.mitre.org/techniques/T1059/004/"
[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[internal]
min_endpoint_version = "8.7.0"
Stages and Predicates
Stage 1: process
process where event.type == "start" and event.action == "exec" and
process.Ext.effective_parent.executable in ("/Applications/IntelliJ IDEA.app/Contents/MacOS/idea",
"/Applications/Visual Studio Code.app/Contents/MacOS/Electron",
"/Applications/Cursor.app/Contents/MacOS/Cursor") and
process.parent.name in ("bash", "sh", "zsh") and
(process.code_signature.trusted == false or process.code_signature.exists == false) and
process.code_signature.signing_id regex~ """[A-Za-z0-9\_\s]{2,}\-[a-z0-9]{40}""" and
process.args_count <= 4 and
not process.executable like~
("/opt/homebrew/*",
"/Users/*/.homebrew/Cellar/*",
"/nix/store/*",
"/usr/local/microsoft/powershell/7/pwsh",
"/usr/local/Cellar/*",
"/opt/nordic/ncs/toolchains/*/Cellar/*",
"/Users/*/homebrew/Cellar/*") and
not process.command_line like~ ("bento completion zsh --silent", "*http://localhost*") and
not process.code_signature.signing_id like~ ("python3-*",
"ruby-*",
"python-*",
"node-*",
"rg-*")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"exec" |
event.type | eq |
| field:"event.type" kind:eq value:"start" |
process.Ext.effective_parent.executable | in |
| field:"process.Ext.effective_parent.executable" kind:in |
process.args_count | le |
| field:"process.args_count" kind:le value:"4" |
process.code_signature.exists | eq |
| field:"process.code_signature.exists" kind:eq value:"false" |
process.code_signature.signing_id | regex_match |
| field:"process.code_signature.signing_id" kind:regex_match value:"[A-Za-z0-9\_\s]{2,}\-[a-z0-9]{40}" |
process.code_signature.trusted | eq |
| field:"process.code_signature.trusted" kind:eq value:"false" |
process.parent.name | in |
| field:"parent_process_basename" kind:in |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.code_signature.signing_id | starts_with | python3-, ruby-, python-, node-, rg- | excludes:process.code_signature.signing_id |
process.command_line | wildcard | bento completion zsh --silent, *http://localhost* | excludes:process.command_line field:"process.command_line" value:"bento completion zsh --silent" field:"process.command_line" value:"*http://localhost*" |
process.executable | wildcard | /opt/homebrew/*, /Users/*/.homebrew/Cellar/*, /nix/store/*, /usr/local/microsoft/powershell/7/pwsh, /usr/local/Cellar/*, /opt/nordic/ncs/toolchains/*/Cellar/*, /Users/*/homebrew/Cellar/* | excludes:process.executable |
Credential Access via Known Utilities
#Identifies the execution of known Windows utilities often abused to dump LSASS memory or the Active Directory database (NTDS.dit) in preparation for credential access.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Rule Body
[rule]
description = """
Identifies the execution of known Windows utilities often abused to dump LSASS memory or the Active Directory database
(NTDS.dit) in preparation for credential access.
"""
id = "3c44fc50-2672-48b3-af77-ff43b895ac70"
license = "Elastic License v2"
name = "Credential Access via Known Utilities"
os_list = ["windows"]
reference = [
"https://lolbas-project.github.io/",
"https://www.elastic.co/security-labs/bits-and-bytes-analyzing-bitsloth",
]
version = "1.0.47"
query = '''
process where event.action == "start" and
process.parent.name != null and
(
(process.pe.original_file_name == "procdump" and process.args : "-ma" and process.command_line : "*lsass*") or
(process.name : "ProcessDump.exe" and not process.parent.executable : "?:\\Program Files*\\Cisco Systems\\*.exe") or
(process.pe.original_file_name == "WriteMiniDump.exe" and not process.parent.executable : "?:\\Program Files*\\Steam\\*.exe") or
/* Issue #623 - added coverage for evasion via renamed comsvcs DLL */
(process.pe.original_file_name == "RUNDLL32.EXE" and process.command_line : ("*comsvcs*24*", "*MiniDump*", "*#*24* full*")) or
(process.pe.original_file_name == "RdrLeakDiag.exe" and process.args : "/fullmemdmp") or
(process.pe.original_file_name == "SqlDumper.exe" and process.args : "0x01100*") or
(process.pe.original_file_name == "TTTracer.exe" and process.args : "-dumpFull" and process.args : "-attach") or
(process.pe.original_file_name == "ntdsutil.exe" and process.command_line : "*create*") or
(process.pe.original_file_name == "diskshadow.exe" and process.args : "/s") or
((process.pe.original_file_name : "wbadmin.exe" or process.name : "wbadmin.exe") and
process.args : "recovery" and process.command_line : "*ntds.dit*") or
(process.pe.original_file_name == "esentutl.exe" and process.args : "/vss" and process.command_line : ("*ntds.dit*", "*\\SAM*", "*//SAM*")) or
(process.pe.original_file_name == "esentutl.exe" and process.args : "/y" and process.command_line : ("*\\Cookies*", "*\\Login Data*")) or
(process.pe.original_file_name == "reg.exe" and process.args : ("save", "export") and
process.command_line : ("*HKLM*\\SAM *", "*hkey_local_machine*\\SAM *", "*HKLM\\security*",
"*hkey_local_machine\\security*", "*HKLM\\system *", "*hkey_local_machine\\system *")) or
/* generic original filename and variable number of hashes */
(process.name : "createdump.exe" and process.args : "-u") or
(process.pe.original_file_name == "FX_VER_INTERNALNAME_STR" and process.args : "-u" and process.args : "-f" and process.args_count >= 3) or
/* Avast Home Security signed binary */
(process.pe.original_file_name == "avDump.exe" and process.args : "–dump_file") or
(process.pe.original_file_name == "DumpMinitool.exe" and process.args : "--dumpType")
) and not
/* Issue #528 */
(process.pe.original_file_name == "reg.exe" and
process.parent.executable : ("?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\*\\ir_agent.exe",
"?:\\Program Files (x86)\\Rapid7\\Insight Agent\\components\\insight_agent\\*\\ir_agent.exe")) and not
(process.pe.original_file_name == "diskshadow.exe" and process.parent.name : "powershell.exe" and process.parent.args : "?:\\OmniStackBackups\\backup*") and
not (process.name : "rundll32.exe" and
process.command_line : "*davclnt.dll,DavSetCookie*http*MiniDump*" and
process.parent.executable : "?:\\WINDOWS\\system32\\svchost.exe" and process.parent.args : "WebClient") and
not (process.pe.original_file_name == "reg.exe" and process.args : "?:\\ProgramData\\Bitdefender\\ForensicArtefacts\\System\\Config\\*" and
process.parent.name : "cmd.exe") and
not (process.executable : "C:\\Program Files (x86)\\Dental Intel\\PMSSyncService\\procdump.exe" and process.args : "office.exe") and
not (process.name : "diskshadow.exe" and process.parent.executable : "?:\\Windows\\Temp\\RackWare-winutil\\bin\\bash.exe" and
process.args : "?:\\windows\\Temp\\RackWare-winutil\\*") and
not (process.name : "reg.exe" and process.parent.executable : "C:\\Program Files\\SF\\EDR\\agent\\bin\\sfavtray.exe") and
not (process.name : "diskshadow.exe" and process.command_line : "*\\Program Files\\ARCServe\\*") and
not (process.name : "reg.exe" and process.args : "save" and
process.args : "?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\common\\ir_agent_tmp\\*" and
process.working_directory : "?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\common\\") and
not (process.name : "diskshadow.exe" and process.parent.executable : "C:\\Program Files\\Barracuda\\Barracuda Backup Agent\\win\\x86_64\\BackupService.exe")
'''
min_endpoint_version = "7.15.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1003"
name = "OS Credential Dumping"
reference = "https://attack.mitre.org/techniques/T1003/"
[[threat.technique.subtechnique]]
id = "T1003.001"
name = "LSASS Memory"
reference = "https://attack.mitre.org/techniques/T1003/001/"
[[threat.technique.subtechnique]]
id = "T1003.003"
name = "NTDS"
reference = "https://attack.mitre.org/techniques/T1003/003/"
[threat.tactic]
id = "TA0006"
name = "Credential Access"
reference = "https://attack.mitre.org/tactics/TA0006/"
[internal]
min_endpoint_version = "7.15.0"
Stages and Predicates
Stage 1: process
process where event.action == "start" and
process.parent.name != null and
(
(process.pe.original_file_name == "procdump" and process.args : "-ma" and process.command_line : "*lsass*") or
(process.name : "ProcessDump.exe" and not process.parent.executable : "?:\\Program Files*\\Cisco Systems\\*.exe") or
(process.pe.original_file_name == "WriteMiniDump.exe" and not process.parent.executable : "?:\\Program Files*\\Steam\\*.exe") or
(process.pe.original_file_name == "RUNDLL32.EXE" and process.command_line : ("*comsvcs*24*", "*MiniDump*", "*#*24* full*")) or
(process.pe.original_file_name == "RdrLeakDiag.exe" and process.args : "/fullmemdmp") or
(process.pe.original_file_name == "SqlDumper.exe" and process.args : "0x01100*") or
(process.pe.original_file_name == "TTTracer.exe" and process.args : "-dumpFull" and process.args : "-attach") or
(process.pe.original_file_name == "ntdsutil.exe" and process.command_line : "*create*") or
(process.pe.original_file_name == "diskshadow.exe" and process.args : "/s") or
((process.pe.original_file_name : "wbadmin.exe" or process.name : "wbadmin.exe") and
process.args : "recovery" and process.command_line : "*ntds.dit*") or
(process.pe.original_file_name == "esentutl.exe" and process.args : "/vss" and process.command_line : ("*ntds.dit*", "*\\SAM*", "*//SAM*")) or
(process.pe.original_file_name == "esentutl.exe" and process.args : "/y" and process.command_line : ("*\\Cookies*", "*\\Login Data*")) or
(process.pe.original_file_name == "reg.exe" and process.args : ("save", "export") and
process.command_line : ("*HKLM*\\SAM *", "*hkey_local_machine*\\SAM *", "*HKLM\\security*",
"*hkey_local_machine\\security*", "*HKLM\\system *", "*hkey_local_machine\\system *")) or
(process.name : "createdump.exe" and process.args : "-u") or
(process.pe.original_file_name == "FX_VER_INTERNALNAME_STR" and process.args : "-u" and process.args : "-f" and process.args_count >= 3) or
(process.pe.original_file_name == "avDump.exe" and process.args : "–dump_file") or
(process.pe.original_file_name == "DumpMinitool.exe" and process.args : "--dumpType")
) and not
(process.pe.original_file_name == "reg.exe" and
process.parent.executable : ("?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\*\\ir_agent.exe",
"?:\\Program Files (x86)\\Rapid7\\Insight Agent\\components\\insight_agent\\*\\ir_agent.exe")) and not
(process.pe.original_file_name == "diskshadow.exe" and process.parent.name : "powershell.exe" and process.parent.args : "?:\\OmniStackBackups\\backup*") and
not (process.name : "rundll32.exe" and
process.command_line : "*davclnt.dll,DavSetCookie*http*MiniDump*" and
process.parent.executable : "?:\\WINDOWS\\system32\\svchost.exe" and process.parent.args : "WebClient") and
not (process.pe.original_file_name == "reg.exe" and process.args : "?:\\ProgramData\\Bitdefender\\ForensicArtefacts\\System\\Config\\*" and
process.parent.name : "cmd.exe") and
not (process.executable : "C:\\Program Files (x86)\\Dental Intel\\PMSSyncService\\procdump.exe" and process.args : "office.exe") and
not (process.name : "diskshadow.exe" and process.parent.executable : "?:\\Windows\\Temp\\RackWare-winutil\\bin\\bash.exe" and
process.args : "?:\\windows\\Temp\\RackWare-winutil\\*") and
not (process.name : "reg.exe" and process.parent.executable : "C:\\Program Files\\SF\\EDR\\agent\\bin\\sfavtray.exe") and
not (process.name : "diskshadow.exe" and process.command_line : "*\\Program Files\\ARCServe\\*") and
not (process.name : "reg.exe" and process.args : "save" and
process.args : "?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\common\\ir_agent_tmp\\*" and
process.working_directory : "?:\\Program Files\\Rapid7\\Insight Agent\\components\\insight_agent\\common\\") and
not (process.name : "diskshadow.exe" and process.parent.executable : "C:\\Program Files\\Barracuda\\Barracuda Backup Agent\\win\\x86_64\\BackupService.exe")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.args | wildcard |
| field:"process.args" kind:wildcard |
process.args_count | ge |
| field:"process.args_count" kind:ge value:"3" |
process.command_line | wildcard |
| field:"CommandLine" kind:wildcard |
process.name | wildcard |
| field:"process_basename" kind:wildcard |
process.parent.name | is_not_null | field:"parent_process_basename" kind:is_not_null | |
process.pe.original_file_name | eq |
| field:"OriginalFileName" kind:eq |
process.pe.original_file_name | wildcard |
| field:"OriginalFileName" kind:wildcard value:"wbadmin.exe" |
Exclusions
The rule actively suppresses these predicates.
Credential Dumping - Detected - Elastic Endgame
#Elastic Endgame detected Credential Dumping. Click the Elastic Endgame icon in the event.module column or the link in the rule.reference column for additional information.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Rule Body
[metadata]
creation_date = "2020/02/18"
maturity = "production"
promotion = true
updated_date = "2025/03/21"
[rule]
author = ["Elastic"]
description = """
Elastic Endgame detected Credential Dumping. Click the Elastic Endgame icon in the event.module column or the link in
the rule.reference column for additional information.
"""
from = "now-2m"
index = ["endgame-*"]
interval = "1m"
language = "kuery"
license = "Elastic License v2"
max_signals = 1000
name = "Credential Dumping - Detected - Elastic Endgame"
risk_score = 73
rule_id = "571afc56-5ed9-465d-a2a9-045f099f6e7e"
setup = """## Setup
### Additional notes
For information on troubleshooting the maximum alerts warning please refer to this [guide](https://www.elastic.co/guide/en/security/current/alerts-ui-monitor.html#troubleshoot-max-alerts).
"""
severity = "high"
tags = ["Data Source: Elastic Endgame", "Use Case: Threat Detection", "Tactic: Credential Access", "Resources: Investigation Guide"]
timestamp_override = "event.ingested"
type = "query"
query = '''
event.kind:alert and event.module:endgame and endgame.metadata.type:detection and (event.action:cred_theft_event or endgame.event_subtype_full:cred_theft_event)
'''
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Credential Dumping - Detected - Elastic Endgame
Elastic Endgame is a security solution that monitors and detects suspicious activities, such as credential dumping, which is a technique used by adversaries to extract sensitive authentication data. Attackers exploit this to gain unauthorized access to systems. The detection rule identifies such threats by analyzing alerts and specific event actions related to credential theft, ensuring timely threat detection and response.
### Possible investigation steps
- Review the alert details to confirm the presence of event.kind:alert and event.module:endgame, ensuring the alert is related to the Elastic Endgame detection.
- Examine the event.action and endgame.event_subtype_full fields for the value cred_theft_event to understand the specific credential theft activity detected.
- Check the associated host and user information to identify the potentially compromised system and user accounts.
- Investigate the timeline of events leading up to and following the alert to identify any suspicious activities or patterns that may indicate further compromise.
- Correlate the alert with other security events or logs to determine if this is part of a larger attack or isolated incident.
- Assess the risk score and severity to prioritize the response and determine if immediate action is required to contain the threat.
- Consult the MITRE ATT&CK framework for additional context on the T1003 technique to understand potential attacker methods and improve defensive measures.
### False positive analysis
- Routine administrative tasks that involve legitimate credential access tools may trigger alerts. Users can create exceptions for known administrative accounts or tools that are frequently used in these tasks.
- Security software updates or scans that access credential stores might be flagged. Exclude these processes by identifying their specific event actions and adding them to the exception list.
- Automated scripts for system maintenance that require credential access could be misidentified. Review and whitelist these scripts by their unique identifiers or execution paths.
- Legitimate software installations that require elevated privileges may cause alerts. Monitor and exclude these installation processes by verifying their source and purpose.
- Regularly scheduled backups that access credential data might be detected. Ensure these backup processes are recognized and excluded by specifying their event actions in the rule configuration.
### Response and remediation
- Isolate the affected system immediately to prevent further unauthorized access and lateral movement within the network.
- Terminate any suspicious processes identified as part of the credential dumping activity to halt ongoing malicious actions.
- Change all potentially compromised credentials, prioritizing those with elevated privileges, to mitigate unauthorized access risks.
- Conduct a thorough review of access logs and system events to identify any additional compromised accounts or systems.
- Restore affected systems from a known good backup to ensure the integrity of the system and data.
- Implement enhanced monitoring on the affected systems and accounts to detect any signs of recurring or related malicious activity.
- Escalate the incident to the security operations center (SOC) or incident response team for further investigation and to determine if additional containment or remediation actions are necessary."""
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1003"
name = "OS Credential Dumping"
reference = "https://attack.mitre.org/techniques/T1003/"
[[rule.threat.technique.subtechnique]]
id = "T1003.001"
name = "LSASS Memory"
reference = "https://attack.mitre.org/techniques/T1003/001/"
[rule.threat.tactic]
id = "TA0006"
name = "Credential Access"
reference = "https://attack.mitre.org/tactics/TA0006/"
Stages and Predicates
Stage 1: query
event.kind:alert and event.module:endgame and endgame.metadata.type:detection and (event.action:cred_theft_event or endgame.event_subtype_full:cred_theft_event)
Indicators
These rows show field, operator, and value matches.
Cupsd or Foomatic-rip Shell Execution
#This detection rule addresses multiple vulnerabilities in the CUPS printing system, including CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, and CVE-2024-47177. Specifically, this rule detects shell executions from the foomatic-rip parent process. These flaws impact components like cups-browsed, libcupsfilters, libppd, and foomatic-rip, allowing remote unauthenticated attackers to manipulate IPP URLs or inject malicious data through crafted UDP packets or network spoofing. This can result in arbitrary command execution when a print job is initiated.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Rule Body
[metadata]
creation_date = "2024/09/27"
integration = ["endpoint", "crowdstrike", "sentinel_one_cloud_funnel"]
maturity = "production"
updated_date = "2026/03/24"
[rule]
author = ["Elastic"]
description = """
This detection rule addresses multiple vulnerabilities in the CUPS printing system, including CVE-2024-47176,
CVE-2024-47076, CVE-2024-47175, and CVE-2024-47177. Specifically, this rule detects shell executions from the
foomatic-rip parent process. These flaws impact components like cups-browsed, libcupsfilters, libppd, and foomatic-rip,
allowing remote unauthenticated attackers to manipulate IPP URLs or inject malicious data through crafted UDP packets or
network spoofing. This can result in arbitrary command execution when a print job is initiated.
"""
from = "now-9m"
index = [
"endgame-*",
"logs-crowdstrike.fdr*",
"logs-endpoint.events.process*",
"logs-sentinel_one_cloud_funnel.*",
]
language = "eql"
license = "Elastic License v2"
name = "Cupsd or Foomatic-rip Shell Execution"
note = """## Triage and analysis
### Investigating Cupsd or Foomatic-rip Shell Execution
This rule identifies potential exploitation attempts of several vulnerabilities in the CUPS printing system (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177). These vulnerabilities allow attackers to send crafted IPP requests or manipulate UDP packets to execute arbitrary commands or modify printer configurations. Attackers can exploit these flaws to inject malicious data, leading to Remote Code Execution (RCE) on affected systems.
#### Possible Investigation Steps
- Investigate the incoming IPP requests or UDP packets targeting port 631.
- Examine the printer configurations on the system to determine if any unauthorized printers or URLs have been added.
- Investigate the process tree to check if any unexpected processes were triggered as a result of IPP activity. Review the executable files for legitimacy.
- Check for additional alerts related to the compromised system or user within the last 48 hours.
- Investigate network traffic logs for suspicious outbound connections to unrecognized domains or IP addresses.
- Check if any of the contacted domains or addresses are newly registered or have a suspicious reputation.
- Retrieve any scripts or executables dropped by the attack for further analysis in a private sandbox environment:
- Analyze potential malicious activity, including:
- Attempts to communicate with external servers.
- File access or creation of unauthorized executables.
- Cron jobs, services, or other persistence mechanisms.
### Related Rules
- Printer User (lp) Shell Execution - f86cd31c-5c7e-4481-99d7-6875a3e31309
- Network Connection by Cups or Foomatic-rip Child - e80ee207-9505-49ab-8ca8-bc57d80e2cab
- File Creation by Cups or Foomatic-rip Child - b9b14be7-b7f4-4367-9934-81f07d2f63c4
- Suspicious Execution from Foomatic-rip or Cupsd Parent - 986361cd-3dac-47fe-afa1-5c5dd89f2fb4
### False Positive Analysis
- This activity is rarely legitimate. However, verify the context to rule out non-malicious printer configuration changes or legitimate IPP requests.
### Response and Remediation
- Initiate the incident response process based on the triage outcome.
- Isolate the compromised host to prevent further exploitation.
- If the investigation confirms malicious activity, search the environment for additional compromised hosts.
- Implement network segmentation or restrictions to contain the attack.
- Stop suspicious processes or services tied to CUPS exploitation.
- Block identified Indicators of Compromise (IoCs), including IP addresses, domains, or hashes of involved files.
- Review compromised systems for backdoors, such as reverse shells or persistence mechanisms like cron jobs.
- Investigate potential credential exposure on compromised systems and reset passwords for any affected accounts.
- Restore the original printer configurations or uninstall unauthorized printer entries.
- Perform a thorough antimalware scan to identify any lingering threats or artifacts from the attack.
- Investigate how the attacker gained initial access and address any weaknesses to prevent future exploitation.
- Use insights from the incident to improve detection and response times in future incidents (MTTD and MTTR).
"""
references = [
"https://www.elastic.co/security-labs/cups-overflow",
"https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/",
"https://gist.github.com/stong/c8847ef27910ae344a7b5408d9840ee1",
"https://github.com/RickdeJager/cupshax/blob/main/cupshax.py",
]
risk_score = 73
rule_id = "476267ff-e44f-476e-99c1-04c78cb3769d"
setup = """## Setup
This rule requires data coming in from Elastic Defend.
### Elastic Defend Integration Setup
Elastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.
#### Prerequisite Requirements:
- Fleet is required for Elastic Defend.
- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).
#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:
- Go to the Kibana home page and click "Add integrations".
- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.
- Click "Add Elastic Defend".
- Configure the integration name and optionally add a description.
- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".
- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).
- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"
- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.
For more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).
- Click "Save and Continue".
- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.
For more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).
"""
severity = "high"
tags = [
"Domain: Endpoint",
"OS: Linux",
"Use Case: Threat Detection",
"Use Case: Vulnerability",
"Tactic: Execution",
"Data Source: Elastic Defend",
"Data Source: Crowdstrike",
"Data Source: SentinelOne",
"Data Source: Elastic Endgame",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "eql"
query = '''
process where host.os.type == "linux" and event.type == "start" and
event.action in ("exec", "exec_event", "start", "ProcessRollup2") and process.parent.name == "foomatic-rip" and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and not (
process.command_line like (
"*/tmp/foomatic-*", "*-sDEVICE=ps2write*", "*printf*", "/bin/sh -e -c cat", "/bin/bash -c cat",
"/bin/bash -e -c cat"
) or
process.args like "gs*"
)
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[rule.threat.technique.subtechnique]]
id = "T1059.004"
name = "Unix Shell"
reference = "https://attack.mitre.org/techniques/T1059/004/"
[[rule.threat.technique]]
id = "T1203"
name = "Exploitation for Client Execution"
reference = "https://attack.mitre.org/techniques/T1203/"
[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 == "linux" and event.type == "start" and
event.action in ("exec", "exec_event", "start", "ProcessRollup2") and process.parent.name == "foomatic-rip" and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and not (
process.command_line like (
"*/tmp/foomatic-*", "*-sDEVICE=ps2write*", "*printf*", "/bin/sh -e -c cat", "/bin/bash -c cat",
"/bin/bash -e -c cat"
) or
process.args like "gs*"
)
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | in |
| field:"EventType" kind:in |
event.type | eq |
| field:"event.type" kind:eq value:"start" |
process.name | in |
| field:"process_basename" kind:in |
process.parent.name | eq |
| field:"parent_process_basename" kind:eq value:"foomatic-rip" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.args | starts_with | gs | excludes:process.args field:"process.args" value:"gs" |
process.command_line | wildcard | */tmp/foomatic-*, *-sDEVICE=ps2write*, *printf*, /bin/sh -e -c cat, /bin/bash -c cat, /bin/bash -e -c cat | excludes:process.command_line |
Default Application Hijacking
#Detects the abnormal invocation of a system application located in /System/Applications via the open binary. This abnormal activity may indicate the use of "default application hijacking" to persist and/or execute a malicious payload utilizing a bug that currently exists in the way macOS handles default apps and filetypes.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Stealth |
Telemetry Coverage
Rule Body
[rule]
description = """
Detects the abnormal invocation of a system application located in /System/Applications via the open binary. This
abnormal activity may indicate the use of "default application hijacking" to persist and/or execute a malicious payload
utilizing a bug that currently exists in the way macOS handles default apps and filetypes.
"""
id = "5d2c3833-a36a-483a-acea-5bf8cf363a81"
license = "Elastic License v2"
name = "Default Application Hijacking"
os_list = ["macos"]
reference = [
"https://medium.com/@marcusthebrody/a-new-macos-persistence-and-deception-technique-default-application-hijacking-52de66955a16",
]
version = "1.0.26"
query = '''
process where event.type == "start" and event.action == "exec" and
process.name == "open" and process.args == "-a" and process.args like "/System/Applications/*" and
(process.parent.code_signature.trusted == false or process.parent.code_signature.exists == false)
'''
min_endpoint_version = "8.11.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1574"
name = "Hijack Execution Flow"
reference = "https://attack.mitre.org/techniques/T1574/"
[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[internal]
min_endpoint_version = "8.11.0"
Stages and Predicates
Stage 1: process
process where event.type == "start" and event.action == "exec" and
process.name == "open" and process.args == "-a" and process.args like "/System/Applications/*" and
(process.parent.code_signature.trusted == false or process.parent.code_signature.exists == false)
Indicators
These rows show field, operator, and value matches.
Embedded Payload Dropped and Executed
#Detects when an executable file is modified in a temporary directory and immediately executed. We have observed several samples that bring additional payloads within their application structure or that embed another payload within their applications main binary dropping these payloads in the temporary directory and immediately executing them.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
Rule Body
[rule]
description = """
Detects when an executable file is modified in a temporary directory and immediately executed. We have observed several
samples that bring additional payloads within their application structure or that embed another payload within their
applications main binary dropping these payloads in the temporary directory and immediately executing them.
"""
id = "ec3abfa9-499a-40d7-a23d-413ce878db10"
license = "Elastic License v2"
name = "Embedded Payload Dropped and Executed"
os_list = ["macos"]
version = "1.0.7"
query = '''
sequence with maxspan=10s
[file where event.action == "modification" and file.Ext.header_bytes like~ ("cffaedfe*", "cafebabe*") and
file.path like~ ("/tmp/*", "/private/tmp/*", "/Users/Shared/*") and
not process.executable like~ "/Library/Developer/*"] by Effective_process.entity_id
[process where event.type == "start" and event.action == "exec" and process.executable like~ ("/tmp/*", "/private/tmp/*", "/Users/Shared/*") and process.args_count == 1] by process.parent.entity_id
'''
min_endpoint_version = "8.11.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 1
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 1
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1027"
name = "Obfuscated Files or Information"
reference = "https://attack.mitre.org/techniques/T1027/"
[[threat.technique.subtechnique]]
id = "T1027.009"
name = "Embedded Payloads"
reference = "https://attack.mitre.org/techniques/T1027/009/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.11.0"
Stages and Predicates
Ordered sequence: each step below must occur in order within 10s, correlated by Effective_process.entity_id, process.parent.entity_id.
Stage 1: file
[file where event.action == "modification" and file.Ext.header_bytes like~ ("cffaedfe*", "cafebabe*") and
file.path like~ ("/tmp/*", "/private/tmp/*", "/Users/Shared/*") and
not process.executable like~ "/Library/Developer/*"] by Effective_process.entity_id
Stage 2: process
[process where event.type == "start" and event.action == "exec" and process.executable like~ ("/tmp/*", "/private/tmp/*", "/Users/Shared/*") and process.args_count == 1] by process.parent.entity_id
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq |
event.type | eq |
| field:"event.type" kind:eq value:"start" |
file.Ext.header_bytes | wildcard |
| field:"file.Ext.header_bytes" kind:wildcard |
file.path | wildcard |
| field:"TargetFilename" kind:wildcard |
process.args_count | eq |
| field:"process.args_count" kind:eq value:"1" |
process.executable | wildcard |
| field:"Image" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.executable | starts_with | /Library/Developer/ | excludes:process.executable field:"process.executable" value:"/Library/Developer/" |
Image Load via Synthetic Stack Spoofing
#Detects attempts to load a networking module from a potentially altered call stack in order to conceal the true source of the call.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Rule Body
[rule]
description = """
Detects attempts to load a networking module from a potentially altered call stack in order to conceal the true source
of the call.
"""
id = "d8c57cb7-bab6-41fa-9063-dcc8793c3955"
license = "Elastic License v2"
name = "Image Load via Synthetic Stack Spoofing"
os_list = ["windows"]
reference = ["https://www.elastic.co/security-labs/doubling-down-etw-callstacks"]
version = "1.0.27"
query = '''
library where
dll.name : ("wininet.dll", "ws2_32.dll", "dnsapi.dll", "winhttp.dll", "clr.dll", "netapi32.dll",
"mscorwks.dll", "System.*.dll", "mscorlib*.dll", "Microsoft.PowerShell.Security*.dll",
"Microsoft.PowerShell.ConsoleHost*.dll", "wmiutils.dll", "fastprox.dll", "wbemprox.dll",
"vaultcli.dll", "taskschd.dll", "dsquery.dll", "mstscax.dll", "ntdll.dll", "wldap32.dll",
"wtsapi32.dll", "psapi.dll") and
process.thread.Ext.call_stack_summary like "ntdll.dll|kernel32.dll*" and
/* JMP gadget in kernel32 */
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.symbol_info regex~ """.*system32\\kernel32.dll!(A|[C-Z]).+""") and
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.symbol_info : "?:\\Windows\\System32\\ntdll.dll!LdrLoadDll*") and
not process.thread.Ext.call_stack_summary like "ntdll.dll|kernel32.dll|mso40uiwin32client.dll|mso98win32client.dll|mso.dll|*" and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.symbol_info : ("*kernel32.dll!CreateProcess*", "*kernel32.dll!GetDateFormatWWorker*",
"*kernel32.dll!WerpLaunchAeDebug*", "*kernel32.dll!BaseDllReadWriteIniFile*",
"*kernel32.dll!GlobalReAlloc*", "*kernel32.dll!CreateToolhelp32Snapshot*",
"*kernel32.dll!Wow64SetThreadContext*", "*kernel32.dll!ExitProcess*", "*kernel32.dll!WinExec*",
"*kernel32.dll!CallbackMayRunLong*", "*kernel32.dll!BaseGenerateAppCompatData*",
"*mpclient.dll!MpUpdateServicePingRpc*", "*chrome.exe!IsSandboxedProcess*",
"*kernel32.dll!CreateActCtxWWorker*", "*kernel32.dll!Sleep*",
"*kernel32.dll!BasepCheckAppCompat*", "*kernel32.dll!AddAtomW*",
"*\\kernel32.dll!lstrlenW*", "*\\kernel32.dll!FindActCtxSectionGuidWorker*",
"*\\kernel32.dll!OpenPrivateNamespaceW*", "*\\kernel32.dll!DeactivateActCtxWorke*",
"c:\\windows\\system32\\kernel32.dll!QuirkIsEnabled3Worker*",
"C:\\Windows\\System32\\kernel32.dll!GetQueuedCompletionStatus*",
"*\\ntdll.dll!RtlFormatMessageEx*", "*kernel32.dll!GetQueuedCompletionStatus*"))
'''
min_endpoint_version = "8.10.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1036"
name = "Masquerading"
reference = "https://attack.mitre.org/techniques/T1036/"
[[threat.technique]]
id = "T1055"
name = "Process Injection"
reference = "https://attack.mitre.org/techniques/T1055/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.10.0"
Stages and Predicates
Stage 1: library
library where
dll.name : ("wininet.dll", "ws2_32.dll", "dnsapi.dll", "winhttp.dll", "clr.dll", "netapi32.dll",
"mscorwks.dll", "System.*.dll", "mscorlib*.dll", "Microsoft.PowerShell.Security*.dll",
"Microsoft.PowerShell.ConsoleHost*.dll", "wmiutils.dll", "fastprox.dll", "wbemprox.dll",
"vaultcli.dll", "taskschd.dll", "dsquery.dll", "mstscax.dll", "ntdll.dll", "wldap32.dll",
"wtsapi32.dll", "psapi.dll") and
process.thread.Ext.call_stack_summary like "ntdll.dll|kernel32.dll*" and
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.symbol_info regex~ """.*system32\\kernel32.dll!(A|[C-Z]).+""") and
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.symbol_info : "?:\\Windows\\System32\\ntdll.dll!LdrLoadDll*") and
not process.thread.Ext.call_stack_summary like "ntdll.dll|kernel32.dll|mso40uiwin32client.dll|mso98win32client.dll|mso.dll|*" and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.symbol_info : ("*kernel32.dll!CreateProcess*", "*kernel32.dll!GetDateFormatWWorker*",
"*kernel32.dll!WerpLaunchAeDebug*", "*kernel32.dll!BaseDllReadWriteIniFile*",
"*kernel32.dll!GlobalReAlloc*", "*kernel32.dll!CreateToolhelp32Snapshot*",
"*kernel32.dll!Wow64SetThreadContext*", "*kernel32.dll!ExitProcess*", "*kernel32.dll!WinExec*",
"*kernel32.dll!CallbackMayRunLong*", "*kernel32.dll!BaseGenerateAppCompatData*",
"*mpclient.dll!MpUpdateServicePingRpc*", "*chrome.exe!IsSandboxedProcess*",
"*kernel32.dll!CreateActCtxWWorker*", "*kernel32.dll!Sleep*",
"*kernel32.dll!BasepCheckAppCompat*", "*kernel32.dll!AddAtomW*",
"*\\kernel32.dll!lstrlenW*", "*\\kernel32.dll!FindActCtxSectionGuidWorker*",
"*\\kernel32.dll!OpenPrivateNamespaceW*", "*\\kernel32.dll!DeactivateActCtxWorke*",
"c:\\windows\\system32\\kernel32.dll!QuirkIsEnabled3Worker*",
"C:\\Windows\\System32\\kernel32.dll!GetQueuedCompletionStatus*",
"*\\ntdll.dll!RtlFormatMessageEx*", "*kernel32.dll!GetQueuedCompletionStatus*"))
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
dll.name | wildcard |
| field:"dll.name" kind:wildcard |
process.thread.Ext.call_stack_summary | wildcard |
| field:"process.thread.Ext.call_stack_summary" kind:wildcard value:"ntdll.dll|kernel32.dll*" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.thread.Ext.call_stack | array_any | excludes:process.thread.Ext.call_stack | |
process.thread.Ext.call_stack_summary | starts_with | ntdll.dll|kernel32.dll|mso40uiwin32client.dll|mso98win32client.dll|mso.dll| | excludes:process.thread.Ext.call_stack_summary field:"process.thread.Ext.call_stack_summary" value:"ntdll.dll|kernel32.dll|mso40uiwin32client.dll|mso98win32client.dll|mso.dll|" |
Kubernetes Ephemeral Container Added to Pod
#Detects allowed updates to the pods/ephemeralcontainers subresource by a non-system identity. Ephemeral containers are commonly used for debugging (kubectl debug) but can also be abused to inject tooling into a running pod, access mounted secrets, and execute commands in the target pod context. Attackers with sufficient RBAC may use ephemeral containers to escalate privileges, move laterally, or establish persistence without deploying a new workload.
Known False Positives
- Cluster operators or SREs may legitimately use ephemeral containers for debugging production workloads. Baseline approved admin identities and tune exclusions for known automation.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Privilege Escalation |
Telemetry Coverage
Rules Detecting the Same Action
These rules filter on the same operation.
- Azure AKS Ephemeral Container Added to Pod (Elastic)
- Direct Interactive Kubernetes API Request by Unusual Utilities (Elastic)
- GCP K8s Pod Attached To Node Host Network (Panther)
- GCP K8S Pod Create Or Modify Host Path Volume Mount (Panther)
- GCP K8s Pod Using Host PID Namespace (Panther)
- GKE Anonymous Pod Create/Update/Patch (Elastic)
- GKE Ephemeral Container Added to Pod (Elastic)
- GKE Pod Created with a Sensitive hostPath Volume (Elastic)
Rule Body
[metadata]
creation_date = "2026/05/07"
integration = ["kubernetes"]
maturity = "production"
updated_date = "2026/05/07"
[rule]
author = ["Elastic"]
description = """
Detects allowed updates to the pods/ephemeralcontainers subresource by a non-system identity. Ephemeral containers are
commonly used for debugging (kubectl debug) but can also be abused to inject tooling into a running pod, access mounted
secrets, and execute commands in the target pod context. Attackers with sufficient RBAC may use ephemeral containers to
escalate privileges, move laterally, or establish persistence without deploying a new workload.
"""
false_positives = [
"""
Cluster operators or SREs may legitimately use ephemeral containers for debugging production workloads. Baseline
approved admin identities and tune exclusions for known automation.
""",
]
from = "now-9m"
index = ["logs-kubernetes.audit_logs-*"]
language = "kuery"
license = "Elastic License v2"
name = "Kubernetes Ephemeral Container Added to Pod"
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Kubernetes Ephemeral Container Added to Pod
Ephemeral containers allow adding a container to an existing pod for troubleshooting. When abused, they can be used to
gain interactive access to a workload, read sensitive files, and run tools that were not present in the original image.
### Possible investigation steps
- Review the actor (user.name, groups), source.ip, and user_agent.original and confirm the identity is authorized to use ephemeral containers.
- Inspect kubernetes.audit.objectRef (namespace, name) to identify the targeted pod and workload owner.
- If request bodies are captured, review the ephemeral container image, command, and securityContext for privilege indicators.
- Correlate with follow-on audit activity such as pod exec, secret reads, TokenRequest, or RBAC modifications.
### Response and remediation
- If unauthorized, remove excessive RBAC that grants update/patch on pods/ephemeralcontainers and rotate exposed credentials.
- Quarantine or redeploy impacted workloads and hunt for additional compromised pods or identities.
"""
references = [
"https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/",
]
risk_score = 47
rule_id = "c62733ff-9373-4fdf-9733-3d992e148c93"
severity = "medium"
tags = [
"Data Source: Kubernetes",
"Domain: Kubernetes",
"Use Case: Threat Detection",
"Tactic: Privilege Escalation",
"Tactic: Execution",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "query"
query = '''
data_stream.dataset:"kubernetes.audit_logs" and
kubernetes.audit.objectRef.resource:"pods" and
kubernetes.audit.objectRef.subresource:"ephemeralcontainers" and
kubernetes.audit.verb:("update" or "patch") and
kubernetes.audit.annotations.authorization_k8s_io/decision:"allow" and
not user.name:(
system\:node\:* or
system\:serviceaccount\:kube-system\:*
)
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1611"
name = "Escape to Host"
reference = "https://attack.mitre.org/techniques/T1611/"
[rule.threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1609"
name = "Container Administration Command"
reference = "https://attack.mitre.org/techniques/T1609/"
[rule.threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
Stages and Predicates
Stage 1: query
data_stream.dataset:"kubernetes.audit_logs" and
kubernetes.audit.objectRef.resource:"pods" and
kubernetes.audit.objectRef.subresource:"ephemeralcontainers" and
kubernetes.audit.verb:("update" or "patch") and
kubernetes.audit.annotations.authorization_k8s_io/decision:"allow" and
not user.name:(
system\:node\:* or
system\:serviceaccount\:kube-system\:*
)
Indicators
These rows show field, operator, and value matches.
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
user.name | starts_with | system:node: | excludes:user.name field:"user.name" value:"system:node:" |
user.name | starts_with | system:serviceaccount:kube-system: | excludes:user.name field:"user.name" value:"system:serviceaccount:kube-system:" |
Kubernetes Secrets List Across Cluster or Sensitive Namespaces
#Detects list operations on Kubernetes Secrets from a non-loopback client when the request URI targets cluster-wide secrets or list operations under kube-system or default. Useful for spotting broad secret enumeration from remote clients.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access | |
| Discovery |
Telemetry Coverage
| Platform | Record / event type |
|---|---|
| Kubernetes | any-secrets: any verb on secrets (synthetic aggregation) |
Rules Detecting the Same Action
These rules filter on the same operation.
Rule Body
[metadata]
creation_date = "2026/04/22"
integration = ["kubernetes"]
maturity = "production"
updated_date = "2026/08/24"
[rule]
author = ["Elastic"]
description = """
Detects list operations on Kubernetes Secrets from a non-loopback client when the request URI targets cluster-wide
secrets or list operations under kube-system or default. Useful for spotting broad secret enumeration from remote
clients.
"""
from = "now-6m"
index = ["logs-kubernetes.audit_logs-*"]
language = "kuery"
license = "Elastic License v2"
name = "Kubernetes Secrets List Across Cluster or Sensitive Namespaces"
note = """## Triage and analysis
### Investigating Kubernetes Secrets List Across Cluster or Sensitive Namespaces
Audit events for `list` on the `secrets` resource against `/api/v1/secrets`, paginated cluster lists, or namespace-scoped
lists under `kube-system` or `default`, from a source IP that is not localhost.
### Investigation steps
- Confirm the actor (`user.name`, groups) and whether the client is expected (CI, admin bastion, controller).
- Review `kubernetes.audit.requestURI`, `user_agent.original`, and follow-on API activity from the same source.
- Assess exposure: cluster-wide secret listing can surface many credentials.
### False positives
- Legitimate controllers or operators listing secrets in `kube-system` / `default` from cluster nodes may match; tune by
source IP, user agent, or service account as needed.
"""
references = [
"https://attack.mitre.org/techniques/T1552/007/",
]
risk_score = 73
rule_id = "7e3f9a2b-1c4d-5e6f-8a0b-9c8d7e6f5a4b"
severity = "high"
tags = [
"Data Source: Kubernetes",
"Domain: Kubernetes",
"Use Case: Threat Detection",
"Tactic: Credential Access",
"Tactic: Discovery",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "query"
query = '''
event.dataset:"kubernetes.audit_logs" and event.action:list and
kubernetes.audit.objectRef.resource:secrets and
kubernetes.audit.requestURI :(/api/v1/secrets or /api/v1/secrets?limit* or /api/v1/namespaces/kube-system/secrets or /api/v1/namespaces/kube-system/secrets?limit* or /api/v1/namespaces/default/secrets or /api/v1/namespaces/default/secrets?limit*) and
source.ip:(* and not ("::1" or "127.0.0.1")) and
not user.name: (system\:kube-controller-manager or eks\:cloud-controller-manager or eks\:kms-storage-migrator or "system:serviceaccount:argocd:argocd-application-controller" or "system:serviceaccount:elastic:kube-state-metrics" or "system:serviceaccount:cert-manager:cert-manager-cainjector" or "system:serviceaccount:elastic-system:elastic-agent" or "system:serviceaccount:longhorn-system:longhorn-service-account") and
not kubernetes.audit.user.groups:("system:serviceaccounts:ibm-csi" or "system:serviceaccounts:argocd" or "system:serviceaccounts:elastic")
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1552"
name = "Unsecured Credentials"
reference = "https://attack.mitre.org/techniques/T1552/"
[[rule.threat.technique.subtechnique]]
id = "T1552.007"
name = "Container API"
reference = "https://attack.mitre.org/techniques/T1552/007/"
[rule.threat.tactic]
id = "TA0006"
name = "Credential Access"
reference = "https://attack.mitre.org/tactics/TA0006/"
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1613"
name = "Container and Resource Discovery"
reference = "https://attack.mitre.org/techniques/T1613/"
[rule.threat.tactic]
id = "TA0007"
name = "Discovery"
reference = "https://attack.mitre.org/tactics/TA0007/"
Stages and Predicates
Stage 1: query
event.dataset:"kubernetes.audit_logs" and event.action:list and
kubernetes.audit.objectRef.resource:secrets and
kubernetes.audit.requestURI :(/api/v1/secrets or /api/v1/secrets?limit* or /api/v1/namespaces/kube-system/secrets or /api/v1/namespaces/kube-system/secrets?limit* or /api/v1/namespaces/default/secrets or /api/v1/namespaces/default/secrets?limit*) and
source.ip:(* and not ("::1" or "127.0.0.1")) and
not user.name: (system\:kube-controller-manager or eks\:cloud-controller-manager or eks\:kms-storage-migrator or "system:serviceaccount:argocd:argocd-application-controller" or "system:serviceaccount:elastic:kube-state-metrics" or "system:serviceaccount:cert-manager:cert-manager-cainjector" or "system:serviceaccount:elastic-system:elastic-agent" or "system:serviceaccount:longhorn-system:longhorn-service-account") and
not kubernetes.audit.user.groups:("system:serviceaccounts:ibm-csi" or "system:serviceaccounts:argocd" or "system:serviceaccounts:elastic")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"list" |
event.dataset | eq |
| field:"event.dataset" kind:eq value:"kubernetes.audit_logs" |
kubernetes.audit.objectRef.resource | eq |
| field:"kubernetes.audit.objectRef.resource" kind:eq value:"secrets" |
kubernetes.audit.requestURI | eq |
| field:"kubernetes.audit.requestURI" kind:eq |
kubernetes.audit.requestURI | wildcard |
| field:"kubernetes.audit.requestURI" kind:wildcard |
source.ip | is_not_null | field:"src_ip" kind:is_not_null |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
kubernetes.audit.user.groups | in | system:serviceaccounts:argocd, system:serviceaccounts:elastic, system:serviceaccounts:ibm-csi | excludes:kubernetes.audit.user.groups field:"kubernetes.audit.user.groups" value:"system:serviceaccounts:argocd" field:"kubernetes.audit.user.groups" value:"system:serviceaccounts:elastic" field:"kubernetes.audit.user.groups" value:"system:serviceaccounts:ibm-csi" |
source.ip | in | 127.0.0.1, ::1 | excludes:source.ip field:"source.ip" value:"127.0.0.1" field:"source.ip" value:"::1" |
user.name | in | eks:cloud-controller-manager, eks:kms-storage-migrator, system:kube-controller-manager, system:serviceaccount:argocd:argocd-application-controller, system:serviceaccount:cert-manager:cert-manager-cainjector, system:serviceaccount:elastic-system:elastic-agent, system:serviceaccount:elastic:kube-state-metrics, system:serviceaccount:longhorn-system:longhorn-service-account | excludes:user.name |
Linux User or Group Deletion
#This rule detects the deletion of user or group accounts on Linux systems. Adversaries may use these commands to remove accounts to cover their tracks or disrupt operations.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth | |
| Impact |
Rule Body
[metadata]
creation_date = "2026/01/08"
integration = ["system"]
maturity = "production"
updated_date = "2026/03/24"
[rule]
author = ["Elastic"]
description = """
This rule detects the deletion of user or group accounts on Linux systems. Adversaries may use these
commands to remove accounts to cover their tracks or disrupt operations.
"""
from = "now-9m"
index = ["filebeat-*", "logs-system.auth-*"]
language = "eql"
license = "Elastic License v2"
name = "Linux User or Group Deletion"
note = """ ## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Linux User or Group Deletion
This rule surfaces successful deletions of Linux users or groups—activity that can erase evidence, hide persistence, or disrupt access control. A common pattern is an attacker with root rights running userdel -r to remove a temporary privileged account they used for access, deleting its home directory and mail spool to strip artifacts. Correlate with recent privilege escalation and changes to sudoers/wheel to identify whether this was malicious cleanup versus routine deprovisioning.
### Possible investigation steps
- Correlate with auth and sudo logs to identify the actor, session (TTY/SSH), and source IP that executed the deletion and confirm whether root was obtained via sudo or another escalation path.
- Inspect the process tree and command line to see if userdel/groupdel used -r to remove the home/mail spool and whether it was launched from an interactive shell, SSH session, or automation tooling.
- Validate expected deprovisioning by checking HR/ticketing/IdM and configuration-management activity around the time, and escalate if the deleted identity was privileged or part of sudo/wheel.
- Build a timeline around the event to find adjacent actions such as account creation, password or key changes, group membership edits, and modifications to /etc/passwd, /etc/group, /etc/shadow, or sudoers.
- Assess impact and persistence by locating services, cron/systemd units, files, ACLs, or running processes still referencing the deleted UID/GID, attempt recovery of the home/mail from backups, and look for wtmp/btmp/lastlog tampering.
### False positive analysis
- Scheduled deprovisioning or baseline enforcement where administrators intentionally remove stale local users or groups associated with retired projects, decommissioned systems, or role changes during maintenance.
- Package uninstall or system maintenance scripts that add a service account during setup and later remove it during cleanup, causing legitimate user/group deletion events.
### Response and remediation
- If the deletion is unauthorized, immediately isolate the host and restrict interactive access by setting PermitRootLogin no and tightening AllowUsers/AllowGroups in /etc/ssh/sshd_config, then systemctl restart sshd to apply.
- Review and clean authorization and persistence by inspecting /etc/sudoers and /etc/sudoers.d for unauthorized rules, checking wheel/sudo memberships in /etc/group, and purging cron or systemd units that reference the deleted UID/GID.
- Recover the identity if legitimate by recreating the user/group with the original UID/GID from /var/backups/{passwd,group,shadow}, restoring the corresponding /home directory and /var/spool/mail from backups, and reassigning orphaned files using find -nouser -nogroup to a valid account.
- Rotate credentials associated with the deleted identity by replacing SSH keys and secrets found in ~/.ssh/authorized_keys and application configs, and invalidate cached tokens and service account credentials that may have been shared.
- Escalate to incident response if the deleted account was privileged (present in wheel/sudo groups), userdel/groupdel used -r to remove the home/mail spool, or evidence of log tampering exists such as truncated /var/log/auth.log or altered wtmp/btmp/lastlog.
- Harden by centralizing local account lifecycle in IdM/LDAP, enforcing visudo-managed sudo changes, enabling auditd watches on /usr/sbin/userdel,/usr/sbin/groupdel and writes to /etc/passwd,/etc/group,/etc/shadow, and deploying AIDE to monitor integrity of /etc.
"""
risk_score = 21
rule_id = "8f8004e1-0783-485f-a3da-aca4362f74a7"
setup = """## Setup
This rule requires data coming in from Filebeat.
### Filebeat Setup
Filebeat is a lightweight shipper for forwarding and centralizing log data. Installed as an agent on your servers, Filebeat monitors the log files or locations that you specify, collects log events, and forwards them either to Elasticsearch or Logstash for indexing.
#### The following steps should be executed in order to add the Filebeat on a Linux System:
- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.
- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html).
- To run Filebeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/running-on-docker.html).
- To run Filebeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/running-on-kubernetes.html).
- For quick start information for Filebeat refer to the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/8.11/filebeat-installation-configuration.html).
- For complete “Setup and Run Filebeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/setting-up-and-running.html).
#### Rule Specific Setup Note
- This rule requires the “Filebeat System Module” to be enabled.
- The system module collects and parses logs created by the system logging service of common Unix/Linux based distributions.
- To run the system module of Filebeat on Linux follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-system.html).
"""
severity = "low"
tags = [
"Domain: Endpoint",
"OS: Linux",
"Use Case: Threat Detection",
"Tactic: Defense Evasion",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "eql"
query = '''
iam where host.os.type == "linux" and event.type in ("group", "user") and event.type == "deletion" and event.outcome == "success"
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1070"
name = "Indicator Removal"
reference = "https://attack.mitre.org/techniques/T1070/"
[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 = "T1531"
name = "Account Access Removal"
reference = "https://attack.mitre.org/techniques/T1531/"
[rule.threat.tactic]
id = "TA0040"
name = "Impact"
reference = "https://attack.mitre.org/tactics/TA0040/"
Stages and Predicates
Stage 1: iam
iam where host.os.type == "linux" and event.type in ("group", "user") and event.type == "deletion" and event.outcome == "success"
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.outcome | eq |
| field:"event.outcome" kind:eq value:"success" |
event.type | eq |
| field:"event.type" kind:eq value:"deletion" |
event.type | in |
| field:"event.type" kind:in |
Office Application Startup via Template File Modification
#Adversaries can modify default Microsoft Office templates in order to establish persistence using malicious Macro templates.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Rule Body
[rule]
description = """
Adversaries can modify default Microsoft Office templates in order to establish persistence using malicious Macro
templates.
"""
id = "608eae71-6797-4ded-bfaa-41bcb17a8498"
license = "Elastic License v2"
name = "Office Application Startup via Template File Modification"
os_list = ["windows"]
reference = ["https://attack.mitre.org/techniques/T1137/001/"]
version = "1.0.30"
query = '''
file where event.action in ("creation", "overwrite") and process.pid != 4 and
process.name != null and user.name != null and
file.path :
("C:\\Users\\*\\AppData\\Roaming\\Microsoft\\Templates\\Normal.dotm",
"C:\\Users\\*\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\PERSONAL.XLSB") and file.size > 0 and
not process.thread.Ext.call_stack_summary in
("sysfer.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll",
"ntdll.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll") and
not process.executable : ("?:\\Windows\\System32\\svchost.exe",
"?:\\Windows\\explorer.exe",
"?:\\Program Files\\Citrix\\User Profile Manager\\UserProfileManager.exe",
"?:\\Program Files (x86)\\Citrix\\User Profile Manager\\UserProfileManager.exe",
"?:\\Program Files (x86)\\Ivanti\\Workspace Control\\pfwsmgr.exe",
"?:\\ProgramData\\ForensiT\\Transwiz\\Deployment Files\\Transwiz.exe",
"C:\\Program Files (x86)\\Windows Kits\\10\\Assessment and Deployment Kit\\User State Migration Tool\\amd64\\loadstate.exe",
"?:\\Windows\\Sys*\\xcopy.exe",
"?:\\Windows\\Sys*\\Robocopy.exe",
"?:\\Program Files\\Veeam\\Endpoint Backup\\*.exe",
"?:\\Program Files (x86)\\Laplink PCmover\\PCmoverHost.exe",
"?:\\Windows\\System32\\dllhost.exe",
"C:\\Windows\\System32\\cmd.exe",
"D:\\SuperGrate*.exe",
"\\Device\\Mup\\*.exe") and
not user.id in ("S-1-5-18", "S-1-5-19", "S-1-5-20")
'''
min_endpoint_version = "8.10.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1137"
name = "Office Application Startup"
reference = "https://attack.mitre.org/techniques/T1137/"
[[threat.technique.subtechnique]]
id = "T1137.001"
name = "Office Template Macros"
reference = "https://attack.mitre.org/techniques/T1137/001/"
[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[internal]
min_endpoint_version = "8.10.0"
Stages and Predicates
Stage 1: file
file where event.action in ("creation", "overwrite") and process.pid != 4 and
process.name != null and user.name != null and
file.path :
("C:\\Users\\*\\AppData\\Roaming\\Microsoft\\Templates\\Normal.dotm",
"C:\\Users\\*\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\PERSONAL.XLSB") and file.size > 0 and
not process.thread.Ext.call_stack_summary in
("sysfer.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll",
"ntdll.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll") and
not process.executable : ("?:\\Windows\\System32\\svchost.exe",
"?:\\Windows\\explorer.exe",
"?:\\Program Files\\Citrix\\User Profile Manager\\UserProfileManager.exe",
"?:\\Program Files (x86)\\Citrix\\User Profile Manager\\UserProfileManager.exe",
"?:\\Program Files (x86)\\Ivanti\\Workspace Control\\pfwsmgr.exe",
"?:\\ProgramData\\ForensiT\\Transwiz\\Deployment Files\\Transwiz.exe",
"C:\\Program Files (x86)\\Windows Kits\\10\\Assessment and Deployment Kit\\User State Migration Tool\\amd64\\loadstate.exe",
"?:\\Windows\\Sys*\\xcopy.exe",
"?:\\Windows\\Sys*\\Robocopy.exe",
"?:\\Program Files\\Veeam\\Endpoint Backup\\*.exe",
"?:\\Program Files (x86)\\Laplink PCmover\\PCmoverHost.exe",
"?:\\Windows\\System32\\dllhost.exe",
"C:\\Windows\\System32\\cmd.exe",
"D:\\SuperGrate*.exe",
"\\Device\\Mup\\*.exe") and
not user.id in ("S-1-5-18", "S-1-5-19", "S-1-5-20")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | in |
| field:"EventType" kind:in |
file.path | wildcard |
| field:"TargetFilename" kind:wildcard |
file.size | gt |
| field:"file.size" kind:gt value:"0" |
process.name | is_not_null | field:"process_basename" kind:is_not_null | |
process.pid | ne |
| field:"process_id" kind:ne value:"4" |
user.name | is_not_null | field:"user" kind:is_not_null |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.executable | wildcard | ?:\Windows\System32\svchost.exe, ?:\Windows\explorer.exe, ?:\Program Files\Citrix\User Profile Manager\UserProfileManager.exe, ?:\Program Files (x86)\Citrix\User Profile Manager\UserProfileManager.exe, ?:\Program Files (x86)\Ivanti\Workspace Control\pfwsmgr.exe, ?:\ProgramData\ForensiT\Transwiz\Deployment Files\Transwiz.exe, C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\User State Migration Tool\amd64\loadstate.exe, ?:\Windows\Sys*\xcopy.exe, ?:\Windows\Sys*\Robocopy.exe, ?:\Program Files\Veeam\Endpoint Backup\*.exe, ?:\Program Files (x86)\Laplink PCmover\PCmoverHost.exe, ?:\Windows\System32\dllhost.exe, C:\Windows\System32\cmd.exe, D:\SuperGrate*.exe, \Device\Mup\*.exe | excludes:process.executable |
process.thread.Ext.call_stack_summary | in | ntdll.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll, sysfer.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll | excludes:process.thread.Ext.call_stack_summary field:"process.thread.Ext.call_stack_summary" value:"ntdll.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll" field:"process.thread.Ext.call_stack_summary" value:"sysfer.dll|apphelp.dll|kernelbase.dll|migcore.dll|loadstate.exe|kernel32.dll|ntdll.dll" |
user.id | in | S-1-5-18, S-1-5-19, S-1-5-20 | excludes:user.id field:"user.id" value:"S-1-5-18" field:"user.id" value:"S-1-5-19" field:"user.id" value:"S-1-5-20" |
Potential Data Exfiltration Activity to an Unusual IP Address
#A machine learning job has detected data exfiltration to a particular geo-location (by IP address). Data transfers to geo-locations that are outside the normal traffic patterns of an organization could indicate exfiltration over command and control channels.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Exfiltration |
Rule Body
[metadata]
creation_date = "2023/09/22"
integration = ["ded", "endpoint", "network_traffic"]
maturity = "production"
updated_date = "2026/07/27"
min_stack_version = "9.4.0"
min_stack_comments = "Use EA (Entity Analytics) fields"
[rule]
anomaly_threshold = 75
author = ["Elastic"]
description = """
A machine learning job has detected data exfiltration to a particular geo-location (by IP address). Data transfers to
geo-locations that are outside the normal traffic patterns of an organization could indicate exfiltration over command
and control channels.
"""
from = "now-6h"
interval = "15m"
license = "Elastic License v2"
machine_learning_job_id = "ded_high_sent_bytes_destination_ip_ea"
name = "Potential Data Exfiltration Activity to an Unusual IP Address"
references = [
"https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html",
"https://docs.elastic.co/en/integrations/ded",
"https://www.elastic.co/blog/detect-data-exfiltration-activity-with-kibanas-new-integration",
]
risk_score = 21
rule_id = "cc653d77-ddd2-45b1-9197-c75ad19df66c"
setup = """## Setup
The rule requires the Data Exfiltration Detection integration assets to be installed, as well as network and file events collected by integrations such as Elastic Defend and Network Packet Capture (for network events only).
### Data Exfiltration Detection Setup
The Data Exfiltration Detection integration detects data exfiltration activity by identifying abnormalities in network and file events. Anomalies are detected using Elastic's Anomaly Detection feature.
#### Prerequisite Requirements:
- Fleet is required for Data Exfiltration Detection.
- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).
- Network events collected by the [Elastic Defend](https://docs.elastic.co/en/integrations/endpoint) or [Network Packet Capture](https://docs.elastic.co/integrations/network_traffic) integration.
- To install Elastic Defend, refer to the [documentation](https://www.elastic.co/guide/en/security/current/install-endpoint.html).
- To add the Network Packet Capture integration to an Elastic Agent policy, refer to [this](https://www.elastic.co/guide/en/fleet/current/add-integration-to-policy.html) guide.
#### The following steps should be executed to install assets associated with the Data Exfiltration Detection integration:
- Go to the Kibana homepage. Under Management, click Integrations.
- In the query bar, search for Data Exfiltration Detection and select the integration to see more details about it.
- Follow the instructions under the **Installation** section.
- For this rule to work, complete the instructions through **Add preconfigured anomaly detection jobs**.
"""
severity = "low"
tags = [
"Data Source: Elastic Defend",
"Data Source: Network Packet Capture",
"Use Case: Data Exfiltration Detection",
"Rule Type: ML",
"Rule Type: Machine Learning",
"Tactic: Exfiltration",
"Resources: Investigation Guide",
]
type = "machine_learning"
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Potential Data Exfiltration Activity to an Unusual IP Address
Machine learning models analyze network traffic patterns to identify anomalies, such as data transfers to atypical geo-locations. Adversaries exploit command and control channels to exfiltrate data to these unusual IP addresses. This detection rule leverages ML to flag deviations from normal traffic, indicating potential exfiltration activities, thus aiding in early threat identification.
### Possible investigation steps
- Review the alert details to identify the unusual IP address and geo-location involved in the potential exfiltration activity.
- Cross-reference the identified IP address with threat intelligence databases to determine if it is associated with known malicious activities or threat actors.
- Analyze historical network traffic logs to determine if there have been previous connections to the same IP address or geo-location, and assess the volume and frequency of these connections.
- Investigate the source device or user account associated with the alert to identify any unauthorized access or suspicious behavior leading up to the alert.
- Check for any recent changes in network configurations or security policies that might have inadvertently allowed the data transfer to the unusual IP address.
- Collaborate with the IT team to isolate the affected systems, if necessary, and prevent further data exfiltration while the investigation is ongoing.
### False positive analysis
- Legitimate business operations involving data transfers to new or infrequent geo-locations may trigger false positives. Users should review these activities and, if deemed non-threatening, add exceptions for these IP addresses.
- Regularly scheduled data backups or transfers to cloud services located in different regions can be misidentified as exfiltration. Users can whitelist these services to prevent unnecessary alerts.
- Remote work scenarios where employees connect from various locations might cause false positives. Implementing a policy to recognize and exclude known employee IP addresses can mitigate this issue.
- Partner or vendor data exchanges that occur outside typical patterns should be evaluated. If these are routine and secure, users can create exceptions for these specific IP addresses to reduce false alerts.
### Response and remediation
- Isolate the affected systems immediately to prevent further data exfiltration. Disconnect them from the network to stop any ongoing communication with the unusual IP address.
- Conduct a thorough analysis of the affected systems to identify any malicious software or unauthorized access points. Remove any identified threats and patch vulnerabilities.
- Change all credentials and access keys that may have been compromised during the exfiltration activity. Ensure that new credentials follow best practices for security.
- Review and update firewall rules and network access controls to block the identified unusual IP address and similar suspicious IP ranges.
- Monitor network traffic closely for any signs of continued exfiltration attempts or communication with command and control channels. Use enhanced logging and alerting to detect any anomalies.
- Escalate the incident to the organization's cybersecurity response team and, if necessary, report the breach to relevant authorities or regulatory bodies as per compliance requirements.
- Conduct a post-incident review to identify gaps in the current security posture and implement measures to prevent recurrence, such as improving network segmentation and enhancing threat detection capabilities."""
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1041"
name = "Exfiltration Over C2 Channel"
reference = "https://attack.mitre.org/techniques/T1041/"
[rule.threat.tactic]
id = "TA0010"
name = "Exfiltration"
reference = "https://attack.mitre.org/tactics/TA0010/"
Potential Privilege Escalation via MSI Repair
#Identifies a browser process navigates to the Microsoft Help page followed by spawning an elevated process. This may indicate a successful exploitation for privilege escalation abusing a vulnerable Windows Installer repair setup.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Rule Body
[rule]
description = """
Identifies a browser process navigates to the Microsoft Help page followed by spawning an elevated process. This may
indicate a successful exploitation for privilege escalation abusing a vulnerable Windows Installer repair setup.
"""
id = "e02f4cc7-ca8a-4b5b-83a9-479f83aa74b3"
license = "Elastic License v2"
name = "Potential Privilege Escalation via MSI Repair"
os_list = ["windows"]
reference = ["https://sec-consult.com/blog/detail/msi-installer-repair-to-system-a-detailed-journey/"]
version = "1.0.5"
query = '''
process where event.action == "start" and process.Ext.token.integrity_level_name == "system" and
process.parent.name in~ ("chrome.exe", "msedge.exe", "brave.exe", "whale.exe", "browser.exe", "dragon.exe", "vivaldi.exe",
"opera.exe", "iexplore", "firefox.exe", "waterfox.exe", "iexplore.exe", "tor.exe", "safari.exe") and
process.parent.command_line like "*go.microsoft.com*" and
not process.executable :
("?:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe",
"?:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"?:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
"?:\\Program Files\\Mozilla Firefox\\firefox.exe",
"?:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
"?:\\Program Files (x86)\\Google\\Chrome\\Application\\*\\Installer\\chrmstp.exe")
'''
min_endpoint_version = "7.15.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
tree = true
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1068"
name = "Exploitation for Privilege Escalation"
reference = "https://attack.mitre.org/techniques/T1068/"
[threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
[internal]
min_endpoint_version = "7.15.0"
Stages and Predicates
Stage 1: process
process where event.action == "start" and process.Ext.token.integrity_level_name == "system" and
process.parent.name in~ ("chrome.exe", "msedge.exe", "brave.exe", "whale.exe", "browser.exe", "dragon.exe", "vivaldi.exe",
"opera.exe", "iexplore", "firefox.exe", "waterfox.exe", "iexplore.exe", "tor.exe", "safari.exe") and
process.parent.command_line like "*go.microsoft.com*" and
not process.executable :
("?:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe",
"?:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"?:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
"?:\\Program Files\\Mozilla Firefox\\firefox.exe",
"?:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
"?:\\Program Files (x86)\\Google\\Chrome\\Application\\*\\Installer\\chrmstp.exe")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.Ext.token.integrity_level_name | eq |
| field:"process.Ext.token.integrity_level_name" kind:eq value:"system" |
process.parent.command_line | wildcard |
| field:"ParentCommandLine" kind:wildcard value:"*go.microsoft.com*" |
process.parent.name | in |
| field:"parent_process_basename" kind:in |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.executable | wildcard | ?:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe, ?:\Program Files\Google\Chrome\Application\chrome.exe, ?:\Program Files (x86)\Google\Chrome\Application\chrome.exe, ?:\Program Files\Mozilla Firefox\firefox.exe, ?:\Program Files (x86)\Mozilla Firefox\firefox.exe, ?:\Program Files (x86)\Google\Chrome\Application\*\Installer\chrmstp.exe | excludes:process.executable |
Potential Privilege Escalation via SUID Binary
#Identifies instances where a process is executed with user/group ID 0 (root), and a real user/group ID that is not 0. This is indicative of a process that has been granted SUID/SGID permissions, allowing it to run with elevated privileges. Attackers may leverage a misconfiguration for exploitation in order to escalate their privileges to root, or establish a backdoor for persistence.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Rule Body
[rule]
description = """
Identifies instances where a process is executed with user/group ID 0 (root), and a real user/group ID that is not 0.
This is indicative of a process that has been granted SUID/SGID permissions, allowing it to run with elevated
privileges. Attackers may leverage a misconfiguration for exploitation in order to escalate their privileges to root, or
establish a backdoor for persistence.
"""
id = "8863c926-4811-4a5f-bdc3-58186bf7c5bb"
license = "Elastic License v2"
name = "Potential Privilege Escalation via SUID Binary"
os_list = ["linux"]
reference = ["https://gtfobins.github.io/#+suid"]
version = "1.0.10"
query = '''
process where event.type == "start" and event.action == "exec" and (
(process.user.id == 0 and process.real_user.id != 0) or
(process.group.id == 0 and process.real_group.id != 0)
) and process.parent.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and (
process.name in (
"aa-exec", "ab", "agetty", "alpine", "ar", "arj", "arp", "as", "ascii-xfr", "ash", "aspell",
"atobm", "base32", "base64", "basenc", "basez", "bc", "bridge", "busctl",
"busybox", "bzip2", "cabal", "capsh", "choom", "chroot", "clamscan", "cmp",
"column", "comm", "cpio", "cpulimit", "csh", "csplit", "csvtool", "cupsfilter",
"dd", "debugfs", "dialog", "diff", "dig", "distcc",
"dosbox", "ed", "efax", "elvish", "emacs", "eqn", "espeak", "expand", "expect",
"fish", "fmt", "fold", "gcore", "gdb", "genie", "genisoimage", "gimp",
"gtester", "hd", "hexdump", "highlight", "hping3", "iconv", "install",
"ionice", "ispell", "jjs", "join", "jrunscript", "julia", "ksshell",
"ld.so", "less", "links", "logsave", "look", "lua", "make",
"mosquitto", "msgattrib", "msgcat", "msgconv", "msgfilter", "msgmerge", "msguniq", "multitime",
"nasm", "ncftp", "nft", "nl", "nm", "nmap", "nohup", "ntpdate",
"od", "openssl", "openvpn", "pandoc", "paste", "perf", "pexec", "pg", "pidstat",
"pr", "ptx", "python", "rc", "readelf", "restic", "rlwrap", "rsync", "rtorrent",
"rview", "sash", "scanmem", "setarch", "setlock",
"soelim", "softlimit", "sqlite3", "ss", "ssh-agent", "ssh-keygen", "ssh-keyscan",
"sshpass", "start-stop-daemon", "stdbuf", "strace", "sysctl", "tac",
"taskset", "tbl", "tclsh", "tee", "tftp", "tic", "time", "troff",
"ul", "unexpand", "unshare", "unsquashfs", "unzip", "update-alternatives", "uudecode",
"uuencode", "vagrant", "varnishncsa", "view", "vigr", "vipw", "w3m", "watch",
"whiptail", "xdotool", "xmodmap", "xmore", "xxd", "xz", "yash", "zsh",
"zsoelim"
) or
process.name == "ip" and (
(
process.args == "-force" and process.args in ("-batch", "-b")) or (process.args == "exec")
) or
(process.name in ("bash", "sh", "dash", "ksh") and process.args == "-p") or
(process.name == "php" and process.args == "-r") or
(process.name in ("rvim", "vim", "vimdiff") and process.args == "-c") or
(process.name == "perl" and process.args == "-e") or
(process.name == "minicom" and process.args == "-D") or
(process.name == "dmsetup" and process.args == "--exec") or
(process.name == "xargs" and process.args == "-a") or
(process.name == "wget" and process.args like "--use-askpass=*") or
(process.name == "docker" and process.args == "run" and process.args == "chroot") or
(process.name in ("nawk", "gawk", "mawk") and process.command_line like "*system*")
) and not (
process.parent.name in ("spine", "sudo", "gcc") or
process.parent.executable like~ (
"/usr/sbin/sshd", "/usr/lib/systemd/systemd", "/etc/aide/aide.conf.d/*", "/usr/lib/apt/apt.systemd.daily",
"/usr/libexec/gdm-wayland-session", "/usr/bin/setup-policy-routes", "/usr/libexec/gnome-terminal-server",
"/opt/microsoft/omsagent/plugin/omsbaseline", "/usr/bin/rkhunter", "/snap/microk8s/*"
) or
process.args == "/usr/local/zeek/bin/zeekctl cron" or
process.parent.args == "/usr/bin/supervisord" or
process.working_directory == "/usr/local/spine/bin" or
(process.name == "sort" and process.parent.args == "/usr/lib/grub/grub-multi-install") or
(process.name == "minicom" and process.command_line == "minicom")
)
'''
min_endpoint_version = "8.2.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1068"
name = "Exploitation for Privilege Escalation"
reference = "https://attack.mitre.org/techniques/T1068/"
[[threat.technique]]
id = "T1548"
name = "Abuse Elevation Control Mechanism"
reference = "https://attack.mitre.org/techniques/T1548/"
[[threat.technique.subtechnique]]
id = "T1548.001"
name = "Setuid and Setgid"
reference = "https://attack.mitre.org/techniques/T1548/001/"
[threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
[internal]
min_endpoint_version = "8.2.0"
Stages and Predicates
Stage 1: process
process where event.type == "start" and event.action == "exec" and (
(process.user.id == 0 and process.real_user.id != 0) or
(process.group.id == 0 and process.real_group.id != 0)
) and process.parent.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and (
process.name in (
"aa-exec", "ab", "agetty", "alpine", "ar", "arj", "arp", "as", "ascii-xfr", "ash", "aspell",
"atobm", "base32", "base64", "basenc", "basez", "bc", "bridge", "busctl",
"busybox", "bzip2", "cabal", "capsh", "choom", "chroot", "clamscan", "cmp",
"column", "comm", "cpio", "cpulimit", "csh", "csplit", "csvtool", "cupsfilter",
"dd", "debugfs", "dialog", "diff", "dig", "distcc",
"dosbox", "ed", "efax", "elvish", "emacs", "eqn", "espeak", "expand", "expect",
"fish", "fmt", "fold", "gcore", "gdb", "genie", "genisoimage", "gimp",
"gtester", "hd", "hexdump", "highlight", "hping3", "iconv", "install",
"ionice", "ispell", "jjs", "join", "jrunscript", "julia", "ksshell",
"ld.so", "less", "links", "logsave", "look", "lua", "make",
"mosquitto", "msgattrib", "msgcat", "msgconv", "msgfilter", "msgmerge", "msguniq", "multitime",
"nasm", "ncftp", "nft", "nl", "nm", "nmap", "nohup", "ntpdate",
"od", "openssl", "openvpn", "pandoc", "paste", "perf", "pexec", "pg", "pidstat",
"pr", "ptx", "python", "rc", "readelf", "restic", "rlwrap", "rsync", "rtorrent",
"rview", "sash", "scanmem", "setarch", "setlock",
"soelim", "softlimit", "sqlite3", "ss", "ssh-agent", "ssh-keygen", "ssh-keyscan",
"sshpass", "start-stop-daemon", "stdbuf", "strace", "sysctl", "tac",
"taskset", "tbl", "tclsh", "tee", "tftp", "tic", "time", "troff",
"ul", "unexpand", "unshare", "unsquashfs", "unzip", "update-alternatives", "uudecode",
"uuencode", "vagrant", "varnishncsa", "view", "vigr", "vipw", "w3m", "watch",
"whiptail", "xdotool", "xmodmap", "xmore", "xxd", "xz", "yash", "zsh",
"zsoelim"
) or
process.name == "ip" and (
(
process.args == "-force" and process.args in ("-batch", "-b")) or (process.args == "exec")
) or
(process.name in ("bash", "sh", "dash", "ksh") and process.args == "-p") or
(process.name == "php" and process.args == "-r") or
(process.name in ("rvim", "vim", "vimdiff") and process.args == "-c") or
(process.name == "perl" and process.args == "-e") or
(process.name == "minicom" and process.args == "-D") or
(process.name == "dmsetup" and process.args == "--exec") or
(process.name == "xargs" and process.args == "-a") or
(process.name == "wget" and process.args like "--use-askpass=*") or
(process.name == "docker" and process.args == "run" and process.args == "chroot") or
(process.name in ("nawk", "gawk", "mawk") and process.command_line like "*system*")
) and not (
process.parent.name in ("spine", "sudo", "gcc") or
process.parent.executable like~ (
"/usr/sbin/sshd", "/usr/lib/systemd/systemd", "/etc/aide/aide.conf.d/*", "/usr/lib/apt/apt.systemd.daily",
"/usr/libexec/gdm-wayland-session", "/usr/bin/setup-policy-routes", "/usr/libexec/gnome-terminal-server",
"/opt/microsoft/omsagent/plugin/omsbaseline", "/usr/bin/rkhunter", "/snap/microk8s/*"
) or
process.args == "/usr/local/zeek/bin/zeekctl cron" or
process.parent.args == "/usr/bin/supervisord" or
process.working_directory == "/usr/local/spine/bin" or
(process.name == "sort" and process.parent.args == "/usr/lib/grub/grub-multi-install") or
(process.name == "minicom" and process.command_line == "minicom")
)
Indicators
These rows show field, operator, and value matches.
Exclusions
The rule actively suppresses these predicates.
Powershell Execution via Runscripthelper
#Detects attempts to execute a powershell script bypassing constrained language mode using the RunScriptHelper utility.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Rule Body
[rule]
description = "Detects attempts to execute a powershell script bypassing constrained language mode using the RunScriptHelper utility."
id = "c199e7d9-0cbe-4190-a3c1-c552e64f1b6c"
license = "Elastic License v2"
name = "Powershell Execution via Runscripthelper"
os_list = ["windows"]
reference = ["https://lolbas-project.github.io/lolbas/Binaries/Runscripthelper/"]
version = "1.0.4"
query = '''
process where event.action == "start" and
(process.name : "runscripthelper.exe" or process.pe.original_file_name : "runscripthelper.exe") and
process.args : "surfacecheck" and process.args_count > 3
'''
min_endpoint_version = "7.16.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[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.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[internal]
min_endpoint_version = "7.16.0"
Stages and Predicates
Stage 1: process
process where event.action == "start" and
(process.name : "runscripthelper.exe" or process.pe.original_file_name : "runscripthelper.exe") and
process.args : "surfacecheck" and process.args_count > 3
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.args | wildcard |
| field:"process.args" kind:wildcard value:"surfacecheck" |
process.args_count | gt |
| field:"process.args_count" kind:gt value:"3" |
process.name | wildcard |
| field:"process_basename" kind:wildcard value:"runscripthelper.exe" |
process.pe.original_file_name | wildcard |
| field:"OriginalFileName" kind:wildcard value:"runscripthelper.exe" |
Reading or Modifying Downloaded Files Database via SQLite Utility
#Identifies the sqlite3 utility being used to search or manipulate the database containing metadata on downloaded files. Attackers may configure their malware to check the downloaded files database and determine the URL that their malware was downloaded from in order to track their infections during a campaign.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth | No specific technique |
Telemetry Coverage
Rule Body
[rule]
description = """
Identifies the sqlite3 utility being used to search or manipulate the database containing metadata on downloaded files.
Attackers may configure their malware to check the downloaded files database and determine the URL that their malware
was downloaded from in order to track their infections during a campaign.
"""
id = "b8fb52cd-5f06-4519-921d-bd1b363dc01b"
license = "Elastic License v2"
name = "Reading or Modifying Downloaded Files Database via SQLite Utility"
os_list = ["macos"]
reference = ["https://redcanary.com/blog/clipping-silver-sparrows-wings/"]
version = "1.0.30"
query = '''
process where event.action == "exec" and
(process.name in ("sqlite3", "bash", "sh", "zsh", "dash", "csh", "tcsh", "ksh", "tclsh", "fish") or process.name like "tclsh*") and process.command_line : "*sqlite*LSQuarantineDataURLString*" and
(process.parent.code_signature.trusted == false or process.parent.code_signature.exists == false)
'''
min_endpoint_version = "8.11.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.11.0"
Stages and Predicates
Stage 1: process
process where event.action == "exec" and
(process.name in ("sqlite3", "bash", "sh", "zsh", "dash", "csh", "tcsh", "ksh", "tclsh", "fish") or process.name like "tclsh*") and process.command_line : "*sqlite*LSQuarantineDataURLString*" and
(process.parent.code_signature.trusted == false or process.parent.code_signature.exists == false)
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"exec" |
process.command_line | wildcard |
| field:"CommandLine" kind:wildcard value:"*sqlite*LSQuarantineDataURLString*" |
process.name | in |
| field:"process_basename" kind:in |
process.name | wildcard |
| field:"process_basename" kind:wildcard value:"tclsh*" |
process.parent.code_signature.exists | eq |
| field:"process.parent.code_signature.exists" kind:eq value:"false" |
process.parent.code_signature.trusted | eq |
| field:"process.parent.code_signature.trusted" kind:eq value:"false" |
Reflective Binary Load
#Detects reflective code loading on macOS through creation of "NSCreateObjectFileImageFromMemory-*" temporary files by suspicious processes. This technique allows malware to execute in-memory Mach-O binaries while evading disk-based detection.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Stealth |
Rule Body
[rule]
description = """
Detects reflective code loading on macOS through creation of "NSCreateObjectFileImageFromMemory-*" temporary files by
suspicious processes. This technique allows malware to execute in-memory Mach-O binaries while evading disk-based
detection.
"""
id = "16fba7a9-f8f6-43ce-ae24-6a392a48e49c"
license = "Elastic License v2"
name = "Reflective Binary Load"
os_list = ["macos"]
reference = [
"https://slyd0g.medium.com/understanding-and-defending-against-reflective-code-loading-on-macos-e2e83211e48f",
"https://github.com/slyd0g/SwiftInMemoryLoading",
]
version = "1.0.54"
query = '''
file where event.type != "deletion" and
file.name : "NSCreateObjectFileImageFromMemory-*" and
process.name != null and
process.executable != null and
((process.code_signature.trusted == false or process.code_signature.exists == false) or
process.name like~ ("osascript", "bash", "sh", "zsh", "node")) and
not (process.executable like "/private/tmp/*" and process.name == "osx-x86_64") and
not (process.code_signature.exists == true and process.code_signature.trusted == true and process.code_signature.team_id == "EBNT3ZX97E") and
not process.executable like~ "/private/tmp/PKInstallSandbox.*" and
not process.code_signature.signing_id == "com.steinberg.cubase13" and
not Effective_process.executable in ("/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon",
"/Applications/iZotope Product Portal.app/Contents/MacOS/Product Portal",
"/Library/Application Support/Mosyle/MosyleMDM.app/Contents/MacOS/MosyleMDM",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService",
"/Library/Kandji/Kandji Agent.app/Contents/Helpers/Kandji Library Manager.app/Contents/MacOS/kandji-library-manager",
"/Library/Intune/Microsoft Intune Agent.app/Contents/MacOS/IntuneMdmDaemon") and
not Effective_process.executable like "/usr/local/rippling/*"
'''
min_endpoint_version = "8.11.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1106"
name = "Native API"
reference = "https://attack.mitre.org/techniques/T1106/"
[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1620"
name = "Reflective Code Loading"
reference = "https://attack.mitre.org/techniques/T1620/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.11.0"
Stages and Predicates
Stage 1: file
file where event.type != "deletion" and
file.name : "NSCreateObjectFileImageFromMemory-*" and
process.name != null and
process.executable != null and
((process.code_signature.trusted == false or process.code_signature.exists == false) or
process.name like~ ("osascript", "bash", "sh", "zsh", "node")) and
not (process.executable like "/private/tmp/*" and process.name == "osx-x86_64") and
not (process.code_signature.exists == true and process.code_signature.trusted == true and process.code_signature.team_id == "EBNT3ZX97E") and
not process.executable like~ "/private/tmp/PKInstallSandbox.*" and
not process.code_signature.signing_id == "com.steinberg.cubase13" and
not Effective_process.executable in ("/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon",
"/Applications/iZotope Product Portal.app/Contents/MacOS/Product Portal",
"/Library/Application Support/Mosyle/MosyleMDM.app/Contents/MacOS/MosyleMDM",
"/Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService",
"/Library/Kandji/Kandji Agent.app/Contents/Helpers/Kandji Library Manager.app/Contents/MacOS/kandji-library-manager",
"/Library/Intune/Microsoft Intune Agent.app/Contents/MacOS/IntuneMdmDaemon") and
not Effective_process.executable like "/usr/local/rippling/*"
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.type | ne |
| field:"event.type" kind:ne value:"deletion" |
file.name | wildcard |
| field:"file.name" kind:wildcard value:"NSCreateObjectFileImageFromMemory-*" |
process.code_signature.exists | eq |
| field:"process.code_signature.exists" kind:eq value:"false" |
process.code_signature.trusted | eq |
| field:"process.code_signature.trusted" kind:eq value:"false" |
process.executable | is_not_null | field:"Image" kind:is_not_null | |
process.name | is_not_null | field:"process_basename" kind:is_not_null | |
process.name | wildcard |
| field:"process_basename" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.code_signature.exists | eq | true | excludes:process.code_signature.exists field:"process.code_signature.exists" value:"true" |
process.code_signature.team_id | eq | EBNT3ZX97E | excludes:process.code_signature.team_id field:"process.code_signature.team_id" value:"EBNT3ZX97E" |
process.code_signature.trusted | eq | true | excludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true" |
process.executable | starts_with | /private/tmp/ | excludes:process.executable field:"process.executable" value:"/private/tmp/" |
process.name | eq | osx-x86_64 | excludes:process.name field:"process.name" value:"osx-x86_64" |
Effective_process.executable | in | /Applications/iZotope Product Portal.app/Contents/MacOS/Product Portal, /Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfDaemon.app/Contents/MacOS/JamfDaemon, /Library/Application Support/JAMF/Jamf.app/Contents/MacOS/JamfManagementService.app/Contents/MacOS/JamfManagementService, /Library/Application Support/Mosyle/MosyleMDM.app/Contents/MacOS/MosyleMDM, /Library/Intune/Microsoft Intune Agent.app/Contents/MacOS/IntuneMdmDaemon, /Library/Kandji/Kandji Agent.app/Contents/Helpers/Kandji Library Manager.app/Contents/MacOS/kandji-library-manager | excludes:Effective_process.executable |
Effective_process.executable | starts_with | /usr/local/rippling/ | excludes:Effective_process.executable field:"Effective_process.executable" value:"/usr/local/rippling/" |
process.code_signature.signing_id | eq | com.steinberg.cubase13 | excludes:process.code_signature.signing_id field:"process.code_signature.signing_id" value:"com.steinberg.cubase13" |
process.executable | starts_with | /private/tmp/PKInstallSandbox. | excludes:process.executable field:"process.executable" value:"/private/tmp/PKInstallSandbox." |
Registry Run Key Modified by Unusual Process
#Identifies trusted Windows processes that rarely modify the Run and RunOnce keys. Run and RunOnce registry keys cause programs to run each time that a user logs on and are often abused by adversaries to maintain persistence on an endpoint.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Rule Body
[rule]
description = """
Identifies trusted Windows processes that rarely modify the Run and RunOnce keys. Run and RunOnce registry keys cause
programs to run each time that a user logs on and are often abused by adversaries to maintain persistence on an
endpoint.
"""
id = "b2fcbb09-d9bd-4f6c-a08e-247548b4edcd"
license = "Elastic License v2"
name = "Registry Run Key Modified by Unusual Process"
os_list = ["windows"]
reference = ["https://docs.microsoft.com/en-us/windows/win32/setupapi/run-and-runonce-registry-keys"]
version = "1.0.38"
query = '''
sequence by process.entity_id with maxspan=1m
[process where event.action == "start" and process.executable : "?:\\Windows\\*" and not
process.executable :
("?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\System32\\msiexec.exe",
"?:\\Windows\\System32\\drvinst.exe",
"?:\\Windows\\System32\\WinSAT.exe",
"?:\\Windows\\System32\\reg.exe",
"?:\\Windows\\regedit.exe",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\FlashUtil*_*.exe",
"?:\\Windows\\SysWOW64\\reg.exe",
"?:\\Windows\\System32\\csrss.exe",
"?:\\Windows\\SysWOW64\\DriverStore\\*.exe",
"?:\\Windows\\System32\\DriverStore\\*.exe",
"?:\\Windows\\Installer\\*.exe",
"?:\\Windows\\IMECache\\*.exe",
"?:\\Windows\\System32\\sihost.exe",
"?:\\Windows\\System32\\Speech\\SpeechUX\\SpeechUXWiz.exe",
"?:\\Windows\\System32\\CompPkgSrv.exe",
"?:\\Windows\\SysWOW64\\prevhost.exe",
"?:\\Windows\\System32\\conhost.exe",
"?:\\Windows\\System32\\taskhostw.exe",
/* Issue #291 */
"?:\\Windows\\System32\\svchost.exe",
"?:\\Windows\\System32\\MRT.exe",
"?:\\Windows\\explorer.exe",
"?:\\Windows\\Temp\\*",
"?:\\Windows\\Downloaded Program Files\\*.exe",
"?:\\Windows\\ccmsetup\\*.exe",
"?:\\Windows\\CCM\\*",
"?:\\Windows\\ccmcache\\*",
"?:\\Windows\\Installer\\*",
"?:\\Windows\\SysWOW64\\config\\systemprofile\\*.exe",
"?:\\Windows\\System32\\config\\systemprofile\\*.exe",
"?:\\Windows\\System32\\WindowsPowerShell\\v*\\powershell*.exe",
"?:\\Windows\\SoftwareDistribution\\Download\\*.exe",
"?:\\Windows\\Samsung\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\SysWOW64\\d3con.exe",
"?:\\WINDOWS\\SysWOW64\\DWRCS.EXE",
"?:\\WINDOWS\\splwow64.exe",
"?:\\Windows\\Xerox\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\PrintIsolationHost.exe",
"?:\\windows\\syswow64\\d3con.exe",
"?:\\Windows\\Xerox\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\Dell\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\ZXPPlvAsyncUIClient.exe",
"?:\\Windows\\System32\\wsmprovhost.exe",
"?:\\Windows\\System32\\wmiprvse.exe",
"?:\\Windows\\System32\\userinit.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\System32\\wiawow64.exe",
"?:\\Windows\\System32\\PDR24PM_SV64.EXE",
"?:\\Windows\\twain_32\\Samsung\\SCX4623\\Scan2Pc.exe",
"?:\\Windows\\System32\\MCP*.EXE") and
not (process.name : "rundll32.exe" and process.command_line : ("*\\Windows\\Downloaded Program Files\\*", "*zzzzInvokeManagedCustomActionOutOfProc*")) and
not (process.name : ("powershell.exe", "cscript.exe", "wscript.exe") and process.parent.executable : ("?:\\Program Files\\*.exe", "?:\\Program Files (x86)\\*.exe")) and
not (process.pe.original_file_name == "NKHlp.exe" and process.code_signature.subject_name == "DBS AG" and process.code_signature.trusted == true) and
not (process.executable : "*\\WINDOWS\\system32\\mmc.exe" and process.args : "?:\\Windows\\System32\\gpme.msc") and
not process.Ext.token.integrity_level_name == "system" and
not (process.pe.original_file_name : "NKInstallOnShutdownComm.exe" and
process.code_signature.subject_name : "DBS AG" and process.code_signature.trusted == true) and
not (process.code_signature.subject_name : "Microsoft Windows Hardware Compatibility Publisher" and process.code_signature.trusted == true) and
not (process.executable : "?:\\WINDOWS\\system32\\wsl.exe" and process.args : "--install") and
not (process.name : "rundll32.exe" and process.args : "?:\\Windows\\system32\\Speech\\SpeechUX\\sapi.cpl") and
not (process.name : "regsvr32.exe" and process.args : "?:\\WINDOWS\\system32\\bit4upki-store.dll") and
not (process.name : "wscript.exe" and process.command_line : "*Program Files\\Nextech\\NxTSAddin\\*") and
not (process.name : "cscript.exe" and
process.args : ("?:\\Users\\*\\AppData\\Roaming\\Nextech\\NxTSAddin\\ContingencyUninstallNXTSForCurrentUser.vbs",
"?:\\Program Files*\\Nextech\\NxTSAddin\\InstallNXTSAddinForCurrentUser.vbs")) and
not (process.code_signature.subject_name in ("Windows Client Management AG", "Max Co.,LTD.") and process.code_signature.trusted == true)
]
[registry where registry.data.strings != null and
registry.path : (
"*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"*\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
"*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*"
) and not
registry.data.strings : (
"grpconv -o",
"?:\\Windows\\System32\\StikyNot.exe",
"ctfmon.exe /n",
"netsh.exe trace postreset",
"\"?:\\Windows\\System32\\RtkAudUService64.exe*-background",
"%WINDIR%\\system32\\BitLockerWizardElev.exe *Volume{*",
"?:\\WINDOWS\\system32\\spool\\DRIVERS\\x64\\*",
"?:\\Program Files (x86)\\*.exe",
"?:\\Program Files\\*.exe",
"*\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*",
/* Issue #291 */
"*\\Windows\\Downloaded Program Files\\*",
"*%ProgramFiles%*",
"rundll32.exe ?:\\WINDOWS\\system32\\eed_ec.dll,SpeedLauncher",
"*:\\Program Files (x86)\\*",
"*:\\Program Files\\*",
"* --no-startup-window *",
"*bit4upki-store.dll*,RunImportServer*",
"?:\\Windows\\HideIcon.exe /hideapp",
"*Microsoft\\Teams\\Update.exe --processStart *Teams.exe*",
"*\\Windows\\system32\\hkcmd.exe*",
"%SystemRoot%\\system32\\dmwappushsvc.dll",
"?:\\Windows\\SysWOW64\\StikyNot.exe",
"?:\\Windows\\twain_32\\Samsung\\*.exe"
)]
'''
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 = "T1547"
name = "Boot or Logon Autostart Execution"
reference = "https://attack.mitre.org/techniques/T1547/"
[[threat.technique.subtechnique]]
id = "T1547.001"
name = "Registry Run Keys / Startup Folder"
reference = "https://attack.mitre.org/techniques/T1547/001/"
[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[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.
Stage 1: process
[process where event.action == "start" and process.executable : "?:\\Windows\\*" and not
process.executable :
("?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\System32\\msiexec.exe",
"?:\\Windows\\System32\\drvinst.exe",
"?:\\Windows\\System32\\WinSAT.exe",
"?:\\Windows\\System32\\reg.exe",
"?:\\Windows\\regedit.exe",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\FlashUtil*_*.exe",
"?:\\Windows\\SysWOW64\\reg.exe",
"?:\\Windows\\System32\\csrss.exe",
"?:\\Windows\\SysWOW64\\DriverStore\\*.exe",
"?:\\Windows\\System32\\DriverStore\\*.exe",
"?:\\Windows\\Installer\\*.exe",
"?:\\Windows\\IMECache\\*.exe",
"?:\\Windows\\System32\\sihost.exe",
"?:\\Windows\\System32\\Speech\\SpeechUX\\SpeechUXWiz.exe",
"?:\\Windows\\System32\\CompPkgSrv.exe",
"?:\\Windows\\SysWOW64\\prevhost.exe",
"?:\\Windows\\System32\\conhost.exe",
"?:\\Windows\\System32\\taskhostw.exe",
"?:\\Windows\\System32\\svchost.exe",
"?:\\Windows\\System32\\MRT.exe",
"?:\\Windows\\explorer.exe",
"?:\\Windows\\Temp\\*",
"?:\\Windows\\Downloaded Program Files\\*.exe",
"?:\\Windows\\ccmsetup\\*.exe",
"?:\\Windows\\CCM\\*",
"?:\\Windows\\ccmcache\\*",
"?:\\Windows\\Installer\\*",
"?:\\Windows\\SysWOW64\\config\\systemprofile\\*.exe",
"?:\\Windows\\System32\\config\\systemprofile\\*.exe",
"?:\\Windows\\System32\\WindowsPowerShell\\v*\\powershell*.exe",
"?:\\Windows\\SoftwareDistribution\\Download\\*.exe",
"?:\\Windows\\Samsung\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\SysWOW64\\d3con.exe",
"?:\\WINDOWS\\SysWOW64\\DWRCS.EXE",
"?:\\WINDOWS\\splwow64.exe",
"?:\\Windows\\Xerox\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\PrintIsolationHost.exe",
"?:\\windows\\syswow64\\d3con.exe",
"?:\\Windows\\Xerox\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\Dell\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\ZXPPlvAsyncUIClient.exe",
"?:\\Windows\\System32\\wsmprovhost.exe",
"?:\\Windows\\System32\\wmiprvse.exe",
"?:\\Windows\\System32\\userinit.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\System32\\wiawow64.exe",
"?:\\Windows\\System32\\PDR24PM_SV64.EXE",
"?:\\Windows\\twain_32\\Samsung\\SCX4623\\Scan2Pc.exe",
"?:\\Windows\\System32\\MCP*.EXE") and
not (process.name : "rundll32.exe" and process.command_line : ("*\\Windows\\Downloaded Program Files\\*", "*zzzzInvokeManagedCustomActionOutOfProc*")) and
not (process.name : ("powershell.exe", "cscript.exe", "wscript.exe") and process.parent.executable : ("?:\\Program Files\\*.exe", "?:\\Program Files (x86)\\*.exe")) and
not (process.pe.original_file_name == "NKHlp.exe" and process.code_signature.subject_name == "DBS AG" and process.code_signature.trusted == true) and
not (process.executable : "*\\WINDOWS\\system32\\mmc.exe" and process.args : "?:\\Windows\\System32\\gpme.msc") and
not process.Ext.token.integrity_level_name == "system" and
not (process.pe.original_file_name : "NKInstallOnShutdownComm.exe" and
process.code_signature.subject_name : "DBS AG" and process.code_signature.trusted == true) and
not (process.code_signature.subject_name : "Microsoft Windows Hardware Compatibility Publisher" and process.code_signature.trusted == true) and
not (process.executable : "?:\\WINDOWS\\system32\\wsl.exe" and process.args : "--install") and
not (process.name : "rundll32.exe" and process.args : "?:\\Windows\\system32\\Speech\\SpeechUX\\sapi.cpl") and
not (process.name : "regsvr32.exe" and process.args : "?:\\WINDOWS\\system32\\bit4upki-store.dll") and
not (process.name : "wscript.exe" and process.command_line : "*Program Files\\Nextech\\NxTSAddin\\*") and
not (process.name : "cscript.exe" and
process.args : ("?:\\Users\\*\\AppData\\Roaming\\Nextech\\NxTSAddin\\ContingencyUninstallNXTSForCurrentUser.vbs",
"?:\\Program Files*\\Nextech\\NxTSAddin\\InstallNXTSAddinForCurrentUser.vbs")) and
not (process.code_signature.subject_name in ("Windows Client Management AG", "Max Co.,LTD.") and process.code_signature.trusted == true)
]
Stage 2: registry
[registry where registry.data.strings != null and
registry.path : (
"*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"*\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
"*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*"
) and not
registry.data.strings : (
"grpconv -o",
"?:\\Windows\\System32\\StikyNot.exe",
"ctfmon.exe /n",
"netsh.exe trace postreset",
"\"?:\\Windows\\System32\\RtkAudUService64.exe*-background",
"%WINDIR%\\system32\\BitLockerWizardElev.exe *Volume{*",
"?:\\WINDOWS\\system32\\spool\\DRIVERS\\x64\\*",
"?:\\Program Files (x86)\\*.exe",
"?:\\Program Files\\*.exe",
"*\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*",
"*\\Windows\\Downloaded Program Files\\*",
"*%ProgramFiles%*",
"rundll32.exe ?:\\WINDOWS\\system32\\eed_ec.dll,SpeedLauncher",
"*:\\Program Files (x86)\\*",
"*:\\Program Files\\*",
"* --no-startup-window *",
"*bit4upki-store.dll*,RunImportServer*",
"?:\\Windows\\HideIcon.exe /hideapp",
"*Microsoft\\Teams\\Update.exe --processStart *Teams.exe*",
"*\\Windows\\system32\\hkcmd.exe*",
"%SystemRoot%\\system32\\dmwappushsvc.dll",
"?:\\Windows\\SysWOW64\\StikyNot.exe",
"?:\\Windows\\twain_32\\Samsung\\*.exe"
)]
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.executable | wildcard |
| field:"Image" kind:wildcard value:"?:\Windows\*" |
registry.data.strings | is_not_null | field:"Details" kind:is_not_null | |
registry.path | wildcard |
| field:"TargetObject" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.args | eq | --install | excludes:process.args field:"process.args" value:"--install" |
process.executable | eq | ?:\WINDOWS\system32\wsl.exe | excludes:process.executable field:"process.executable" value:"?:\WINDOWS\system32\wsl.exe" |
process.args | eq | ?:\WINDOWS\system32\bit4upki-store.dll | excludes:process.args field:"process.args" value:"?:\WINDOWS\system32\bit4upki-store.dll" |
process.name | eq | regsvr32.exe | excludes:process.name field:"process.name" value:"regsvr32.exe" |
process.args | eq | ?:\Windows\System32\gpme.msc | excludes:process.args field:"process.args" value:"?:\Windows\System32\gpme.msc" |
process.executable | ends_with | \WINDOWS\system32\mmc.exe | excludes:process.executable field:"process.executable" value:"\WINDOWS\system32\mmc.exe" |
process.args | eq | ?:\Windows\system32\Speech\SpeechUX\sapi.cpl | excludes:process.args field:"process.args" value:"?:\Windows\system32\Speech\SpeechUX\sapi.cpl" |
process.name | eq | rundll32.exe | excludes:process.name field:"process.name" value:"rundll32.exe" |
process.args | wildcard | ?:\Users\*\AppData\Roaming\Nextech\NxTSAddin\ContingencyUninstallNXTSForCurrentUser.vbs, ?:\Program Files*\Nextech\NxTSAddin\InstallNXTSAddinForCurrentUser.vbs | excludes:process.args field:"process.args" value:"?:\Users\*\AppData\Roaming\Nextech\NxTSAddin\ContingencyUninstallNXTSForCurrentUser.vbs" field:"process.args" value:"?:\Program Files*\Nextech\NxTSAddin\InstallNXTSAddinForCurrentUser.vbs" |
process.name | eq | cscript.exe | excludes:process.name field:"process.name" value:"cscript.exe" |
process.code_signature.subject_name | eq | DBS AG | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"DBS AG" |
process.code_signature.trusted | eq | true | excludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true" |
process.pe.original_file_name | eq | NKHlp.exe | excludes:process.pe.original_file_name field:"process.pe.original_file_name" value:"NKHlp.exe" |
process.pe.original_file_name | eq | NKInstallOnShutdownComm.exe | excludes:process.pe.original_file_name field:"process.pe.original_file_name" value:"NKInstallOnShutdownComm.exe" |
process.code_signature.subject_name | eq | Microsoft Windows Hardware Compatibility Publisher | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"Microsoft Windows Hardware Compatibility Publisher" |
process.code_signature.subject_name | in | Max Co.,LTD., Windows Client Management AG | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"Max Co.,LTD." field:"process.code_signature.subject_name" value:"Windows Client Management AG" |
process.command_line | match | Program Files\Nextech\NxTSAddin\ | excludes:process.command_line field:"process.command_line" value:"Program Files\Nextech\NxTSAddin\" |
process.name | eq | wscript.exe | excludes:process.name field:"process.name" value:"wscript.exe" |
process.command_line | match | \Windows\Downloaded Program Files\, zzzzInvokeManagedCustomActionOutOfProc | excludes:process.command_line field:"process.command_line" value:"\Windows\Downloaded Program Files\" field:"process.command_line" value:"zzzzInvokeManagedCustomActionOutOfProc" |
process.name | eq | powershell.exe, cscript.exe, wscript.exe | excludes:process.name field:"process.name" value:"powershell.exe" field:"process.name" value:"cscript.exe" field:"process.name" value:"wscript.exe" |
process.parent.executable | wildcard | ?:\Program Files\*.exe, ?:\Program Files (x86)\*.exe | excludes:process.parent.executable field:"process.parent.executable" value:"?:\Program Files\*.exe" field:"process.parent.executable" value:"?:\Program Files (x86)\*.exe" |
process.Ext.token.integrity_level_name | eq | system | excludes:process.Ext.token.integrity_level_name field:"process.Ext.token.integrity_level_name" value:"system" |
process.executable | wildcard | ?:\Windows\SysWOW64\msiexec.exe, ?:\Windows\System32\msiexec.exe, ?:\Windows\System32\drvinst.exe, ?:\Windows\System32\WinSAT.exe, ?:\Windows\System32\reg.exe, ?:\Windows\regedit.exe, ?:\Windows\SysWOW64\Macromed\Flash\FlashUtil*_*.exe, ?:\Windows\SysWOW64\reg.exe, ?:\Windows\System32\csrss.exe, ?:\Windows\SysWOW64\DriverStore\*.exe, ?:\Windows\System32\DriverStore\*.exe, ?:\Windows\Installer\*.exe, ?:\Windows\IMECache\*.exe, ?:\Windows\System32\sihost.exe, ?:\Windows\System32\Speech\SpeechUX\SpeechUXWiz.exe, ?:\Windows\System32\CompPkgSrv.exe, ?:\Windows\SysWOW64\prevhost.exe, ?:\Windows\System32\conhost.exe, ?:\Windows\System32\taskhostw.exe, ?:\Windows\System32\svchost.exe, ?:\Windows\System32\MRT.exe, ?:\Windows\explorer.exe, ?:\Windows\Temp\*, ?:\Windows\Downloaded Program Files\*.exe, ?:\Windows\ccmsetup\*.exe, ?:\Windows\CCM\*, ?:\Windows\ccmcache\*, ?:\Windows\Installer\*, ?:\Windows\SysWOW64\config\systemprofile\*.exe, ?:\Windows\System32\config\systemprofile\*.exe, ?:\Windows\System32\WindowsPowerShell\v*\powershell*.exe, ?:\Windows\SoftwareDistribution\Download\*.exe, ?:\Windows\Samsung\PanelMgr\SSMMgr.exe, ?:\Windows\SysWOW64\d3con.exe, ?:\WINDOWS\SysWOW64\DWRCS.EXE, ?:\WINDOWS\splwow64.exe, ?:\Windows\Xerox\PanelMgr\SSMMgr.exe, ?:\Windows\System32\PrintIsolationHost.exe, ?:\windows\syswow64\d3con.exe, ?:\Windows\Xerox\PanelMgr\SSMMgr.exe, ?:\Windows\Dell\PanelMgr\SSMMgr.exe, ?:\Windows\System32\ZXPPlvAsyncUIClient.exe, ?:\Windows\System32\wsmprovhost.exe, ?:\Windows\System32\wmiprvse.exe, ?:\Windows\System32\userinit.exe, ?:\Windows\System32\mmc.exe, ?:\Windows\System32\wiawow64.exe, ?:\Windows\System32\PDR24PM_SV64.EXE, ?:\Windows\twain_32\Samsung\SCX4623\Scan2Pc.exe, ?:\Windows\System32\MCP*.EXE | excludes:process.executable |
registry.data.strings | wildcard | grpconv -o, ?:\Windows\System32\StikyNot.exe, ctfmon.exe /n, netsh.exe trace postreset, "?:\Windows\System32\RtkAudUService64.exe*-background, %WINDIR%\system32\BitLockerWizardElev.exe *Volume{*, ?:\WINDOWS\system32\spool\DRIVERS\x64\*, ?:\Program Files (x86)\*.exe, ?:\Program Files\*.exe, *\Users\*\AppData\Local\Microsoft\OneDrive\*, *\Windows\Downloaded Program Files\*, *%ProgramFiles%*, rundll32.exe ?:\WINDOWS\system32\eed_ec.dll,SpeedLauncher, *:\Program Files (x86)\*, *:\Program Files\*, * --no-startup-window *, *bit4upki-store.dll*,RunImportServer*, ?:\Windows\HideIcon.exe /hideapp, *Microsoft\Teams\Update.exe --processStart *Teams.exe*, *\Windows\system32\hkcmd.exe*, %SystemRoot%\system32\dmwappushsvc.dll, ?:\Windows\SysWOW64\StikyNot.exe, ?:\Windows\twain_32\Samsung\*.exe | excludes:registry.data.strings |
SeDebugPrivilege Enabled by a Suspicious Process
#Identifies a process running with a non-SYSTEM account that enables the SeDebugPrivilege privilege. Adversaries may enable this privilege to debug and modify other processes, typically reserved for system-level tasks, to escalate privileges and bypass access controls.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4703: A user right was adjusted. |
Rule Body
[metadata]
creation_date = "2022/10/20"
integration = ["windows", "system"]
maturity = "production"
updated_date = "2026/05/04"
[rule]
author = ["Elastic"]
description = """
Identifies a process running with a non-SYSTEM account that enables the SeDebugPrivilege privilege. Adversaries may
enable this privilege to debug and modify other processes, typically reserved for system-level tasks, to escalate
privileges and bypass access controls.
"""
from = "now-9m"
index = ["logs-system.security*", "logs-windows.forwarded*", "winlogbeat-*"]
language = "eql"
license = "Elastic License v2"
name = "SeDebugPrivilege Enabled by a Suspicious Process"
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating SeDebugPrivilege Enabled by a Suspicious Process
SeDebugPrivilege is a powerful Windows privilege allowing processes to debug and modify other processes, typically reserved for system-level tasks. Adversaries exploit this to escalate privileges, bypassing security controls by impersonating system processes. The detection rule identifies suspicious processes enabling SeDebugPrivilege, excluding known legitimate processes, to flag potential privilege escalation attempts.
### Possible investigation steps
- Review the event logs for the specific event.provider "Microsoft-Windows-Security-Auditing" and event.action "Token Right Adjusted Events" to gather more details about the process that enabled SeDebugPrivilege.
- Identify the process name from winlog.event_data.ProcessName and determine if it is known or expected in the environment. Investigate any unknown or suspicious processes.
- Check the winlog.event_data.SubjectUserSid to identify the user account associated with the process. Investigate if this account has a history of suspicious activity or if it should have the ability to enable SeDebugPrivilege.
- Analyze the parent process of the suspicious process to understand how it was initiated and if it was spawned by a legitimate or malicious process.
- Correlate the timestamp of the event with other security events or alerts to identify any related activities or patterns that could indicate a broader attack or compromise.
- Investigate the network activity of the suspicious process to determine if it is communicating with any known malicious IP addresses or domains.
### False positive analysis
- Legitimate system maintenance tasks may trigger the rule, such as Windows Update or system diagnostics. Users can monitor the timing of these tasks and correlate them with alerts to determine if they are the cause.
- Software installations or updates using msiexec.exe might be flagged. Consider excluding msiexec.exe from the rule if it is frequently used in your environment for legitimate purposes.
- Administrative tools like taskhostw.exe and mmc.exe can sometimes enable SeDebugPrivilege during normal operations. Evaluate the necessity of these tools in your environment and exclude them if they are regularly used by trusted administrators.
- Temporary files created by legitimate applications, such as DismHost.exe in user temp directories, may be flagged. Review the context of these files and exclude them if they are part of routine application behavior.
- Regularly review and update the exclusion list to include any new legitimate processes that are identified as false positives, ensuring the rule remains effective without generating unnecessary alerts.
### Response and remediation
- Immediately isolate the affected system from the network to prevent further unauthorized access or lateral movement by the adversary.
- Terminate the suspicious process identified in the alert to stop any ongoing malicious activity and prevent privilege escalation.
- Conduct a thorough review of the affected system's event logs, focusing on the "Token Right Adjusted Events" to identify any additional unauthorized privilege changes or suspicious activities.
- Reset credentials for any accounts that may have been compromised or used by the suspicious process, especially those with elevated privileges.
- Restore the affected system from a known good backup to ensure any malicious changes are removed and the system is returned to a secure state.
- Implement additional monitoring on the affected system and similar systems to detect any recurrence of the threat, focusing on processes attempting to enable SeDebugPrivilege.
- Escalate the incident to the security operations center (SOC) or incident response team for further investigation and to determine if additional systems are affected."""
references = [
"https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4703",
"https://blog.palantir.com/windows-privilege-abuse-auditing-detection-and-defense-3078a403d74e",
]
risk_score = 47
rule_id = "97020e61-e591-4191-8a3b-2861a2b887cd"
setup = """## Setup
Audit Token Right Adjusted Events must be enabled to generate the events used by this rule.
Setup instructions: https://ela.st/audit-token-right-adjusted-events
"""
severity = "medium"
tags = [
"Domain: Endpoint",
"OS: Windows",
"Use Case: Threat Detection",
"Tactic: Privilege Escalation",
"Data Source: Windows Security Event Logs",
"Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "eql"
query = '''
any where host.os.type == "windows" and event.provider: "Microsoft-Windows-Security-Auditing" and
event.action : "Token Right Adjusted Events" and
winlog.event_data.EnabledPrivilegeList : "SeDebugPrivilege" and
/* exclude processes with System Integrity */
not winlog.event_data.SubjectUserSid : ("S-1-5-18", "S-1-5-19", "S-1-5-20") and
not winlog.event_data.ProcessName : (
"?:\\Program Files (x86)\\*",
"?:\\Program Files\\*",
"?:\\Users\\*\\AppData\\Local\\Temp\\*-*\\DismHost.exe",
"?:\\Windows\\System32\\auditpol.exe",
"?:\\Windows\\System32\\cleanmgr.exe",
"?:\\Windows\\System32\\lsass.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\System32\\MRT.exe",
"?:\\Windows\\System32\\msiexec.exe",
"?:\\Windows\\System32\\sdiagnhost.exe",
"?:\\Windows\\System32\\ServerManager.exe",
"?:\\Windows\\System32\\taskhostw.exe",
"?:\\Windows\\System32\\wbem\\WmiPrvSe.exe",
"?:\\Windows\\System32\\WerFault.exe",
"?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\SysWOW64\\wbem\\WmiPrvSe.exe",
"?:\\Windows\\SysWOW64\\WerFault.exe",
"?:\\Windows\\WinSxS\\*"
)
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1134"
name = "Access Token Manipulation"
reference = "https://attack.mitre.org/techniques/T1134/"
[rule.threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
Stages and Predicates
Stage 1: any
any where host.os.type == "windows" and event.provider: "Microsoft-Windows-Security-Auditing" and
event.action : "Token Right Adjusted Events" and
winlog.event_data.EnabledPrivilegeList : "SeDebugPrivilege" and
not winlog.event_data.SubjectUserSid : ("S-1-5-18", "S-1-5-19", "S-1-5-20") and
not winlog.event_data.ProcessName : (
"?:\\Program Files (x86)\\*",
"?:\\Program Files\\*",
"?:\\Users\\*\\AppData\\Local\\Temp\\*-*\\DismHost.exe",
"?:\\Windows\\System32\\auditpol.exe",
"?:\\Windows\\System32\\cleanmgr.exe",
"?:\\Windows\\System32\\lsass.exe",
"?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\System32\\MRT.exe",
"?:\\Windows\\System32\\msiexec.exe",
"?:\\Windows\\System32\\sdiagnhost.exe",
"?:\\Windows\\System32\\ServerManager.exe",
"?:\\Windows\\System32\\taskhostw.exe",
"?:\\Windows\\System32\\wbem\\WmiPrvSe.exe",
"?:\\Windows\\System32\\WerFault.exe",
"?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\SysWOW64\\wbem\\WmiPrvSe.exe",
"?:\\Windows\\SysWOW64\\WerFault.exe",
"?:\\Windows\\WinSxS\\*"
)
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | wildcard |
| field:"EventType" kind:wildcard value:"Token Right Adjusted Events" |
event.provider | wildcard |
| field:"Provider_Name" kind:wildcard value:"Microsoft-Windows-Security-Auditing" |
winlog.event_data.EnabledPrivilegeList | wildcard |
| field:"EnabledPrivilegeList" kind:wildcard value:"SeDebugPrivilege" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
winlog.event_data.ProcessName | wildcard | ?:\Program Files (x86)\*, ?:\Program Files\*, ?:\Users\*\AppData\Local\Temp\*-*\DismHost.exe, ?:\Windows\System32\auditpol.exe, ?:\Windows\System32\cleanmgr.exe, ?:\Windows\System32\lsass.exe, ?:\Windows\System32\mmc.exe, ?:\Windows\System32\MRT.exe, ?:\Windows\System32\msiexec.exe, ?:\Windows\System32\sdiagnhost.exe, ?:\Windows\System32\ServerManager.exe, ?:\Windows\System32\taskhostw.exe, ?:\Windows\System32\wbem\WmiPrvSe.exe, ?:\Windows\System32\WerFault.exe, ?:\Windows\SysWOW64\msiexec.exe, ?:\Windows\SysWOW64\wbem\WmiPrvSe.exe, ?:\Windows\SysWOW64\WerFault.exe, ?:\Windows\WinSxS\* | excludes:winlog.event_data.ProcessName |
winlog.event_data.SubjectUserSid | eq | S-1-5-18, S-1-5-19, S-1-5-20 | excludes:winlog.event_data.SubjectUserSid field:"winlog.event_data.SubjectUserSid" value:"S-1-5-18" field:"winlog.event_data.SubjectUserSid" value:"S-1-5-19" field:"winlog.event_data.SubjectUserSid" value:"S-1-5-20" |
Suspicious API call via a Windows Installer Module
#Identifies suspicious API calls from a Windows Installer module. This behavior is consistent with code injection attacks.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Rule Body
[rule]
description = """
Identifies suspicious API calls from a Windows Installer module. This behavior is consistent with code injection
attacks.
"""
id = "43e9d254-28e9-463d-9bc3-5e51721d4b8a"
license = "Elastic License v2"
name = "Suspicious API call via a Windows Installer Module"
os_list = ["windows"]
version = "1.0.11"
query = '''
api where process.name : "msiexec.exe" and
process.Ext.api.name in ("WriteProcessMemory", "VirtualProtectEx", "VirtualProtect", "VirtualAlloc", "VirtualAllocEx","MapViewOfFile", "MapViewOfFile2", "SetThreadContext", "SuspendThread") and
process.thread.Ext.call_stack_final_user_module.path like "c:\\windows\\installer\\*" and
/* unsigned or untrusted code signature */
_arraysearch(process.thread.Ext.call_stack_final_user_module.code_signature, $entry, $entry.trusted == false or $entry.exists == false) and
/* noisy patterns - VP and WPM due to Image Load and Process Creation */
not (process.Ext.api.metadata.target_address_name in ("ProcessStartupInfo", "PEB", "PEB32", "Data") and process.Ext.api.parameters.size <= 4544) and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.symbol_info like ("c:\\windows\\*\\ntdll.dll!Ldr*",
"c:\\windows\\*\\kernelbase.dll!LoadLibrary*",
"?:\\windows\\*\\kernelbase.dll!CreateProcess*",
"c:\\windows\\system32\\ntdll.dll!wcsnlen+*",
"c:\\windows\\system32\\kernelbase.dll!GetProductInfo*")) and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.callsite_trailing_bytes in ("5a8bf850528b338b432003c28b08894b208b431c03c28b08894b1c03f28b4b0c03ca8d431c505756ffd15a580343088bf8528bf08b46fc83c0042bf08956088b")) and
not (process.Ext.api.metadata.target_address_path like "c:\\windows\\syswow64\\*.dll" and process.Ext.api.parameters.size <= 4096) and
not process.Ext.api.metadata.target_address_path like ("c:\\windows\\installer\\msi*.tmp",
"c:\\windows\\temp\\{*}\\isrt.dll",
"c:\\windows\\temp\\{*}\\_isres_0x*.dll") and
not process.thread.Ext.call_stack_final_user_module.hash.sha256 in
("85da69c82e3d1faff1e60e6853e30230fc5e3b64faf4245e20089fe75912d910",
"09e957a1d31b9cf8666add20613bf60b6a2d294586f8887961cc6a0e24680fb8",
"3c60786fddc7fb00b2dab7bd2b6c33340e07c73ea8e3d6c47754bb9d15d83166",
"e10c6189c60b9bc3b0e2603930b55eda886e0de4520b0c8ba7f060fbf3b30549",
/* Kaspersky */
"0c9891da5c64a519c11e7603a41e93e0ff3057cca238ee59ffb5b4a82985011a",
"80f84a7b8aad0bdceba677e6a501f71b6b57878e34b6b557e1892083a32b7bd5",
"0297e306edf0a868e1edffa4de158906142f131b550061a7d68cca721482a953",
"7d6d4599a9347ee8ad9af3092d2a8b5b55517d609b46eef5e75a8f127ec085e5",
"ed3d26467ce009c6267549b842893f9a5c40aeb9c8cc0f47d2182a65875abb07",
"9437b711f5d1c8377d618eeec4d282f15c9c8029c8f3ae562df34ae53609db38",
"9996cbc90d486af7107d85c1802b2c595f0c3bd515ff501fe29a6f89bdf18d6d",
"14d6dbb1c27e0fef0f53720aefb391a3b4396cbf2b7d05eb1b0667a28f1f1d05")
'''
min_endpoint_version = "8.10.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
tree = true
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1055"
name = "Process Injection"
reference = "https://attack.mitre.org/techniques/T1055/"
[[threat.technique]]
id = "T1218"
name = "System Binary Proxy Execution"
reference = "https://attack.mitre.org/techniques/T1218/"
[[threat.technique.subtechnique]]
id = "T1218.007"
name = "Msiexec"
reference = "https://attack.mitre.org/techniques/T1218/007/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.10.0"
Stages and Predicates
Stage 1: api
api where process.name : "msiexec.exe" and
process.Ext.api.name in ("WriteProcessMemory", "VirtualProtectEx", "VirtualProtect", "VirtualAlloc", "VirtualAllocEx","MapViewOfFile", "MapViewOfFile2", "SetThreadContext", "SuspendThread") and
process.thread.Ext.call_stack_final_user_module.path like "c:\\windows\\installer\\*" and
_arraysearch(process.thread.Ext.call_stack_final_user_module.code_signature, $entry, $entry.trusted == false or $entry.exists == false) and
not (process.Ext.api.metadata.target_address_name in ("ProcessStartupInfo", "PEB", "PEB32", "Data") and process.Ext.api.parameters.size <= 4544) and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.symbol_info like ("c:\\windows\\*\\ntdll.dll!Ldr*",
"c:\\windows\\*\\kernelbase.dll!LoadLibrary*",
"?:\\windows\\*\\kernelbase.dll!CreateProcess*",
"c:\\windows\\system32\\ntdll.dll!wcsnlen+*",
"c:\\windows\\system32\\kernelbase.dll!GetProductInfo*")) and
not _arraysearch(process.thread.Ext.call_stack, $entry,
$entry.callsite_trailing_bytes in ("5a8bf850528b338b432003c28b08894b208b431c03c28b08894b1c03f28b4b0c03ca8d431c505756ffd15a580343088bf8528bf08b46fc83c0042bf08956088b")) and
not (process.Ext.api.metadata.target_address_path like "c:\\windows\\syswow64\\*.dll" and process.Ext.api.parameters.size <= 4096) and
not process.Ext.api.metadata.target_address_path like ("c:\\windows\\installer\\msi*.tmp",
"c:\\windows\\temp\\{*}\\isrt.dll",
"c:\\windows\\temp\\{*}\\_isres_0x*.dll") and
not process.thread.Ext.call_stack_final_user_module.hash.sha256 in
("85da69c82e3d1faff1e60e6853e30230fc5e3b64faf4245e20089fe75912d910",
"09e957a1d31b9cf8666add20613bf60b6a2d294586f8887961cc6a0e24680fb8",
"3c60786fddc7fb00b2dab7bd2b6c33340e07c73ea8e3d6c47754bb9d15d83166",
"e10c6189c60b9bc3b0e2603930b55eda886e0de4520b0c8ba7f060fbf3b30549",
"0c9891da5c64a519c11e7603a41e93e0ff3057cca238ee59ffb5b4a82985011a",
"80f84a7b8aad0bdceba677e6a501f71b6b57878e34b6b557e1892083a32b7bd5",
"0297e306edf0a868e1edffa4de158906142f131b550061a7d68cca721482a953",
"7d6d4599a9347ee8ad9af3092d2a8b5b55517d609b46eef5e75a8f127ec085e5",
"ed3d26467ce009c6267549b842893f9a5c40aeb9c8cc0f47d2182a65875abb07",
"9437b711f5d1c8377d618eeec4d282f15c9c8029c8f3ae562df34ae53609db38",
"9996cbc90d486af7107d85c1802b2c595f0c3bd515ff501fe29a6f89bdf18d6d",
"14d6dbb1c27e0fef0f53720aefb391a3b4396cbf2b7d05eb1b0667a28f1f1d05")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
process.Ext.api.name | in |
| field:"process.Ext.api.name" kind:in |
process.name | wildcard |
| field:"process_basename" kind:wildcard value:"msiexec.exe" |
process.thread.Ext.call_stack_final_user_module.path | wildcard |
| field:"process.thread.Ext.call_stack_final_user_module.path" kind:wildcard value:"c:\windows\installer\*" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.Ext.api.metadata.target_address_name | in | Data, PEB, PEB32, ProcessStartupInfo | excludes:process.Ext.api.metadata.target_address_name |
process.Ext.api.parameters.size | le | 4544 | excludes:process.Ext.api.parameters.size field:"process.Ext.api.parameters.size" value:"4544" |
process.Ext.api.metadata.target_address_path | wildcard | c:\windows\syswow64\*.dll | excludes:process.Ext.api.metadata.target_address_path field:"process.Ext.api.metadata.target_address_path" value:"c:\windows\syswow64\*.dll" |
process.Ext.api.parameters.size | le | 4096 | excludes:process.Ext.api.parameters.size field:"process.Ext.api.parameters.size" value:"4096" |
process.thread.Ext.call_stack | array_any | excludes:process.thread.Ext.call_stack | |
process.Ext.api.metadata.target_address_path | wildcard | c:\windows\installer\msi*.tmp, c:\windows\temp\{*}\isrt.dll, c:\windows\temp\{*}\_isres_0x*.dll | excludes:process.Ext.api.metadata.target_address_path field:"process.Ext.api.metadata.target_address_path" value:"c:\windows\installer\msi*.tmp" field:"process.Ext.api.metadata.target_address_path" value:"c:\windows\temp\{*}\isrt.dll" field:"process.Ext.api.metadata.target_address_path" value:"c:\windows\temp\{*}\_isres_0x*.dll" |
process.thread.Ext.call_stack_final_user_module.hash.sha256 | in | 0297e306edf0a868e1edffa4de158906142f131b550061a7d68cca721482a953, 09e957a1d31b9cf8666add20613bf60b6a2d294586f8887961cc6a0e24680fb8, 0c9891da5c64a519c11e7603a41e93e0ff3057cca238ee59ffb5b4a82985011a, 14d6dbb1c27e0fef0f53720aefb391a3b4396cbf2b7d05eb1b0667a28f1f1d05, 3c60786fddc7fb00b2dab7bd2b6c33340e07c73ea8e3d6c47754bb9d15d83166, 7d6d4599a9347ee8ad9af3092d2a8b5b55517d609b46eef5e75a8f127ec085e5, 80f84a7b8aad0bdceba677e6a501f71b6b57878e34b6b557e1892083a32b7bd5, 85da69c82e3d1faff1e60e6853e30230fc5e3b64faf4245e20089fe75912d910, 9437b711f5d1c8377d618eeec4d282f15c9c8029c8f3ae562df34ae53609db38, 9996cbc90d486af7107d85c1802b2c595f0c3bd515ff501fe29a6f89bdf18d6d, e10c6189c60b9bc3b0e2603930b55eda886e0de4520b0c8ba7f060fbf3b30549, ed3d26467ce009c6267549b842893f9a5c40aeb9c8cc0f47d2182a65875abb07 | excludes:process.thread.Ext.call_stack_final_user_module.hash.sha256 |
Suspicious Execution from INET Cache
#Identifies the execution of a process with arguments pointing to the INetCache Folder. Adversaries may deliver malicious content via WININET during initial access.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access | |
| Execution | |
| Command & Control |
Rule Body
[rule]
description = """
Identifies the execution of a process with arguments pointing to the INetCache Folder. Adversaries may deliver malicious
content via WININET during initial access.
"""
id = "7731dc20-5216-49dc-95fe-a29321a345d5"
license = "Elastic License v2"
name = "Suspicious Execution from INET Cache"
os_list = ["windows"]
version = "1.0.5"
query = '''
process where event.action == "start" and
process.parent.name : ("explorer.exe", "winrar.exe", "7zFM.exe", "Bandizip.exe") and
(process.command_line : "*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*" or
process.executable : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*") and
not (process.code_signature.subject_name :
("Google LLC", "Google Inc","Mozilla Corporation", "Zhuhai Kingsoft Office Software Co., Ltd.",
"VideoLAN") and
process.code_signature.trusted == true) and
not (process.name : "rundll32.exe" and
process.args : ("cryptext.dll,CryptExtAddCER", "cryptext.dll,CryptExtOpenCER", "ieframe.dll,OpenUR", "C:\\Windows\\System32\\ieframe.dll,OpenURL")) and
not process.executable :
("?:\\Program Files\\*.exe",
"?:\\Program Files (x86)\\*.exe",
"?:\\Windows\\System32\\mspaint.exe",
"?:\\Windows\\System32\\notepad.exe",
"C:\\Windows\\SysWOW64\\Codecs\\mpc-hc.exe",
"?:\\Windows\\CCM\\*.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe") and
not (process.code_signature.trusted == true and not process.code_signature.subject_name : "Microsoft*")
'''
min_endpoint_version = "7.16.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[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 = "T1203"
name = "Exploitation for Client Execution"
reference = "https://attack.mitre.org/techniques/T1203/"
[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1105"
name = "Ingress Tool Transfer"
reference = "https://attack.mitre.org/techniques/T1105/"
[threat.tactic]
id = "TA0011"
name = "Command and Control"
reference = "https://attack.mitre.org/tactics/TA0011/"
[internal]
min_endpoint_version = "7.16.0"
Stages and Predicates
Stage 1: process
process where event.action == "start" and
process.parent.name : ("explorer.exe", "winrar.exe", "7zFM.exe", "Bandizip.exe") and
(process.command_line : "*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*" or
process.executable : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*") and
not (process.code_signature.subject_name :
("Google LLC", "Google Inc","Mozilla Corporation", "Zhuhai Kingsoft Office Software Co., Ltd.",
"VideoLAN") and
process.code_signature.trusted == true) and
not (process.name : "rundll32.exe" and
process.args : ("cryptext.dll,CryptExtAddCER", "cryptext.dll,CryptExtOpenCER", "ieframe.dll,OpenUR", "C:\\Windows\\System32\\ieframe.dll,OpenURL")) and
not process.executable :
("?:\\Program Files\\*.exe",
"?:\\Program Files (x86)\\*.exe",
"?:\\Windows\\System32\\mspaint.exe",
"?:\\Windows\\System32\\notepad.exe",
"C:\\Windows\\SysWOW64\\Codecs\\mpc-hc.exe",
"?:\\Windows\\CCM\\*.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe") and
not (process.code_signature.trusted == true and not process.code_signature.subject_name : "Microsoft*")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.code_signature.subject_name | wildcard |
| field:"Signature" kind:wildcard value:"Microsoft*" |
process.command_line | wildcard |
| field:"CommandLine" kind:wildcard value:"*\AppData\Local\Microsoft\Windows\INetCache\IE\*" |
process.executable | wildcard |
| field:"Image" kind:wildcard value:"?:\Users\*\AppData\Local\Microsoft\Windows\INetCache\IE\*" |
process.parent.name | wildcard |
| field:"parent_process_basename" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.code_signature.subject_name | starts_with | Microsoft | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"Microsoft" |
process.code_signature.trusted | eq | true | excludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true" |
process.args | eq | cryptext.dll,CryptExtAddCER, cryptext.dll,CryptExtOpenCER, ieframe.dll,OpenUR, C:\Windows\System32\ieframe.dll,OpenURL | excludes:process.args |
process.name | eq | rundll32.exe | excludes:process.name field:"process.name" value:"rundll32.exe" |
process.code_signature.subject_name | eq | Google LLC, Google Inc, Mozilla Corporation, Zhuhai Kingsoft Office Software Co., Ltd., VideoLAN | excludes:process.code_signature.subject_name |
process.executable | wildcard | ?:\Program Files\*.exe, ?:\Program Files (x86)\*.exe, ?:\Windows\System32\mspaint.exe, ?:\Windows\System32\notepad.exe, C:\Windows\SysWOW64\Codecs\mpc-hc.exe, ?:\Windows\CCM\*.exe, ?:\Users\*\AppData\Local\Programs\Microsoft VS Code\Code.exe | excludes:process.executable |
Suspicious ImageLoad via ODBC Driver Configuration Program
#Identifies abuse of the ODBC Driver Configuration Program to load an arbitrary DLL. This behavior is used as a defense evasion technique to blend-in malicious activity with legitimate Windows software.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Rule Body
[rule]
description = """
Identifies abuse of the ODBC Driver Configuration Program to load an arbitrary DLL. This behavior is used as a defense
evasion technique to blend-in malicious activity with legitimate Windows software.
"""
id = "1faebe83-38d7-4390-b6bd-9c6b851e47c4"
license = "Elastic License v2"
name = "Suspicious ImageLoad via ODBC Driver Configuration Program"
os_list = ["windows"]
reference = ["https://lolbas-project.github.io/lolbas/Binaries/Odbcconf/"]
version = "1.0.27"
query = '''
process where event.action == "start" and
(process.pe.original_file_name == "odbcconf.exe" or process.name : "odbcconf.exe") and
process.args : ("-a", "-f", "/a", "/f") and
not (process.args : "?:\\Windows\\SysWOW64\\ODBCCONF.RSP" and process.parent.name : "InstallManager.exe") and
not (process.args : "{CONFIGSYSDSN*" and process.Ext.token.integrity_level_name : ("high", "system")) and
not process.args: ("SQL Server", "C:\\WINDOWS\\system32\\odbcconf.tmp")
'''
min_endpoint_version = "7.15.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[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.008"
name = "Odbcconf"
reference = "https://attack.mitre.org/techniques/T1218/008/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "7.15.0"
Stages and Predicates
Stage 1: process
process where event.action == "start" and
(process.pe.original_file_name == "odbcconf.exe" or process.name : "odbcconf.exe") and
process.args : ("-a", "-f", "/a", "/f") and
not (process.args : "?:\\Windows\\SysWOW64\\ODBCCONF.RSP" and process.parent.name : "InstallManager.exe") and
not (process.args : "{CONFIGSYSDSN*" and process.Ext.token.integrity_level_name : ("high", "system")) and
not process.args: ("SQL Server", "C:\\WINDOWS\\system32\\odbcconf.tmp")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"start" |
process.args | wildcard |
| field:"process.args" kind:wildcard |
process.name | wildcard |
| field:"process_basename" kind:wildcard value:"odbcconf.exe" |
process.pe.original_file_name | eq |
| field:"OriginalFileName" kind:eq value:"odbcconf.exe" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.Ext.token.integrity_level_name | eq | high, system | excludes:process.Ext.token.integrity_level_name field:"process.Ext.token.integrity_level_name" value:"high" field:"process.Ext.token.integrity_level_name" value:"system" |
process.args | starts_with | {CONFIGSYSDSN | excludes:process.args field:"process.args" value:"{CONFIGSYSDSN" |
process.args | eq | ?:\Windows\SysWOW64\ODBCCONF.RSP | excludes:process.args field:"process.args" value:"?:\Windows\SysWOW64\ODBCCONF.RSP" |
process.parent.name | eq | InstallManager.exe | excludes:process.parent.name field:"process.parent.name" value:"InstallManager.exe" |
process.args | eq | SQL Server, C:\WINDOWS\system32\odbcconf.tmp | excludes:process.args field:"process.args" value:"SQL Server" field:"process.args" value:"C:\WINDOWS\system32\odbcconf.tmp" |
Suspicious rc.local Error Message
#This rule monitors the syslog log file for error messages related to the rc.local process. The rc.local file is a script that is executed during the boot process on Linux systems. Attackers may attempt to modify the rc.local file to execute malicious commands or scripts during system startup. This rule detects error messages such as "Connection refused," "No such file or directory," or "command not found" in the syslog log file, which may indicate that the rc.local file has been tampered with.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Rule Body
[metadata]
creation_date = "2024/06/21"
integration = ["system"]
maturity = "production"
updated_date = "2026/04/10"
[rule]
author = ["Elastic"]
description = """
This rule monitors the syslog log file for error messages related to the rc.local process. The rc.local file is a script
that is executed during the boot process on Linux systems. Attackers may attempt to modify the rc.local file to execute
malicious commands or scripts during system startup. This rule detects error messages such as "Connection refused," "No
such file or directory," or "command not found" in the syslog log file, which may indicate that the rc.local file has
been tampered with.
"""
from = "now-9m"
index = ["logs-system.syslog-*"]
language = "kuery"
license = "Elastic License v2"
name = "Suspicious rc.local Error Message"
note = """## Triage and analysis
> **Disclaimer**:
> This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs.
### Investigating Suspicious rc.local Error Message
The rc.local script is crucial in Linux systems, executing commands at boot. Adversaries may exploit this by inserting malicious scripts to gain persistence. The detection rule monitors syslog for specific error messages linked to rc.local, such as "Connection refused," indicating potential tampering. This proactive monitoring helps identify unauthorized modifications, mitigating persistent threats.
### Possible investigation steps
- Review the syslog entries for the specific error messages "Connection refused," "No such file or directory," or "command not found" associated with the rc.local process to understand the context and frequency of these errors.
- Check the rc.local file for any recent modifications or unusual entries that could indicate tampering or unauthorized changes.
- Investigate the source of the error messages by identifying any related processes or network connections that might have triggered the "Connection refused" error.
- Examine the system's boot logs and startup scripts to identify any anomalies or unauthorized scripts that may have been introduced.
- Cross-reference the timestamps of the error messages with other system logs to identify any correlated suspicious activities or changes in the system.
### False positive analysis
- Legitimate software updates or installations may modify the rc.local file, triggering error messages. Users can create exceptions for known update processes by identifying the specific software and excluding its related syslog entries.
- Custom scripts or administrative tasks that intentionally modify rc.local for legitimate purposes might cause false alerts. Document these scripts and add them to an exclusion list to prevent unnecessary alerts.
- Network configuration changes can lead to temporary "Connection refused" errors. If these changes are expected, users should temporarily adjust the monitoring rule to ignore these specific messages during the maintenance window.
- System misconfigurations or missing dependencies might result in "No such file or directory" or "command not found" errors. Regularly audit system configurations and ensure all necessary files and commands are correctly installed to minimize these false positives.
### Response and remediation
- Isolate the affected system from the network to prevent further unauthorized access or spread of potential malware.
- Review the rc.local file for unauthorized modifications and restore it from a known good backup if tampering is confirmed.
- Conduct a thorough scan of the system using updated antivirus and anti-malware tools to identify and remove any malicious scripts or software.
- Check for additional persistence mechanisms by reviewing other boot or logon initialization scripts and scheduled tasks.
- Escalate the incident to the security operations team for further investigation and to determine if other systems are affected.
- Implement enhanced monitoring on the affected system and similar systems to detect any future unauthorized changes to boot scripts.
- Review and update access controls and permissions to ensure that only authorized personnel can modify critical system files like rc.local."""
references = [
"https://www.intezer.com/blog/malware-analysis/hiddenwasp-malware-targeting-linux-systems/",
"https://pberba.github.io/security/2022/02/06/linux-threat-hunting-for-persistence-initialization-scripts-and-shell-configuration/#8-boot-or-logon-initialization-scripts-rc-scripts",
"https://www.cyberciti.biz/faq/how-to-enable-rc-local-shell-script-on-systemd-while-booting-linux-system/",
"https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms",
]
risk_score = 47
rule_id = "69c116bb-d86f-48b0-857d-3648511a6cac"
setup = """## Setup
This rule requires data coming in from one of the following integrations:
- Filebeat
### Filebeat Setup
Filebeat is a lightweight shipper for forwarding and centralizing log data. Installed as an agent on your servers, Filebeat monitors the log files or locations that you specify, collects log events, and forwards them either to Elasticsearch or Logstash for indexing.
#### The following steps should be executed in order to add the Filebeat for the Linux System:
- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.
- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html).
- To run Filebeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/running-on-docker.html).
- To run Filebeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/running-on-kubernetes.html).
- For quick start information for Filebeat refer to the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/8.11/filebeat-installation-configuration.html).
- For complete Setup and Run Filebeat information refer to the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/setting-up-and-running.html).
#### Rule Specific Setup Note
- This rule requires the Filebeat System Module to be enabled.
- The system module collects and parses logs created by the system logging service of common Unix/Linux based distributions.
- To run the system module of Filebeat on Linux follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-system.html).
"""
severity = "medium"
tags = [
"Domain: Endpoint",
"OS: Linux",
"Use Case: Threat Detection",
"Tactic: Persistence",
"Resources: Investigation Guide"
]
timestamp_override = "event.ingested"
type = "query"
query = '''
host.os.type:linux and data_stream.dataset:system.syslog and process.name:rc.local and
message:("Connection refused" or "No such file or directory" or "command not found")
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1037"
name = "Boot or Logon Initialization Scripts"
reference = "https://attack.mitre.org/techniques/T1037/"
[[rule.threat.technique.subtechnique]]
id = "T1037.004"
name = "RC Scripts"
reference = "https://attack.mitre.org/techniques/T1037/004/"
[rule.threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1037"
name = "Boot or Logon Initialization Scripts"
reference = "https://attack.mitre.org/techniques/T1037/"
[[rule.threat.technique.subtechnique]]
id = "T1037.004"
name = "RC Scripts"
reference = "https://attack.mitre.org/techniques/T1037/004/"
[rule.threat.tactic]
id = "TA0004"
name = "Privilege Escalation"
reference = "https://attack.mitre.org/tactics/TA0004/"
Stages and Predicates
Stage 1: query
host.os.type:linux and data_stream.dataset:system.syslog and process.name:rc.local and
message:("Connection refused" or "No such file or directory" or "command not found")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
data_stream.dataset | eq |
| field:"data_stream.dataset" kind:eq value:"system.syslog" |
message | in |
| field:"message" kind:in |
process.name | eq |
| field:"process_basename" kind:eq value:"rc.local" |
Suspicious String Value Written to Registry Run Key
#Identifies when suspicious values are written to Run and RunOnce registry keys via signed binaries. Run and RunOnce registry keys cause programs to run each time that a user logs on and are often abused by adversaries to maintain persistence on an endpoint.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Rule Body
[rule]
description = """
Identifies when suspicious values are written to Run and RunOnce registry keys via signed binaries. Run and RunOnce
registry keys cause programs to run each time that a user logs on and are often abused by adversaries to maintain
persistence on an endpoint.
"""
id = "727db78e-e1dd-4bc0-89b0-885cd99e069e"
license = "Elastic License v2"
name = "Suspicious String Value Written to Registry Run Key"
os_list = ["windows"]
reference = ["https://docs.microsoft.com/en-us/windows/win32/setupapi/run-and-runonce-registry-keys"]
version = "1.0.43"
query = '''
registry where registry.data.strings != null and process.executable != null and
user.id : ("S-1-5-21*", "S-1-12-*") and
registry.path : (
"H*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"H*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"H*\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
"H*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*") and
not process.executable :
("?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\system32\\msiexec.exe",
"C:\\Windows\\Installer\\MSI*.tmp",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\*.exe",
"?:\\Windows\\Downloaded Program Files\\*.exe",
"?:\\Windows\\system32\\spool\\DRIVERS\\*",
"?:\\Windows\\system32\\mmc.exe",
"?:\\Windows\\Samsung\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\wsl.exe",
"?:\\Windows\\SysWOW64\\d3con.exe",
"?:\\Windows\\System32\\StikyNot.exe",
"?:\\WINDOWS\\splwow64.exe",
"?:\\Program Files\\*.exe",
"?:\\Program Files (x86)\\*.exe",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\FlashUtil*_Plugin.exe",
"?:\\Windows\\System32\\wiawow64.exe",
"?:\\Windows\\SysWOW64\\NSIS.Library.RegTool.v3.{BF6A0CE1-774D-43F4-BC30-45E57E406CE1}.exe",
"?:\\Windows\\System32\\svchost.exe",
"\\Device\\Mup\\*.exe") and
not (process.name : "cscript.exe" and registry.value : "ContingencyUninstallNXTSForCurrentUser") and
not (process.name : "ZoomInfoContactContributor*.exe" and registry.value : "ZoomInfo Contact Contributor") and
not (process.name : "rundll32.exe" and registry.value : ("bit4id csp store register*", "SafeDiveCertMgm")) and
not (process.name : ("bomgar-scc.exe", "ThinkGear Connector.exe") and registry.value : ("Bomgar_Cleanup_*", "ThinkGear Connector")) and
registry.data.strings :
("*rundll32*",
"*regsvr32*",
"*mshta*",
"*msbuild*",
"*RegAsm*",
"*RegSvcs*",
"*InstallUtil*",
"*cscript*",
"*wscript*",
"*.js?",
"*.js",
"*.vbs?",
"*.vbs",
"*.vbe?",
"*.vbe",
"*.bat?",
"*.bat",
"*.url",
"*.url?",
"*.lnk",
"*.lnk?",
"*.jar",
"*msxsl*",
"*cmstp*",
"*cerutil*",
"*bitsadmin*",
"*msiexec*",
"*wmic*",
"*powershell*",
"*cmd.exe *",
"*cmd * /c*",
"*svchost*",
"*lsass*",
"*csrss*",
"*winlogon*",
"*Microsoft.Workflow.Compiler.exe*",
"*VBScript.Encode*",
"*http://*",
"*WScript.Shell*",
"*VBScript.Encode*",
"*:\\Users\\Public\\*",
"*:\\Users\\*\\Documents\\*",
"*:\\Documents and Settings\\*",
"*:\\Users\\*\\Pictures\\*",
"*:\\Users\\*\\Music\\*",
"*:\\Users\\*\\Pictures\\*",
"?:\\Users\\*\\Downloads\\*",
"?:\\Users\\*\\Desktop\\*",
"*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\*",
"\\\\*.exe",
"*javaw.exe* -jar *") and not
registry.data.strings :
("*rundll32.exe*advpack.dll,DelNodeRunDLL32*",
"*LogiLDA.dll,LogiFetch*",
"*\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*",
"*%ProgramFiles%*",
"*:\\Program Files\\*",
"*:\\Program Files (x86)\\*",
"*:\\Windows\\SystemApps\\*",
"*:\\Windows\\System32\\DriverStore\\*",
"*:\\WINDOWS\\Speech\\*",
"*:\\WINDOWS\\System32\\RtkAudUService*",
"*:\\WINDOWS\\system32\\SecurityHealthSystray.exe",
"*restartSAPinst.vbs*",
/* Issue #324 */
"*\\Windows\\Downloaded Program Files\\*",
"*\\Windows\\SysWOW64\\Macromed\\*",
"*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\*.lnk*",
"*\\Pictures\\*com_Internet_Download_Manager*",
"cmd.exe /c \"start /min /d \"C:\\Users\\*\\AppData\\Local\\PDFProSuite\" PDFProSuite . --update\"",
"Powershell.exe -NoProfile -ExecutionPolicy ByPass -WindowStyle Hidden -file C:\\*\\RunOnce\\Logon.ps1",
"powershell.exe -windowstyle hidden -ExecutionPolicy Bypass -File",
"\"\\\\*Desktop.lnk\"") and
not (process.code_signature.subject_name :
("Solanki Piyushkumar", "Sysinternals", "NortonLifeLock Inc.", "Bomgar Corporation", "BIT4ID SRL",
"JACK HENRY & ASSOCIATES, INC.", "Connectify (Connectify, Inc.)", "Slack Technologies, LLC",
"Symantec Corporation", "Loom, Inc.", "NinjaOne LLC", "BeyondTrust Corporation", "Quest Software, Inc.",
"PHAM KIM LONG") and
process.code_signature.trusted == true) and
not (registry.value : "com.squirrel.Teams.Teams" and
registry.data.strings : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Teams\\Update.exe --processStart \"Teams.exe\" --process-start-args \"--system-initiated\"")
'''
min_endpoint_version = "8.0.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1547"
name = "Boot or Logon Autostart Execution"
reference = "https://attack.mitre.org/techniques/T1547/"
[[threat.technique.subtechnique]]
id = "T1547.001"
name = "Registry Run Keys / Startup Folder"
reference = "https://attack.mitre.org/techniques/T1547/001/"
[threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[internal]
min_endpoint_version = "8.0.0"
Stages and Predicates
Stage 1: registry
registry where registry.data.strings != null and process.executable != null and
user.id : ("S-1-5-21*", "S-1-12-*") and
registry.path : (
"H*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"H*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
"H*\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
"H*\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*") and
not process.executable :
("?:\\Windows\\SysWOW64\\msiexec.exe",
"?:\\Windows\\system32\\msiexec.exe",
"C:\\Windows\\Installer\\MSI*.tmp",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\*.exe",
"?:\\Windows\\Downloaded Program Files\\*.exe",
"?:\\Windows\\system32\\spool\\DRIVERS\\*",
"?:\\Windows\\system32\\mmc.exe",
"?:\\Windows\\Samsung\\PanelMgr\\SSMMgr.exe",
"?:\\Windows\\System32\\wsl.exe",
"?:\\Windows\\SysWOW64\\d3con.exe",
"?:\\Windows\\System32\\StikyNot.exe",
"?:\\WINDOWS\\splwow64.exe",
"?:\\Program Files\\*.exe",
"?:\\Program Files (x86)\\*.exe",
"?:\\Windows\\SysWOW64\\Macromed\\Flash\\FlashUtil*_Plugin.exe",
"?:\\Windows\\System32\\wiawow64.exe",
"?:\\Windows\\SysWOW64\\NSIS.Library.RegTool.v3.{BF6A0CE1-774D-43F4-BC30-45E57E406CE1}.exe",
"?:\\Windows\\System32\\svchost.exe",
"\\Device\\Mup\\*.exe") and
not (process.name : "cscript.exe" and registry.value : "ContingencyUninstallNXTSForCurrentUser") and
not (process.name : "ZoomInfoContactContributor*.exe" and registry.value : "ZoomInfo Contact Contributor") and
not (process.name : "rundll32.exe" and registry.value : ("bit4id csp store register*", "SafeDiveCertMgm")) and
not (process.name : ("bomgar-scc.exe", "ThinkGear Connector.exe") and registry.value : ("Bomgar_Cleanup_*", "ThinkGear Connector")) and
registry.data.strings :
("*rundll32*",
"*regsvr32*",
"*mshta*",
"*msbuild*",
"*RegAsm*",
"*RegSvcs*",
"*InstallUtil*",
"*cscript*",
"*wscript*",
"*.js?",
"*.js",
"*.vbs?",
"*.vbs",
"*.vbe?",
"*.vbe",
"*.bat?",
"*.bat",
"*.url",
"*.url?",
"*.lnk",
"*.lnk?",
"*.jar",
"*msxsl*",
"*cmstp*",
"*cerutil*",
"*bitsadmin*",
"*msiexec*",
"*wmic*",
"*powershell*",
"*cmd.exe *",
"*cmd * /c*",
"*svchost*",
"*lsass*",
"*csrss*",
"*winlogon*",
"*Microsoft.Workflow.Compiler.exe*",
"*VBScript.Encode*",
"*http://*",
"*WScript.Shell*",
"*VBScript.Encode*",
"*:\\Users\\Public\\*",
"*:\\Users\\*\\Documents\\*",
"*:\\Documents and Settings\\*",
"*:\\Users\\*\\Pictures\\*",
"*:\\Users\\*\\Music\\*",
"*:\\Users\\*\\Pictures\\*",
"?:\\Users\\*\\Downloads\\*",
"?:\\Users\\*\\Desktop\\*",
"*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\*",
"\\\\*.exe",
"*javaw.exe* -jar *") and not
registry.data.strings :
("*rundll32.exe*advpack.dll,DelNodeRunDLL32*",
"*LogiLDA.dll,LogiFetch*",
"*\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*",
"*%ProgramFiles%*",
"*:\\Program Files\\*",
"*:\\Program Files (x86)\\*",
"*:\\Windows\\SystemApps\\*",
"*:\\Windows\\System32\\DriverStore\\*",
"*:\\WINDOWS\\Speech\\*",
"*:\\WINDOWS\\System32\\RtkAudUService*",
"*:\\WINDOWS\\system32\\SecurityHealthSystray.exe",
"*restartSAPinst.vbs*",
"*\\Windows\\Downloaded Program Files\\*",
"*\\Windows\\SysWOW64\\Macromed\\*",
"*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\*.lnk*",
"*\\Pictures\\*com_Internet_Download_Manager*",
"cmd.exe /c \"start /min /d \"C:\\Users\\*\\AppData\\Local\\PDFProSuite\" PDFProSuite . --update\"",
"Powershell.exe -NoProfile -ExecutionPolicy ByPass -WindowStyle Hidden -file C:\\*\\RunOnce\\Logon.ps1",
"powershell.exe -windowstyle hidden -ExecutionPolicy Bypass -File",
"\"\\\\*Desktop.lnk\"") and
not (process.code_signature.subject_name :
("Solanki Piyushkumar", "Sysinternals", "NortonLifeLock Inc.", "Bomgar Corporation", "BIT4ID SRL",
"JACK HENRY & ASSOCIATES, INC.", "Connectify (Connectify, Inc.)", "Slack Technologies, LLC",
"Symantec Corporation", "Loom, Inc.", "NinjaOne LLC", "BeyondTrust Corporation", "Quest Software, Inc.",
"PHAM KIM LONG") and
process.code_signature.trusted == true) and
not (registry.value : "com.squirrel.Teams.Teams" and
registry.data.strings : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Teams\\Update.exe --processStart \"Teams.exe\" --process-start-args \"--system-initiated\"")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
process.executable | is_not_null | field:"Image" kind:is_not_null | |
registry.data.strings | is_not_null | field:"Details" kind:is_not_null | |
registry.data.strings | wildcard |
| field:"Details" kind:wildcard |
registry.path | wildcard |
| field:"TargetObject" kind:wildcard |
user.id | wildcard |
| field:"user.id" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.code_signature.subject_name | eq | Solanki Piyushkumar, Sysinternals, NortonLifeLock Inc., Bomgar Corporation, BIT4ID SRL, JACK HENRY & ASSOCIATES, INC., Connectify (Connectify, Inc.), Slack Technologies, LLC, Symantec Corporation, Loom, Inc., NinjaOne LLC, BeyondTrust Corporation, Quest Software, Inc., PHAM KIM LONG | excludes:process.code_signature.subject_name |
process.code_signature.trusted | eq | true | excludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true" |
process.name | eq | bomgar-scc.exe, ThinkGear Connector.exe | excludes:process.name field:"process.name" value:"bomgar-scc.exe" field:"process.name" value:"ThinkGear Connector.exe" |
registry.value | wildcard | Bomgar_Cleanup_*, ThinkGear Connector | excludes:registry.value field:"registry.value" value:"Bomgar_Cleanup_*" field:"registry.value" value:"ThinkGear Connector" |
process.name | eq | cscript.exe | excludes:process.name field:"process.name" value:"cscript.exe" |
registry.value | eq | ContingencyUninstallNXTSForCurrentUser | excludes:registry.value field:"registry.value" value:"ContingencyUninstallNXTSForCurrentUser" |
process.name | eq | rundll32.exe | excludes:process.name field:"process.name" value:"rundll32.exe" |
registry.value | wildcard | bit4id csp store register*, SafeDiveCertMgm | excludes:registry.value field:"registry.value" value:"bit4id csp store register*" field:"registry.value" value:"SafeDiveCertMgm" |
process.name | wildcard | ZoomInfoContactContributor*.exe | excludes:process.name field:"process.name" value:"ZoomInfoContactContributor*.exe" |
registry.value | eq | ZoomInfo Contact Contributor | excludes:registry.value field:"registry.value" value:"ZoomInfo Contact Contributor" |
registry.data.strings | wildcard | ?:\Users\*\AppData\Local\Microsoft\Teams\Update.exe --processStart "Teams.exe" --process-start-args "--system-initiated" | excludes:registry.data.strings |
registry.value | eq | com.squirrel.Teams.Teams | excludes:registry.value field:"registry.value" value:"com.squirrel.Teams.Teams" |
process.executable | wildcard | ?:\Windows\SysWOW64\msiexec.exe, ?:\Windows\system32\msiexec.exe, C:\Windows\Installer\MSI*.tmp, ?:\Windows\SysWOW64\Macromed\Flash\*.exe, ?:\Windows\Downloaded Program Files\*.exe, ?:\Windows\system32\spool\DRIVERS\*, ?:\Windows\system32\mmc.exe, ?:\Windows\Samsung\PanelMgr\SSMMgr.exe, ?:\Windows\System32\wsl.exe, ?:\Windows\SysWOW64\d3con.exe, ?:\Windows\System32\StikyNot.exe, ?:\WINDOWS\splwow64.exe, ?:\Program Files\*.exe, ?:\Program Files (x86)\*.exe, ?:\Windows\SysWOW64\Macromed\Flash\FlashUtil*_Plugin.exe, ?:\Windows\System32\wiawow64.exe, ?:\Windows\SysWOW64\NSIS.Library.RegTool.v3.{BF6A0CE1-774D-43F4-BC30-45E57E406CE1}.exe, ?:\Windows\System32\svchost.exe, \Device\Mup\*.exe | excludes:process.executable |
registry.data.strings | wildcard | *rundll32.exe*advpack.dll,DelNodeRunDLL32*, *LogiLDA.dll,LogiFetch*, *\Users\*\AppData\Local\Microsoft\OneDrive\*, *%ProgramFiles%*, *:\Program Files\*, *:\Program Files (x86)\*, *:\Windows\SystemApps\*, *:\Windows\System32\DriverStore\*, *:\WINDOWS\Speech\*, *:\WINDOWS\System32\RtkAudUService*, *:\WINDOWS\system32\SecurityHealthSystray.exe, *restartSAPinst.vbs*, *\Windows\Downloaded Program Files\*, *\Windows\SysWOW64\Macromed\*, *\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\*.lnk*, *\Pictures\*com_Internet_Download_Manager*, cmd.exe /c "start /min /d "C:\Users\*\AppData\Local\PDFProSuite" PDFProSuite . --update", Powershell.exe -NoProfile -ExecutionPolicy ByPass -WindowStyle Hidden -file C:\*\RunOnce\Logon.ps1, powershell.exe -windowstyle hidden -ExecutionPolicy Bypass -File, "\\*Desktop.lnk" | excludes:registry.data.strings |
URL as Process Argument via Installer Package
#Detects when a url is supplied as a command line argument to an installer package binary via the installer process itself. This technique is a creative way to download a second stage payload and evade curl based detections. This activity can be observed when in a pre or post install script it specifies a url as an argument to a binary included in the package that when executed will reach out to the specified url.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
Rule Body
[rule]
description = """
Detects when a url is supplied as a command line argument to an installer package binary via the installer process
itself. This technique is a creative way to download a second stage payload and evade curl based detections. This
activity can be observed when in a pre or post install script it specifies a url as an argument to a binary included in
the package that when executed will reach out to the specified url.
"""
id = "b06dcea7-9ef3-428d-bd4d-80004f69200f"
license = "Elastic License v2"
name = "URL as Process Argument via Installer Package"
os_list = ["macos"]
version = "1.0.8"
query = '''
process where event.type == "start" and
process.Ext.effective_parent.executable like~ ("/usr/sbin/installer", "/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer") and
process.args like~ ("http://*", "https://*") and
not process.name in ("wget", "curl", "git", "nscurl") and
not process.executable like ("/opt/homebrew/*", "/usr/local/Cellar/*", "/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin") and
not process.code_signature.team_id == "PXPZ95SK77"
'''
min_endpoint_version = "8.7.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1071"
name = "Application Layer Protocol"
reference = "https://attack.mitre.org/techniques/T1071/"
[[threat.technique.subtechnique]]
id = "T1071.001"
name = "Web Protocols"
reference = "https://attack.mitre.org/techniques/T1071/001/"
[[threat.technique]]
id = "T1105"
name = "Ingress Tool Transfer"
reference = "https://attack.mitre.org/techniques/T1105/"
[threat.tactic]
id = "TA0011"
name = "Command and Control"
reference = "https://attack.mitre.org/tactics/TA0011/"
[internal]
min_endpoint_version = "8.7.0"
Stages and Predicates
Stage 1: process
process where event.type == "start" and
process.Ext.effective_parent.executable like~ ("/usr/sbin/installer", "/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer") and
process.args like~ ("http://*", "https://*") and
not process.name in ("wget", "curl", "git", "nscurl") and
not process.executable like ("/opt/homebrew/*", "/usr/local/Cellar/*", "/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin") and
not process.code_signature.team_id == "PXPZ95SK77"
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.type | eq |
| field:"event.type" kind:eq value:"start" |
process.Ext.effective_parent.executable | wildcard |
| field:"process.Ext.effective_parent.executable" kind:wildcard |
process.args | wildcard |
| field:"process.args" kind:wildcard |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.code_signature.team_id | eq | PXPZ95SK77 | excludes:process.code_signature.team_id field:"process.code_signature.team_id" value:"PXPZ95SK77" |
process.executable | wildcard | /opt/homebrew/*, /usr/local/Cellar/*, /Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin | excludes:process.executable field:"process.executable" value:"/opt/homebrew/*" field:"process.executable" value:"/usr/local/Cellar/*" field:"process.executable" value:"/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin" |
process.name | in | curl, git, nscurl, wget | excludes:process.name |
Windows Defender Exclusions via WMI
#Identifies attempt to modify to the Windows Defender configuration settings to add an exclusion via the Windows Management Instrumentation method.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Defense Impairment |
Rule Body
[rule]
description = """
Identifies attempt to modify to the Windows Defender configuration settings to add an exclusion via the Windows
Management Instrumentation method.
"""
id = "73310ee3-5e48-4680-b7c5-c096813c7f03"
license = "Elastic License v2"
name = "Windows Defender Exclusions via WMI"
os_list = ["windows"]
reference = [
"https://docs.microsoft.com/en-us/powershell/module/defender/add-mppreference?view=windowsserver2019-ps",
]
version = "1.0.9"
query = '''
api where
process.Ext.api.name == "IWbemServices::ExecMethod" and
process.Ext.api.parameters.operation : "*MSFT_MpPreference::Add*" and
not (user.id == "S-1-5-18" and process.executable : "C:\\Windows\\Sys?????\\WindowsPowerShell\\v*\\powershell.exe") and
not (process.executable == "C:\\Windows\\System32\\svchost.exe" and process.parent.executable == "C:\\Windows\\System32\\services.exe") and
not process.parent.executable : (
"?:\\Program Files\\JetBrains\\*\\lib\\ReSharperHost\\JetBrains.Rider.AfterInstall.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\*\\lib\\ReSharperHost\\JetBrains.Rider.AfterInstall.exe",
"?:\\Program Files\\JetBrains\\*\\bin\\elevator.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\*\\bin\\elevator.exe",
"?:\\Users\\*\\AppData\\Local\\Temp\\dbeaver-ce-*",
"?:\\Users\\*\\AppData\\Local\\Temp\\*\\dbeaver-ce-*",
"?:\\Users\\*\\Downloads\\dbeaver-ce-*",
"?:\\Users\\*\\Downloads\\dbeaver-ee-*",
"?:\\ProgramData\\chocolatey\\lib\\dbeaver\\tools\\dbeaver-ce-*",
"?:\\Windows\\System32\\DriverStore\\FileRepository\\*\\DCHUService.exe"
) and
not (process.code_signature.subject_name in ("Censornet Limited") and process.code_signature.trusted == true) and
not (process.executable : "?:\\Program Files\\AppsAnywhere\\AppsAnywhere\\AppsAnywhereUpdaterService.exe" and
process.parent.executable : "?:\\Windows\\System32\\services.exe" and user.id == "S-1-5-18" and
process.code_signature.subject_name in ("AppsAnywhere Limited", "AppsAnywhere Ltd") and
process.code_signature.trusted == true) and
not (process.executable : "?:\\Program Files\\HarfangLab\\hurukai.exe" and
process.parent.executable : "?:\\Windows\\System32\\services.exe" and user.id == "S-1-5-18" and
process.Ext.protection == "PsProtectedSignerAntimalware-Light" and
process.code_signature.subject_name == "HarfangLab SAS" and process.code_signature.trusted == true) and
not (process.parent.executable : "C:\\Windows\\SysWOW64\\cmd.exe" and process.name : "powershell.exe" and
process.command_line : "powerShell Add-MpPreference -ControlledFolderAccessAllowedApplications*") and
not (process.name : "wmic.exe" and
process.command_line : ("WMIC /NAMESPACE:\\\\root\\Microsoft\\Windows\\Defender PATH MSFT_MpPreference call Add ExclusionPath=\"c:\\windows\\puppet\\activate\\*",
"WMIC /NAMESPACE:\\\\root\\Microsoft\\Windows\\Defender PATH MSFT_MpPreference call Add ExclusionPath=\"C:\\Windows\\AAct_Tools\\*")) and
not process.command_line : "\"C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoProfile -ExecutionPolicy Bypass -Command Add-MpPreference -ExclusionProcess \"UltraSearch.exe\" " and
not (process.name : "powershell.exe" and
process.command_line : ("*JABlAHgAYwBsAHUAcwBpAG8AbgBzAD0AQAAoACIAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEQAQgBlAGEAdgBlAHIAXABkAGIAZQBhAHYAZQByAC4AZQB4AGUAI*",
"*AkAHMAcABsAGkAdABfAHAAYQByAHQAcwAgAD0AIAAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAF8AcwB0AHIALgBTAHAAbABpAHQAKABAACgAIgBgADAAYAAwAGAAMABgADAAIgApACwAIAAyACwA*",
"*WwBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ASABhAHMAaABTAGUAdABbAFMAdAByAGkAbgBnAF0AXQAoAEcAZQB0AC0A*")) and
not (process.parent.executable : "C:\\Windows\\System32\\cmd.exe" and process.command_line : "*\\EC2Launch*\\UserScript.ps1*")
'''
min_endpoint_version = "8.15.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0
[[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/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1562"
name = "Impair Defenses"
reference = "https://attack.mitre.org/techniques/T1562/"
[[threat.technique.subtechnique]]
id = "T1562.001"
name = "Disable or Modify Tools"
reference = "https://attack.mitre.org/techniques/T1562/001/"
[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[internal]
min_endpoint_version = "8.15.0"
Stages and Predicates
Stage 1: api
api where
process.Ext.api.name == "IWbemServices::ExecMethod" and
process.Ext.api.parameters.operation : "*MSFT_MpPreference::Add*" and
not (user.id == "S-1-5-18" and process.executable : "C:\\Windows\\Sys?????\\WindowsPowerShell\\v*\\powershell.exe") and
not (process.executable == "C:\\Windows\\System32\\svchost.exe" and process.parent.executable == "C:\\Windows\\System32\\services.exe") and
not process.parent.executable : (
"?:\\Program Files\\JetBrains\\*\\lib\\ReSharperHost\\JetBrains.Rider.AfterInstall.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\*\\lib\\ReSharperHost\\JetBrains.Rider.AfterInstall.exe",
"?:\\Program Files\\JetBrains\\*\\bin\\elevator.exe",
"?:\\Users\\*\\AppData\\Local\\Programs\\*\\bin\\elevator.exe",
"?:\\Users\\*\\AppData\\Local\\Temp\\dbeaver-ce-*",
"?:\\Users\\*\\AppData\\Local\\Temp\\*\\dbeaver-ce-*",
"?:\\Users\\*\\Downloads\\dbeaver-ce-*",
"?:\\Users\\*\\Downloads\\dbeaver-ee-*",
"?:\\ProgramData\\chocolatey\\lib\\dbeaver\\tools\\dbeaver-ce-*",
"?:\\Windows\\System32\\DriverStore\\FileRepository\\*\\DCHUService.exe"
) and
not (process.code_signature.subject_name in ("Censornet Limited") and process.code_signature.trusted == true) and
not (process.executable : "?:\\Program Files\\AppsAnywhere\\AppsAnywhere\\AppsAnywhereUpdaterService.exe" and
process.parent.executable : "?:\\Windows\\System32\\services.exe" and user.id == "S-1-5-18" and
process.code_signature.subject_name in ("AppsAnywhere Limited", "AppsAnywhere Ltd") and
process.code_signature.trusted == true) and
not (process.executable : "?:\\Program Files\\HarfangLab\\hurukai.exe" and
process.parent.executable : "?:\\Windows\\System32\\services.exe" and user.id == "S-1-5-18" and
process.Ext.protection == "PsProtectedSignerAntimalware-Light" and
process.code_signature.subject_name == "HarfangLab SAS" and process.code_signature.trusted == true) and
not (process.parent.executable : "C:\\Windows\\SysWOW64\\cmd.exe" and process.name : "powershell.exe" and
process.command_line : "powerShell Add-MpPreference -ControlledFolderAccessAllowedApplications*") and
not (process.name : "wmic.exe" and
process.command_line : ("WMIC /NAMESPACE:\\\\root\\Microsoft\\Windows\\Defender PATH MSFT_MpPreference call Add ExclusionPath=\"c:\\windows\\puppet\\activate\\*",
"WMIC /NAMESPACE:\\\\root\\Microsoft\\Windows\\Defender PATH MSFT_MpPreference call Add ExclusionPath=\"C:\\Windows\\AAct_Tools\\*")) and
not process.command_line : "\"C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoProfile -ExecutionPolicy Bypass -Command Add-MpPreference -ExclusionProcess \"UltraSearch.exe\" " and
not (process.name : "powershell.exe" and
process.command_line : ("*JABlAHgAYwBsAHUAcwBpAG8AbgBzAD0AQAAoACIAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEQAQgBlAGEAdgBlAHIAXABkAGIAZQBhAHYAZQByAC4AZQB4AGUAI*",
"*AkAHMAcABsAGkAdABfAHAAYQByAHQAcwAgAD0AIAAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAF8AcwB0AHIALgBTAHAAbABpAHQAKABAACgAIgBgADAAYAAwAGAAMABgADAAIgApACwAIAAyACwA*",
"*WwBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ASABhAHMAaABTAGUAdABbAFMAdAByAGkAbgBnAF0AXQAoAEcAZQB0AC0A*")) and
not (process.parent.executable : "C:\\Windows\\System32\\cmd.exe" and process.command_line : "*\\EC2Launch*\\UserScript.ps1*")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
process.Ext.api.name | eq |
| field:"process.Ext.api.name" kind:eq value:"IWbemServices::ExecMethod" |
process.Ext.api.parameters.operation | wildcard |
| field:"process.Ext.api.parameters.operation" kind:wildcard value:"*MSFT_MpPreference::Add*" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.Ext.protection | eq | PsProtectedSignerAntimalware-Light | excludes:process.Ext.protection field:"process.Ext.protection" value:"PsProtectedSignerAntimalware-Light" |
process.code_signature.subject_name | eq | HarfangLab SAS | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"HarfangLab SAS" |
process.code_signature.trusted | eq | true | excludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true" |
process.executable | eq | ?:\Program Files\HarfangLab\hurukai.exe | excludes:process.executable field:"process.executable" value:"?:\Program Files\HarfangLab\hurukai.exe" |
process.parent.executable | eq | ?:\Windows\System32\services.exe | excludes:process.parent.executable field:"process.parent.executable" value:"?:\Windows\System32\services.exe" |
user.id | eq | S-1-5-18 | excludes:user.id field:"user.id" value:"S-1-5-18" |
process.code_signature.subject_name | eq | Censornet Limited | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"Censornet Limited" |
process.code_signature.subject_name | in | AppsAnywhere Limited, AppsAnywhere Ltd | excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"AppsAnywhere Limited" field:"process.code_signature.subject_name" value:"AppsAnywhere Ltd" |
process.executable | eq | ?:\Program Files\AppsAnywhere\AppsAnywhere\AppsAnywhereUpdaterService.exe | excludes:process.executable field:"process.executable" value:"?:\Program Files\AppsAnywhere\AppsAnywhere\AppsAnywhereUpdaterService.exe" |
process.command_line | match | JABlAHgAYwBsAHUAcwBpAG8AbgBzAD0AQAAoACIAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEQAQgBlAGEAdgBlAHIAXABkAGIAZQBhAHYAZQByAC4AZQB4AGUAI, AkAHMAcABsAGkAdABfAHAAYQByAHQAcwAgAD0AIAAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAF8AcwB0AHIALgBTAHAAbABpAHQAKABAACgAIgBgADAAYAAwAGAAMABgADAAIgApACwAIAAyACwA, WwBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ASABhAHMAaABTAGUAdABbAFMAdAByAGkAbgBnAF0AXQAoAEcAZQB0AC0A | excludes:process.command_line field:"process.command_line" value:"JABlAHgAYwBsAHUAcwBpAG8AbgBzAD0AQAAoACIAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEQAQgBlAGEAdgBlAHIAXABkAGIAZQBhAHYAZQByAC4AZQB4AGUAI" field:"process.command_line" value:"AkAHMAcABsAGkAdABfAHAAYQByAHQAcwAgAD0AIAAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAF8AcwB0AHIALgBTAHAAbABpAHQAKABAACgAIgBgADAAYAAwAGAAMABgADAAIgApACwAIAAyACwA" field:"process.command_line" value:"WwBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ASABhAHMAaABTAGUAdABbAFMAdAByAGkAbgBnAF0AXQAoAEcAZQB0AC0A" |
process.name | eq | powershell.exe | excludes:process.name field:"process.name" value:"powershell.exe" |
process.command_line | starts_with | WMIC /NAMESPACE:\\root\Microsoft\Windows\Defender PATH MSFT_MpPreference call Add ExclusionPath="c:\windows\puppet\activate\, WMIC /NAMESPACE:\\root\Microsoft\Windows\Defender PATH MSFT_MpPreference call Add ExclusionPath="C:\Windows\AAct_Tools\ | excludes:process.command_line |
process.name | eq | wmic.exe | excludes:process.name field:"process.name" value:"wmic.exe" |
process.command_line | starts_with | powerShell Add-MpPreference -ControlledFolderAccessAllowedApplications | excludes:process.command_line field:"process.command_line" value:"powerShell Add-MpPreference -ControlledFolderAccessAllowedApplications" |
process.parent.executable | eq | C:\Windows\SysWOW64\cmd.exe | excludes:process.parent.executable field:"process.parent.executable" value:"C:\Windows\SysWOW64\cmd.exe" |
process.command_line | wildcard | *\EC2Launch*\UserScript.ps1* | excludes:process.command_line field:"process.command_line" value:"*\EC2Launch*\UserScript.ps1*" |
process.parent.executable | eq | C:\Windows\System32\cmd.exe | excludes:process.parent.executable field:"process.parent.executable" value:"C:\Windows\System32\cmd.exe" |
process.executable | eq | C:\Windows\System32\svchost.exe | excludes:process.executable field:"process.executable" value:"C:\Windows\System32\svchost.exe" |
process.parent.executable | eq | C:\Windows\System32\services.exe | excludes:process.parent.executable field:"process.parent.executable" value:"C:\Windows\System32\services.exe" |
process.executable | wildcard | C:\Windows\Sys?????\WindowsPowerShell\v*\powershell.exe | excludes:process.executable field:"process.executable" value:"C:\Windows\Sys?????\WindowsPowerShell\v*\powershell.exe" |
process.command_line | eq | "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command Add-MpPreference -ExclusionProcess "UltraSearch.exe" | excludes:process.command_line |
process.parent.executable | wildcard | ?:\Program Files\JetBrains\*\lib\ReSharperHost\JetBrains.Rider.AfterInstall.exe, ?:\Users\*\AppData\Local\Programs\*\lib\ReSharperHost\JetBrains.Rider.AfterInstall.exe, ?:\Program Files\JetBrains\*\bin\elevator.exe, ?:\Users\*\AppData\Local\Programs\*\bin\elevator.exe, ?:\Users\*\AppData\Local\Temp\dbeaver-ce-*, ?:\Users\*\AppData\Local\Temp\*\dbeaver-ce-*, ?:\Users\*\Downloads\dbeaver-ce-*, ?:\Users\*\Downloads\dbeaver-ee-*, ?:\ProgramData\chocolatey\lib\dbeaver\tools\dbeaver-ce-*, ?:\Windows\System32\DriverStore\FileRepository\*\DCHUService.exe | excludes:process.parent.executable |