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