Suzu macOS Playground

M03 · CTF

拆 SuperBlob,算出真 CDHash

載入含 entitlements 的樣本,在 SuperBlob 找到 CodeDirectory,讀出 version/flags/hashType, 並確認實驗室真算的「完整 32-byte CDHash」就是 codesign 的 CandidateCDHashFull。

← 先讀 M03 章節

程式碼簽章實驗室

模型邊界:CDHash 用瀏覽器 crypto.subtle 真算 SHA-256(雪崩無法造假,與 codesign 的 CandidateCDHashFull 一致)。 但 CMS 簽章鏈僅標 ad-hoc/有 CMS,不偽造 Apple 私鑰簽章驗證(DESIGN.md §5.6 / §10)。上傳檔案不離開瀏覽器。

過關目標

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

提示

卡住時

CDHash 是「對整個 CodeDirectory blob 做一次 SHA-256」。完整值是 32 bytes(64 hex),不是顯示用的 20-byte 截斷。

走錯方向時

flags 0x10002 拆成 ADHOC(0x2) + RUNTIME(0x10000);RUNTIME 就是 hardened runtime。

想更深入

ad-hoc 代表「只有 cdhash、沒有 CMS 背書」。能跑,但沒有「誰簽的」。

相關指令

codesignotool
← 回 CTF 場