Android設備的微信數據收集(4)--基於備份的未root設備數據收集技術

1.4 基於備份的未root設備數據收集技術

這種操作方式優勢在於不需要面對root的風險,且可以繞過微信登錄直接獲取微信數據,操作更爲簡單;但部分廠商提供的手機自帶備份軟件並不支持該項操作或有缺陷,使用第三方應用程序有未知風險,可能導致取證數據不完全或無法取證。

以下對華爲、OPPO、VIVO、小米四款目前市面上佔有率較高的手機進行該方法取證研究。

1.4.1 華爲設備

華爲手機在2019年出貨1.42億臺,市場份額38.5%,穩坐國內智能手機市場龍頭老大之位。華爲在5G手機上的技術和市場先發優勢,都成爲了助推華爲手機在國內市場銷量持續增長的關鍵。

華爲手機目前的備份軟件9.0版本,僅支持雲備份和OTG轉接頭在外部存儲中備份。通過與廠商溝通,瞭解到目前華爲設備備份實現方法爲降級備份軟件到8.0版本,再實現取證,且需要對備份的.db文件進行二次導出(參考王喆_北京.安卓微信本地數據庫解密與刪除聊天記錄恢復完全教程[EB/OL]. http://blog.sina.com.cn/s/blog_5c5460080102ymqq.html, 2019–03–27.),參考圖3.5,具體實現步驟如下:

1)若備份軟件版本大於8.0,在“應用管理”卸載當前手機“備份”軟件;

2)安裝華爲手機助手,通過USB將手機連接到電腦,導入舊版本“備份”apk安裝文件,導出 “/sdcard/tencent/MicroMsg” 資源文件,並在手機端確認安裝;

3)打開“備份”,提示升級選擇“以後再說”,選擇備份到“內部存儲”,備份選擇“應用數據”,選擇微信,設置備份密碼選擇跳過;

4)默認備份路徑爲“內部存儲/Huawei/Backup/backupfiles/<備份日期時間命名的文件夾>”,部分型號有可能在PC端無法看到文件,此時可以在手機“文件管理”中打開相應文件夾,選擇“移動到”任何PC端可以看到的文件夾;

5)使用電腦導出備份到案件文件夾,應有三個文件,分別爲安裝包.apk,數據文件.db和配置文件.xml。

圖4華爲手機備份流程示意

 

通過以上步驟,導出如圖5所示三個文件,分別爲:com.tencent.mm.apk:當前微信的安裝文件;com.tencent.mm.db:微信主要數據表info.xml:配置文件。com.tencent.mm.db文件通過二次導出即爲數據庫“/data/com.tencent.mm/”目錄。

圖3.5華爲手機備份出的數據文件

 

使用sqlite數據庫圖形用戶界面工具打開com.tencent.mm.db文件,其中發現只有三個表,其中apk_file_info表中儲存了所有文件名和索引號,apk_file_data中則存儲了文件數據。索引號爲-1的是目錄,索引號大於0的是有用的文件。在apk_file_data中索引號相同的是同一個文件,每個文件被切成若干個8K以內的碎片進行存儲,導出時需要拼接起來再導出,如圖6。

圖6 .db文件數據結構示意

 

可以通過SQL語句導出文件,整個導出過程較爲漫長,其中需要注意不要關閉腳本程序和開關機,避免備份文件損壞。以https://bbs.pediy.com/thread-250714.htm帖子中out.py腳本爲例,運行一段時間後在腳本目錄“/data/data/com.tencent.mm”成功導出可用於分析的微信數據庫文件,如圖7。與步驟2中導出的“/sdcard/tencent/MicroMsg” 資源文件結合,即爲完整的微信數據文件。

import sqlite3
import os
conn = sqlite3.connect('com.tencent.mm.db')
cursor = conn.cursor()
cursor.execute("SELECT count(*) FROM apk_file_info")
all = cursor.fetchone()[0]
cursor.execute("SELECT file_path,file_index FROM apk_file_info")
result = cursor.fetchall()
count = 0
while (count < all):
  if (result[count][1] > 0):
      fullname = result[count][0]
      findex = result[count][1]
      dirname,filename = os.path.split(fullname)
      fpath="." + dirname
      fname="." + fullname
      isExists=os.path.exists(fpath)
      if not isExists:
          os.makedirs(fpath)
      with open(fname, "wb") as output_file:
        cursor.execute("SELECT count(*) FROM apk_file_data WHERE file_index = " + str(findex))
        total = cursor.fetchone()[0]
        cursor.execute("SELECT file_data FROM apk_file_data WHERE file_index = " + str(findex))
        acount=0
        while (acount < total):
          ablob = cursor.fetchone()
          output_file.write(ablob[0])
          acount = acount+1
  count = count + 1
cursor.close()
conn.close()

圖7 二次導出的文件

1.4.2 小米/Redmi設備

2019年小米在國內市場的出貨量爲3880萬臺,市場份額爲10.5%;同時從小米獨立出來的Redmi品牌也有2000萬餘的出貨量。小米手機主打性價比,在中端機型和技術發燒友社羣中有很大的持有率。

與華爲設備類似,可以藉助廠商提供的備份APP直接本地備份微信相關文件,較爲簡單的是不需要二次數據庫導出,可以通過壓縮軟件解壓。參考圖8具體步驟如下:

1)首先進入手機的設置-更多設置-備份和重置-本地備份,輸入密碼,點擊新建備份,把兩個勾去掉,點擊軟件程序右邊的尖括號,選擇微信,點擊確定,點擊開始備份,等待完成;

 

圖3.8小米手機備份流程示意

 

2)然後將手機連接電腦,打開手機目錄下的“MIUI/backup/AllBackup/<備份日期時間命名的文件夾>/”,將.bak文件拷貝到電腦上,並導出微信資源文件夾“/sdcard/tencent/MicroMsg”,如圖9;

 

圖9 小米手機備份文件

 

3)用任意一種解壓軟件解壓com.tencent.mm.bak文件,即爲微信數據庫文件,如圖3.10。與步驟2中導出的“/sdcard/tencent/MicroMsg” 資源文件結合,即爲完整的微信數據文件。

 

圖10解壓手機備份文件

 

3.1.4.3 OPPO/realme,VIVO/iQOO設備

有“藍綠廠”之稱的OPPO與VIVO手機,2019年市場份額分別爲17.8%與17%,在國內中低端手機市場佔有率極高。且二者子品牌realme與iQOO也有很不錯的表現,2019年三季度,realme憑藉着單季度超過1020萬臺的出貨成績,首次進入全球第七名。

OPPO/realme廠商提供的手機微信備份功能存在一定缺陷,導出數據不全,只有16B左右大小的conf文件與apk文件,如圖11

 

圖11使用廠商備份功能導出的OPPO手機微信備份文件

 

VIVO廠商提供的手機備份功能依賴於雲服務功能進行備份,需要在另一臺設備登錄相同VIVO賬號進行備份與恢復操作,無法導出文件。

對於這兩個品牌及其子品牌,可以依賴第三方軟件如豌豆莢、360手機助手的導出備份方式,導出文件夾形式數據,如圖12,直接進行檢查與偵查實驗。

 

圖12使用360手機助手導出realme手機微信

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章