Analytics Story: Linux Persistence Techniques
Description
Monitor for activities and techniques associated with maintaining persistence on a Linux system--a sign that an adversary may have compromised your environment.
Why it matters
Maintaining persistence is one of the first steps taken by attackers after the initial compromise. Attackers leverage various custom and built-in tools to ensure survivability and persistent access within a compromised enterprise. This Analytic Story provides searches to help you identify various behaviors used by attackers to maintain persistent access to a Linux environment.
Correlation Search
Linux Persistence and Privilege Escalation Risk Behavior
1| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as lastTime sum(All_Risk.calculated_risk_score) as risk_score, count(All_Risk.calculated_risk_score) as risk_event_count, values(All_Risk.annotations.mitre_attack.mitre_tactic_id) as annotations.mitre_attack.mitre_tactic_id, dc(All_Risk.annotations.mitre_attack.mitre_tactic_id) as mitre_tactic_id_count, values(All_Risk.annotations.mitre_attack.mitre_technique_id) as annotations.mitre_attack.mitre_technique_id, dc(All_Risk.annotations.mitre_attack.mitre_technique_id) as mitre_technique_id_count, values(All_Risk.tag) as tag, values(source) as source, dc(source) as source_count FROM datamodel=Risk.All_Risk
2 WHERE (
3 All_Risk.analyticstories IN ("Linux Privilege Escalation", "Linux Persistence Techniques")
4 OR
5 source = "*Linux*"
6 )
7 All_Risk.annotations.mitre_attack.mitre_tactic IN ("persistence", "privilege-escalation") All_Risk.risk_object_type="system"
8 BY All_Risk.risk_object All_Risk.risk_object_type All_Risk.annotations.mitre_attack.mitre_tactic
9| `drop_dm_object_name(All_Risk)`
10| `security_content_ctime(firstTime)`
11| `security_content_ctime(lastTime)`
12| where source_count >= 4
13| `linux_persistence_and_privilege_escalation_risk_behavior_filter`
Detections
Data Sources
| Name | Platform | Sourcetype | Source |
|---|---|---|---|
| Sysmon for Linux EventID 1 | sysmon:linux |
Syslog:Linux-Sysmon/Operational |
|
| Linux Auditd Syscall | auditd |
auditd |
|
| Linux Auditd Proctitle | auditd |
auditd |
|
| Linux Auditd Execve | auditd |
auditd |
|
| Linux Auditd Service Stop | auditd |
auditd |
|
| Sysmon for Linux EventID 11 | sysmon:linux |
Syslog:Linux-Sysmon/Operational |
|
| Sysmon EventID 1 | XmlWinEventLog |
XmlWinEventLog:Microsoft-Windows-Sysmon/Operational |
|
| Linux Auditd Path | auditd |
auditd |
|
| Linux Auditd Cwd | auditd |
auditd |
|
| Linux Auditd Add User | auditd |
auditd |
|
| Cisco Isovalent Process Exec | Other | cisco:isovalent:processExec |
not_applicable |
References
- https://gtfobins.github.io/gtfobins/at/
- https://attack.mitre.org/techniques/T1053/
- https://kifarunix.com/scheduling-tasks-using-at-command-in-linux/
- https://www.cert.ssi.gouv.fr/uploads/CERTFR-2021-CTI-005.pdf
Source: GitHub | Version: 2