M10 · CTF
持久化全景盤點——把「能自己跑」的位置一次數齊
給你一台合成機器的去識別化狀態:若干 LaunchAgents/Daemons plist、透過 SMAppService 註冊 並登記在 BTM 的背景項目、傳統 login items、一條 cron 任務、一個 Configuration Profile。 其中混了正常項與一個可疑持久化(label 對不上已知軟體、Program 落在家目錄隱藏路徑、RunAtLoad=true)。 你要做的不是「移除」它,而是把每一類持久化位置都盤點到、對應到正確的偵測來源, 並指出哪一項可疑、依據哪些「特徵組合」(而非單一欄位)。
此關卡對應的模擬器(persistence-panorama)尚未提供。
過關目標
- 讓 inventory.allCategoriesCovered 達到 true
- 讓 inventory.suspiciousItemIdentified 達到 true
- 用自己的話解釋:你盤點了哪幾類持久化位置(launchd job、SMAppService/BTM、login items、cron、Configuration Profile/MDM),各自對應的偵測來源是什麼?你判定那一項可疑,依據的「特徵組合」是哪幾個(而不是單一欄位)?為什麼「只看 BTM」會漏掉某些位置?
解答是「操作模擬器到對的狀態 + 能說出原理」,非提交 flag 字串。互動式自動評分為 roadmap 項目;目前以自我檢核完成。
提示
卡住時
盤點要同時看「狀態」與「位置」。launchctl list 看實際載入了什麼,目錄/BTM/profile 看它登記在哪。檔在不代表載入了,載入了也不一定在目錄找得到對應檔。
走錯方向時
BTM 不是唯一真相來源。cron 與某些 profile payload 不一定反映在 BTM——只盤 BTM 會漏掉藏在其他軌的觸發點。
想更深入
判可疑靠特徵組合,不是單一欄位。不明 label、Program 落在隱藏/暫存路徑、RunAtLoad/KeepAlive、且非由安裝器寫入——疊起來才是規則,任一單獨欄位都會誤判。
相關指令
launchctlsfltoolprofilesplutil