在本系列的之前的课程中,我们的讨论仅限于root的设备和模拟器。于是就有小哥质疑了,有本事整点不root的。ok,今天我们将来讨论如何通过备份功能检测没有root的安卓设备的内部存储。我们可以得到一个特定应用程序的备份包或者整个设备的备份。这就使我们能够分析本地设备运行时存储的数据。

前期准备:

1. 设备要开启usb调试模式

2.Adb——安装Android SDK来启用它

3.下载下面的示例app

http://yunpan.cn/cfWzgc8tY8jvY (提取码:412d)

4.下载adbextractor,我们需要用到它的一个工具包

下载地址:http://sourceforge.net/projects/adbextractor/

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

下载之后解压文件,我们直接在命令行下执行,如下图

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

下面是解压出来的文件,在本期文章中,我们只需要用到“abe.jar”

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

下面我们创建一个叫做“backup”的文件夹,把需要的文件都放到这里,别弄乱了。跟着我的步骤做。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

把abe.jar放到上图的文件夹中并解压。

第一步打开我们的应用程序,插入一些数据。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

我们刚才输入的数据会插到数据库里。下面让我们检查一下数据是否插进去了。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

从上面可以看到,我们程序包的目录下有一个叫做PWNSQLITEDATA.db的数据库文件,我们使用SQLite3命令行来查看数据库内容。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

Ok,万事俱备。

下面我们开始在一台未Root的设备上开始测试!

我们使用一个允许我们备份应用程序的安卓功能,我们可以使用adb来实现,首先,让我们来看看“adb backup”命令的选项。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

从图上我们可以看出,我们可以备份所有系统中我们安装的app,也可以单独备份一个指定名称的app。

使用下面的命令备份指定的app。

1
adb backup -f <filename><package name>

例如这样

1
adb backup -f mybackup.ab com.androidpentesting.sqlitestorage

如下图所示

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

上面的命令需要用户交互,你需要点击 “backup my data”按钮。如果你愿意,你可以设置一个密码和加密备份。我这里没有加密的数据。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

点击按钮后它将在我们的工作目录中创建一个新文件。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

可以看到文件夹多出来了mybackup.ab文件。我们不能直接读取这个文件的内容,我们需要把它转换成我们能够识别的格式。下面我们就要用到abe.jar这个工具。先看下介绍:

1
java -jar abe.jar –help
安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

如图所示我们可以使用abe.jar来打包或者解压缩我们的备份文件,我们使用unpack选项来解压备份文件。

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

备份文件已经被转换成了tar文件

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

使用tar -xf mybackup.tar来解压

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

看一下目录的结构:

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

我们可以在db目录下找到数据库。使用SQLite3来查看数据库

安卓-14-在没有root的设备上检测并导出app特定的数据-JE2Se ' Blog

可以看到,我们可以找到所有与程序有关的数据,这也是DroidExplore类似的软件备份我们设备的原理。

很显然,即使设备没有root,我们也可以通过物理访问设备来获取应用程序的数据。我们也可以通过此方法改变一个应用程序的数据。如果一个应用程序将数据存储在客户端,使简单的密码或pin检查,攻击者有可能使用这种方法来绕过这些检查。在下一篇文章中,我们将讨论如何在一台没有root的设备上利用这种方法来改变应用程序特定的数据。