Suzu macOS Playground

Learning Path

學習路徑

從啟動鏈的信任根,一路走到簽章、Gatekeeper、SIP、TCC 與漏洞模型。每章都配可離線操作的模擬器。

  1. M00

    前置暖身:指標、ARM64、runtime、簽章密碼學

    四塊認知鷹架——C/指標心智模型、ARM64 呼叫慣例與反組譯讀寫(含 PAC 直覺)、ObjC/Swift runtime 與 name mangling、公鑰密碼學/雜湊/數位簽章(SHA-256 雪崩、私鑰簽 公鑰驗),為後面所有模組鋪底。

    ● 階梯 1 · L1
  2. M01

    macOS 整體架構與啟動鏈

    XNU 混合核心、開機信任鏈(BootROM→iBoot→kernelcache→sepOS)、Secure Boot 三級、LocalPolicy 與 SEP 導論。

    ●● 階梯 1 · L1
  3. M02

    Mach-O 格式與 dyld 載入器

    Mach-O header / load commands / segments / sections、fat binary、LINKEDIT、chained fixups、arm64 vs arm64e,以及 dyld 如何把映像載入虛擬位址空間。

    ● 階梯 1 · L1
  4. M03

    程式碼簽章與 entitlements

    SuperBlob / CodeDirectory / CDHash(完整 32-byte)、special slot 負索引、CDHash 真算雪崩、entitlement taxonomy、ad-hoc vs CMS、hardened runtime 與 library validation。

    ● 階梯 2 · L2
  5. M04

    Gatekeeper、quarantine 與 XProtect

    com.apple.quarantine 四欄位、各下載通道是否附旗標、Gatekeeper 首次執行評估(簽章→公證→stapling)、App Translocation、XProtect,與 Sequoia 起的政策變更。

    ● 階梯 2 · L2
  6. M05

    SIP / rootless 與 SSV

    為何 root 寫不進 /System——csr bitmask、SF_RESTRICTED、SIP 作為獨立 MAC 閘(DAC 之外),以及 SSV authenticated-root 的「開機期 seal vs 執行期 MAC」兩層獨立。

    ●● 階梯 2 · L2
  7. M06

    TCC 隱私框架(tccd 判定管線)

    為何「同一支程式重簽就要重新授權」——雙層 TCC.db 欄位、tccd 在 userspace 以 XPC 做的授權決策、用 audit token(非裸 PID)做責任歸屬、csreq 釘選 designated requirement,以及 auth_value 各態(limited 僅 Photos 等特定服務)。

    ●● 階梯 3 · L2
  8. M07

    App Sandbox 與 seatbelt(SBPL)

    一個進程能 open() 什麼、能跟誰 mach-lookup,由 SBPL profile 經 Sandbox policy module 掛在 MACF 上逐操作判定;container 重導向把家目錄虛擬化,sandbox extension 動態鬆綁——sandbox 不是權限,是進程的「能力地圖」。

    ●● 階梯 3 · L3
  9. M08

    Mach IPC / XPC / MIG

    進程之間如何「彼此呼叫」——Mach port 與 port rights 是 XNU 的 IPC 底層、launchd/bootstrap 把 service 名對應到 port、XPC 與 NSXPCConnection 疊在其上做序列化 RPC;而所有信任缺陷的共同根因是「高權 service 用 PID 而非 audit token 認呼叫方」,這正是 confused-deputy 類別的核心,本章只講類別、根因與防禦/偵測,不給任何可武器化步驟。

    ● 階梯 3 · L3
  10. M09

    權限模型分層與互動

    把前面每一道信任邊界疊起來看——POSIX/DAC、ACL、Sandbox、SIP、AMFI/code signing、TCC 各自管什麼、在什麼時點觸發。釐清「root 不是全能、也不短路 DAC」「通過一層 ≠ 整體放行」,並把 confused-deputy/提權路徑當成「層間借力」的能力組合來理解其根因與防禦,而非可操作的攻擊步驟。

    ● 階梯 3 · L3
  11. M10

    launchd、持久化與現代核可

    把一台機器上「能讓程式在重開機/登入後再跑」的位置一次盤點成全景——LaunchAgents/Daemons、login items、現代的 SMAppService(取代已棄用的 SMJobBless/SMLoginItemSetEnabled)、Ventura+ 的 BTM(Background Task Management)、cron、Configuration Profile/MDM——並對每一類說出它的偵測訊號與盲區。框架是防禦:持久化全景盤點 + 偵測,不是教你怎麼裝持久化。

    ●● 階梯 3 · L3
  12. M11

    APFS 與檔案系統機制

    APFS 容器/volume role、snapshot 與 copy-on-write clone(共享 extent + refcount)、SSV cryptographic seal(Merkle tree authenticated-root)、firmlink 與 /System/Volumes/Data 的卷融合、xattr 與 quarantine/provenance 元資料,以及 FileVault 全卷加密與「macOS Data Protection」相對 iOS 逐檔 class key 的真實邊界與威脅模型。

    ● 階梯 2 · L2
  13. M12

    逆向與動態分析工具鏈

    從靜態解析(otool / nm / dyld_info / class-dump / 符號 demangle)到動態分析(lldb / dtrace / frida)的工具鏈與心智模型——靜態解你自己擁有或公開 IPSW 的映像、ObjC/Swift runtime 還原、動態分析只在自有/授權裝置上對「自己的程式」做,並認識 anti-debug 的類別與根因。不示範繞過任何保護。

    ●●● 階梯 3 · L3
  14. M13

    漏洞模型與緩解

    用抽象記憶體模型把「記憶體破壞類別、邏輯漏洞、TOCTOU、LPE/sandbox-escape 鏈的結構」講成一套防禦心智模型——重點是 mitigation(PAC、KASLR、PPL、SPTM/TXM、kalloc_type、zone sequestering)為何有效、攻擊者在每道緩解前被迫怎麼轉向(直到只剩 data-only)、以及近年 CVE 的根因類別。全章只談類別/根因/防禦,絕不提供 offset/gadget/payload/可運行 PoC;所有模型皆為教學抽象,不等於真實可利用性。

    ● 階梯 4 · L4
  15. M14

    偵測、監控與 DFIR

    把前面每一道信任邊界翻過來看——攻擊者過閘時在 Endpoint Security、Unified Log、OpenBSM、FSEvents、Spotlight/KnowledgeC 留下什麼訊號,怎麼用 eslogger 訂閱事件、重建 timeline、做 Time Machine 取證,並認清 ES mute/event-flooding 與 `<private>` 遮蔽造成的 telemetry 盲區。

    ●● 階梯 5 · L4
  16. M15

    橫向專題——把信任邊界延伸到深水區

    六個可選修的橫向專題,每個都把前面學過的信任邊界延伸到一塊深水區——Network Extension 攻防、Rosetta 2 的安全意涵、虛擬化/VM 的安全模型與研究限制、SEP/firmware 深入、Keychain 與 macOS 資料保護的真實邊界、網路信任(Trust Store / ATS / 憑證釘選)。每節點到為止:給正確心智模型、根因類別、防禦與偵測方向、延伸閱讀,不深入任何可武器化細節。

    ●●● 階梯 4 · L4