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手机微信

 

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