MTP模式及其體系結構
基於MTP的USB連線模式
MTP模式(如圖1所示)是一種新的USB連線模式,該協定允許用戶在移動設備上線性訪問媒體檔案。PTP只是被設計用於從數位相機下載照片,而MTP可以支持數字音頻播放器上的音樂檔案和攜帶型媒體播放器上的媒體檔案,以及個人數字助理中個人信息的傳輸。傳統的USB MSC模式下,電腦操作存儲設備的粒度是設備塊(FAT block),而不是檔案系統,當Android手機通過USB MSC將記憶體卡掛載到電腦後,電腦就擁有對記憶體卡的絕對控制權。這樣,手機就無法同時訪問記憶體卡了,而且在電腦對記憶體卡操作的同時也有可能破壞其檔案系統,導致記憶體卡重新掛載到手機後不能被識別。而MTP模式連線是在邏輯檔案層完成讀寫,記憶體卡的控制權其實還是屬於手機,只不過智慧型手機通過MTP協定向電腦構建了一個虛擬檔案系統,電腦在操作其中的檔案時,都會通過標準 MTP協定向智慧型手機發起請求,這樣的連線使檔案更安全,減少損毀檔案的風險。因此,越來越多智慧型手機的製造廠商支持MTP的連線模式,甚至有些型號的手機不支持USB MSC,只支持MTP模式來打開內置存儲。
MTP模式的體系結構
Android MTP的體系結構 如圖2所示
1、C++層
C++層包括幾個主要對象,如Mtp Request Packe負責 從USB驅動讀取數據,並結構化命令格式及其參數; Mtp Data-Packet負責結構化手機要返回給PC的數據包;Mtp Response Packet負責結構化手機要給PC返回的response;Mtp Server負責解析來自PC的命令並調用相應 的接口函式進行處理。
2、Java層
Java層包括Usb Receiver、Mtp Service、Mtp Server等 對象。其中Usb Receiver用來監視USB事件,判斷何時啟動或停止Mtp Service;Mtp Service負責啟動Mtp Server和載入存儲設備的信息到資料庫;Mtp Server負責通過jni接口去啟動/停止C++層中Mtp Server以及處理Storage的添加和刪除;Media Provider則負責查詢和更新資料庫;Mtp Database的功能用於在Media Provider和Mtp Server之間轉換數據格式,例如把MTP傳遞過來的信息(如檔案大小、檔案路徑等)轉換成Media Provider需要的格式以方便其更新資料庫。
MTP模式恢復取證的難點
MTP模式提高了手機檔案系統的安全性,但卻給取證人員帶來了難題。其一,現階段許多手機廠商不支持外插SD卡,且僅有一個內置存儲器。這樣的硬體結構使得取證人員無法取下手機存儲卡,來單獨使用專用設備進行恢復及取證工作;其二,專用的取證設備只能恢復簡訊、通話記錄、通訊錄等文本信息,無法恢復手機內置存儲卡內被刪除的圖片,錄音等多媒體信息;其三,對於內置存儲卡,傳統的取證方法是:手機連線電腦以後,可以識別出盤符,這樣可以用數據恢復軟體(Encase、取證大師、 Easy recovery等)直接恢復並進行取證。但是,對於只支持 MTP模式的智慧型手機,連線電腦後,根本無法識別為盤符,而是提示“攜帶型媒體播放機”形式,故而傳統的取證恢複方法都無法使用。
MTP模式恢復取證的對策
根據以上的分析,得出對於MTP模式連線的智慧型手機所採用的取證方法流程如圖3所示。 對於MTP連線模式的手機多媒體數據恢復取證有以下三種情況:第一種情況,手機支持外插SD卡,由於音頻、圖像、視頻等多媒體信息一般保存在SD卡中,所以取下SD卡直接用讀卡器讀取裡面的信息,或者使用恢復軟體實現多媒體信息的數據恢復和取證,參考文獻 通過分析 NAND的存儲結構和YAFFS2檔案系統的結構,提出一種方法來恢復Android智慧型手機中被刪除的數據。第二種情況,手機不支持外插SD卡,即使用內置一體存儲器。此時為了保證數據的完整性,參考文獻 通過Android SDK工具對手機內外置存儲進行鏡像備份,邏輯分析利用檔案系統分析,查找每個應用程式自帶的資料庫檔案來獲得有價值信息,物理分析通過對記憶體鏡像進行數據恢復以尋找刪除的檔案,這種情況下手機鏡像的獲取是成功恢復的首要條件,但由於不同手機廠商對系統的不同設定使得並不是所有的手機都可以成功製作鏡像檔案,有些品牌的手機鏡像甚至需要進入recovery模式才能獲取。第三種情況,對於手機不支持外插SD卡,在現階段技術手段條件下也無法獲取鏡像時,可以在手機端注入數據恢復APK程式來進行手機端數據恢復取證。
MTP模式取證的方法
可成功鏡像的手機取證方法
根據以上的分析發現,MTP手機數據恢復取證的難點主要針對內置存儲卡且手機僅支持MTP模式的連線方式的情況。對於上述情況,為了保證數據的完整性和有效性,首選的方法是先提取手機的鏡像檔案,再使用分析軟體對該鏡像進行分析。要提取手機的鏡像檔案,首先必須獲取手機的root許可權,然後利用取證大師或Encase等專業軟體 對鏡像檔案進行掛載恢復。提取手機鏡像的方法很多,通常可以使用網路上的免費軟體獲取,但由於手機平台的多樣化,對於鏡像無法直接獲取的情況下,可以進入手機的Recovery模式,使用參考文獻 的方法提取鏡像。提取過程如下:
1、 獲取mtd值
通過組合鍵(不同品牌和型號的手機組合鍵不同,需要上網查詢)手機進入了recovery模式,進入DOS環境下,通過ADB命令中“ADB devices”連線手機,列出 ADB設備。如果返回“List of devices attached”則表示連 接成功,然後使用su指令進入superuser許可權,利用cat /proc/mtd找到userdata的mtd值(一般為5),如圖4所示。
2、鏡像獲取
可以使用mount |grep /data獲取dd的鏡像目標,鏡像的命令為dd if=/dev/block/mtdblock5 of=/mnt/sdcard/out. Img,若dd鏡像不成功時,也可直接用cat方式輸出鏡像檔案,如圖5所示。命令為cat/dev/mtd/mtd5>/mnt/sdcard/out.img.
鏡像不成功時的手機取證方法
對於提取成功的img鏡像檔案,可以用Encase、Easyrecovery等常用的硬碟恢復軟體來實現數據的恢復取證。鏡像的成功獲取使得對於手機數據的恢復取證脫離了手機系統和手機連線模式的環境限制,同時也保證了數據的完整性和有效性。但由於一些智慧型手機廠家對底層作業系統的不同設定和修改,使得利用上述方法也無法獲取有效鏡像的情況,例如小米2、HTC one系列。對於手機鏡像不成功或鏡像檔案無法分析的情況,即上述所說的第三種情況,圖5的流程圖採用在手機端注入APK恢復程式(Hexamob_Recovery_ PRO_5.0.apk)來進行手機端的數據恢復。
實驗使用的智慧型手機為小米2,該手機不支持外插SD卡,且僅支持MTP連線模式。恢復的方法是,先打開 USB調試,獲取手機root許可權,連線電腦後安裝APK恢復程式,並運行。但是需要注意的是,在運行該恢復程式之前,由於該程式只能一次性恢復,如果手機在恢復的過程中鎖屏,就會停止數據的恢復,所以可以在恢復前將休眠時間改成永不,然後再開始進行。程式成功運行後,選擇全部恢復,然後選擇恢復的盤和恢復後的檔案所在的位置。為了保證原始信息的完整性,即手機中原始的信息不被新恢復的信息所覆蓋,故在恢復前利用OTG連線隨身碟或移動硬碟後,設定會數據恢復後的存儲目標盤,如圖6所示:
最後選擇需要恢復的多媒體信息的類型,開始進行恢復,如圖7所示。恢復完成後在隨身碟上會出現recovered目 錄,存放的就是手機記憶體中的所有圖片,包括已刪除的圖片,從而成功完成手機取證。