Join our Newsletter — 33% off our NHI Course
Home› FAQ› Threats, Abuse & Incident Response› How do attackers use launchd?
Threats, Abuse & Incident Response

How do attackers use launchd?

← Back to all FAQ
By NHI Mgmt Group Editorial Team Updated October 18, 2026 Domain: Threats, Abuse & Incident Response

Attackers use launchd on macOS to persist by loading programs at login, on a schedule, or when a condition is met. They commonly abuse launch agents or daemons hidden in user or system locations. Defenders should review plist files, watch for new services, and compare loaded jobs against approved baselines.

How launchd persistence works on macOS

launchd is macOS’s service manager, so abuse usually looks like legitimate job configuration rather than a classic startup folder drop. Attackers place plist files where launch agents or launch daemons will load them, then rely on login events, timers, or trigger conditions to start payloads automatically. The key security issue is that execution is delegated to a trusted system mechanism.

That makes launchd attractive for persistence because the job can blend in with normal system behaviour. A malicious plist may point to a binary, script, or interpreter already present on disk, which reduces obvious indicators while still creating repeatable execution. The defender’s task is to separate approved jobs from unexpected ones, not just look for obvious malware names.

Good review starts with understanding the load context: user-level agents, system-level daemons, and jobs triggered by conditions such as boot, login, schedule, or file or network events. Persistence Techniques Guide is useful here because it places launchd alongside other persistence patterns, which helps you compare what “normal” looks like across the host.

Where attackers hide launchd jobs and why detection misses them

Attackers usually favour the standard launch agents and launch daemons locations because those paths are routinely scanned by the operating system and security tools as part of normal service management. They may also hide behind filenames that resemble vendor utilities, use innocuous labels, or reference scripts stored in less obvious directories. The abuse often succeeds when defenders trust the plist location more than the content.

The practical detection problem is that many environments have long-lived legitimate jobs, so a new or modified plist can be easy to overlook unless you baseline expected jobs and owner paths. Review should include the plist contents, the executable path, arguments, keepalive or trigger settings, and the account context the job runs under. That is where launchd abuse becomes more than file-system noise.

For a broader attacker view, The State of NHI & AI Agent Breach Report 2026 is useful because it shows how persistence commonly fits into wider compromise chains, including credential theft, lateral movement, and re-entry after detection gaps.

How defenders should validate, hunt, and remove launchd persistence

Defensive review should focus on three questions: what is loaded, who owns it, and whether it belongs there. Compare loaded jobs against an approved baseline, inspect any newly created or recently modified plist files, and confirm that the referenced binary or script is legitimate and expected for that host role. If the job is not required, remove the launch item and the payload it calls.

When an unexpected job is found, treat it as a possible persistence anchor rather than an isolated file. Check for adjacent compromise such as dropped scripts, modified shell profiles, suspicious binaries in writable paths, and other autostart mechanisms on the same host. If the plist was used to load a credentialed or remote-access tool, rotate the related credentials or tokens and review for additional access paths.

External guidance on host-based attacker behaviour remains useful for triage. MITRE ATT&CK Enterprise Matrix helps map launchd-style persistence to the broader set of persistence and execution techniques that often appear alongside it, while CISA cyber threat advisories can help you connect host persistence with current adversary tradecraft and response priorities.

Risk and Threat Considerations

launchd persistence is risky because it turns a trusted operating-system service into a repeatable re-execution path. If the attacker can create or modify a job file, they can often regain code execution after reboot, user logon, or another trigger without needing to re-exploit the host.

Failure mechanism: The attacker abuses a legitimate launch agent or daemon definition, or creates a new one in a location that launchd reads automatically. The job then survives routine restarts and can be disguised as normal service activity.

Impact: Persistence increases dwell time, complicates eradication, and can support follow-on actions such as credential theft, lateral movement, and repeated access after partial cleanup.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK addresses the attack and risk surface, while CIS Controls v8 and NIST SP 800-53 Rev 5 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
MITRE ATT&CKT1543.001 — Create or Modify System Process: Launch Agentlaunchd abuse is a macOS persistence technique
T1543 — Create or Modify System ProcessThe subject is attacker persistence through trusted service startup
Recommendation — Map suspicious plist jobs to T1543.001 and hunt for re-entry paths. Correlate new service definitions with host persistence activity.
CIS Controls v8CIS-4 — Secure Configuration of Enterprise Assets and SoftwareUnexpected launchd jobs are a host configuration drift issue
Recommendation — Baseline approved launchd jobs and flag unauthorized plist changes.
NIST SP 800-53 Rev 5CM-7 — Least FunctionalityOnly approved startup jobs should remain enabled on macOS hosts
AU-6 — Audit Record Review, Analysis, and ReportingDetecting launchd abuse depends on reviewing host job changes and execution evidence
Recommendation — Remove unnecessary launchd jobs and disable unused autostart paths. Review launchd-related logs and file changes for unexpected persistence.

Practitioner Guidance

What to verify: Confirm the executable, arguments, signing state where relevant, file ownership, and creation time for every unexpected plist before trusting that it is benign. A valid-looking label is not enough if the referenced binary sits in an unusual or user-writable location.

Decision rule: If a launchd job is not in your approved baseline, treat it as hostile until proven otherwise. If it is required for business operations, rebuild the trust decision around the exact plist, target binary, and trigger condition rather than whitelisting the name alone.

Practitioner takeaway: launchd abuse is a persistence problem first and a malware-name problem second, so the decisive control is baseline-driven review of job definitions, not ad hoc file hunting.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Reviewed and updated by the NHIMG editorial team on October 18, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org