/
persistence_local_scheduled_job_creation.toml
72 lines (63 loc) · 2.7 KB
/
persistence_local_scheduled_job_creation.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[metadata]
creation_date = "2021/03/15"
integration = ["endpoint", "windows", "sentinel_one_cloud_funnel"]
maturity = "production"
min_stack_comments = "SentinelOne integration package minimum version for validation."
min_stack_version = "8.11.0"
updated_date = "2024/05/16"
[rule]
author = ["Elastic"]
description = """
A job can be used to schedule programs or scripts to be executed at a specified date and time. Adversaries may abuse
task scheduling functionality to facilitate initial or recurring execution of malicious code.
"""
false_positives = ["Legitimate scheduled jobs may be created during installation of new software."]
from = "now-9m"
index = ["winlogbeat-*", "logs-endpoint.events.file-*", "logs-windows.sysmon_operational-*", "endgame-*", "logs-sentinel_one_cloud_funnel.*"]
language = "eql"
license = "Elastic License v2"
name = "Persistence via Scheduled Job Creation"
risk_score = 47
rule_id = "1327384f-00f3-44d5-9a8c-2373ba071e92"
setup = """## Setup
If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
`event.ingested` to @timestamp.
For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
"""
severity = "medium"
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"]
timestamp_override = "event.ingested"
type = "eql"
query = '''
file where host.os.type == "windows" and event.type != "deletion" and
file.path : "?:\\Windows\\Tasks\\*" and file.extension : "job" and
not (
(
process.executable : "?:\\Program Files\\CCleaner\\CCleaner64.exe" and
file.path : "?:\\Windows\\Tasks\\CCleanerCrashReporting.job"
) or
(
process.executable : (
"?:\\Program Files (x86)\\ManageEngine\\UEMS_Agent\\bin\\dcagentregister.exe",
"?:\\Program Files (x86)\\DesktopCentral_Agent\\bin\\dcagentregister.exe"
) and
file.path : "?:\\Windows\\Tasks\\DCAgentUpdater.job"
)
)
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1053"
name = "Scheduled Task/Job"
reference = "https://attack.mitre.org/techniques/T1053/"
[[rule.threat.technique.subtechnique]]
id = "T1053.005"
name = "Scheduled Task"
reference = "https://attack.mitre.org/techniques/T1053/005/"
[rule.threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"