Skip to content

Commit f4a022c

Browse files
w0rk3rAegrah
andauthored
[Rule Tuning] Linux 3rd Party EDR Support - Crowdstrike and S1 - 5 (#4346)
* [Rule Tuning] Linux 3rd Party EDR Support - Crowdstrike and S1 - X * Update rules/linux/defense_evasion_directory_creation_in_bin.toml Co-authored-by: Ruben Groenewoud <[email protected]> * Update rules/linux/defense_evasion_mount_execution.toml Co-authored-by: Ruben Groenewoud <[email protected]> --------- Co-authored-by: Ruben Groenewoud <[email protected]>
1 parent 2af2e1f commit f4a022c

10 files changed

+106
-57
lines changed

rules/linux/defense_evasion_clear_kernel_ring_buffer.toml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2023/10/24"
3-
integration = ["endpoint", "auditd_manager"]
3+
integration = ["endpoint", "auditd_manager", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/05/21"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -11,7 +13,7 @@ Monitors for the deletion of the kernel ring buffer events through dmesg. Attack
1113
to evade detection after installing a Linux kernel module (LKM).
1214
"""
1315
from = "now-9m"
14-
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*"]
16+
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
1517
language = "eql"
1618
license = "Elastic License v2"
1719
name = "Attempt to Clear Kernel Ring Buffer"
@@ -51,12 +53,14 @@ tags = [
5153
"Data Source: Elastic Defend",
5254
"Data Source: Elastic Endgame",
5355
"Data Source: Auditd Manager",
56+
"Data Source: Crowdstrike",
57+
"Data Source: SentinelOne",
5458
]
5559
timestamp_override = "event.ingested"
5660
type = "eql"
5761

5862
query = '''
59-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "executed", "process_started")
63+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "start", "ProcessRollup2", "executed", "process_started")
6064
and process.name == "dmesg" and process.args == "-c"
6165
'''
6266

rules/linux/defense_evasion_directory_creation_in_bin.toml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2024/11/01"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/11/01"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -12,7 +14,7 @@ files that are required for the system to function properly. The creation of dir
1214
attempt to hide malicious files or executables, as these /bin directories usually just contain binaries.
1315
"""
1416
from = "now-9m"
15-
index = ["logs-endpoint.events.*"]
17+
index = ["logs-endpoint.events.*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*", "endgame-*"]
1618
language = "eql"
1719
license = "Elastic License v2"
1820
name = "Directory Creation in /bin directory"
@@ -51,12 +53,16 @@ tags = [
5153
"Tactic: Defense Evasion",
5254
"Tactic: Persistence",
5355
"Data Source: Elastic Defend",
56+
"Data Source: Crowdstrike",
57+
"Data Source: SentinelOne",
58+
"Data Source: Elastic Endgame",
5459
]
5560
timestamp_override = "event.ingested"
5661
type = "eql"
5762
query = '''
58-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.name == "mkdir" and
59-
process.args like ("/bin/*", "/usr/bin/*", "/usr/local/bin/*", "/sbin/*", "/usr/sbin/*", "/usr/local/sbin/*") and
63+
process where host.os.type == "linux" and event.type == "start" and
64+
event.action in ("exec", "start", "ProcessRollup2", "exec_event") and process.name == "mkdir" and
65+
process.args like ("/bin/*", "/usr/bin/*", "/usr/local/bin/*", "/sbin/*", "/usr/sbin/*", "/usr/local/sbin/*") and
6066
not process.args in ("/bin/mkdir", "/usr/bin/mkdir", "/usr/local/bin/mkdir")
6167
'''
6268

rules/linux/defense_evasion_disable_apparmor_attempt.toml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2023/08/28"
3-
integration = ["endpoint", "auditd_manager"]
3+
integration = ["endpoint", "auditd_manager", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/08/08"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -12,7 +14,7 @@ fine-grained access control policies to restrict the actions and resources that
1214
access. Adversaries may disable security tools to avoid possible detection of their tools and activities.
1315
"""
1416
from = "now-9m"
15-
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*"]
17+
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
1618
language = "eql"
1719
license = "Elastic License v2"
1820
name = "Potential Disabling of AppArmor"
@@ -52,12 +54,15 @@ tags = [
5254
"Data Source: Elastic Defend",
5355
"Data Source: Elastic Endgame",
5456
"Data Source: Auditd Manager",
57+
"Data Source: Crowdstrike",
58+
"Data Source: SentinelOne",
5559
]
5660
timestamp_override = "event.ingested"
5761
type = "eql"
5862
query = '''
59-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "executed", "process_started")
60-
and (
63+
process where host.os.type == "linux" and event.type == "start" and
64+
event.action in ("exec", "exec_event", "start", "ProcessRollup2", "executed", "process_started") and
65+
(
6166
(process.name == "systemctl" and process.args in ("stop", "disable", "kill") and process.args in ("apparmor", "apparmor.service")) or
6267
(process.name == "service" and process.args == "apparmor" and process.args == "stop") or
6368
(process.name == "chkconfig" and process.args == "apparmor" and process.args == "off") or

rules/linux/defense_evasion_disable_selinux_attempt.toml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2020/04/22"
3-
integration = ["endpoint", "auditd_manager"]
3+
integration = ["endpoint", "auditd_manager", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/05/21"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -12,7 +14,7 @@ support access control policies. Adversaries may disable security tools to avoid
1214
activities.
1315
"""
1416
from = "now-9m"
15-
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*"]
17+
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
1618
language = "eql"
1719
license = "Elastic License v2"
1820
name = "Potential Disabling of SELinux"
@@ -64,13 +66,16 @@ tags = [
6466
"Data Source: Elastic Endgame",
6567
"Data Source: Elastic Defend",
6668
"Data Source: Auditd Manager",
69+
"Data Source: Crowdstrike",
70+
"Data Source: SentinelOne",
6771
]
6872
timestamp_override = "event.ingested"
6973
type = "eql"
7074

7175
query = '''
72-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "executed", "process_started")
73-
and process.name == "setenforce" and process.args == "0"
76+
process where host.os.type == "linux" and event.type == "start" and
77+
event.action in ("exec", "exec_event", "start", "ProcessRollup2", "executed", "process_started") and
78+
process.name == "setenforce" and process.args == "0"
7479
'''
7580

7681

rules/linux/defense_evasion_esxi_suspicious_timestomp_touch.toml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2023/04/11"
3-
integration = ["endpoint", "auditd_manager"]
3+
integration = ["endpoint", "auditd_manager", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/05/21"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -14,7 +16,7 @@ their presence in the touch command arguments may indicate that a threat actor i
1416
of VM-related files and configurations on the system.
1517
"""
1618
from = "now-9m"
17-
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*"]
19+
index = ["logs-endpoint.events.*", "endgame-*", "auditbeat-*", "logs-auditd_manager.auditd-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
1820
language = "eql"
1921
license = "Elastic License v2"
2022
name = "ESXI Timestomping using Touch Command"
@@ -57,14 +59,16 @@ tags = [
5759
"Data Source: Elastic Endgame",
5860
"Data Source: Elastic Defend",
5961
"Data Source: Auditd Manager",
62+
"Data Source: Crowdstrike",
63+
"Data Source: SentinelOne",
6064
]
6165
timestamp_override = "event.ingested"
6266
type = "eql"
6367

6468
query = '''
65-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "executed", "process_started")
66-
and process.name == "touch" and process.args == "-r" and
67-
process.args : ("/etc/vmware/*", "/usr/lib/vmware/*", "/vmfs/*")
69+
process where host.os.type == "linux" and event.type == "start" and
70+
event.action in ("exec", "exec_event", "start", "ProcessRollup2", "executed", "process_started") and
71+
process.name == "touch" and process.args == "-r" and process.args : ("/etc/vmware/*", "/usr/lib/vmware/*", "/vmfs/*")
6872
'''
6973

7074

rules/linux/defense_evasion_hex_payload_execution.toml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2024/11/04"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/11/04"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -11,7 +13,7 @@ This rule detects potential hex payload execution on Linux systems. Adversaries
1113
and evade detection mechanisms.
1214
"""
1315
from = "now-9m"
14-
index = ["logs-endpoint.events.process*"]
16+
index = ["logs-endpoint.events.process*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*", "endgame-*"]
1517
language = "eql"
1618
license = "Elastic License v2"
1719
name = "Potential Hex Payload Execution"
@@ -50,18 +52,23 @@ tags = [
5052
"Tactic: Defense Evasion",
5153
"Tactic: Execution",
5254
"Data Source: Elastic Defend",
55+
"Data Source: Crowdstrike",
56+
"Data Source: SentinelOne",
57+
"Data Source: Elastic Endgame",
5358
]
5459
timestamp_override = "event.ingested"
5560
type = "eql"
5661
query = '''
57-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and (
58-
(process.name == "xxd" and process.args like ("-r*", "-p*")) or
59-
(process.name like "python*" and process.command_line like "*fromhex*" and process.command_line like ("*decode*", "*encode*")) or
60-
(process.name like "php*" and process.command_line like "*hex2bin*") or
61-
(process.name like "ruby*" and process.command_line like "*].pack(\"H*\")*") or
62-
(process.name like "perl*" and process.command_line like "*pack(\"H*\",*") or
63-
(process.name like "lua*" and process.command_line like "*tonumber(cc, 16)*")
64-
)
62+
process where host.os.type == "linux" and event.type == "start" and
63+
event.action in ("exec", "exec_event", "start", "ProcessRollup2") and
64+
(
65+
(process.name == "xxd" and process.args like ("-r*", "-p*")) or
66+
(process.name like "python*" and process.command_line like "*fromhex*" and process.command_line like ("*decode*", "*encode*")) or
67+
(process.name like "php*" and process.command_line like "*hex2bin*") or
68+
(process.name like "ruby*" and process.command_line like "*].pack(\"H*\")*") or
69+
(process.name like "perl*" and process.command_line like "*pack(\"H*\",*") or
70+
(process.name like "lua*" and process.command_line like "*tonumber(cc, 16)*")
71+
)
6572
'''
6673

6774
[[rule.threat]]

rules/linux/defense_evasion_hidden_directory_creation.toml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2024/11/01"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/11/01"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -18,7 +20,7 @@ false_positives = [
1820
""",
1921
]
2022
from = "now-9m"
21-
index = ["logs-endpoint.events.*"]
23+
index = ["logs-endpoint.events.*", "logs-sentinel_one_cloud_funnel.*", "endgame-*"]
2224
language = "eql"
2325
license = "Elastic License v2"
2426
name = "Hidden Directory Creation via Unusual Parent"
@@ -57,11 +59,13 @@ tags = [
5759
"Tactic: Defense Evasion",
5860
"Data Source: Elastic Defend",
5961
"Tactic: Persistence",
62+
"Data Source: SentinelOne",
63+
"Data Source: Elastic Endgame",
6064
]
6165
timestamp_override = "event.ingested"
6266
type = "eql"
6367
query = '''
64-
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and
68+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "start", "exec_event") and
6569
process.name == "mkdir" and process.parent.executable like (
6670
"/dev/shm/*", "/tmp/*", "/var/tmp/*", "/var/run/*", "/root/*", "/boot/*", "/var/www/html/*", "/opt/.*"
6771
) and process.args like (".*", "/*/.*") and process.args_count <= 3 and not (

rules/linux/defense_evasion_kernel_module_removal.toml

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2020/04/24"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/10/17"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -18,7 +20,7 @@ false_positives = [
1820
""",
1921
]
2022
from = "now-9m"
21-
index = ["logs-endpoint.events.*", "endgame-*"]
23+
index = ["logs-endpoint.events.*", "endgame-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
2224
language = "eql"
2325
license = "Elastic License v2"
2426
name = "Kernel Module Removal"
@@ -58,14 +60,19 @@ tags = [
5860
"Tactic: Defense Evasion",
5961
"Data Source: Elastic Endgame",
6062
"Data Source: Elastic Defend",
63+
"Data Source: Crowdstrike",
64+
"Data Source: SentinelOne",
6165
]
6266
timestamp_override = "event.ingested"
6367
type = "eql"
6468
query = '''
65-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event") and (
66-
process.name == "rmmod" or
67-
(process.name == "modprobe" and process.args in ("--remove", "-r"))
68-
) and process.parent.name in ("sudo", "bash", "dash", "ash", "sh", "tcsh", "csh", "zsh", "ksh", "fish")
69+
process where host.os.type == "linux" and event.type == "start" and
70+
event.action in ("exec", "exec_event", "start", "ProcessRollup2") and
71+
(
72+
process.name == "rmmod" or
73+
(process.name == "modprobe" and process.args in ("--remove", "-r"))
74+
) and
75+
process.parent.name in ("sudo", "bash", "dash", "ash", "sh", "tcsh", "csh", "zsh", "ksh", "fish")
6976
'''
7077

7178
[[rule.threat]]

rules/linux/defense_evasion_kthreadd_masquerading.toml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[metadata]
22
creation_date = "2024/02/01"
3-
integration = ["endpoint"]
3+
integration = ["endpoint", "crowdstrike", "sentinel_one_cloud_funnel"]
44
maturity = "production"
5-
updated_date = "2024/05/21"
5+
min_stack_version = "8.13.0"
6+
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
7+
updated_date = "2025/01/07"
68

79
[rule]
810
author = ["Elastic"]
@@ -12,7 +14,7 @@ as kthreadd and kworker typically do not have process.executable fields associat
1214
hide their malicious programs by masquerading as legitimate kernel processes.
1315
"""
1416
from = "now-9m"
15-
index = ["logs-endpoint.events.*", "endgame-*"]
17+
index = ["logs-endpoint.events.*", "endgame-*", "logs-crowdstrike.fdr*", "logs-sentinel_one_cloud_funnel.*"]
1618
language = "eql"
1719
license = "Elastic License v2"
1820
name = "Executable Masquerading as Kernel Process"
@@ -53,12 +55,14 @@ tags = [
5355
"Tactic: Defense Evasion",
5456
"Data Source: Elastic Defend",
5557
"Data Source: Elastic Endgame",
58+
"Data Source: Crowdstrike",
59+
"Data Source: SentinelOne",
5660
]
5761
timestamp_override = "event.ingested"
5862
type = "eql"
5963

6064
query = '''
61-
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event") and
65+
process where host.os.type == "linux" and event.type == "start" and event.action in ("exec", "exec_event", "start", "ProcessRollup2") and
6266
process.name : ("kworker*", "kthread*") and process.executable != null
6367
'''
6468

0 commit comments

Comments
 (0)