Skip to content
← RegistryDossier · 5 steps · 4 edges

LaunchDaemon persistence as root

Once at root (via sudo or a local-exploit), drop a .plist into /Library/LaunchDaemons that re-implants on every boot — survives user logout and full power-cycle.

Filed by AD Knowledge Base
§ Kill-chainDrag · zoom · scroll

§ Context

Assumed environment: attacker has root on macOS (via sudo, kernel exploit, etc.). The target has not deployed an EDR that catches new LaunchDaemons.

§ Steps

  1. 01
    Verify across rebootInitial Access
    T1078Valid Accounts
  2. 02
    Root shellInitial Access
    T1078Valid Accounts
  3. 03
    launchctl load + RunAtLoad=truePersistence
    T1547Boot or Logon Autostart Execution
  4. 04
    Hide plist via legitimate-looking nameDefense Evasion
    T1027Obfuscated Files or Information
  5. 05
    Write /Library/LaunchDaemons/<plist>Persistence
    MAC-LAUNCHAGENTLaunchAgent / LaunchDaemon Persistence

§ References

§ Frequently asked

What is the "LaunchDaemon persistence as root" attack path?
Once at root (via sudo or a local-exploit), drop a .plist into /Library/LaunchDaemons that re-implants on every boot — survives user logout and full power-cycle. It chains 5 steps drawn from real-world offensive-security techniques.
What starting position does this attack require?
The first step is Verify across reboot (T1078) — a initial access primitive. Assumed environment: attacker has root on macOS (via sudo, kernel exploit, etc.
What is the final impact of this kill-chain?
The final step lands on Write /Library/LaunchDaemons/<plist> (MAC-LAUNCHAGENT), which falls under Persistence. From here, an operator typically pivots into post-exploitation or maintains persistence.
How can defenders detect or prevent this attack?
Detection and prevention vary per step. Refer to each linked MITRE ATT&CK entry under "References" — every technique on that page lists defensive controls, detection telemetry, and known threat-actor usage.

§ Related dossiers