Skip to content

T1569.001 Launchctl

Adversaries may abuse launchctl to execute commands or programs. Launchctl interfaces with launchd, the service management framework for macOS. Launchctl supports taking subcommands on the command-line, interactively, or even redirected from standard input.3

Adversaries use launchctl to execute commands and programs as Launch Agents or Launch Daemons. Common subcommands include: launchctl load,launchctl unload, and launchctl start. Adversaries can use scripts or manually run the commands launchctl load -w “%s/Library/LaunchAgents/%s” or /bin/launchctl load to execute Launch Agents or Launch Daemons.12

Item Value
ID T1569.001
Sub-techniques T1569.001, T1569.002, T1569.003
Tactics TA0002
Platforms macOS
Version 1.3
Created 10 March 2020
Last Modified 24 October 2025

Procedure Examples

ID Name Description
S0584 AppleJeus AppleJeus has loaded a plist file using the launchctl command.6
S0274 Calisto Calisto uses launchctl to enable screen sharing on the victim’s machine.9
S1153 Cuckoo Stealer Cuckoo Stealer can use launchctl to load a LaunchAgent for persistence.5
S0451 LoudMiner LoudMiner launched the QEMU services in the /Library/LaunchDaemons/ folder using launchctl. It also uses launchctl to unload all Launch Daemons when updating to a newer version of LoudMiner.4
S1048 macOS.OSAMiner macOS.OSAMiner has used launchctl to restart the Launch Agent.7
S0658 XCSSET XCSSET loads a system level launchdaemon using the launchctl load -w command from /System/Librarby/LaunchDaemons/ssh.plist.8

Mitigations

ID Mitigation Description
M1018 User Account Management Prevent users from installing their own launch agents or launch daemons.

References