Can establish persistence in CI/CD environments by launching a background process (deploy.js) with stolen tokens.1
Create or Modify System Process T1543
- Tactics
- Persistence, Privilege Escalation
- Platforms
- Containers, Linux, macOS, Windows
- Version
- 1.2
- Created
- 10 January 2020
- Last modified
- 12 May 2026
Adversaries may create or modify system-level processes to repeatedly execute malicious payloads as part of persistence. When operating systems boot up, they can start processes that perform background system functions. On Windows and Linux, these system processes are referred to as services.[1] On macOS, launchd processes known as Launch Daemon and Launch Agent are run to finish system initialization and load user specific parameters.[2]
Create or Modify System Process MITRE reference T1543
8 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 a new background session and has spawned a child process of a parent process when it determines it is not running in its intended state.1
Can create a child process for encryption.1
Can free all resources and terminate itself on victim machines.1
Modifies Windows tasks on the victim machine to reference a retrieved PE file through a path modification.1
Can create an arbitrary process with a specified command line and redirect its output to a staging directory.1
All 8 software entries for this technique · 6 newest in this preview
Offense vs defense T1543
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.
Create or Modify System Process detection strategy DET0571
MITRE names one behaviour worth catching for this technique and breaks it into 4 analytics, one per platform. Each carries the log sources it needs and the fields you tune per environment.
Detection of System Process Creation or Modification Across Platforms
AN1575 · Windows
Detects command-line or API-based creation/modification of Windows Services via sc.exe, powershell.exe, services.exe, or ChangeServiceConfig. Looks for creation/modification of autostart services via registry changes, file drops to System32\services, and anomalous parent-child process trees.
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 | WinEventLog:Sysmon | EventCode=1 |
| Service CreationDC0060 | WinEventLog:Security | EventCode=4697 |
| Windows Registry Key ModificationDC0063 | WinEventLog:Sysmon | EventCode=13, 14 |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| ServiceNamePattern | Regex patterns to flag unusual service names or binaries |
| ParentProcessFilter | List of non-administrative processes starting service management tools |
| RegistryPathList | Monitored autorun locations (e.g., HKLM\System\CurrentControlSet\Services) |
AN1576 · Linux
Detects creation or modification of systemd service units, addition of cron jobs that invoke binaries on boot, or suspicious writes to /etc/init.d/. Monitors chmod +x and systemctl execution paths, especially from non-root parent processes.
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 |
|---|---|---|
| File ModificationDC0061 | auditd:SYSCALL | write or rename to /etc/systemd/system or /etc/init.d |
| Command ExecutionDC0064 | auditd:SYSCALL | execution of systemctl or service with enable/start/modify |
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 | Path-based filters to identify service unit files or init scripts |
| UserContextList | List of expected user contexts that normally perform service changes |
| CommandNameList | Binaries used to register/modify services |
AN1577 · macOS
Detects creation or modification of LaunchDaemon or LaunchAgent plist files under /Library/LaunchDaemons/, ~/Library/LaunchAgents/, or similar. Monitors execution of launchctl, property list edits, and file permission changes.
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 |
|---|---|---|
| File ModificationDC0061 | fs:fsusage | file write to launchd plist paths |
| Command ExecutionDC0064 | macos:unifiedlog | launchctl load/unload or plist file modification |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| PlistPathList | Watched directories for LaunchDaemons and LaunchAgents |
| PlistKeyMonitor | Monitored keys such as RunAtLoad, KeepAlive, or ProgramArguments |
| UnsignedBinaryAlert | Flag execution of unsigned or non-Apple-signed binaries within plist |
AN1578 · Containers
Detects creation of new container system processes via docker run --restart, kubectl exec to init containers, or modification of container init specs. Flags container images that override entrypoints to embed persistence behaviors.
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 |
|---|---|---|
| File ModificationDC0061 | auditd:SYSCALL | modification of entrypoint scripts or init containers |
| Container CreationDC0072 | docker:events | docker run with restart=always or modifying init |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| EntrypointOverridePattern | Patterns used to detect modified container start scripts |
| RestartPolicyMatch | Policy values triggering alert (e.g., always, on-failure) |
| KubeInitModPath | Path filters for /etc/init.d/-like behaviors inside containers |
Use auditing tools capable of detecting privilege and service abuse opportunities on systems within an enterprise and correct them.
On Windows 10, enable Attack Surface Reduction (ASR) rules to prevent an application from writing a signed vulnerable driver to the system. On Windows 10 and 11, enable Microsoft Vulnerable Driver Blocklist to assist in hardening against third party-developed drivers.
Enforce registration and execution of only legitimately signed service drivers where possible.
Restrict software installation to trusted repositories only and be cautious of orphaned software packages.
Ensure that Driver Signature Enforcement is enabled to restrict unsigned drivers from being installed.
Manage the creation, modification, use, and permissions associated to privileged accounts, including SYSTEM and root.
Restrict read/write access to system-level process files to only select privileged users who have a legitimate need to manage system services.
Where possible, consider enforcing the use of container services in rootless mode to limit the possibility of privilege escalation or malicious effects on the host running the container.
Limit privileges of user accounts and groups so that only authorized administrators can interact with system-level process changes and service configurations.