Lion Cipher Lab

Triage macOS Launch Agent and Launch Daemon persistence from plist files

Why it matters

When malware wants to survive a reboot on a Mac, the most common move is to drop one small text-like file into a LaunchAgents or LaunchDaemons folder. That file, a property list (plist), tells launchd, the program that starts everything on macOS, what to run and when. MITRE ATT&CK tracks this as T1543.001 (Launch Agent) and T1543.004 (Launch Daemon). For an investigator, those folders are the first place to look, and the work looks easy: open each file and read it. It is not quite that easy. Plists can be stored in a binary format that text tools mangle, attackers name their files after Apple…

What you'll learn

Steps in this lab

  1. What launchd persistence is, and why the plist is the evidence
  2. The five folders, and who is allowed to write each one
  3. The keys that decide what runs, and when
  4. Build the evidence tree: twelve plists, four of them binary
  5. Look before you script: open one XML plist and one binary plist
  6. Triage three ways and score each one
  7. Why the byte search went blind on one binary plist
  8. Read the flags like an investigator, not a scoreboard
  9. What a plist cannot tell you, and the checks that can
  10. Optional: run the same triage on a real Mac (read-only)
  11. When to reach for this, and how a pro does it better

Open the full interactive lab →