Cellebrite 4PC 物理提取
Physical Extraction
2019-7-8 高田數位鑑識
認識Android加密機制
在開始探討物理提取之前,要先了解Android現有的三種內容加密機制。從Android 4.0版開始,第一個內容加密機制,Full Disk Encryption(FDE)提供了裝置基本的保護。從Qualcomm Snapdragon 410到Snapdragon 845,FDE使用ARMv8專用的指令集進行加解密加速,讓用戶享有資料加密的保護下不會降低裝置效能。該加密金鑰受可信執行環境(TEE)保護,TEE是CPU的專用部分,僅允許執行特定授權的小程式(trustlet)。在預設的情況下,FDE用於加密和解密的金鑰是透過裝置唯一的硬體序號和預設密碼「default_password」這兩個資料的組合。雖然Android FDE保護機制比iOS的FDE安全性低好幾個等級,但它仍為一般用戶提供了合理的保護。
如果用戶覺的FDE的保護不夠,可選擇採用「Secure Startup」。Secure Startup與FDE最大的差異是在FDE開機後,當用戶尚未輸入PIN/pattern/passcode,手機還處於未解鎖狀態,但系統已將Data分區掛載並解密(/Data Partition)。但是,如果啟用了Secure Startup選項,手機將在啟動過程中要求輸入密碼。 在密碼尚未輸入的狀態下,大多數的Android服務(更不用說APP)是不被允許啟動的,除了Data分區尚未掛載,電話或鬧鐘等功能都不能使用。Secure Startup提供了較佳的保護,但在實際使用情境會造成用戶的困擾,所以該功能較少被用戶接受並啟用。
Android 7.0後另推出了優化的加密機制(Apple則是在iOS 8起開始採用FBE – File-Based Encryption),採用 FBE 加密時,可以使用不同的金鑰對不同的文件進行加密,也可以對加密文件單獨解密。解開FBE的金鑰與用戶的PIN/pattern/passcode皆儲存於TEE中。如果使用FBE的手機重新開機,手機可以讀取存儲在僅受硬體金鑰保護的設備加密區域(Device Encrypted Area)中的內容,所以至少電話或鬧鐘等功能可以使用。其他的內容都存儲在憑證加密區域(Credential Encrypted Area)中,該區域是透過用戶的PIN/pattern/passcode來保護,解鎖後才可以掛載開始使用。
破解Android加密保護
在尚未有加密機制的年代,Chip-Off是鑑識人員的一個利器,只要將儲存晶片解焊取出,資料既可輕鬆提取。Chip-Off第一個面對的困境是iPhone 5c,當iOS導入FDE後,即使可以透過Chip-Off取出資料,鑑識人員只能看到一堆亂碼,沒有相對應的金鑰,是無法讀取以Chip-Off取出的內容。而近年來有將近85%以上的Android設備,出廠預設已導入加密機制,Chip-Off已經是一個過時的技術。
從上面可了解,物理提取要面臨多一個門檻,才能提取出加密的內容。這部分Cellebrite採用兩個方式處理,作業系統層級漏洞與晶片層級漏洞。
物理提取 – Physical Extraction
為了對裝置進行最全面和詳細的分析,Cellebrite的物理提取可以讀取手機快閃記憶體的已配置(allocated)和未配置(unallocated)空間中的資料。 這些資料可大致分為三種不同型態的內容:
- 邏輯提取以外的內容。如之前檔案系統提取所敘,邏輯提取透過API與裝置溝通進而取得內容,但使用API可提取內容有限。
- 系統刪除之檔案。系統僅刪除資料的位址索引,實際資料還在快閃記憶體中。
- 由手機自主收集的內容,如wi-fi networks,GPS locations,web history,email headers,照片的EXIF等。也可參考透過knowledgeC.db掌握使用者行為(一)該篇所敘。
Cellebrite 4PC支援以下三種類型的物理提取方式,透過物理提取可產生出一份bit-for-bit的映像檔:
若從現有Cellebrite支援的8,696支手機清單(UFED_Supported_Phone_List_7.18)上來分析,其中5,244支為Android作業系統,支援最多的提取模式為ADB Rooted,有2,660支,ADB有2,574支,Bootloader有2,127支,Advanced ADB + Generic有1,621,Smart ADB是348支,Decrypting Bootloader為330支,Recovery Partition最少,只有38支。
表一、各物理提取支援的裝置數量
ADB
ADB支援以下四種提取模式。Adb 全名是 Android Debug Bridge,是開發或使用 Android 時很常用到的工具,該提取模式需開啟USB Debugging Mode。該功能支援Android 4.1以上的版本。
方式 | Android版本 | Security Patch |
---|---|---|
ADB | 4及以上 | 無 |
Advanced ADB | 4.3-7.1 | 2016年11月及之前 |
Smart ADB | 6.0-8.0 | 2016年12月及之後 |
ADB Rooted | 4及以上 | 無限制 |
表二、ADB提供的物理提取
Advanced ADB:物理提取,支援作業系統版本介於Android 4.3與7.1之間,及安全性patch版本在2016年11月之前的裝置。過程採用dirty cow (copy-on-wirte)漏洞,會暫時安裝一個App(Extraction App)協助提取,因採用OTG,故儲存位置有兩個選擇:
- 外接記憶卡(External SDCard)
- USB隨身碟(透過OTG線連接手機)
Smart ADB:支援的作業系統版本為Android 6.0 ~ 8.0。比Advanced ADB更優異的是,所支援的安全性Patch版本可為2016年12月及之後。
ADB Rooted:該方式不會在提取過程中嘗試進行root,所以裝置必須已經是rooted狀態,才可透過adb進行物理提取。
ADB:該方式會在提取過程中暫時root裝置,如果成功取得root權限,就可以完成物理提取。
Bootloader物理提取 – Bootloader Extraction
Cellebrite物理提取用的bootloader引導程序是針對各品牌、型號的晶片、USB介面等客製化設計的。Cellebrite也確保該提取過程是非侵入式,並且設備的用戶分區中的任何資料也不會被改變。在設備啟動的階段,UFED將Bootloader引導程序發送到設備的RAM記憶體,設備開始執行引導程序,但不會開機進入至Android作業系統。 接著Cellebrite引導程序僅執行“read-only”動作,開始提取設備上的快閃記憶體。
方式 | Android版本/晶片組 | 備註 |
---|---|---|
Bootloader (FW flashing) |
7.1.1 | Qualcomm-based Samsung Galaxy S7 不支援8.0以上版本,會造成開機迴圈 |
Bootloader Legacy |
支援部分較早的晶片組如Qualcomm 8060, 8250等 | 無法提取加密的手機 |
Non-Decrypting Bootloader |
支援晶片組同Decrypting Bootloader並還有以下 Kirin: 620, 650, 655, 658, 659, 930, 935, 950, 955, 960. Exynos: SM-G930F Galaxy S7, SM-G935F Galaxy S7 Edge, SM-A520F Galaxy A5 2017 and SM-J730F Galaxy J7 Pro, SM-G950F Galaxy S8, SM-G955FD Galaxy S8+, SM-G955F Galaxy S8+, SM-N950F Galaxy Note 8, SM-J600G_DS Galaxy J6, SM-J600F Galaxy J6 (2018) and SM-A600FN Galaxy A6 |
|
Decrypting Bootloader |
可提取加密手機 Qualcomm chipsets: 8909, 8916, 8939, 8952, 8396 and more MTK: .6797,6757,6755,6753,6750, 6737, 6735, 6580 |
表三、UFED 7.15支援之Bootloader提取
Bootloader
在大多數設備中,Cellebrite客製的Bootloader可以繞過所有安全機制,即使設備處於被螢幕鎖定(locked)狀態。因為Cellebrite的Bootloader除了用於讀取設備上的儲器晶片能力外,並沒有執行其它功能的代碼,針對裝置快閃記憶體尚未加密的狀態下適合使用。並且在提取過程中或之後都不寫入任何資料至設備上,且設備並沒有開機進入OS,也無法上網,整個過程是處於Bootloader模式中,所以該模式是符合鑑識科學方法的物理提取。
優點
缺點
Decrypting Bootloader
Cellebrite的Decrypting Bootloader功能,主要支援Qualcomm(請參考以下表四),Kirin、Exynos與MTK晶片組。同樣藉由晶片本身的漏洞,既使裝置已針對快閃記憶體採用加密機制(FDE – Full Disk Encryption),也可成功完成物理提取出解密的bit-for-bit映像檔。這個提取方式是最完整也最快速,唯一的挑戰是採用Qualcomm晶片組的手機需要進入到EDL(Emergency Download)模式,才可啟動提取過程。
優點
缺點
支援完整度較高 | 僅部分支援 |
---|---|
MSM8909 (2014) | MSM8996 (2015) |
MSM8916 (2014) | MSM8917 (2016) |
MSM8939 (2014) | MSM8937 (2016) |
MSM8936 (2014) | MSM8940 (2016) |
MSM8952 (2015) | MSM8953 (2016) |
表四、支援Decrypting Bootloader的Qualcomm晶片組
Recovery Partition提取 – Forensic Recovery Partition Extraction
該提取方式僅支援三星的裝置(手機與平板),發表時間大多數落於於2014~2015間的型號,從UFED手機支援清單上分析,共有38支裝置可使用該提取方式。
提取會在設備處於恢復模式(Recovery Mode)時執行。該過程UFED會將原本裝置的Recovery Partition更換成Cellebrite客製的Forensic Recovery Partition。原本Android設備上的Recovery Partition進入後有可能會變更用戶資料。而Cellebrite的Recovery Partition則避免了這個情況,該功能僅會使用於物理提取(read only),並不會更改任何用戶資料。