Lion Cipher Lab

Find Linux scheduled persistence in cron, systemd timers and at spools

Why it matters

An intruder who gets onto a Linux server usually wants to come back after a reboot or after you kill their process, and the easiest way is to ask the system to run something for them on a schedule. Linux has at least five different schedulers, each storing its jobs in different files, and the command most people reach for -- crontab -l -- shows exactly one of them, for one user at a time. Responders who stop there clean up one job and leave four running. On top of that, the schedulers follow rules that surprise people: a script in /etc/cron.daily with a dot in its name never runs at all, and…

What you'll learn

Steps in this lab

  1. What scheduled persistence is, and why you look offline
  2. The map: five schedulers and where each keeps its jobs
  3. The rules that decide whether a job actually runs
  4. Build the image copy
  5. Write the inventory: one parser per scheduler
  6. Run it and read the inventory row by row
  7. Measure the four views: what crontab -l actually misses
  8. Three rows that are not what they look like
  9. Turn modification times into a first timeline
  10. Honest limits of this method
  11. Optional: the same sweep on a live Linux machine you own
  12. The judgment: when to reach for this, and how to do it better

Open the full interactive lab →