Learning Path
學習路徑
從啟動鏈的信任根,一路走到簽章、Gatekeeper、SIP、TCC 與漏洞模型。每章都配可離線操作的模擬器。
- M00● 階梯 1 · L1
前置暖身:指標、ARM64、runtime、簽章密碼學
四塊認知鷹架——C/指標心智模型、ARM64 呼叫慣例與反組譯讀寫(含 PAC 直覺)、ObjC/Swift runtime 與 name mangling、公鑰密碼學/雜湊/數位簽章(SHA-256 雪崩、私鑰簽 公鑰驗),為後面所有模組鋪底。
- M01●● 階梯 1 · L1
macOS 整體架構與啟動鏈
XNU 混合核心、開機信任鏈(BootROM→iBoot→kernelcache→sepOS)、Secure Boot 三級、LocalPolicy 與 SEP 導論。
- M02● 階梯 1 · L1
Mach-O 格式與 dyld 載入器
Mach-O header / load commands / segments / sections、fat binary、LINKEDIT、chained fixups、arm64 vs arm64e,以及 dyld 如何把映像載入虛擬位址空間。
- M03● 階梯 2 · L2
程式碼簽章與 entitlements
SuperBlob / CodeDirectory / CDHash(完整 32-byte)、special slot 負索引、CDHash 真算雪崩、entitlement taxonomy、ad-hoc vs CMS、hardened runtime 與 library validation。
- M04● 階梯 2 · L2
Gatekeeper、quarantine 與 XProtect
com.apple.quarantine 四欄位、各下載通道是否附旗標、Gatekeeper 首次執行評估(簽章→公證→stapling)、App Translocation、XProtect,與 Sequoia 起的政策變更。
- M05●● 階梯 2 · L2
SIP / rootless 與 SSV
為何 root 寫不進 /System——csr bitmask、SF_RESTRICTED、SIP 作為獨立 MAC 閘(DAC 之外),以及 SSV authenticated-root 的「開機期 seal vs 執行期 MAC」兩層獨立。
- M06●● 階梯 3 · L2
TCC 隱私框架(tccd 判定管線)
為何「同一支程式重簽就要重新授權」——雙層 TCC.db 欄位、tccd 在 userspace 以 XPC 做的授權決策、用 audit token(非裸 PID)做責任歸屬、csreq 釘選 designated requirement,以及 auth_value 各態(limited 僅 Photos 等特定服務)。
- M07●● 階梯 3 · L3
App Sandbox 與 seatbelt(SBPL)
一個進程能 open() 什麼、能跟誰 mach-lookup,由 SBPL profile 經 Sandbox policy module 掛在 MACF 上逐操作判定;container 重導向把家目錄虛擬化,sandbox extension 動態鬆綁——sandbox 不是權限,是進程的「能力地圖」。
- M08● 階梯 3 · L3
Mach IPC / XPC / MIG
進程之間如何「彼此呼叫」——Mach port 與 port rights 是 XNU 的 IPC 底層、launchd/bootstrap 把 service 名對應到 port、XPC 與 NSXPCConnection 疊在其上做序列化 RPC;而所有信任缺陷的共同根因是「高權 service 用 PID 而非 audit token 認呼叫方」,這正是 confused-deputy 類別的核心,本章只講類別、根因與防禦/偵測,不給任何可武器化步驟。
- M09● 階梯 3 · L3
權限模型分層與互動
把前面每一道信任邊界疊起來看——POSIX/DAC、ACL、Sandbox、SIP、AMFI/code signing、TCC 各自管什麼、在什麼時點觸發。釐清「root 不是全能、也不短路 DAC」「通過一層 ≠ 整體放行」,並把 confused-deputy/提權路徑當成「層間借力」的能力組合來理解其根因與防禦,而非可操作的攻擊步驟。
- M10●● 階梯 3 · L3
launchd、持久化與現代核可
把一台機器上「能讓程式在重開機/登入後再跑」的位置一次盤點成全景——LaunchAgents/Daemons、login items、現代的 SMAppService(取代已棄用的 SMJobBless/SMLoginItemSetEnabled)、Ventura+ 的 BTM(Background Task Management)、cron、Configuration Profile/MDM——並對每一類說出它的偵測訊號與盲區。框架是防禦:持久化全景盤點 + 偵測,不是教你怎麼裝持久化。
- M11● 階梯 2 · L2
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 的真實邊界與威脅模型。
- M12●●● 階梯 3 · L3
逆向與動態分析工具鏈
從靜態解析(otool / nm / dyld_info / class-dump / 符號 demangle)到動態分析(lldb / dtrace / frida)的工具鏈與心智模型——靜態解你自己擁有或公開 IPSW 的映像、ObjC/Swift runtime 還原、動態分析只在自有/授權裝置上對「自己的程式」做,並認識 anti-debug 的類別與根因。不示範繞過任何保護。
- M13● 階梯 4 · L4
漏洞模型與緩解
用抽象記憶體模型把「記憶體破壞類別、邏輯漏洞、TOCTOU、LPE/sandbox-escape 鏈的結構」講成一套防禦心智模型——重點是 mitigation(PAC、KASLR、PPL、SPTM/TXM、kalloc_type、zone sequestering)為何有效、攻擊者在每道緩解前被迫怎麼轉向(直到只剩 data-only)、以及近年 CVE 的根因類別。全章只談類別/根因/防禦,絕不提供 offset/gadget/payload/可運行 PoC;所有模型皆為教學抽象,不等於真實可利用性。
- M14●● 階梯 5 · L4
偵測、監控與 DFIR
把前面每一道信任邊界翻過來看——攻擊者過閘時在 Endpoint Security、Unified Log、OpenBSM、FSEvents、Spotlight/KnowledgeC 留下什麼訊號,怎麼用 eslogger 訂閱事件、重建 timeline、做 Time Machine 取證,並認清 ES mute/event-flooding 與 `<private>` 遮蔽造成的 telemetry 盲區。
- M15●●● 階梯 4 · L4
橫向專題——把信任邊界延伸到深水區
六個可選修的橫向專題,每個都把前面學過的信任邊界延伸到一塊深水區——Network Extension 攻防、Rosetta 2 的安全意涵、虛擬化/VM 的安全模型與研究限制、SEP/firmware 深入、Keychain 與 macOS 資料保護的真實邊界、網路信任(Trust Store / ATS / 憑證釘選)。每節點到為止:給正確心智模型、根因類別、防禦與偵測方向、延伸閱讀,不深入任何可武器化細節。