1. 程式人生 > >【冷知識】安卓微信取證(3)-微信資料恢復

【冷知識】安卓微信取證(3)-微信資料恢復

640?

ID:Pansafe

原創:皮浩

1 記錄級恢復

大部分使用者刪除微信資料時,只對部分訊息進行鍼對性的刪除,實際上僅僅刪除了EnMicroMsg.db檔案message資料表中的區域性內容,由於沒有覆蓋新資料,在安卓微信5.2版本前可以通過SQLite恢復工具直接恢復;5.2版本後因騰訊對安卓版本實行了刪後寫0覆蓋的機制,至此對資料庫檔案無法直接恢復。

空間清理時,一般會將聊天產生的多媒體檔案和傳輸的其他檔案直接刪除,文字記錄仍然保留,如需恢復上述檔案的需要進入檔案級恢復(詳見下文);如果選擇清空微信資料時,將會連同文字記錄一併全部刪除。

為了儘可能尋找被刪除的重要資料,經過研究發現在以下兩處仍有可能存在歷史已刪除資料:

1、索引檔案

安卓微信在建立EnMicroMsg.db檔案的同時會生成一個索引檔案,目的在於方便資料檢索,相當於對產生過的資料會有一個類似快取的備份。早期版本的索引檔案為IndexMicroMsg.db,該檔案結構如圖所示:

640?wx_fmt=png

其中資料表包括了群組及成員、遊戲、收藏、通訊錄、好友標籤、訊息內容等。依次對重要資料進行分析,發現群組及成員對應ChatRoomMembers表內容為明文,如下圖所示:

640?wx_fmt=jpeg

收藏內容(FtsIndexFavorite_content)、通訊錄內容(FtsIndexContent_content)、訊息的容(FtsIndexMessage_content)等表項中內容欄位均為密文,如下圖所示(亂碼的即為密文):

640?wx_fmt=jpeg

圖中加密欄位的解密祕鑰為IMEI與uin組合後的MD5值,因此很容易解析出明文內容。

目前6.6以後版本的微信索引檔案已更新為FTS5IndexMicroMsg.db,所有表名稱變更為FTS5開頭,內容欄位均為明文,如下圖所示為某微信索引的訊息內容。

640?wx_fmt=png

上圖中並沒有詳細的訊息傳送/接收主體、也沒有時間等必要欄位,此時只需與下圖所示的FTS5MetaMessage表進行對應匹配即可。

640?wx_fmt=png

當EnMicroMsg.db檔案內資料刪除時,對應的IndexMicroMsg.db或FTS5IndexMicroMsg.db檔案中的相應內容同步刪除,但不受寫0覆蓋的影響,因此可以從該索引檔案中基於資料庫恢復原理獲得大量已被刪除的資料記錄。這也是目前部分國產取證軟體所恢復出的微信資料的來源。

2、備份檔案

當微信使用中有過版本升級時,預設會生成EnMicroMsg.db.bak檔案,該檔案用於備份之前版本產生的聊天資料,及微信版本升級前的EnMicroMsg.db資料。當EnMicroMsg.db內舊資料刪除時,對應的bak檔案中的相應內容並沒有刪除且不受影響,因此可以從該備份檔案中獲得大量已被刪除的資料記錄。這部分資料很容易被忽略,但也可以作為恢復已刪除微信資料的來源。

該bak檔案經過壓縮加密,加密方式未公開。我們通過研究獲得瞭解密金鑰(金鑰組成暫不公佈),並通過騰訊的開源工具成功解壓,從而能夠開啟該bak檔案,內部結構與EnMicroMsg完全相同。

綜合上述兩種方式,我們可以更好地找回被刪除的微信歷史資料,使安卓微信取證能夠獲得更多的線索和證據。

2  檔案級恢復

微信訊息中的音視訊圖片及傳輸的其他檔案均以附屬檔案形式儲存在獨立目錄中,刪除這些訊息時對應會刪除相應原檔案。如果要恢復這些檔案,首選當然是尋找是否有下載或備份到其他路徑的可能,其次考慮對手機儲存區域進行全盤映象,再對未加密的映象進行目錄恢復或檔案挖掘(類似於硬碟或U盤的操作)。由於安卓系統的升級和檔案系統的變化,目前針對安卓映象的檔案恢復效果並不理想。

APP解除安裝時,一般不會保留資料(刻意保留的除外),所有相關檔案均會刪除,除非能夠恢復出微信原始檔案,否則無法恢復出相關資料。因此,同樣需要藉助映象,在未加密的映象中針對性的恢復安卓微信目錄中的幾個核心資料庫檔案及其他聊天附屬檔案。

恢復出廠時,相當於系統還原,所有資料檔案全部清除並被新系統重新覆蓋,微信資料幾乎蕩然無存。

640?wx_fmt=jpeg

640?wx_fmt=png