本文将阐述如何利用Introspy对安卓应用进行黑盒测试。Introspy是安卓渗透测试工程师军火库里必不可少的工具之一。

根据他们官方Github页面的介绍,我们可以利用Blackbox“分析安卓应用程序在运行时的行为,并且发现潜在的安全问题”。

下图展示了Introspy是如何工作的

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

Introspy含有两个核心的模块:

1.Tracer

用户界面:

在用户界面我们可以配置hooks,选择一个或多个目标程序以及我们需要进行的测试选项。

Cydia Substrate Extension:

这是最核心的程序,他可以hook运行中的应用程序并分析其中潜在的漏洞。

2.Analyser:

Analyser可以分析Tracer产生的数据生成报告。

OK,下面我们来看看Introspy是怎么对安卓应用进行黑盒测试的。

安装与配置

1.下载Introspy Tracer

我们可以从下面的链接下载Tracer

https://github.com/iSECPartners/Introspy-Android

2.下载Introspy Analyzer

Analyzer下载地址

https://github.com/iSECPartners/Introspy-Analyzer

3.开始之前,我们需要安装Cydia Substrate for Android,这个可以直接从安卓商店下载安装

如下图:

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

4.现在我们来安装Introspy-Android Config.apk和Introspy-Android Core.apk

在adb中运行命令

adb install Introspy-Android Config.apk
adb install Introspy-Android Core.apk

现在我们已经准备完成,如果没错的话,你的屏幕上应该有如下的图标

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

下面我们开始分析目标程序

1.启动Introspy Config选择要分析的安卓程序,我选择一个检索数据的程序。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

如上图所示,我们选择的程序名字为M1-Shared,package名为com.example.m1_shared。下面的截图能看到他被hook前的文件组成。这有助于我们理解hook之后发生了什么

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

2.选择好应用程序后,我们就可以开始分析了。我们要尽可能全面的去使用这个程序以便我们的测试能覆盖到所有功能。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

3.当我们做完上一步,分析结果已经生成在应用程序包同目录下了,下面我们来到应用程序包,看看有什么变化没有。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

可以看到,多了一个叫做“databases”的目录。在这个目录中我们可以找到“introspy.db”这个文件

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

4.我们需要把“introspy.db”文件拖到我们的电脑上来分析它。如下所示,我通过SD卡把文件传到我的电脑上。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

5.现在我们需要用到之前下载的“introspy-analyzer”来分析数据,我们到introspy-analyzer目录下运行introspy.py这个文件,先输入-h看下有哪些选项。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

6.运行下面的命令来生成一个html格式的报告

python introspy.py –p [platform] –o [output folder name] databasename.db

-p选项是选择设备平台,我们输入android

-o选择输出文件夹

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

7.上面的步骤会生成一个叫做“outputreport”的文件夹,里面有html格式的报告。如下图所示。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

8.进入文件夹,打开“report.html”可以看到结果。

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog

从上面的图中可以看到,他跟踪并且输出了我们之前输入的信息。现在我们要做的是去检查数据是如何被存储在XML文件中,数据是否真的敏感等等。

9.我们也可以使用命令行查看分析报告。输入命令:

python intropsy.py –p [platform] –l databasename.db

安卓-11-使用Introspy进行黑盒测试-JE2Se ' Blog
可以看到,报告在界面上被打印出来。

小结

在本文中,我们学习了如何使用Introspy对安卓应用进行黑盒测试。当然本文的示例程序非常简单,Introspy的实际功能比我们演示的要强大的多。你可以继续尝试分析各种应用程序,去见识下Introspy的真正威力。