楊陽
摘 要: 如何從已刪除或損壞的數(shù)據(jù)中提取與恢復(fù)數(shù)據(jù)是手機取證的重要課題之一。研究了Android手機的SQLite數(shù)據(jù)存儲結(jié)構(gòu)和尋址Btree頁的樹形結(jié)構(gòu),通過遍歷葉子頁的方法來恢復(fù)已刪除數(shù)據(jù);介紹了國內(nèi)外數(shù)據(jù)恢復(fù)方法研究現(xiàn)狀,為進一步研究Android手機數(shù)據(jù)恢復(fù)提供參考。
關(guān)鍵詞: 手機取證; Android手機; 數(shù)據(jù)存儲; 數(shù)據(jù)恢復(fù)
中圖分類號:TP309 文獻標志碼:A 文章編號:1006-8228(2017)04-29-03
Abstract: How to extract and recover data from deleted or corrupted data is one of the most important issues in mobile phone forensics. This paper studies the SQLite data storage structure and the addressing of the Btree page tree structure of Android mobile phone, to recovery the deleted data by traversing the leaf pages. The research status of domestic and foreign data recovery methods are introduced, which provide the reference for the further research of Android mobile phone data recovery.
Key words: mobile phone forensic; Android mobile phone; data storage; data recovery
0 引言
隨著移動通信技術(shù)的發(fā)展和智能手機的普及,手機犯罪呈高發(fā)態(tài)勢。據(jù)Gartner的數(shù)據(jù)顯示[1],2015年Android手機市場占有率高達80%,所以Android手機已經(jīng)成為主要的數(shù)據(jù)取證源之一。如何從Android手機中提取和恢復(fù)數(shù)據(jù),成為司法取證的一個課題。本文主要基于Android系統(tǒng),歸納主流的手機數(shù)據(jù)恢復(fù)技術(shù),概括國內(nèi)外研究成果與現(xiàn)狀,并對Android手機數(shù)據(jù)恢復(fù)技術(shù)發(fā)展作了總結(jié)與展望。
1 手機數(shù)據(jù)存儲分類
根據(jù)Android手機內(nèi)部存儲機制,手機數(shù)據(jù)存儲方式主要分為內(nèi)部存儲和外部存儲兩種。其中內(nèi)部存儲主要有SIM卡和手機機身內(nèi)存,外部存儲主要有手機外部存儲卡。此外,短信服務(wù)提供商和移動網(wǎng)絡(luò)運營商也包含相對應(yīng)的有效信息。
⑴ SIM卡即手機卡。也稱客戶識別模塊卡,主要用來鑒別網(wǎng)絡(luò)用戶身份信息,存儲客戶信息等??ㄉ纤械臄?shù)據(jù)都是以文件的形式存儲在卡上相應(yīng)的數(shù)據(jù)存儲區(qū)域,其中SIM卡里存儲的數(shù)據(jù)由四部分組成。第一部分是固定存放的數(shù)據(jù)。該類數(shù)據(jù)信息在移動設(shè)備被出售之前由SIM卡中心提前寫入。包含國際移動用戶識別號、鑒權(quán)密鑰、加密算法等一些固定不變的信息。第二部分是暫時存放的相關(guān)網(wǎng)絡(luò)數(shù)據(jù)。如LAI(位置區(qū)域識別碼)、TMSI(移動用戶暫時識別碼)、禁止接入的公共電話網(wǎng)代碼等。第三部分是與業(yè)務(wù)相關(guān)的代碼,如PIN(個人識別碼)、PUK(解鎖碼)、計費費率等。第四部分是用戶存儲的電話號碼簿信息。比如手機用戶隨時輸入的電話號碼等。
⑵ 手機內(nèi)存。手機內(nèi)存分為兩塊:RAM(動態(tài)存儲區(qū))和ROM(靜態(tài)存儲區(qū))。其中,動態(tài)存儲區(qū)又稱隨機存儲區(qū),用來臨時保存數(shù)據(jù),突然斷電時會丟失存放的數(shù)據(jù)信息;靜態(tài)存儲區(qū)又稱只讀存儲區(qū),用來存放用戶數(shù)據(jù)文件,對突然出現(xiàn)斷電的情況也不受影響,起到保護的作用。
⑶ 手機擴展存儲卡。手機擴展存儲卡通常使用FAT文件系統(tǒng),常用的外置存儲卡有TF卡、CF卡等,屬于閃存卡。手機擴展存儲卡是為了擴大手機內(nèi)存容量,減少手機自身內(nèi)存占用,一般用來存放大量的音頻、視頻、圖片等文件,如果對這些信息進行恢復(fù),往往也能獲得有價值的線索。
2 基于SQLite的數(shù)據(jù)恢復(fù)方法
SQLite數(shù)據(jù)庫在Android手機中應(yīng)用廣泛,具有量級輕、資源占用率低、易移植等優(yōu)點。在Android系統(tǒng)中,大部分數(shù)據(jù)存放在SQLite數(shù)據(jù)庫中,比如短消息、通訊錄和通話錄等,這些數(shù)據(jù)有較多價值。所以本文以SQLite數(shù)據(jù)庫為研究對象,描述SQLite數(shù)據(jù)庫的存儲原理及數(shù)據(jù)恢復(fù)方法。
2.1 SQLite存儲原理
從SQLite存儲機制來看,頁是SQLite數(shù)據(jù)庫的最基本存儲單元。SQLite文件主要由一個或幾個固定大小的頁所構(gòu)成。頁由空閑頁、溢出頁及Btree頁構(gòu)成。由于SQLite數(shù)據(jù)庫主要采用Btree樹形結(jié)構(gòu),所以SQLite數(shù)據(jù)庫文件主要由多個Btree文件所構(gòu)成。數(shù)據(jù)庫中第一個頁(page 1)永遠是Btree頁。第一頁的前100個字節(jié)作為“文件頭”,描述數(shù)據(jù)庫文件的版本、格式的版本、頁大小、編碼等所有創(chuàng)建數(shù)據(jù)庫時設(shè)置的永久性參數(shù)信息。SQLite數(shù)據(jù)庫文件頭結(jié)構(gòu)如表1所示。
其中恢復(fù)刪除的一個重要前提就是定位刪除數(shù)據(jù)的位置。通常的方法是根據(jù)Btree葉內(nèi)部存儲機制和樹形邏輯結(jié)構(gòu),定位出存放在SQLite的底層數(shù)據(jù)信息。根據(jù)Btree頁的樹狀邏輯形狀可知,Btree頁從上至下由根頁、內(nèi)部頁、葉子頁組成。Btree頁的根頁和內(nèi)部頁僅作為數(shù)據(jù)結(jié)構(gòu)的路徑導(dǎo)航,并不存儲數(shù)據(jù)信息。包含關(guān)鍵字的數(shù)據(jù)區(qū)域指針指向下一個樹形路徑的頁。在葉子頁,記錄和頁按鍵值順序排列,以便數(shù)據(jù)遍歷結(jié)果,同時根頁和內(nèi)部頁均指向下一層路徑的頁。所以,對被刪除數(shù)據(jù)進行數(shù)據(jù)恢復(fù)的一般方法是:首先找到刪除數(shù)據(jù)所在的根頁,然后根據(jù)內(nèi)部頁的地址,搜索到葉子頁的地址,因為被刪除數(shù)據(jù)的信息是存儲在葉子頁上面的,最后通過遍歷葉子頁的方法提取到已刪除的數(shù)據(jù)信息。Btree頁的樹形結(jié)構(gòu)如圖1所示。
2.2 SQLite數(shù)據(jù)恢復(fù)方法
依據(jù)SQLite數(shù)據(jù)庫文件中數(shù)據(jù)的存儲原理,可通過已刪除數(shù)據(jù)存儲的邏輯結(jié)構(gòu),層層推導(dǎo),從SQLite文件數(shù)據(jù)存儲中查找到已刪除數(shù)據(jù)地址從而進行提取和恢復(fù)。SQLite數(shù)據(jù)恢復(fù)步驟如下:
⑴ 查詢刪除數(shù)據(jù)的表名。根據(jù)Android系統(tǒng)開源的特性,按照數(shù)據(jù)文件存儲特性來定位所在的表名,可以很方便根據(jù)數(shù)據(jù)庫一級級目錄或者通過數(shù)據(jù)庫操作指令找到刪除數(shù)據(jù)的表名。
⑵ 查找該表所對應(yīng)的根頁。數(shù)據(jù)庫中的表不盡相同,要想準確定位表的信息,需要找到該表的起始地址和結(jié)束地址。根據(jù)Btree頁的存儲結(jié)構(gòu),這就要查找該表所對應(yīng)的根頁地址。
⑶ 查找樹的結(jié)點頁和葉子結(jié)點。根據(jù)Btree頁的樹形邏輯結(jié)構(gòu),樹形路徑中的頁均由上一層頁中的數(shù)據(jù)域指針所指引,Btree頁的內(nèi)部頁和根頁僅為數(shù)據(jù)結(jié)構(gòu)提供指向作用,這些通過遍歷的方法一直查找到已刪除數(shù)據(jù)葉子頁的地址,然后推導(dǎo)出上一級內(nèi)部頁所對應(yīng)的葉子頁的初始地址和結(jié)束地址。
⑷ 查找freeblock塊提取信息。當數(shù)據(jù)被刪除后,根據(jù)SQLite數(shù)據(jù)庫的內(nèi)部存儲原理,實際上并沒有完全清空,而是形成了freeblock塊。根據(jù)查找到的葉子頁的地址信息,通過葉子頁的起始地址和結(jié)束地址就可以找到freeblock塊從而恢復(fù)出被刪除信息,或者在未分配區(qū)域中恢復(fù)被刪除信息。
3 國內(nèi)外研究現(xiàn)狀
國際上的數(shù)據(jù)恢復(fù)技術(shù)起步較早,成熟度較高。2005年,McCarthy Paul[2]重點研究在得不到ROOT權(quán)限的前提下,通過邏輯方法在當前權(quán)限范圍內(nèi)提取相關(guān)的數(shù)據(jù)信息。與“邏輯提取”相對應(yīng)的是“物理提取”,即運用相應(yīng)技術(shù)手段從底層數(shù)據(jù)存儲文件或者原始鏡像文件中提取并恢復(fù)已刪除的數(shù)據(jù)。2006年Willassen[3]以及2007年Breeuwsma[4]等,分別提出直接從手機芯片讀取原始信息,優(yōu)點是在數(shù)據(jù)覆蓋前提取,保證了數(shù)據(jù)的原始性和有效性。此方法的困難是技術(shù)系數(shù)較高,需要復(fù)雜的數(shù)據(jù)環(huán)境和非常專業(yè)的技術(shù)人員。2012年Sangjun Jeon[5]針對電子證據(jù)中最有價值的短消息數(shù)據(jù),重點定位短信息的數(shù)據(jù)單元,通過尋址已刪除短信息區(qū)域,通過“暴力估算”方法對未被覆蓋的單元已刪除數(shù)據(jù)進行恢復(fù)。
國內(nèi)方面,王隨剛[6]等通過對SQLite3數(shù)據(jù)庫內(nèi)部存儲結(jié)構(gòu)的綜合分析,尋址到刪除的歷史記錄,完成目標區(qū)域數(shù)據(jù)的提??;蘭州理工大學(xué)的方東蓉[7]等人提出“盡最大努力恢復(fù)”這一新型恢復(fù)方法,通過粒度細化來檢驗恢復(fù)數(shù)據(jù)的完整性。武貝貝[8]等人基于存儲介質(zhì)NAND恢復(fù)用戶歷史信息,構(gòu)建行為事件軸來模擬真實環(huán)境,從而有效地提取刪除信息。劉思思[9]等人提出了一個基于Android系統(tǒng)的手機取證系統(tǒng)的模型,并對短信、通訊薄、日歷、地理位置等手機信息進行提取與恢復(fù)。葉亦陶[10]等人用EASYRECOVERY軟件作為恢復(fù)工具,對主流手機操作系統(tǒng)進行數(shù)據(jù)提取與恢復(fù)。總之國內(nèi)的數(shù)據(jù)恢復(fù)技術(shù)雖然起步較晚,但是發(fā)展迅速。如廈門美亞柏科、杭州安恒信息、北京華恒信安等,這些公司已有許多恢復(fù)手機數(shù)據(jù)的成熟產(chǎn)品上市。
4 結(jié)束語
近年來,隨著電子證據(jù)作為法律重要證據(jù)之一,手機取證技術(shù)越來越成熟,越來越規(guī)范。面對復(fù)雜的手機信息環(huán)境,Android手機數(shù)據(jù)恢復(fù)技術(shù)不僅要嚴格按照法律程序,向規(guī)范化、標準化邁進,避免出現(xiàn)因程序不規(guī)范而失去法律效力的情況,同時要求數(shù)據(jù)恢復(fù)技術(shù)更有效、更準確、更快捷。本文針對市場占有率高的Android手機,詳細論述了基于SQLite數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,具有普遍性和易操作性。下一步研究的內(nèi)容是如何在復(fù)雜的存儲環(huán)境中提高恢復(fù)率和提取率,如何利用系統(tǒng)漏洞突破技術(shù)壁壘。
參考文獻(References):
[1] 百度文庫. 2015年全球智能手機銷售據(jù).[DB/OL].http://wenku.baidu.com/view/cb2288c3a8114431b80dd80d.html,2016-02-23.
[2] McCarthy Paul. Forensic Analysis of Mobile Phone[D].University of South Australia,2005.
[3] Willassen Svein. Forensic Analysis of Mobile PhoneInternal Memory[J]. Advances in Digital Forensics,2005.194:191-204
[4] Breeuwsma Marcel, de Jongh Martien, Klaver Coert.Forensic Data Recovery from Flash Memory[J].Small Scale Digital Device Forensics Journal,2007.1:1-17
[5] Sangjun Jeon,Jewan Bang,Keunduck Byun. A Recovery Method of Deleted Record for SQLite Database[J].Pers Ubiquit Comput,2012.16(6):707-715
[6] 王隨剛,吳莎莎,李昂.基于SQLite3的Android手機數(shù)據(jù)恢復(fù)技術(shù)的研究[J].警察技術(shù),2012.5:4-7
[7] 方冬蓉.基于Android手機的數(shù)據(jù)恢復(fù)方法研究及應(yīng)用[D].蘭州理工大學(xué),2014.
[8] 武貝貝.面向NAND閃存的SQLite 數(shù)據(jù)恢復(fù)技術(shù)研究與應(yīng)用[D].杭州電子科技大學(xué),2013.
[9] 劉思思.基于Android系統(tǒng)的手機信息提取與恢復(fù)研究[D].武漢郵電科學(xué)研究院,2014.
[10] 葉亦陶,斯進.手機數(shù)據(jù)存儲和恢復(fù)方法研究[J].信息網(wǎng)絡(luò)安全,2012.3:35-37