Suzu macOS Playground

M13 · CTF

軍備競賽終局——把緩解一道道打開,看攻擊者被逼向 data-only

延續 lvl1。抽象模型現在讓你逐一「開啟」緩解開關(KASLR → PAC → PPL/SPTM·TXM → kalloc_type/sequestering), 每開一道,觀察攻擊者「原本想走的那條路」如何被堵死、被迫轉向下一條更難的路,直到只剩 data-only。 你的任務不是繞過任何一道,而是說清楚每道緩解卡住的是哪一類能力、攻擊者被迫轉向什麼, 以及為什麼最終的 data-only(不改控制流、只改資料)對偵測特別棘手——這條結論直接交棒 M14。 此為教學抽象,不等於真實可利用性;模型把「需大量洩漏與工程才偶爾成立」的事簡化成開關。

← 先讀 M13 章節

抽象記憶體模型:UAF × PAC

空
指標 p:—

⚠ 此為教學抽象,不等於真實可利用性。UAF 的「形狀」是:釋放後指標沒清(dangling)→ 同一塊被重新配置(重用)→ 透過舊指標操作到新物件。mitigation(PAC/PPL/SPTM-TXM/kalloc_type/zone sequestering)的意義是抬高成本、把攻擊者逼向其他面——不是「不可能」。本模型不含任何 offset/gadget/payload/PoC。

過關目標

解答是「操作模擬器到對的狀態 + 能說出原理」,非提交 flag 字串。互動式自動評分為 roadmap 項目;目前以自我檢核完成。

提示

卡住時

一道一道看,別跳。每道緩解配一句「它擋住哪類能力 → 攻擊者被迫做什麼更難的事」。KASLR→先得洩漏位址;PAC→難改控制流指標;PPL/SPTM·TXM→核心讀寫不再自動等於改頁表/繞簽章;kalloc_type/sequestering→跨型別重用被堵。

走錯方向時

注意 SPTM/TXM 不是某一代之後就全機種硬切。M1/M2 同 OS 仍是 PPL;A17 Pro/M3 起的較新 silicon 才用 SPTM/TXM,兩者在不同產品線共存。別答成「PPL 已淘汰」。也別把 PAC 當成保護所有程式——arm64e 才有 user-space PAC,多數第三方 arm64 app 沒有。

想更深入

終局是 data-only:不改控制流、不執行新碼、不碰頁表,只改程式本來就會讀寫的資料(如某個授權旗標),讓程式用自己合法的控制流做出對攻擊者有利的決策。它難偵測,正因為控制流看起來完全正常——這就是 M14 偵測要從「跑了什麼碼」轉向「狀態被悄悄改了嗎」的原因。

相關指令

sysctlmachineotool
← 回 CTF 場