System Recovery - Windows
一切的起因就是某天晚上一個朋友說他的 windows 忘記密碼
然後錯太多次被鎖起來
然後他的電腦有啟用 bitlocker
本來想找公司 infra 幫忙解
但他說好像印象中以前 infra 是用 WinPE 解的樣子
結果 bitlocker 的 key 就變了
但我想想不太合理
改密碼是 bitlocker 解鎖硬碟後對檔案系統的行為
怎麼會改個密碼連 bitlocker key 都變了
於是就花了點時間研究到底 windows 忘記密碼的還原流程到底是如何
先說結論有兩種方式
- 用原本那台忘記密碼的 windows 系統即可
- 把硬碟掛去一台 linux 底下用工具救
測試環境
- Windows 11
- enabled BitLocker
recovery from same windows system
不囉嗦
總之登不進去就對了
然後到右下角的電源鈕
按住 shift
+ 右下角的 Restart
就會進到 recovery mode
接著點 Troubleshoot
然後點 Advanced options
這邊就會出現 Command Prompt 的選項了
點下去會先要你輸入 BitLocker 的解密金鑰
然後就會送你一個 cmd.exe
接著要找一下你的系統槽是在這個 recovery mode 的哪
可以用 wmic
列一下邏輯槽出來看一下
1 | wmic logicaldisk get deviceid,volumename |
通常沒意外都是 C 槽才對
就直接 cd
切換過去吧
到這邊我們就要先了解一個事情
在鎖定畫面的狀態下
右下角第二個那個小人圖標本身其實是一個 exe (Utilman.exe
)
點開後的每一個功能本身也都是一個 exe
所以思路就是去替換掉其中一個 exe 來啟動 cmd.exe
我們這邊就拿小人圖標開刀
直接切過去 System32
裡面
然後將 Utilman.exe
先備份一下
最後將 cmd.exe
複製成 Utilman.exe
到這邊已經差不多了
可以關掉 cmd 然後正常進入系統
開機完成後
去點那個小人圖標就會跳出一個高權限的 cmd.exe
了
最後直接舒舒服服的 net user
改你要的帳號的密碼即可
然後就可以舒舒服服去登入系統啦
recovery from linux
這邊就有點小麻煩
因為要把硬碟拆下來插去另一台主機上
所以如果能用原本的 windows 系統主機來復原當然是最好 XDD
接著進入正題
把硬碟插去 linux 上
先用 fdisk
檢查一下到底哪一顆是我們要的
可以看到有一個寫著 Microsoft basic data
就是我們的目標
而他在的分割區為 /dev/sda3
接著我們需要使用到一個工具叫做 dislocker
它的用處是可以處理 Windows BitLocker 硬碟解密後掛載成 FUSE 結構
然後再讓我們把裡面的 NTFS 系統 mount
起來用
這樣就可以達到真正修改加密磁碟後裡面的內容
安裝的話直接
1 | apt install -y dislocker |
使用上首先要創兩個資料夾準備給掛載用
這邊統一在 /mnt/
底下做
如同上面所說dislocker
需要先將 BitLocker 解密然後形成 FUSE 結構
所以需要有一個 decrypt/
資料夾來存放 block file dislocker-file
1 | dislocker -V <你上面看到的 Windows 分割區> -p<bitlocker-key> -- <掛載點> |
在這個步驟如果出現錯誤可能是因為 apt 預設裝的 dislocker 版本有問題
改從 官方 Github 拉下來自己編譯應該就可以解決
我這邊測試時用的是 Debian 就有撞到
如果改用 Kali 就沒有問題
接著將這個 block file 掛載起來在 c/
資料夾中即可看到 Windows 系統檔案了
1 | mount -o loop /mnt/decrypt/dislocker-file /mnt/c |
這邊也有機會踢到一個問題就是找不到 NTFS driver
記得要apt install nfts-3g
一下
掛載完成後
我們需要使用 chntpw
來對 Windows 的 SAM 進行操作以還原帳號密碼
1 | apt install -y chntpw |
接著去讀取一下 SAM 的內容看看有哪些使用者存在
SAM 在 Windows 系統中的路徑為 C:\Windows\System32\config\SAM
1 | chntpw -l Windows/System32/config/SAM |
這邊就拿 User
舉例
1 | chntpw -u User Windows/System32/config/SAM |
chntpw
只能直接清空密碼
直接選 1
然後退出即可
接下來就按照順序 umount
NTFS 磁碟跟 Bitlocker 區塊
然後就可以把硬碟插回去給 Windows 開機看看 User
這位使用者是否可以無密碼直接登入
1 | umount /mnt/c |
成功
不用密碼就能直接登入了