史向東 陳啟玲



摘要:全磁盤加密對Android智能手機取證帶來的影響非常明顯,特別是對基于芯片的物理取證,取證人員利用常規取證方式只能獲取到加密鏡像,且直接破解難度大、耗時長。針對這一問題,本文通過深入研究Android手機FDE加密原理,結合帶有官方簽名的手機提權包,獲取手機明文鏡像,解決開啟了FDE的Android手機取證難題。
關鍵詞:Android手機取證;全磁盤加密;手機鏡像
中圖分類號:TP311 文獻標識碼:A
隨著智能手機普及,借助手機進行犯罪的案件日漸上升,且越來越多的智能手機采用Android系統,因此針對Android手機的取證技術一直是電子取證工作中的重點關注內容。
2013年11月,FDE技術首次在Android 4.4中引入,并在Android 5.0中做了加密方式的更新。2015年5月,Google發布Android 6.0,強制要求開啟FDE加密(SecurityWeek News,2015)。FDE加密方式的引入,導致司法領域對手機數據取證的難度增加,通過常規方法獲取到的數字鏡像,解析后呈現亂碼狀態,引發了電子數據取證界對Android加密方式的探討。許多取證領域的專家學者和安全研究人員通過不同角度分析研究FDE技術,一定程度上解決了FDE取證難題。本文在綜合分析Android手機FDE工作原理的基礎上,也嘗試性地提出通過官方簽名包將手機提權,從而獲取明文鏡像的方法,解決對Android 5.0以后FDE加密手機的取證問題。
1研究綜述
關于對FDE加密手機的取證,當前學術界主要基于兩個層面進行研究,一方面是如何突破FDE技術,另一方面則是在突破以后如何進行明文數據獲取。本文研究的重點在于FDE的突破。當前能夠檢索到的研究成果相對較少,主要集中在主機層面的FDE突破技術。2005年Dornseif、Becher和Klein通過FireWire從DMA中直接提取到RAM中磁盤加密密鑰,實現FDE的破解(Becher M.Dornseif M and Klein C N,2005)0 2009年Halderman等人提出冷啟動攻擊(Cold Boot Attack),利用動態隨機存儲器(DRAM)的保持效應,提取計算機RAM中的密鑰(Halderman J A,Schoen S D.Heninger N,et al.,2009)。針對主機FDE的研究日漸成熟,于是學者們提出將這些破密方法應用在手機上的假設,有了意外收獲。2012年德國的Tilo Muller等人針對Android手機的FDE復現了通過冷啟動攻擊,獲取內存數據,破解開機密碼,最終得到明文數據的過程(Tilo M,Michael S and Freiling FC,2012)。由此得知,一些針對電腦FDE的攻擊對于Android的FDE也同樣適用。不過,真正意義上針對Android手機本身特陛分析,進而破解FDE的研究,還要屬2016年安全研究員Gal Beniamini發現的基于高通驍龍處理器的漏洞。該漏洞可以提取KeyMaster的密鑰,從而破解FDE(Smith,M.,2016)。以上提及的研究方法,對于解決FDE加密的破解研究具有一定的借鑒意義。
2FDE解決方案
2.1FDE工作原理
在Android 4.4以后,Android系統通過FDE技術來保護系統userdata分區。加密后,系統會在整個userdata分區尾部分配16KB的存儲空間用于存放加密參數(Encryption Parameters),加密的DEK(Encrypted DEK (Device EncIyption Key))、Salt、Key-Master Key Blob等元素(圖1)。該空間被稱為“Crypto Footer”。其中,DEK是由系統用戶的PIN或者密碼來加密的。其本身是采用AES-CBC-ESSIV:SHA256算法隨機生成的一個128位的主加密密鑰。它會結合一個128位的salt和“KeyMaster Key Blob”加密數據塊一同保護userdata分區。在“KeyMaster Key Blob”加密數據塊中,還包含了解密DEK所需的2048位RSA密鑰。通常,Android設備可大致分為兩個區域,即“非安全世界”和“安全世界”。Android操作系統稱為“非安全世界”,一個完全獨立于Android操作系統的可信執行環境(Trusted Execution Environment, TEE)稱為“安全世界”。只有運行在設備安全世界中的KeyMaster才能解密“KeyMaster Key Blob”加密數據塊。
從上述的FDE加密原理得知,整個FDE解密過程中,如果能夠通過解密數據塊獲取長RSA密鑰,就有可以將DEK進行解密,從而達到userdate分區解決的目的。FDE加密與一般加密相似,加密過程中都會使用一個密鑰文件作為媒介來加密數據。這里的密鑰文件指的就是“default_pass-word”,它是固定寫在“Crpto Footer”中的。當手機開機后,Android會去讀取這個de-fault_password,并將它和存儲的Salt進行scrypt處理后和KeyMaster Key Blob一起傳給運行在處理器“安全世界”上的KeyMaster。KeyMaster會使用存儲在其中帶有的密鑰來對數據塊進行解密獲得RSA密鑰,然后使用scrypt處理過的default_password_salt和RSA密鑰,來制造一個RSA簽名,并將簽名發回給Android。之后,Android會使用一系列算法來處理這個簽名,并最終解密DEK,解鎖設備,如圖1所示。
2.2FDE破解思路
通過分析FDE的工作原理,不難發現用戶設置的鎖屏密碼僅作用于設備本身,并不會對內部的加密性質造成影響。當用戶正常啟動手機至鎖屏界面后,手機已經完成了整個用戶數據的加密解密過程。基于這一情況,本文嘗試性地考慮,先利用官方簽名包獲得手機root權限,再將手機重啟,確保手機可以正常啟動至鎖屏界面,一旦成功進入該界面,說明userdata分區已解密,此時再通過ADB工具,輸入dd命令就可能獲取到明文鏡像。
3實驗與結果檢驗
本文以三星Galaxy S7 Edge作為測試設備,其出廠系統版本為Android 6.0,且未知手機鎖屏密碼。
首先,在手機Downloading模式下將官方簽名包刷人手機,獲得root權限。接著將手機重啟,進入手機鎖屏界面。之后,通過ADB命令找到并打開手機內的fstab.qcom文件,從forceen-crypt=footer參數可以看出手機強制加密,footer表明加密的信息存儲在userdata的尾部。若出現的參數是encryptable=footer則說明手機默認是不加密的。
然后,通過輸入“getpropl grep crypt”命令,判斷手機的加密是否是FDE,得到結果如圖2所示。由圖中ro.crypto.state參數得知,該手機已加密。根據ro.crypto.type的參數值block,確認其加密方式是FDE,若值為file,則說明加密方式是FBE。此外,通過解析Android源碼得知在同一部手機中只存在一種加密方式,進一步確定測試設備為FDE加密。
最后,重啟手機,進人手機鎖屏界面,通過dd命令獲取到鏡像。如果利用常見的電子取證分析軟件將鏡像包解析,可以發現此時獲取得鏡像是已解密后的數據。本文使用的是南京拓界信息技術有限公司的“響尾雀”手機極速取證系統的第三方數據解析功能,成功解析數據包,可以清晰看到解析后的相機數據已經是明文數據(圖3)。
4結論及展望
由于用戶設置的鎖屏密碼不會影響系統加密性質,當用戶啟動手機至鎖屏界面時,用戶數據已經完成了解密,因此通過刷寫官方簽名包,獲取明文鏡像的方法可以成功獲取Android手機鏡像。當前通過對三星S7、C8等機型測試,發現該方法可行,具有操作簡單、靈活的優勢,同時也受機型復雜,不易找到官方簽名包的影響而具有局限性。