從資料救援需求分析WD USB 加密硬碟架構、暴力破解原理

Posted on Posted in 硬體駭客

新聞上有提到WD  USB Passport 加密硬碟漏洞與破解
這是由Gunnar Alendal 跟 Christian Kison 資安專家
在2015 hardwear.io.(在荷蘭的頂尖硬體資安年會)所發表的演講與論文 (文一) (文二)

OSSLab整合資料恢復實戰經驗加上這作者理論.
來整理出WD USB加密硬碟架構與破解思路.


這篇先講解 WD USB I 代(Jmicron 538)硬碟全扇區AES加解密.
WD USB II 使用不一樣的加解密架構.並且有更快有趣的秒殺解密破解法.

 

章節目錄

全扇區加密是怎回事?
怎控制 Usb to SATA Bridge 加解密與mount,umount?
變更用戶密碼狀況
當密碼忘了?

不瞭解破解底層解密結構算法的土法煉鋼
資料恢復設備PC3000 的Onfly 解密
可以暴力破解嗎?

結論 生命與技術都是會自己走出路

 

一.全扇區加密(Hardware-based full disk encryption)是怎回事?

 

 一般硬碟0 扇區的MBR

經過全扇區加密後 一般硬碟0 扇區的MBR

 

硬碟扇區會變成這樣 是因為透過USB to SATA Bridge IC 做硬體AES加解密運算 .在作業系統層就已經得到解密的LBA .可正常使用

打開WD USB 硬碟會發現如下狀況 發現使用了一體硬碟USB電路版

1

3

加密電路板其實就是在一般硬碟電路版上 多了一顆USB to SATA Bridge

做 WD  一體USB 硬碟資料救援第一步 
先改成SATA接頭
要處理的為先把介面改成 SATA 這邊有下面幾種方法

一體USB板本身還保留SATA接點 直接飛線就可以 此法要走USB供電

各路人馬 研發的各種夾具

把COM口通訊也做進去的夾具

當然 也可以用一般 WD SATA  PCB 來替換.但是因為沒有經過 USB to AES晶片.在碟片上資料都全扇區AES加密.

USB  to SATA AES 加密密鑰架構圖 請把下面定義看懂! 否則無法理解本文

KDF(salt+User PW) = KEK , User PW 做了sha⇒ Key-Encryption-Key (KEK):
 
KEK protects Data-Encryption-Key (DEK)  
KEK保護著DEK
DEK = holy long-term HW AES Key
 SATA to USB bridge SOC 接收DEK AES 來解密扇區 此為終極密鑰  有了他不需要eDEK 也不需要KEK
eDEK (encrypted Data Encryption Key)  
存放在電路板上U14 eeprom或是硬碟韌體區 ,USB to SATA  soc 運作時候是從U14 ROM上取得eDEK
(eDEK 取得方式:短路E20與GND 接點進入USB Bridge downloader 模式 或解焊
dump U14 EEPROM ,或是使用工廠指令讀取碟片上的韌體模塊區)

一個加密儲存系統 當然不可能蠢到自己儲自己的密鑰(DEK)明碼.
必需同時有正確的eDEK(在ROM跟韌體區)與KEK (空白或用戶大腦中) 才能求得出正確的DEK . 

User 密碼to KEK的算法  不論機種 鹽都固定為 “WDC.”
以下為 User Password=abc123 為例

Counter = 0
KEK = ”WDC.abc123”
while counter < 1000 do
KEK = SHA256(KEK) counter+ = 1
end while

所以當User Password=abc123
The final KEK (hex) =
82 44 bc 08 9c 4a ab 5e 53 aa ec 57 ae 90 19 a7
3f 3c a0 6e de 80 7a 70 5b bb a7 10 cf 7c 3a c8

User 密碼to KEK 是由WD 客戶端軟體算出來傳給 Usb to sata AES bridge 晶片. (控制晶片本身不吃User 密碼明碼)

沒密碼時候
這叫hardcoded KEK  
=   
03 14 15 92 65 35 89 79 32 38 46 26 43 38 32 79 FC
EB EA 6D 9A CA 76 86 CD C7 B9 D9 BC C7 CD 86

同系列晶片未設定密碼時候,KEK都是如上一樣的,但是eDEK可不同了.因此DEK也會不同

 

 

怎控制 Usb to SATA Bridge 加解密與mount,umount?

WD 客戶端軟體軟體使用 VSC 工廠ATA指令集(Vendor Specific Commands) 對控制晶片下達 
status, unlock (authentication), erase, setpassword, changepassword, removepassword.
這邊可以用 sg3 util  程式下達scsi command 做範例.
上鎖
sg raw −r 1 k / dev / sdb c1 e1 00 00 00 00 00 00 28 45 00 00 00 00 00 00 20 <32-byte KEK>
(如用戶密碼為上述abc123 , KEK就為03 14 15 92......)
這時候 就會產生eDEk. 

變更用戶密碼狀況

變更用戶密碼時候如果把DEK給變換了,整個硬碟扇區就要重新寫入.很耗費時間並且對原有資料很不安全
因此變化用戶密碼時候還是一樣的DEK.不同的是eDEK 變化了.
變化的用戶密碼(KEK)+變化的eDEK=原來的 DEK 

當密碼忘了?

使用官方程式時候.用戶密碼輸入錯誤五次時候.可以選擇Erase 

下Factory reset (Erase) 時候 ,可改變DEK ,而產生新的DEK 與eDEK.  
因此要救援的Erase的硬碟 若是沒有保留erase前的 eDEK . 光有原有KEK 想要再恢復資料非常困難.

function GENERATEDEK(HostSuppliedBLOB)
// Key material bytes provided by host computer
KeyBytesHost = HostSuppliedBLOB[8 : 8 + KeyLength]
// Host computer decides if on-board RNG generated key material should be mixed in
bM ixKeyBytesHost = HostSuppliedBLOB[3]
if bM ixKeyBytesHost == 0x01 then
for i = 0;i < KeyLength;i + + do
// Mix key material from host computer with My Passport on-board RNG
DEK[i] = KeyBytesHost[i] ⊕ HWRNGBYTE()
end for
else
for i = 0;i < KeyLength;i + + do
// Use host supplied key material as raw DEK key
DEK[i] = KeyBytesHost[i]
end for
end if
return DEK
end function

 

不瞭解破解底層解密結構算法的土法煉鋼

 
所以資料恢復公司則是用原來硬體環境來處理解密來獲取資料 
南京數據恢復開發的WD 解密電路版.把原來的U14 EEPROM (eDEK) 放在上面IC腳座
再配合空白或已知用戶密碼(KEK). 就可對硬碟解密.
但使用此方法需要全扇區備份.萬一硬碟狀況不理想時候.會降低資料恢復的成功性.
 

資料恢復設備PC3000 的Onfly 解密

 

PC3000 在2015 7 更新後 可以 Onfly 模擬 AES解密檔案系統 就不用替整個硬碟做全扇區鏡像了

 

PC3000 會從硬碟碟上韌體模塊區取得 eDEK.

 

可以暴力破解嗎?



理解 WD AES加密演算架構後  就有AES 暴力破解方式 .
目前資料救援設備MRT產品就提供此項功能.

原理如下
正常硬碟的首扇區最末尾是有特征碼”55AA”的,那麼當被加密的首扇區被解密時如果出現了這個特征碼,那麼程式便認為已經猜解出正確的密碼(KEK)。
因此必需先讀取出加密過後的硬碟首扇區。

加密硬盤的加解密系統在解密時,一樣必須先在硬碟模塊(韌體)或U14 EEPROM 獲得“eDEK”,
暴力破解原理是用“eDEK”與“用戶密碼 (KEK)”合成算法再跟0扇區結尾55AA做比對 如果一樣 表示破解求得KEK成功.
再結合eDEK回算出正確DEK.將整個硬碟扇區解密.

但此項功能會耗時很久.

MRT WD AES 加密USB  密碼找回功能圖

結論 生命與技術都是會自己走出路


雖然只是個廉價並且生活隨處可見的外接式硬碟.但是從中我們可以學習加解密原理.

其實ACELab 逆向整個WD Passportr加密硬碟 是在這三位資安專家發表之前. 並且已經實做成設備內的功能.
這是因為大量資料救援公司客戶需求 , 有需求就有人會去逆向工程.
所以現實的說 
有真實客戶需求 –>可以有真正獲利–>逆向工程技術->有用的0day ->成熟穩定的產品->不停的修改前進的產品

不管是資料救援設備公司ACELab 、MRT  或是一般資料恢復公司. 就想盡各種手段與設備.
來處理WD USB一體硬碟的資料救援

如果像數位鑑識設備公司客戶群沒辦法使用他們產品產生正面營收.自然不會研發底層0 day技術
(買個30萬設備 一年只有個位數使用次數 無法回本) 而只能用別人現成的exploit .

感謝我們在一個資訊開放與分享時代. 

OSSLab 的WD USB恢復成功案例

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *