Skip to content

Commit 37e18af

Browse files
authored
[Rule Tuning] Adds Crowdstrike Compatibility to Linux Process Rules (#5232)
* First batch * Second batch * Batch 2
1 parent bb38e25 commit 37e18af

File tree

33 files changed

+428
-387
lines changed

33 files changed

+428
-387
lines changed

rules/linux/command_and_control_aws_cli_endpoint_url_used.toml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
[metadata]
22
creation_date = "2024/08/21"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/01/15"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
99
description = """
1010
Detects the use of the AWS CLI with the `--endpoint-url` argument, which allows users to specify a custom endpoint URL for AWS services. This can be leveraged by adversaries to redirect API requests to non-standard or malicious endpoints, potentially bypassing typical security controls and logging mechanisms. This behavior may indicate an attempt to interact with unauthorized or compromised infrastructure, exfiltrate data, or perform other malicious activities under the guise of legitimate AWS operations.
1111
"""
1212
from = "now-9m"
13-
index = ["logs-endpoint.events.process-*"]
13+
index = ["logs-endpoint.events.process-*", "logs-crowdstrike.fdr*"]
1414
language = "kuery"
1515
license = "Elastic License v2"
1616
name = "AWS CLI Command with Custom Endpoint URL"
@@ -21,12 +21,13 @@ risk_score = 47
2121
rule_id = "349276c0-5fcf-11ef-b1a9-f661ea17fbce"
2222
severity = "medium"
2323
tags = [
24-
"Data Source: Elastic Defend",
25-
"Domain: Endpoint",
26-
"OS: Linux",
27-
"Use Case: Threat Detection",
28-
"Tactic: Command and Control",
29-
"Resources: Investigation Guide",
24+
"Data Source: Elastic Defend",
25+
"Domain: Endpoint",
26+
"OS: Linux",
27+
"Use Case: Threat Detection",
28+
"Tactic: Command and Control",
29+
"Resources: Investigation Guide",
30+
"Data Source: Crowdstrike",
3031
]
3132
type = "new_terms"
3233
timestamp_override = "event.ingested"

rules/linux/command_and_control_curl_wget_spawn_via_nodejs_parent.toml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/09/18"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/10/06"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -12,7 +12,7 @@ command and control behavior. Adversaries may use Node.js to download additional
1212
the system.
1313
"""
1414
from = "now-9m"
15-
index = ["logs-endpoint.events.process*"]
15+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1616
language = "eql"
1717
license = "Elastic License v2"
1818
name = "Curl or Wget Spawned via Node.js"
@@ -75,17 +75,18 @@ For more details on Elastic Defend refer to the [helper guide](https://www.elast
7575
"""
7676
severity = "low"
7777
tags = [
78-
"Domain: Endpoint",
79-
"OS: Linux",
80-
"Use Case: Threat Detection",
81-
"Tactic: Command and Control",
82-
"Data Source: Elastic Defend",
83-
"Resources: Investigation Guide",
78+
"Domain: Endpoint",
79+
"OS: Linux",
80+
"Use Case: Threat Detection",
81+
"Tactic: Command and Control",
82+
"Data Source: Elastic Defend",
83+
"Resources: Investigation Guide",
84+
"Data Source: Crowdstrike",
8485
]
8586
timestamp_override = "event.ingested"
8687
type = "eql"
8788
query = '''
88-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.parent.name == "node" and (
89+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and process.parent.name == "node" and (
8990
(
9091
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and
9192
process.args == "-c" and process.command_line like~ ("*curl*", "*wget*")

rules/linux/command_and_control_ip_forwarding_activity.toml

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2024/11/04"
3-
integration = ["endpoint", "sentinel_one_cloud_funnel"]
3+
integration = ["endpoint", "sentinel_one_cloud_funnel", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/03/20"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -12,7 +12,7 @@ forwarding can be used to route network traffic between different network interf
1212
pivot between networks, exfiltrate data, or establish command and control channels.
1313
"""
1414
from = "now-9m"
15-
index = ["endgame-*", "logs-endpoint.events.process*", "logs-sentinel_one_cloud_funnel.*"]
15+
index = ["endgame-*", "logs-endpoint.events.process*", "logs-sentinel_one_cloud_funnel.*", "logs-crowdstrike.fdr*"]
1616
language = "eql"
1717
license = "Elastic License v2"
1818
name = "IPv4/IPv6 Forwarding Activity"
@@ -55,21 +55,22 @@ risk_score = 21
5555
rule_id = "5a138e2e-aec3-4240-9843-56825d0bc569"
5656
severity = "low"
5757
tags = [
58-
"Domain: Endpoint",
59-
"OS: Linux",
60-
"Use Case: Threat Detection",
61-
"Tactic: Command and Control",
62-
"Data Source: Elastic Defend",
63-
"Data Source: SentinelOne",
64-
"Data Source: Elastic Endgame",
65-
"Resources: Investigation Guide",
58+
"Domain: Endpoint",
59+
"OS: Linux",
60+
"Use Case: Threat Detection",
61+
"Tactic: Command and Control",
62+
"Data Source: Elastic Defend",
63+
"Data Source: SentinelOne",
64+
"Data Source: Elastic Endgame",
65+
"Resources: Investigation Guide",
66+
"Data Source: Crowdstrike",
6667
]
6768
timestamp_override = "event.ingested"
6869
type = "eql"
6970

7071
query = '''
71-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "start", "exec_event") and
72-
process.parent.executable != null and process.command_line like (
72+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "start", "exec_event", "ProcessRollup2") and
73+
?process.parent.executable != null and process.command_line like (
7374
"*net.ipv4.ip_forward*", "*/proc/sys/net/ipv4/ip_forward*", "*net.ipv6.conf.all.forwarding*",
7475
"*/proc/sys/net/ipv6/conf/all/forwarding*"
7576
) and (

rules/linux/command_and_control_telegram_api_request.toml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/04/29"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/07/07"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -11,7 +11,7 @@ This rule detects when a process executes the curl or wget command with an argum
1111
api.telegram.org domain. This may indicate command and control behavior.
1212
"""
1313
from = "now-9m"
14-
index = ["logs-endpoint.events.process*"]
14+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1515
language = "eql"
1616
license = "Elastic License v2"
1717
name = "Linux Telegram API Request"
@@ -91,17 +91,18 @@ For more information on capturing environment variables refer to the [helper gui
9191
"""
9292
severity = "low"
9393
tags = [
94-
"Domain: Endpoint",
95-
"OS: Linux",
96-
"Use Case: Threat Detection",
97-
"Tactic: Command and Control",
98-
"Data Source: Elastic Defend",
99-
"Resources: Investigation Guide",
94+
"Domain: Endpoint",
95+
"OS: Linux",
96+
"Use Case: Threat Detection",
97+
"Tactic: Command and Control",
98+
"Data Source: Elastic Defend",
99+
"Resources: Investigation Guide",
100+
"Data Source: Crowdstrike",
100101
]
101102
timestamp_override = "event.ingested"
102103
type = "eql"
103104
query = '''
104-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and
105+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and
105106
process.name in ("curl", "wget") and process.command_line like "*api.telegram.org*"
106107
'''
107108

rules/linux/credential_access_gh_auth_via_nodejs.toml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/09/18"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/09/18"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -15,7 +15,7 @@ may use this technique to access GitHub repositories and potentially exfiltrate
1515
perform malicious actions. This activity was observed in the wild as part of the Shai-Hulud worm.
1616
"""
1717
from = "now-9m"
18-
index = ["logs-endpoint.events.process*"]
18+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1919
language = "eql"
2020
license = "Elastic License v2"
2121
name = "GitHub Authentication Token Access via Node.js"
@@ -49,18 +49,19 @@ For more details on Elastic Defend refer to the [helper guide](https://www.elast
4949
"""
5050
severity = "medium"
5151
tags = [
52-
"Domain: Endpoint",
53-
"OS: Linux",
54-
"Use Case: Threat Detection",
55-
"Tactic: Credential Access",
56-
"Tactic: Discovery",
57-
"Data Source: Elastic Defend",
58-
"Resources: Investigation Guide",
52+
"Domain: Endpoint",
53+
"OS: Linux",
54+
"Use Case: Threat Detection",
55+
"Tactic: Credential Access",
56+
"Tactic: Discovery",
57+
"Data Source: Elastic Defend",
58+
"Resources: Investigation Guide",
59+
"Data Source: Crowdstrike",
5960
]
6061
timestamp_override = "event.ingested"
6162
type = "eql"
6263
query = '''
63-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.parent.name == "node" and
64+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and process.parent.name == "node" and
6465
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and process.args == "gh auth token"
6566
'''
6667

rules/linux/defense_evasion_hex_payload_execution_via_commandline.toml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/04/29"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/07/07"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -11,7 +11,7 @@ This rule detects when a process executes a command line containing hexadecimal
1111
hexadecimal encoding to obfuscate their payload and evade detection.
1212
"""
1313
from = "now-9m"
14-
index = ["logs-endpoint.events.process*"]
14+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1515
language = "eql"
1616
license = "Elastic License v2"
1717
name = "Potential Hex Payload Execution via Command-Line"
@@ -78,19 +78,20 @@ For more details on Elastic Defend refer to the [helper guide](https://www.elast
7878
"""
7979
severity = "low"
8080
tags = [
81-
"Domain: Endpoint",
82-
"OS: Linux",
83-
"Use Case: Threat Detection",
84-
"Tactic: Defense Evasion",
85-
"Tactic: Execution",
86-
"Data Source: Elastic Defend",
87-
"Resources: Investigation Guide",
81+
"Domain: Endpoint",
82+
"OS: Linux",
83+
"Use Case: Threat Detection",
84+
"Tactic: Defense Evasion",
85+
"Tactic: Execution",
86+
"Data Source: Elastic Defend",
87+
"Resources: Investigation Guide",
88+
"Data Source: Crowdstrike",
8889
]
8990
timestamp_override = "event.ingested"
9091
type = "eql"
9192
query = '''
92-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and
93-
process.parent.executable != null and
93+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and
94+
?process.parent.executable != null and
9495
process.command_line : "*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*\\x*" and
9596
length(process.command_line) > 50
9697
'''

rules/linux/defense_evasion_interpreter_launched_from_decoded_payload.toml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/02/21"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/04/07"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -12,7 +12,7 @@ base64 encoding to obfuscate data and pipe it to an interpreter to execute malic
1212
be used to evade detection by host- or network-based security controls.
1313
"""
1414
from = "now-9m"
15-
index = ["logs-endpoint.events.process*"]
15+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1616
language = "eql"
1717
license = "Elastic License v2"
1818
name = "Base64 Decoded Payload Piped to Interpreter"
@@ -81,19 +81,20 @@ For more details on Elastic Defend refer to the [helper guide](https://www.elast
8181
"""
8282
severity = "medium"
8383
tags = [
84-
"Domain: Endpoint",
85-
"OS: Linux",
86-
"Use Case: Threat Detection",
87-
"Tactic: Defense Evasion",
88-
"Tactic: Execution",
89-
"Data Source: Elastic Defend",
90-
"Resources: Investigation Guide",
84+
"Domain: Endpoint",
85+
"OS: Linux",
86+
"Use Case: Threat Detection",
87+
"Tactic: Defense Evasion",
88+
"Tactic: Execution",
89+
"Data Source: Elastic Defend",
90+
"Resources: Investigation Guide",
91+
"Data Source: Crowdstrike",
9192
]
9293
timestamp_override = "event.ingested"
9394
type = "eql"
9495
query = '''
9596
sequence by host.id, process.parent.entity_id with maxspan=3s
96-
[process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and (
97+
[process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and (
9798
(process.name in ("base64", "base64plain", "base64url", "base64mime", "base64pem", "base32", "base16") and process.command_line like~ "*-*d*") or
9899
(process.name == "openssl" and process.args == "enc" and process.args in ("-d", "-base64", "-a")) or
99100
(process.name like "python*" and
@@ -103,7 +104,7 @@ sequence by host.id, process.parent.entity_id with maxspan=3s
103104
(process.name like "perl*" and process.command_line like~ "*decode_base64*") or
104105
(process.name like "ruby*" and process.args == "-e" and process.command_line like~ "*Base64.decode64*")
105106
)]
106-
[process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.name like~ (
107+
[process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "ProcessRollup2") and process.name like~ (
107108
"bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish", "python*", "perl*", "ruby*", "lua*", "php*"
108109
)]
109110
'''

rules/linux/defense_evasion_ld_preload_cmdline.toml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[metadata]
22
creation_date = "2025/04/30"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike"]
44
maturity = "production"
5-
updated_date = "2025/07/07"
5+
updated_date = "2025/10/17"
66

77
[rule]
88
author = ["Elastic"]
@@ -12,7 +12,7 @@ This behavior is unusual and may indicate an attempt to hijack the execution flo
1212
this technique to evade defenses, escalate privileges, or maintain persistence on a system.
1313
"""
1414
from = "now-9m"
15-
index = ["logs-endpoint.events.process*"]
15+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*"]
1616
language = "kuery"
1717
license = "Elastic License v2"
1818
name = "Unusual LD_PRELOAD/LD_LIBRARY_PATH Command Line Arguments"
@@ -80,18 +80,19 @@ For more details on Elastic Defend refer to the [helper guide](https://www.elast
8080
"""
8181
severity = "low"
8282
tags = [
83-
"Domain: Endpoint",
84-
"OS: Linux",
85-
"Use Case: Threat Detection",
86-
"Tactic: Defense Evasion",
87-
"Tactic: Persistence",
88-
"Data Source: Elastic Defend",
89-
"Resources: Investigation Guide",
83+
"Domain: Endpoint",
84+
"OS: Linux",
85+
"Use Case: Threat Detection",
86+
"Tactic: Defense Evasion",
87+
"Tactic: Persistence",
88+
"Data Source: Elastic Defend",
89+
"Resources: Investigation Guide",
90+
"Data Source: Crowdstrike",
9091
]
9192
timestamp_override = "event.ingested"
9293
type = "new_terms"
9394
query = '''
94-
host.os.type:linux and event.category:process and event.type:start and event.action:exec and
95+
host.os.type:linux and event.category:process and event.type:start and event.action:(exec or ProcessRollup2) and
9596
process.parent.name:(* and not (
9697
awk or bwrap or cylancesvc or dbus-run-session or java or julia or make or matlab_helper or ninja or noproc_sandbox or
9798
nxrunner or nxserver or perl or rear or sapcontrol or setsid or spoold or sshd or steam or su or sudo or titanagent or

0 commit comments

Comments
 (0)