Drozer是MWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一。

其官方文档说道:“Drozer允许你一一个普通android应用的身份与其他应用和操作系统交互。”

在Web世界已经有了许多安全测试工具了,我们只需要给出一个目标,这些工具就会自动为我们安全测试报告。但Drozer与这样的自动化扫描器不同,Drozer是一种交互式的安全测试工具。使用Drozer进行安全测试,用户在自己的工作站上输入命令,Drozer会将命令发送到Android设备上的代理程序执行。

实验准备

实验器材

1.工作站(本文使用Ubuntu),并安装软件:

a)JRE 或者JDK

b)Android SDK

2.运行Android2.1以后版本的Android设备或者模拟器

下载Drozer和Agent.apk:

https://www.mwrinfosecurity.com/products/drozer/community-edition/

这个链接也可以下载到MWR Labs 提供的一份用户手册,但本文只对Drozer的安装和使用做简单介绍,以后涉及其他漏洞的时候再详细介绍Drozer的用户手册。

本文假设读者使用的是与我类似的环境,其他用户请下载对应版本的Drozer安装。

在安装Drozer之前,记得需要安装依赖。

Windows用户直接像安全其他软件一样安装就好了。

检查安全是否成功,在终端中输入命令:”drozer”:

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

现在在设备或者模拟器上安装先前下载的agetn.apk。

可以使用adb安装,命令如下:

1
#adb install agent.apk
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

然后我们需要链接工作站上的Drozer控制台和设备上的代理程序。

首先运行设备上的Drozer代理并启动守护服务,然后运行下面的命令做端口转发:

1
#adb forward tcp:31415 tcp:31415
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

使用下面的命令建立链接:

#drozer console connect

如下图:

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

使用Drozer 进行安全测试

下面来见识下Drozer的魔力,使用Drozer 对应用进行安全测试。

本系列的第一篇文章中介绍过如何攻击暴露的Activity,现在我们把当时用的的测试应用安装到设备上,当然,像本文一样使用模拟器也是可以的。

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

在正式开始之前,先来熟悉下Drozer的命令。

列出所有模块

1
#dz>list

该命令列出了当前可用的所有模块:

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

获取包信息

使用下面的命令列出安装的所有应用包名:

1
#dz> run app.package.list
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

上图中中有两个高亮的应用,都是我们之前用过的。

使用”-f”选项搜索特定的包名:

1
#dz> run app.package.list –f (string to be searched)
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

输出如下:

com.isi.testapp

使用以下命令查看制定包的信息:

1
#dz> run app.package.info –a (package name)

比如:

1
#dz> run app.package.info –a com.isi.testapp
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

输出了应用数据目录,apk的路径,是否有Shared User ID等。

识别攻击面

这一节是Drozer中比较有趣的部分,我们只用一条命令就可用识别出应用的攻击面,Drozer会告诉我们应用是否有暴露的组件,是否可调试等。

我们使用Drozer来检查testapp.apk的攻击面,下面是一条典型的命令:

1
dz>run app.package.attacksurface (package name)

我们的包名是testapp.apk

1
dz>run app.package.attacksurface com.isi.testapp
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

如上图,testapp中有两个暴露的activity。现在我们需要找出暴露activity的名字并检查是否有敏感信息,如果有的话就可以用Drozer的其他模块进行攻击。如果应用可调试,我们就可以用调试器附加到进程单步执行指令或执行特定的代码,关于调试我们在之前的两篇文章有过讨论。

使用Drozer攻击App漏洞

基于上一节的结果发起攻击。

攻击暴露的Activity

本节深入testapp.apk的漏洞比进行攻击。

上一节中我们已经发现testapp.apk中存在暴露的activity,使用以下命令查看app的activity。

1
      Dz> run app.activity.info –a (package name)

比如我们的包名是com.isi.testapp

1
dz>run app.activity.info –a com.isi.testapp
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

上图中列出了应用中暴露的activity。

com.isi.testapp.MainActivity很显然是主界面,需要能启动,所有是暴露的。

Com.isi.testapp.Welcome看名字像是登录后的界面。使用如下命令启动。

1
dz> run app.activity.start --component (package name) (component name)

比如我们我们的testapp

1
dz> run app.activity.start –component com.isi.testapp com.isi.testapp.Welcome
安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

该命令会生成一个合适的intent来启动activity,其实更我们之前见到过的使用activity 管理工具(am)来启动activity一样。

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

如上图,我们成功绕过了登录认证。

这是什么原因造成的呢?

这其实在我们第一篇文章中提到过,是因为AndroidManifest.xml中,activity的”android:exported”属性被设置为”true”

安卓-13-使用Drozer进行安全测试-JE2Se ' Blog

总结

本文对Drozer的Android应用渗透测试做了简要介绍。以后的文章中会介绍其他的漏洞及其利用,还会介绍怎样对Drozer进行扩展。