[New Rule] New Systemd Timer Created (#2601)

* [New Rule] New Systemd Timer Created

* improve query runtime performance

* added process.name entries for alert reduction

* attempt to fix gh unit testing failure

* added host.os.type==linux to fix unit test error

* Added OSQuery to investigation guides

* added additional process names

* removed investigation guides to add in future PR

* removed investigation guide tag

* Changed rule to new_terms rule to reduce FPs

* fixed query

* formatting fix

* Learnt another thing about KQL.. Formatting fix.

* unit test fix

* Update rules/linux/persistence_systemd_scheduled_timer_created.toml

Co-authored-by: eric-forte-elastic <119343520+eric-forte-elastic@users.noreply.github.com>

---------

Co-authored-by: Mika Ayenson <Mikaayenson@users.noreply.github.com>
Co-authored-by: eric-forte-elastic <119343520+eric-forte-elastic@users.noreply.github.com>
This commit is contained in:
Ruben Groenewoud
2023-06-13 09:15:47 +02:00
committed by GitHub
parent 450e84ffa2
commit 644d2f5b26
@@ -0,0 +1,64 @@
[metadata]
creation_date = "2023/02/24"
integration = ["endpoint"]
maturity = "production"
min_stack_comments = "New fields added: required_fields, related_integrations, setup, New Term"
min_stack_version = "8.6.0"
updated_date = "2023/04/05"
[rule]
author = ["Elastic"]
description = """
Detects the creation of a systemd timer within any of the default systemd timer directories. Systemd timers can be used
by an attacker to gain persistence, by scheduling the execution of a command or script. Similarly to cron/at, systemd
timers can be set up to execute on boot time, or on a specific point in time, which allows attackers to regain access in
case the connection to the infected asset was lost.
"""
from = "now-9m"
index = ["logs-endpoint.events.*", "endgame-*"]
language = "kuery"
license = "Elastic License v2"
name = "New Systemd Timer Created"
references = [
"https://opensource.com/article/20/7/systemd-timers",
"https://pberba.github.io/security/2022/01/30/linux-threat-hunting-for-persistence-systemd-timers-cron/"
]
risk_score = 21
rule_id = "7fb500fa-8e24-4bd1-9480-2a819352602c"
severity = "low"
tags = ["Elastic", "Host", "Linux", "Threat Detection", "Persistence", "Elastic Endgame"]
timestamp_override = "event.ingested"
type = "new_terms"
query = '''
host.os.type : "linux" and event.action : ("creation" or "file_create_event") and file.extension : "timer" and
file.path : (/etc/systemd/system/* or /usr/local/lib/systemd/system/* or /lib/systemd/system/* or
/usr/lib/systemd/system/* or /home/*/.config/systemd/user/*) and not
process.executable : ("/usr/bin/dpkg" or "/usr/bin/dockerd" or "/bin/rpm")
'''
[[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.006"
name = "Systemd Timers"
reference = "https://attack.mitre.org/techniques/T1053/006/"
[rule.threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"
[rule.new_terms]
field = "new_terms_fields"
value = ["file.path", "process.name"]
[[rule.new_terms.history_window_start]]
field = "history_window_start"
value = "now-7d"