Has used the systemd user service for malware persistence in targeted environments.1
Systemd Service T1543.002
- Tactics
- Persistence, Privilege Escalation
- Platform
- Linux
- Version
- 1.6
- Created
- 17 January 2020
- Last modified
- 12 May 2026
- Contributors
- Tony Lambert, Red Canary; Emad Al-Mousa, Saudi Aramco; Tim (Wadhwa-)Brown; Ruben Groenewoud (@RFGroenewoud)
Adversaries may create or modify systemd services to repeatedly execute malicious payloads as part of persistence. Systemd is a system and service manager commonly used for managing background daemon processes (also known as services) and other system resources.[1] Systemd is the default initialization (init) system on many Linux distributions replacing legacy init systems, including SysVinit and Upstart, while remaining backwards compatible.
Systemd Service MITRE reference T1543.002
4 groups have been recorded using this technique. Newest first; each entry carries MITRE’s procedure text and a link to the group’s full record. Click a name to filter the rules below.
Has run SYSTEMD_UNIT_PATH="/lib/systemd/
system/teleport.service to establish persistence for the Teleport remote access tool.1
Has established persistence through the creation of a cryptocurrency mining system service using systemctl.12
Has installed a systemd service script to maintain persistence.1
All 4 groups for this technique
1 campaign has been recorded using this technique. Listed newest first; dates are year-granularity and attribution is MITRE’s.
During the 2022 Ukraine Electric Power Attack, Sandworm Team configured Systemd to maintain persistence of GOGETTER, specifying the WantedBy=multi-user.target configuration to run GOGETTER when the system begins accepting user logins.1
All 1 campaigns for this technique
11 software entries are documented implementing this technique. MITRE files each as a tool or as malware; newest first, then by how many groups carry them.
Has created .service files using Systemd on victim Linux hosts to establish persistence.123
Can create a systemd unit to execute a python script for persistence.123
Has stopped systemd-resolved in order to manipulate DNS and firewalls.1
Can create a systemd service file for execution.1
Creates a systemd service named syslogd for persistence.1
Depending on the Linux distribution and when executing with root permissions, RotaJakiro may install persistence using a .service file under the /lib/systemd/system/ folder.1
All 11 software entries for this technique · 6 newest in this preview
Offense vs defense T1543.002
Is defensive coverage keeping up with adversary use? Eight counts, each ranked against all 697 ATT&CK techniques. Attack sits left, defense right, so a shape leaning left means adversaries are better documented here than defenders are equipped. Hover any spoke for its percentile and the share of techniques that have more. The timeline below shows when each side arrived.
How it got here
Adversary activity (campaign spans) over cumulative rule output. Each source is plotted independently from zero, so neither line includes the other. Campaign dates are year-granularity.
Systemd Service detection strategy DET0253
MITRE names one behaviour worth catching for this technique and breaks it into 1 analytic, one per platform. Each carries the log sources it needs and the fields you tune per environment.
Detection of Systemd Service Creation or Modification on Linux
AN0701 · Linux
Detects the creation or modification of .service unit files in system/user-level directories, combined with execution of systemctl, service, or dynamically created drop-ins via systemd generators. Detects persistence by analyzing the ExecStart path, file entropy, and symlink usage, especially when paired with execution from /tmp, /dev/shm, or unmounted volumes.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Process CreationDC0032 | auditd:SYSCALL | fork/exec of service via PID 1 (systemd) |
| File CreationDC0039 | auditd:SYSCALL | write, open, or rename to /etc/systemd/system/*.service |
| Service CreationDC0060 | linux:osquery | newly registered unit file with ExecStart pointing to unknown binary |
| File ModificationDC0061 | auditd:SYSCALL | modification of existing .service file |
| Command ExecutionDC0064 | auditd:SYSCALL | execution of systemctl or service with enable/start parameters |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| ServicePathRegex | Regex filters for systemd unit locations (e.g., /etc/systemd/system/*.service, /lib/systemd/system/) |
| ExecStartPathAllowlist | Allowlist of trusted ExecStart binary paths (e.g., /usr/bin/, /bin/) |
| UserContextFilter | List of usernames that are authorized to define user-level services |
| FileEntropyThreshold | Entropy level of binaries referenced in ExecStart to detect packed or obfuscated payloads |
| SystemctlOperationSet | Flags suspicious combinations such as systemctl enable + systemctl start within short interval |
Restrict software installation to trusted repositories only and be cautious of orphaned software packages.
The creation and modification of systemd service unit files is generally reserved for administrators such as the Linux root user and other users with superuser privileges.
Restrict read/write access to systemd unit files to only select privileged users who have a legitimate need to manage system services.
Limit user access to system utilities such as systemctl to only users who have a legitimate need.
Tests from Atomic Red Team (MIT licence) · technique definition