【241期-1】教你怎么编写智能手机APP的取证脚本

 

教你怎么编写智能手机APP的取证脚本...





来源:效率源科技(ID:xiaolvyuantech)

编者按
本期,数据恢复四川省重点实验室科研人员重点介绍一种编写手机APP取证脚本的方法,在手机取证实战中,该技术方案扩展性强,可助力一线取证人员有效应对暂不支持的APP数据提取问题。


一、简介

手机APP,即手机应用程序,APP是Application的缩写。手机软件就是安装在手机上的软件,完善原始系统的不足与个性化(图1)。随着科技的发展,现在手机的功能也越来越多,越来越强大,发展到可以和电脑相媲美。


【图1 手机APP】
1、手机APP种类多

随着智能手机迅速普及和用户的海量增长,新的手机App层出不穷(图2)。2015年1月份的数据显示,以Android系统为主的Google Play应用商店,App数量超过140万。而7月份的报道数据显示,苹果AppStore应用商店里的App数量已超过150万。


【图2 手机App数量增长趋势图】
2、手机APP版本多

不仅如此,随着时间推移,App新旧版本更替频繁,比如手机QQ,从2012年到目前,Android上已经有超过30个版本,IOS上也有10多个版本更新(图3)。不同版本之间的数据存储结构也有很大区别。


【图3 手机QQ历史版本】
新App的支持和已有App的版本更新,使得手机取证也遇到了很大的难题。如果针对每个App的每个版本都由软件研发人员编写代码实现解析,这将是一件非常庞大的工程,而且很有可能难以跟上APP的更新速度,导致手机APP取证遭遇难题。

二、技术方案

在这种情况下,数据恢复四川省重点实验室科研人员推荐一种脚本插件式开发的解决方案,能快速、有效解决手机APP取证不兼容的难题。

1、什么是脚本插件式开发

插件是指不修改程序的情况下对程序的功能进行扩展,任何人都可以按照相应的规则制作插件来新增或修改程序功能,实现“即插即用”软件开发。脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。常用的脚本语言包括python、JavaScript等。

2、脚本插件式开发的3大好处

2.1 不需重新下载安装软件 

利用脚本插件式开发,可以将数据解析与软件界面分开,便于软件框架的搭建和程序的扩展,当添加新App或App版本更新时不需要重新下载安装软件,直接将新脚本添加到对应目录即可;

2.2 用户自己可编写 

脚本采用常见的python、JavaScript等语言编写,易学易懂。不仅软件研发人员可以编写脚本,客户在遇到突发的不能解决的数据解析时也可以自己编写脚本;

2.3自动匹配插件 

可以通过App名称、生产厂商、软件版本自动匹配插件,方便有效。

3、怎么编写脚本插件

下面我们以取证工具SPF9139智能手机取证分析系统在Android下解析途牛旅游App为例来说明如何编写脚本插件。

3.1生成数据

首先,我们在手机上下载安装“途牛旅游App”,然后创建账号并使用,产生数据(图4),包括飞机票、火车票、乘车人记录、酒店查询记录等。


【图4  下载安装使用APP产生数据】
3.2 提取数据

利用第三方工具从手机中提取App的数据到本地。(图5、图6)


【图5 红色框代表途牛插件App的名称、安装路径、版本等基本信息】


【图6 红色框代表提取到本地的数据路径】


3.3数据分析

经过分析,途牛App的数据存储结构如下(图7、图8、图9、图10)


【图7  途牛App相关数据文件路径及保存的内容】


【图8 途牛App相关数据文件路径及保存的内容】


【图9  Groupchat数据库表】


【图10  红色框为Groupchat数据库表】


3.4 编写插件

这里我们可以使用JavaScript编写插件,该语言编写工具非常之多,甚至可以使用记事本编写,非常方便。本期案例我们采用SPF9139智能手机取证分析系统自带的XLYScriptVisualStudio编写,好处是便于调试。

脚本分为3部分:配置信息、数据定义和解析数据并生成结果。

3.4.1配置信息

配置信息定义了该脚本关联的App名称、版本、分组、所需源文件、数据结构等信息,供主程序调用。我们按照途牛旅游App的信息依次编写如下(图11):


【图11 编写脚本配置信息】
3.4.2 数据定义

根据树形菜单节点分别定义js数据结构,比如游客历史记录信息节点TouristHistory定义如下(图12):


【图12  编写脚本配置信息】
3.4.3 解析数据并生成结果

根据之前分析结果,编写解析代码并生成结果。由之前的分析得知,途牛的数据主要存储于groupchat.db(sqlite数据库)文件和TuniuApp.xml文件中。因此在解析时,只需要读取sqlite数据库和xml文件分析即可(图13、图14)。


【图13  构建树形菜单列表】
【图14 获取购买飞机票记录(其余项目呈现方式一样)】
点击XLYScriptVisualStudio的调试按钮,可以看到最终结果。如果出现了错误,则修改代码并调试(图15)。


【图15  脚本调试结果】
3.5 脚本添加

将脚本文件放入软件对应Script目录下,重启软件,即完成了对脚本文件的添加。添加途牛图标, 此时开始测试途牛App,发现已经可以解析了, 包括飞机票、火车票、乘车人记录、酒店查询记录等信息(图16)。


【‍图16  在SPF9139智能手机取证分析系统程序中查看新加的途牛插件】
总结:与传统方式相比,脚本插件方式最大的优点就是扩展性强。当取证人员遇到突发性的无法解析的App时,不需要等到软件新版本的发布才处理,只需要手动编写脚本,即可完成解析工作,帮助取证人员快速获取手机中的电子证据。目前,该技术已经在效率源SPF9139智能手机取证分析系统中应用,极大地延展了SPF9139的APP取证功能,一线取证人员只需简单学习就可上手,快速编写可直接应用的APP取证小工具,快速提高手机取证效率。本文重点是以“在Android下解析途牛旅游App”为例,讲解脚本插件方式的大概思路与方法,而整个执行步骤是相对复杂的,如果是删除数据的恢复则会更复杂,有兴趣的读者可联系效率源工程师进行实战指导。


    关注 电子物证


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册