Cross-source coverage
T1543.004 / ATT&CK
Create or Modify System Process: Launch Daemon
15 rules across 4 sources.
1 deprecated hidden · include
From MITRE ATT&CK 19.2
Adversaries may create or modify Launch Daemons to execute malicious payloads as part of persistence. Launch Daemons are plist files used to interact with Launchd, the service management framework used by macOS. Launch Daemons require elevated privileges to install, are executed for every user on a system prior to login, and run in the background without the need for user interaction. During the macOS initialization startup, the launchd process loads the parameters for launch-on-demand system-level daemons from plist files found in /System/Library/LaunchDaemons/ and /Library/LaunchDaemons/. Required Launch Daemons parameters include a Label to identify the task, Program to provide a path to the executable, and RunAtLoad to specify when the task is run. Launch Daemons are often used to provide access to shared resources, updates to software, or conduct automation tasks.
Adversaries may install a Launch Daemon configured to execute at startup by using the RunAtLoad parameter set to true and the Program parameter set to the malicious executable path. The daemon name may be disguised by using a name from a related operating system or benign software (i.e. Masquerading). When the Launch Daemon is executed, the program inherits administrative permissions.
Additionally, system configuration changes (such as the installation of third party package managing software) may cause folders such as usr/local/bin to become globally writeable. So, it is possible for poor configurations to allow an adversary to modify executables referenced by current Launch Daemon's plist files.
- Tactics
- Persistence · Privilege Escalation
- Platforms
- macOS
- Telemetry
-
macos:unifiedlogfs:launchdaemons
How MITRE says to detect it DET0401
Detection Strategy for Launch Daemon Creation or Modification (macOS)
macOS Analytic 1126
Creation or modification of `.plist` files in /Library/LaunchDaemons/, especially those with suspicious Program or ProgramArguments paths, combined with execution activity under launchd with elevated privileges. Detectable through correlated Unified Logs, file monitoring, and process telemetry.
macos:unifiedloglaunchd spawning processes tied to new or modified LaunchDaemon .plist entriesfs:launchdaemonsfile_createfs:launchdaemonsfile_modifymacos:unifiedloglaunchd loading new LaunchDaemon or changes to existing daemon configuration
elastic/detection-rules
6 rules| Detection | Severity | Format |
|---|---|---|
| Persistence via Suspicious Launch Agent or Launch Daemon | High | Elastic TOML |
| Suspicious Echo or Printf Execution Detected via Defend for Containers | High | Elastic TOML |
| Creation of Hidden Launch Agent or Daemon | Medium | Elastic TOML |
| First Time Python Created a LaunchAgent or LaunchDaemon | Medium | Elastic TOML |
| Suspicious Hidden Child Process of Launchd | Medium | Elastic TOML |
| Launch Service Creation and Immediate Loading | Low | Elastic TOML |
chainguard-dev/osquery-defense-kit
4 rules| Detection | Severity | Format |
|---|---|---|
| Find launchd entries which purport to be by Apple, but point to binaries that are not signed by Apple. | Undefined | osquery SQL |
| Reveal launchd services which are located in a hidden directory. | Undefined | osquery SQL |
| Unexpected launchd scripts that use the 'program_arguments' field | Undefined | osquery SQL |
| Unexpected launchd scripts that use the 'program' field | Undefined | osquery SQL |
SigmaHQ/sigma
3 rules| Detection | Severity | Format |
|---|---|---|
| Atomic MacOS Stealer - Persistence Indicators | High | Sigma |
| Potential Persistence Via PlistBuddy | High | Sigma |
| Launch Agent/Daemon Execution Via Launchctl | Medium | Sigma |
elastic/protections-artifacts
2 rules| Detection | Severity | Format |
|---|---|---|
| Persistence via GenAI Tool | Undefined | Elastic TOML |
| Unusual Launch Service Creation via Unsigned or Untrusted Binary | Undefined | Elastic TOML |