新闻中心

PRESS CENTER

【手把手教你搞定所有APP】—手动解析APP数据篇 2020-09-09 13:52

   

0 (2)

众所周知,手机取证大部分的工作是获取APP数据,市场上的手机取证系统大多仅支持微信、QQ、陌陌等主流App的自动化取证,因此,面对层出不穷的小众App,往往会因为支持不及时而造成无法取证的情况。

遇到这类问题我们也并非束手无策,今天小编就带大家来手动解析这类App。

App一般都会选择SQLite数据库作为存储单元来存储用户数据(但也有很多App数据保存在云端,此话题下次找机会讨论)。对App做取证,要进行三步曲:“数据获取”、“数据解密”、“数据解析”。“数据解密”在此篇文章不做阐述,重点介绍“数据获取”和“数据解析”。

01准备工作

1.Zalo 聊天软件(据说在越南地区是非常流行)

2.安卓手机一部,我们选择一个VIVO手机。

3.SQLiteExpertPro

ef8307f2e430d3a0bf22fce5d8939112da49f164c5027959f1c54bacbbf97d45

02数据获取

vivo手机常见的数据提取方式,分为互传和降级提取,这款App互传备份不支持,我们来尝试下Android原生的backup备份命令,这也是安卓降级备份所用到的备份命令,由于该App很可能没有屏蔽备份功能,我们使用backup命令直接备份来测试一下。注:获取备份文件,支持很多品牌是支持自备份的,直接备份即可拿到备份文件,这里就不作介绍了。
1拿到App的包名

这里有一个快速简单的方法查看应用包名:

1.1、首先在手机上打开要查看的应用,让手机屏幕显示为软件窗口;

da49f164c5027959f1c54bacbbf97d45

1.2、查询指令:

【adb shell dumpsys window w |findstr \/ |findstr name= 】,即可知道当前手机屏幕显示的App名称:这里面显示包名为:“com.zing.zalo”。

a6baec9a73c0a18396afa5e856b90d2c

2备份指令

【adb backup -f C:\Path\zalo.ab com.zing.zalo】,界面会提示:在手机端解开手机屏幕锁,并进行备份操作。

5102a8db995c5376a8f0d028adff8cfd

3备份数据

  在手机端按照操作提示,对数据进行备份。

15d21cd2a6d6cb592f71357b17aade09

4打开备份文件夹路径

成功备份到数据,打开备份文件所在的文件夹路径。

048ad0b9d884cb89603e38c5431bc687

5数据包转换

需要将数据包转换为可解包的tar文件。(该步骤使用的工具ABExtracter.exe,如果手头上没有的话,可以用我们的LX-A200取证软件,在“工具栏”中有该工具)。

转换指令:【ABExtracter.exe -b C:\Path\zalo.ab -t C:\Path\zalo.tar】。

11aa82c4ab3f5a6f6ccfb63d19edcc96 107fedd9e3e227da7e250bac4a141b1d

6解压数据包

用zip工具或者RAR工具,解压之后发现如下文件结构,根据经验分析,数据库很可能在db文件夹中。

edddb12a809e006898e0842c6092021c

03902630af9953c64ed8a9883794db81

7查看数据

在db文件夹中,我们找到了两个疑似用户数据库的文件,这里可能存在数据库加密情况,我们使用SQLiteExpertPro打开这两个文件看下,两个文件成功打开,没有加密。(这里我们也可以用HXD或者WinHex来判断是否加密)。

928e7ed6166856f26217c3eaa1f18b7f

0ef0b6a993c98d9ce511959edd83e0c4

通过对比两个数据库的内容,我们发现zalo库和zalx_x_1.db库中都包含chat_content等的数据库表,我们分析zalx_x_1.db是用来快速查询的库,我们重点来看zalo这个库。

zalo库中的chat_content用来存储聊天数据,我们来分析下这个表的重要字段。

c5fb543c2b318239e0ecefa6d9c64ffa

字段说明:

  • 【RecNo】该字段表示消息的编号,从1开始往下排;
  • 【currentUserUi】字段存储当前登陆账号的UserUid;
  • 【Message】字段存储消息具体内容;
  • 【Url】字段存储附件在服务器中的地址;
  • 【localpath】存储附件在手机本地的存储位置;
  • 【timestamp】存储消息收发时间,以毫秒形式存储;
  • 【senderUid】存储消息发送方UserId,以group开头的id表示群聊id;
  • 【senderName】存储发送方昵称;
  • 【ownerId】存储消息属于哪个对话组。

例如上图里面的ownerId为287128623,说明这组对话是发生在机主和userId为287128623的好友之间,通过查询好友列表,uid:287128623好友为Jerry。

b053bd53bd9daddb8bd96e86d9c60615

该数据库表中,汇集了当前登录账号与所有好友、群聊之间的所有聊天消息,并且排列顺序为消息收发时间,看数据和查找相关数据费时费力,我们找一个简便的方法来查看。

首先将数据表导出到Excel。

3fbcf34b425f38b2299f6bcb83d0b250

我们删除不必要的字段,将timestamp字段的毫秒转换为时间格式,下图中的time列为转换后的时间。

f7667bb56a189e972cf15867a62e4dc6

然后我们根据ownerId列进行筛选,即可得到想要查看的好友的聊天记录,为了方便查看,我们将senderName列提到message列之前。例如我们筛选ownerId为287128623的聊天记录,这样我们就可以很方便的查看与好友Jerry的聊天了。

839e57cfa006c48285434858170db24b

手机聊天数据来对比一下:

416588b253b9b81dca4e967c9c435ed3 54640c3873f859059fdfe8a139c37ae2

以上方法是告诉大家如何手动查看聊天记录。一款App,包含多种数据,如转账,朋友圈,收藏等,并且可能存在数据加密的情况。本篇文章没有对更多的字段分析,只是做一个抛砖引玉的作用,希望能给大家工作中增加一种解决方案。如果在工作中遇到类似问题,欢迎大家联系我们,我们会尽最大的努力协助解决。