Skip to content

Commit b83128c

Browse files
w0rk3rgithub-actions[bot]
authored andcommitted
[Rule Tuning] 3rd Party EDR Compatibility - 15 (#4040)
* [Rule Tuning] 3rd Party EDR Compatibility - 15 * min_stack for merge, bump updated_date (cherry picked from commit 080a891)
1 parent 14e381e commit b83128c

10 files changed

+102
-97
lines changed

rules/windows/persistence_suspicious_service_created_registry.toml

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

79
[rule]
810
author = ["Elastic"]
@@ -11,7 +13,7 @@ Identifies the creation of a suspicious ImagePath value. This could be an indica
1113
stealthily persist or escalate privileges through abnormal service creation.
1214
"""
1315
from = "now-9m"
14-
index = ["logs-endpoint.events.registry-*", "endgame-*", "logs-windows.sysmon_operational-*", "winlogbeat-*"]
16+
index = ["logs-endpoint.events.registry-*", "endgame-*", "logs-windows.sysmon_operational-*", "winlogbeat-*", "logs-m365_defender.event-*", "logs-sentinel_one_cloud_funnel.*"]
1517
language = "eql"
1618
license = "Elastic License v2"
1719
name = "Suspicious ImagePath Service Creation"
@@ -27,6 +29,8 @@ tags = [
2729
"Data Source: Elastic Endgame",
2830
"Data Source: Elastic Defend",
2931
"Data Source: Sysmon",
32+
"Data Source: Microsoft Defender for Endpoint",
33+
"Data Source: SentinelOne",
3034
]
3135
timestamp_override = "event.ingested"
3236
type = "eql"

rules/windows/persistence_time_provider_mod.toml

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

79
[transform]
810
[[transform.osquery]]
@@ -39,7 +41,7 @@ network devices or clients in the network. Time providers are implemented in the
3941
System32 folder. The service W32Time initiates during the startup of Windows and loads w32time.dll.
4042
"""
4143
from = "now-9m"
42-
index = ["logs-endpoint.events.registry-*", "endgame-*", "logs-windows.sysmon_operational-*", "winlogbeat-*"]
44+
index = ["logs-endpoint.events.registry-*", "endgame-*", "logs-windows.sysmon_operational-*", "winlogbeat-*", "logs-m365_defender.event-*", "logs-sentinel_one_cloud_funnel.*"]
4345
language = "eql"
4446
license = "Elastic License v2"
4547
name = "Potential Persistence via Time Provider Modification"
@@ -106,6 +108,8 @@ tags = [
106108
"Data Source: Elastic Endgame",
107109
"Data Source: Elastic Defend",
108110
"Data Source: Sysmon",
111+
"Data Source: Microsoft Defender for Endpoint",
112+
"Data Source: SentinelOne",
109113
]
110114
timestamp_override = "event.ingested"
111115
type = "eql"
@@ -114,7 +118,8 @@ query = '''
114118
registry where host.os.type == "windows" and event.type == "change" and
115119
registry.path: (
116120
"HKLM\\SYSTEM\\*ControlSet*\\Services\\W32Time\\TimeProviders\\*",
117-
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Services\\W32Time\\TimeProviders\\*"
121+
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Services\\W32Time\\TimeProviders\\*",
122+
"MACHINE\\SYSTEM\\*ControlSet*\\Services\\W32Time\\TimeProviders\\*"
118123
) and
119124
registry.data.strings:"*.dll" and
120125
not

rules/windows/persistence_user_account_creation.toml

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

79
[rule]
810
author = ["Elastic"]
@@ -14,9 +16,12 @@ from = "now-9m"
1416
index = [
1517
"winlogbeat-*",
1618
"logs-endpoint.events.process-*",
17-
"logs-windows.*",
19+
"logs-windows.forwarded*",
20+
"logs-windows.sysmon_operational-*",
1821
"endgame-*",
1922
"logs-system.security*",
23+
"logs-m365_defender.event-*",
24+
"logs-sentinel_one_cloud_funnel.*",
2025
]
2126
language = "eql"
2227
license = "Elastic License v2"
@@ -56,14 +61,6 @@ This rule identifies the usage of `net.exe` to create new accounts.
5661
"""
5762
risk_score = 21
5863
rule_id = "1aa9181a-492b-4c01-8b16-fa0735786b2b"
59-
setup = """## Setup
60-
61-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
62-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
63-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
64-
`event.ingested` to @timestamp.
65-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
66-
"""
6764
severity = "low"
6865
tags = [
6966
"Domain: Endpoint",
@@ -74,6 +71,9 @@ tags = [
7471
"Data Source: Elastic Endgame",
7572
"Data Source: Elastic Defend",
7673
"Data Source: System",
74+
"Data Source: Microsoft Defender for Endpoint",
75+
"Data Source: Sysmon",
76+
"Data Source: SentinelOne",
7777
]
7878
timestamp_override = "event.ingested"
7979
type = "eql"

rules/windows/persistence_via_application_shimming.toml

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

79
[rule]
810
author = ["Elastic"]
@@ -15,23 +17,18 @@ from = "now-9m"
1517
index = [
1618
"winlogbeat-*",
1719
"logs-endpoint.events.process-*",
18-
"logs-windows.*",
20+
"logs-windows.forwarded*",
21+
"logs-windows.sysmon_operational-*",
1922
"endgame-*",
2023
"logs-system.security*",
24+
"logs-m365_defender.event-*",
25+
"logs-sentinel_one_cloud_funnel.*",
2126
]
2227
language = "eql"
2328
license = "Elastic License v2"
2429
name = "Potential Application Shimming via Sdbinst"
2530
risk_score = 21
2631
rule_id = "fd4a992d-6130-4802-9ff8-829b89ae801f"
27-
setup = """## Setup
28-
29-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
30-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
31-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
32-
`event.ingested` to @timestamp.
33-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
34-
"""
3532
severity = "low"
3633
tags = [
3734
"Domain: Endpoint",
@@ -41,6 +38,9 @@ tags = [
4138
"Data Source: Elastic Endgame",
4239
"Data Source: Elastic Defend",
4340
"Data Source: System",
41+
"Data Source: Microsoft Defender for Endpoint",
42+
"Data Source: Sysmon",
43+
"Data Source: SentinelOne",
4444
]
4545
timestamp_override = "event.ingested"
4646
type = "eql"

rules/windows/persistence_via_bits_job_notify_command.toml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
[metadata]
22
creation_date = "2021/12/04"
3-
integration = ["endpoint", "windows", "sentinel_one_cloud_funnel"]
3+
integration = ["endpoint", "windows", "sentinel_one_cloud_funnel", "m365_defender"]
44
maturity = "production"
55
min_stack_comments = "Breaking change at 8.13.0 for SentinelOne Integration."
66
min_stack_version = "8.13.0"
7-
updated_date = "2024/06/11"
7+
updated_date = "2024/10/10"
88

99
[rule]
1010
author = ["Elastic"]
@@ -14,7 +14,7 @@ that runs after a job finishes transferring data or after a job enters a specifi
1414
system.
1515
"""
1616
from = "now-9m"
17-
index = ["logs-endpoint.events.process-*", "winlogbeat-*", "logs-windows.sysmon_operational-*", "endgame-*", "logs-sentinel_one_cloud_funnel.*"]
17+
index = ["logs-endpoint.events.process-*", "winlogbeat-*", "logs-windows.sysmon_operational-*", "endgame-*", "logs-sentinel_one_cloud_funnel.*", "logs-m365_defender.event-*"]
1818
language = "eql"
1919
license = "Elastic License v2"
2020
name = "Persistence via BITS Job Notify Cmdline"
@@ -26,16 +26,8 @@ references = [
2626
]
2727
risk_score = 47
2828
rule_id = "c3b915e0-22f3-4bf7-991d-b643513c722f"
29-
setup = """## Setup
30-
31-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
32-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
33-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
34-
`event.ingested` to @timestamp.
35-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
36-
"""
3729
severity = "medium"
38-
tags = ["Domain: Endpoint", "OS: Windows", "Use Case: Threat Detection", "Tactic: Persistence", "Data Source: Elastic Endgame", "Data Source: Elastic Defend", "Data Source: Sysmon", "Data Source: SentinelOne"]
30+
tags = ["Domain: Endpoint", "OS: Windows", "Use Case: Threat Detection", "Tactic: Persistence", "Data Source: Elastic Endgame", "Data Source: Elastic Defend", "Data Source: Sysmon", "Data Source: SentinelOne", "Data Source: Microsoft Defender for Endpoint"]
3931
timestamp_override = "event.ingested"
4032
type = "eql"
4133

rules/windows/persistence_via_lsa_security_support_provider_registry.toml

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

79
[rule]
810
author = ["Elastic"]
@@ -11,20 +13,12 @@ Identifies registry modifications related to the Windows Security Support Provid
1113
abuse this to establish persistence in an environment.
1214
"""
1315
from = "now-9m"
14-
index = ["winlogbeat-*", "logs-endpoint.events.registry-*", "logs-windows.sysmon_operational-*", "endgame-*"]
16+
index = ["winlogbeat-*", "logs-endpoint.events.registry-*", "logs-windows.sysmon_operational-*", "endgame-*", "logs-m365_defender.event-*", "logs-sentinel_one_cloud_funnel.*"]
1517
language = "eql"
1618
license = "Elastic License v2"
1719
name = "Installation of Security Support Provider"
1820
risk_score = 47
1921
rule_id = "e86da94d-e54b-4fb5-b96c-cecff87e8787"
20-
setup = """## Setup
21-
22-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
23-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
24-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
25-
`event.ingested` to @timestamp.
26-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
27-
"""
2822
severity = "medium"
2923
tags = [
3024
"Domain: Endpoint",
@@ -35,6 +29,8 @@ tags = [
3529
"Data Source: Elastic Endgame",
3630
"Data Source: Elastic Defend",
3731
"Data Source: Sysmon",
32+
"Data Source: Microsoft Defender for Endpoint",
33+
"Data Source: SentinelOne",
3834
]
3935
timestamp_override = "event.ingested"
4036
type = "eql"
@@ -45,7 +41,9 @@ registry where host.os.type == "windows" and event.type == "change" and
4541
"HKLM\\SYSTEM\\*ControlSet*\\Control\\Lsa\\Security Packages*",
4642
"HKLM\\SYSTEM\\*ControlSet*\\Control\\Lsa\\OSConfig\\Security Packages*",
4743
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Control\\Lsa\\Security Packages*",
48-
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Control\\Lsa\\OSConfig\\Security Packages*"
44+
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Control\\Lsa\\OSConfig\\Security Packages*",
45+
"MACHINE\\SYSTEM\\*ControlSet*\\Control\\Lsa\\Security Packages*",
46+
"MACHINE\\SYSTEM\\*ControlSet*\\Control\\Lsa\\OSConfig\\Security Packages*"
4947
) and
5048
not process.executable : ("C:\\Windows\\System32\\msiexec.exe", "C:\\Windows\\SysWOW64\\msiexec.exe")
5149
'''

rules/windows/persistence_via_telemetrycontroller_scheduledtask_hijack.toml

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

79
[rule]
810
author = ["Elastic"]
@@ -14,24 +16,19 @@ from = "now-9m"
1416
index = [
1517
"winlogbeat-*",
1618
"logs-endpoint.events.process-*",
17-
"logs-windows.*",
19+
"logs-windows.forwarded*",
20+
"logs-windows.sysmon_operational-*",
1821
"endgame-*",
1922
"logs-system.security*",
23+
"logs-m365_defender.event-*",
24+
"logs-sentinel_one_cloud_funnel.*",
2025
]
2126
language = "eql"
2227
license = "Elastic License v2"
2328
name = "Persistence via TelemetryController Scheduled Task Hijack"
2429
references = ["https://www.trustedsec.com/blog/abusing-windows-telemetry-for-persistence"]
2530
risk_score = 73
2631
rule_id = "68921d85-d0dc-48b3-865f-43291ca2c4f2"
27-
setup = """## Setup
28-
29-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
30-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
31-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
32-
`event.ingested` to @timestamp.
33-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
34-
"""
3532
severity = "high"
3633
tags = [
3734
"Domain: Endpoint",
@@ -42,6 +39,9 @@ tags = [
4239
"Data Source: Elastic Endgame",
4340
"Data Source: Elastic Defend",
4441
"Data Source: System",
42+
"Data Source: Microsoft Defender for Endpoint",
43+
"Data Source: Sysmon",
44+
"Data Source: SentinelOne",
4545
]
4646
timestamp_override = "event.ingested"
4747
type = "eql"

rules/windows/persistence_via_update_orchestrator_service_hijack.toml

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

79
[transform]
810
[[transform.osquery]]
@@ -37,7 +39,16 @@ Identifies potential hijacking of the Microsoft Update Orchestrator Service to e
3739
level of SYSTEM.
3840
"""
3941
from = "now-9m"
40-
index = ["winlogbeat-*", "logs-endpoint.events.process-*", "logs-windows.*", "endgame-*"]
42+
index = [
43+
"winlogbeat-*",
44+
"logs-endpoint.events.process-*",
45+
"logs-windows.forwarded*",
46+
"logs-windows.sysmon_operational-*",
47+
"endgame-*",
48+
"logs-system.security*",
49+
"logs-m365_defender.event-*",
50+
"logs-sentinel_one_cloud_funnel.*",
51+
]
4152
language = "eql"
4253
license = "Elastic License v2"
4354
name = "Persistence via Update Orchestrator Service Hijack"
@@ -96,14 +107,6 @@ This rule will detect uncommon processes spawned by `svchost.exe` with `UsoSvc`
96107
references = ["https://github.com/irsl/CVE-2020-1313"]
97108
risk_score = 73
98109
rule_id = "265db8f5-fc73-4d0d-b434-6483b56372e2"
99-
setup = """## Setup
100-
101-
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
102-
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
103-
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
104-
`event.ingested` to @timestamp.
105-
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
106-
"""
107110
severity = "high"
108111
tags = [
109112
"Domain: Endpoint",
@@ -115,6 +118,9 @@ tags = [
115118
"Resources: Investigation Guide",
116119
"Data Source: Elastic Endgame",
117120
"Data Source: Elastic Defend",
121+
"Data Source: Microsoft Defender for Endpoint",
122+
"Data Source: Sysmon",
123+
"Data Source: SentinelOne",
118124
]
119125
timestamp_override = "event.ingested"
120126
type = "eql"

0 commit comments

Comments
 (0)