
授權與合規(guī)聲明本文全部操作對象均為自建隔離靶場本機容器或隔離虛擬機涉及安全測試的環(huán)節(jié)必須以取得合法授權為前提。未經(jīng)授權的滲透測試違反《中華人民共和國網(wǎng)絡安全法》與《刑法》相關條款須承擔相應法律責任。本文只講環(huán)境配置、版本對照與靶場隔離不含任何攻擊步驟、利用載荷與繞過手法請勿將文中環(huán)境指向任何非自有系統(tǒng)。一、先把「丟了」拆成三種情形筆記本丟了第一反應通常是同一句「沒事我開了全盤加密?!惯@句話多半是真的。但它是答案不是推理——它把一個更小的問題的回答安到了一個更大的問題上。全盤加密回答的是這塊盤在關機狀態(tài)下被拆走、接到另一臺電腦上里面的東西能不能被讀出來。而「丟了還安全嗎」至少藏著三種姿勢只有一種是關機拆盤。1.1 「靜態(tài)」這兩個字是整段定義的重點Apple 官方支持頁給文件保險箱的定義是這樣一句「Mac 電腦會提供文件保險箱這是一項內(nèi)建加密功能用于保護所有靜態(tài)數(shù)據(jù)安全。文件保險箱使用 AES-XTS 數(shù)據(jù)加密算法保護內(nèi)置和可移除存儲設備上的完整宗卷?!谷齻€信息點它是內(nèi)建的不用另裝算法是 AES-XTS范圍是「內(nèi)置和可移除存儲設備上的完整宗卷」。真正劃定邊界的是那個詞靜態(tài)。靜態(tài)數(shù)據(jù)指躺在存儲介質上、此刻沒被讀寫的那一份相對的是使用中的數(shù)據(jù)。加密保護前者只保護前者。這不是摳字眼。盤關機時數(shù)據(jù)是靜態(tài)的開機并解鎖后對這臺機器的系統(tǒng)來說它就不是了。同一塊盤兩種狀態(tài)兩套結論。1.2 官方那句最該被逐字讀的話如果只允許從這一頁里挑一句記住挑這句「如果沒有有效的登錄憑證或加密恢復密鑰即使物理存儲設備被移除并連接到其他電腦內(nèi)置 APFS 宗卷仍保持加密狀態(tài)以防止未經(jīng)授權的訪問。」這句寫得非??酥茥l件給得很全。它要成立必須同時滿足兩件事沒有有效的登錄憑證沒有加密恢復密鑰。缺一個這句話就不適用于你眼前的情形。很多人只讀到「即使物理存儲設備被移除并連接到其他電腦」這半句就記成「拆盤也讀不出」。這是把條件句讀成陳述句原文說的是「兩樣東西都不存在時保持加密」不是「任何情況下都讀不出來」。還有一處值得停一下這句話的主語是「內(nèi)置 APFS 宗卷」不是「你的文件」。加密的對象是宗卷這個整體這個區(qū)別在第六章會變成一個很具體的問題。1.3 三種情形三張不同的底牌把「筆記本丟了」拆開至少是這三種情形盤當時的狀態(tài)全盤加密管不管用關機后丟失盤被拆走宗卷未掛載管用這是它設計的場景開機并已解鎖時丟失宗卷已掛載不管用憑證此前已交出去盤被拆走但里面有加密前寫過又刪掉的舊數(shù)據(jù)宗卷未掛載只有一部分管用見第六章這張表是本文的骨架。你可以先拿它核自己的情況你擔心的那次「丟」落在哪一行。第三行最容易被當成挑刺。它不是「加密沒做好」是「加密有起點」——起點前后的寫入在盤上不是同一種狀態(tài)。原文寫得很明白只是常被前一句蓋住。二、FileVault 加密的到底是什么先把對象說清楚否則后面所有「管不管用」都沒有落點。2.1 按宗卷加密不按文件加密官方用的是「完整宗卷」這個詞。宗卷是 APFS 里能被掛載的一個單元可以理解成一塊被格式化出來、能掛到目錄樹某個位置上的容器。全盤加密的作用粒度就是它不是單個文件。所以加密是整卷的開關不存在「這個文件加密了、那個沒有」。系統(tǒng)設置里沒有「給某個文件夾單獨加密」不是藏起來是這一層不提供這種粒度。2.2 在 Apple 芯片上它是一類數(shù)據(jù)保護等級官方對搭載 Apple 芯片的機型是這么說的「搭載 Apple 芯片的 Mac 上的文件保險箱通過使用宗卷密鑰的數(shù)據(jù)保護 C 類來實施?!惯@說明在這類機器上FileVault 不是「在系統(tǒng)之外另加一層殼」它掛在系統(tǒng)本身已有的數(shù)據(jù)保護分級上。同一頁還寫了鑰匙放在哪「在搭載 Apple 芯片的 Mac 和搭載 T2 芯片的 Mac 上所有文件保險箱密鑰的處理都發(fā)生在安全隔區(qū)中加密密鑰絕不會直接透露給 CPU。」「絕不會直接透露給 CPU」是這頁技術含量最高的一句。拆盤的人面對的不是「一個裝著加密文件的文件夾」而是「一個由另一臺機器的獨立芯片保管鑰匙的宗卷」。但別順著這句滑太遠。它保的是「鑰匙不裸露」不是「拆走一定讀不出」。能不能讀取決于鑰匙在新環(huán)境下能否重建——官方這頁沒展開本文不補第四章會回到它。2.3 四樣東西各管一段這幾個名詞在教程里經(jīng)?;熘没煊弥缶涂床欢俜侥菐拙湓捔?。分開擺一次名詞它是什么歸誰管宗卷加密密鑰真正用來加密這個宗卷數(shù)據(jù)的鑰匙創(chuàng)建宗卷時生成所有 APFS 宗卷默認都有KEK密鑰加密密鑰用來包住宗卷密鑰的那把鑰匙開 FileVault 時受用戶密碼與硬件 UID 共同保護硬件 UID芯片里的一個唯一標識安全隔區(qū)出不了這臺機器恢復密鑰24 位字符人工保管的備用入口你四行連起來讀是一條鏈數(shù)據(jù)被宗卷密鑰加密宗卷密鑰被 KEK 包著KEK 又被「你的密碼」和「硬件 UID」兩把一起鎖著。開 FileVault 做的事就是把這條鏈搭完整。不開的話鏈會短一截。短在哪一截是第三章的內(nèi)容。三、「宗卷已加密」和「FileVault 已啟用」不是一回事這是本文第二個需要背下來的句子也是最多人踩空的地方。3.1 設置助理那一步?jīng)Q定了密鑰被誰保護官方原文「如果在設置助理初次運行過程中未啟用文件保險箱宗卷仍會加密但宗卷加密密鑰僅由安全隔區(qū)中的硬件 UID 保護?!共痖_看這句里有兩個方向相反的判斷。第一個宗卷仍會加密。也就是說「我沒開 FileVault所以我的盤是明文」是錯的。盤上的數(shù)據(jù)是加密的這一點不會因為你沒勾那個選項而改變。第二個密鑰僅由硬件 UID 保護。也就是說「我的盤加密了所以和開了 FileVault 一樣」也是錯的。差的不是「加不加密」是「鑰匙被誰保護」——開了是密碼加硬件 UID 共同保護沒開只有硬件 UID。兩個方向都錯中間那條窄路才是對的盤一直是加密的開 FileVault 改變的是解鎖這條鏈上多了你這一環(huán)。這為什么重要「硬件 UID 保護」意味著鑰匙和機器綁死沒有備用入口也沒有恢復密鑰。你找不到那串 24 位字符不是藏起來是鏈上沒有這一環(huán)。3.2 本機實測一條命令給狀態(tài)一條命令給字段寫這一段時我在自己的機器上跑了兩條只讀命令。環(huán)境macOSApple 芯片。第一條問狀態(tài)fdesetup status輸出只有一行FileVault is On.這一行沒有歧義它回答的就是「FileVault 開沒開」這個問題。第二條看宗卷diskutil apfs list這條命令會把每個宗卷的屬性逐項列出來。在我這臺機器上同一個宗卷的列表里同時出現(xiàn)了這兩行FileVault: Yes (Unlocked) Encrypted: No把這兩行拎出來是因為它們放一起很反直覺按字面讀Encrypted: No是「沒加密」可同一段輸出里FileVault:又是Yes。只截一行去問兩個答案會相反。3.3 那兩個字段我沒找到官方定義這里必須踩一腳剎車。我核不到diskutil這兩個字段的官方定義。Apple 的支持頁講的是文件保險箱的機制沒有逐字段解釋diskutil的輸出。所以本文不給這兩個字段下定義也不猜它們各自的判定條件。能確定的只有實測這一件這兩個字段說的不是同一件事。它們能同時出現(xiàn)在同一個宗卷上就說明不是同一個開關的兩種寫法。各自在判什么標待驗證。由此得到一條能用的判斷別拿Encrypted: No判定「沒加密」。想知道 FileVault 的狀態(tài)用fdesetup status那個回答更直接——它只有一行且只回答一個問題。至于為什么會出現(xiàn)這種并存我有一個猜測可能和宗卷在這臺機器上承擔的角色有關。但這只是猜測本批核不到官方說明不寫成結論。四、邊界之一關機、拆盤回到第一章那句條件句這一章把它拆成可核對的條目。4.1 那句話有三個條件逐條對「沒有有效的登錄憑證或加密恢復密鑰」是第一、第二個條件「即使物理存儲設備被移除并連接到其他電腦」是第三個條件結論是「仍保持加密狀態(tài)」。三個條件都成立結論才成立。缺哪個這句話就不適用于你眼前的情形。所以它的正確用法是這是一個「缺少兩把鑰匙時」的保證不是「任何情況下」的保證。判斷自己的盤安不安全先問這三條在你的情形里成不成立而不是先問「FileVault 開了沒」。條件成立時不成立時沒有有效登錄憑證宗卷保持加密憑證已交出見第五章沒有加密恢復密鑰宗卷保持加密恢復密鑰在別人手里等同有鑰匙盤已移除并接到其他電腦這是該保證的適用場景盤還在本機見第五章4.2 它保護的是宗卷不是文件同一頁還有一句容易被跳過「在 macOS 11 或更高版本中系統(tǒng)宗卷通過簽名系統(tǒng)宗卷 (SSV) 功能進行保護而數(shù)據(jù)宗卷仍通過加密進行保護?!惯@句把兩類宗卷分開了系統(tǒng)宗卷靠簽名數(shù)據(jù)宗卷靠加密。簽名解決「有沒有被改過」加密解決「能不能被讀」兩個問題兩套機制。還有一處「完整宗卷」里的「完整」包含可移除存儲設備。外接盤也在這句話的范圍內(nèi)它不會因為內(nèi)置盤開了 FileVault 就跟著變成加密狀態(tài)。4.3 反過來讀它沒有承諾「讀不出來」這句原文只描述狀態(tài)沒有描述強度。它沒有說「不可能被恢復」也沒有說「取證工具一定失敗」它說的是「保持加密狀態(tài)」?!副3旨用軤顟B(tài)」和「讀不出來」之間隔著一段距離這段距離由算法強度、密鑰保管方式、攻擊者手里的資源共同決定。官方這句話不為那段距離背書。所以任何「全盤加密 絕對讀不出」的說法都比原文多走了一步。多走這一步的代價是你會把它當成一張萬能牌然后在它不管用的場景里毫無準備。至于「這個加密狀態(tài)在專業(yè)設備面前能撐多久」不在這一頁的范圍里本文不給結論標待驗證。給一個數(shù)字比不給更危險。五、邊界之二開機并已解鎖的這臺機器前面講的都是「盤沒在跑」的情形。這一章?lián)Q到另一種姿勢電腦丟了但它是開著機的。5.1 憑證是在啟動那一步交出去的官方這句很短「用戶在 Mac 上啟用文件保險箱后啟動過程中將需要其憑證?!棺⒁狻竼舆^程中」這四個字。憑證的檢查點在這里不在每次讀文件的時候。下面這段是從前面幾句推的不是官方原話加密保護靜態(tài)數(shù)據(jù)而系統(tǒng)在啟動時用憑證把宗卷解鎖并掛載。那么這次會話里宗卷對所有以你的身份運行的東西都可讀。5.2 「憑證在啟動時就交出去了」這個邏輯不要去想內(nèi)存里密鑰長什么樣、駐留在哪一段、什么時候被清掉。那是另一個層面的問題本文不展開也核不到可靠說法。只用一句邏輯就夠加密的邊界在「卷被掛載的那一刻」。掛載之前防護對象是盤掛載之后防護對象變成了賬號和權限。所以一臺開機并解鎖的電腦丟了你面對的不再是加密問題。這一格要防的是「誰能在這個已登錄會話里做什么」那是權限、鎖屏、會話超時該管的事。5.3 判斷順序先問當時是關著還是開著丟了之后第一件該做的事不是改密碼是回想這個狀態(tài)。因為后面所有判斷都取決于它。丟失時的狀態(tài)加密是否在起作用你面對的問題已關機在起作用宗卷未掛載回到第四章那三個條件開機且已解鎖不在起作用宗卷已掛載會話內(nèi)的權限問題與加密無關睡眠 / 合蓋待驗證見下文不能拿「合蓋」當結論第三行必須留白。睡眠或休眠時密鑰是否駐留、喚醒是否重新要憑證官方這頁沒展開本批核不到。所以本文不寫「合蓋一定安全」也不寫「合蓋就不安全」。能給的只有一個觀察方法合上蓋等一段時間再打開看它有沒有重新要你輸入憑證。這是你自己機器上的現(xiàn)象不是一條通用保證?,F(xiàn)象可以記錄結論得等官方口徑。配套資料獲取本文涉及的三張現(xiàn)場對照——三種丟失姿勢、宗卷與密鑰的對應關系、五步自查——壓在一頁上配合本章這張狀態(tài)表一起看判斷時按行對號即可。放在資料包里掃碼即可獲取六、邊界之三加密之前寫過、后來又刪掉的數(shù)據(jù)這一章是本文最值錢的一段。它講的不是「加密不夠強」而是「加密有一個起點起點之前的刪除不在保護范圍內(nèi)」。6.1 官方原文里那句最容易被跳過的話「文件保險箱啟用后所有現(xiàn)有文件和后續(xù)寫入的任何數(shù)據(jù)都會加密。如果數(shù)據(jù)是在文件保險箱啟用前添加之后又被刪除則不會加密且可能借助取證數(shù)據(jù)恢復工具進行恢復?!棺x兩遍。第一句是承諾啟用之后現(xiàn)有的和以后寫進去的都會加密。第二句是限制啟用之前寫進去、之后又被刪掉的不會加密而且「可能借助取證數(shù)據(jù)恢復工具進行恢復」。第二句用了「可能」這個詞。這個詞很關鍵——它沒有說「一定能恢復」也沒有說「一定不能」它說的是這條路存在。6.2 加密是從某一刻開始的不是回溯的「啟用」是一個時間點。在這個點之前寫進盤、在這個點之后被刪掉的東西落在保護范圍之外。上面這個說法聽起來像同義反復其實指向一批很具體的文件頭幾個月寫的舊項目、導出又刪的表格、下載完就清理的安裝包。它們在你按下「啟用」之前就在盤上你是之后才刪的。官方?jīng)]有在這里展開機制我不替它補。能確定的是結果而且是原文親口給的結果這些數(shù)據(jù)「不會加密」并且「可能被恢復」。一種解釋是加密發(fā)生在寫入那一刻躺在盤上的舊塊不會因為開關打開就回頭重寫。它和原文不沖突但這是讀出來的不是原文寫的只能當腳手架。落到你自己身上如果盤是買來第一天就開了 FileVault這一條基本不適用——沒有「啟用之前」這個窗口。如果是用了一段時間才開的那這個窗口真實存在過。窗口里寫過又刪掉的東西按原文的說法不在加密范圍內(nèi)并且可能被恢復。這不是危言聳聽是原文的字面意思。但它不說明「開了也沒用」它說明「加密有起點起點之前的刪除不在它的賬上」。6.3 「刪除」在這套機制里做了什么同一頁還有一段講的是另一種刪除「刪除宗卷時其宗卷加密密鑰由安全隔區(qū)安全刪除。」注意主語是宗卷。刪掉整個宗卷時密鑰被安全刪除等于銷毀鑰匙剩下的是沒有鑰匙可配的密文。同一頁還說媒介密鑰的目的在于「啟用快速安全的數(shù)據(jù)刪除」不是多一層保密。這兩句放在一起劃出一條很硬的分界你做的動作密鑰有沒有被銷毀盤上還剩什么刪掉一個文件沒有宗卷密鑰照舊該文件占過的塊狀態(tài)取決于 6.1 那句刪掉整個宗卷有密鑰被安全刪除沒有鑰匙能解的密文「刪掉一個文件」和「刪掉一個宗卷」不是程度差別是性質差別。前者動的是目錄項后者動的是鑰匙。想靠「我都刪了」來解決問題動的永遠是前者。七、恢復密鑰加密的另一面是「自己也進不去」前面六章都在講「別人讀不到」。這一章講反面。7.1 那串 24 位字符在哪官方的描述是恢復密鑰是「一個由 24 位隨機數(shù)字和字母組成的序列」可以在「系統(tǒng)設置」「隱私與安全性」「文件保險箱」里查看。要認清它的性質它不是密碼的備份它是另一條進入路徑。密碼那條路走的是「你記得的東西」恢復密鑰這條路走的是「你保管的東西」。兩條路并列不是主備。這也解釋了一個常見困惑——為什么有的人在系統(tǒng)設置里翻不到這串字符。因為在「密鑰僅由硬件 UID 保護」的那條鏈上這一環(huán)本來就不存在。鏈路短一截入口就少一個。7.2 丟了憑證和恢復密鑰那句話對你也成立第四章那句原文的條件是「沒有有效的登錄憑證或加密恢復密鑰」。它沒有說這個「沒有」的主語是別人還是你。所以忘記登錄憑證同時手里沒有恢復密鑰盤上的數(shù)據(jù)你也讀不出來。這不是設計缺陷也不是懲罰是同一套機制的兩面。加密不認人它只認鑰匙。這一條最容易被誤解成「廠商在卡我」。不是。如果存在一條「沒有鑰匙也能進」的路那這條路對拆盤的人同樣成立全盤加密從一開始就沒有意義。7.3 五步自查把前面六章折成一個能照著走的順序。這五步全是只讀的不改任何設置。第一步問狀態(tài)。fdesetup status的回答只有一行先把它記下來。第二步看宗卷。diskutil apfs list會列出各宗卷屬性但記住第三章那條別單看Encrypted:那一行。第三步找恢復密鑰。系統(tǒng)設置 隱私與安全性 文件保險箱看那串 24 位字符在不在、你手上有沒有副本。找不到說明你這條鏈上沒有這一環(huán)。第四步回想啟用時間點。是開機第一天開的還是用了一陣才開的。這一步?jīng)Q定第六章那類數(shù)據(jù)在不在你的范圍內(nèi)。第五步回想丟失時的狀態(tài)。關著、開著、還是合蓋。三種狀態(tài)對應三套完全不同的判斷。??代碼待驗證sudofdesetup list??代碼待驗證sudodiskutil apfs listCryptoUsersdiskXsY上面兩條只讀命令我本機都沒有跑過輸出形態(tài)不確定盤符也要按實際替換所以標待驗證。它們想回答的是同一個問題這個宗卷上除了你還有誰算「有效的登錄憑證」。步驟看什么結論指向1fdesetup status的回答開沒開一行定論2宗卷屬性里那兩個字段并存屬正常別單看一個3恢復密鑰在不在手上缺這一環(huán)等于沒有備用入口4啟用時間點有沒有「啟用前」的窗口5丟失時的狀態(tài)決定回到第四章還是第五章第三步和第四步是最容易被跳過的兩步也是最能改變結論的兩步。前兩步只告訴你「配置是什么」后兩步才告訴你「你這次的情形落在哪一格」。配套資料獲取把這五步做成一張可以打印的核對單配上本文那三張現(xiàn)場對照表交給同事自查時按行打勾即可。放在資料包里掃碼即可獲取附表 A本文引用事實與官方出處對照表編號事實出處本文位置FV-1文件保險箱是內(nèi)建加密功能保護所有靜態(tài)數(shù)據(jù)用 AES-XTS 保護內(nèi)置和可移除存儲設備上的完整宗卷Apple 支持《在 macOS 中使用文件保險箱加密宗卷》§1.1、§2.1FV-2搭載 Apple 芯片的 Mac 上文件保險箱通過使用宗卷密鑰的數(shù)據(jù)保護 C 類實施同上§2.2FV-3啟用文件保險箱后啟動過程中將需要用戶憑證同上§5.1FV-4啟用后現(xiàn)有文件與后續(xù)寫入均加密啟用前添加、之后又被刪除的數(shù)據(jù)不會加密且可能借助取證數(shù)據(jù)恢復工具恢復同上§1.3、§6.1、§6.2FV-5沒有有效登錄憑證或加密恢復密鑰時即使物理存儲設備被移除并接到其他電腦內(nèi)置 APFS 宗卷仍保持加密狀態(tài)同上§1.2、§4.1、§7.2FV-6macOS 11 或更高版本中系統(tǒng)宗卷由 SSV 保護數(shù)據(jù)宗卷仍通過加密保護同上§4.2FV-7所有 APFS 宗卷默認使用宗卷加密密鑰創(chuàng)建啟用 FileVault 時 KEK 受用戶密碼與硬件 UID 共同保護同上§2.3FV-8若初次運行設置助理時未啟用文件保險箱宗卷仍會加密但宗卷加密密鑰僅由安全隔區(qū)中的硬件 UID 保護同上§3.1、§7.1FV-9Apple 芯片與 T2 芯片機型上所有文件保險箱密鑰的處理都在安全隔區(qū)中加密密鑰絕不會直接透露給 CPU同上§2.2FV-10刪除宗卷時其宗卷加密密鑰由安全隔區(qū)安全刪除媒介密鑰旨在啟用快速安全的數(shù)據(jù)刪除不提供額外機密性同上§6.3FV-11恢復密鑰是由 24 位隨機數(shù)字和字母組成的序列可在系統(tǒng)設置 隱私與安全性 文件保險箱中查看同上§7.1、§7.3FV-12本機實測macOSApple 芯片fdesetup status輸出FileVault is On.本機命令輸出§3.2、§7.3FV-13本機實測diskutil apfs list中同一宗卷同時出現(xiàn)FileVault: Yes (Unlocked)與Encrypted: No本機命令輸出§3.2FV-14待驗證diskutil這兩個字段的官方定義未找到本文只寫「兩者不是同一件事」未下定義—§3.3FV-15待驗證睡眠 / 休眠時密鑰是否駐留、喚醒是否重新要求憑證官方該頁未展開本文未下結論—§5.3附表 B術語速查表術語一句話解釋全盤加密對整個宗卷加密不是對單個文件加密保護對象是「未被掛載的盤」靜態(tài)數(shù)據(jù)躺在存儲介質上、此刻未被讀寫的數(shù)據(jù)全盤加密的保護對象文件保險箱Apple 對全盤加密功能的叫法內(nèi)建在 macOS 里宗卷APFS 里可以被掛載的一個單元全盤加密的作用粒度宗卷加密密鑰真正加密這個宗卷數(shù)據(jù)的鑰匙所有 APFS 宗卷默認都有KEK密鑰加密密鑰用來包住宗卷密鑰的那把鑰匙硬件 UID芯片內(nèi)的唯一標識出不了這臺機器未開 FileVault 時是唯一的保護來源安全隔區(qū)獨立處理密鑰的芯片區(qū)域密鑰不會直接交給 CPU恢復密鑰24 位隨機字符組成的備用入口與登錄憑證并列不是它的備份簽名系統(tǒng)宗卷macOS 11 起保護系統(tǒng)宗卷完整性的機制管「有沒有被改過」不管「讀不讀得出」取證數(shù)據(jù)恢復從已刪除但仍留在介質上的數(shù)據(jù)里還原內(nèi)容本文只引用官方提示不涉及具體做法數(shù)據(jù)保護 C 類Apple 芯片機型上文件保險箱所依附的數(shù)據(jù)保護分級寫在最后這篇用到的資料寫這篇文章時我把fdesetup status和diskutil apfs list的輸出并排看了一遍才確認「加密了」和「開了 FileVault」在原廠口徑里是兩件事順手也整理了幾份配套的東西靶場環(huán)境對照表DVWA、upload-labs 在 Windows / macOS / Linux 三平臺的可行性與推薦路徑Web 安全學習路線圖從基礎打牢到安全管理四個階段各學什么常用靶場清單每個靶場練什么、適合哪個階段資料是我自己整理的放在下面這個碼上掃碼即可獲取添加時備注「靶場」優(yōu)先通過。拿到之后建議先看環(huán)境對照表那一份把自己機器上「這一格到底管不管用」先核一遍比記結論管用。