目录
1 Drozer简介 .................................................................................................................................... 2
2 Drozer的特点 ................................................................................................................................ 2
3 Drozer的安装 ................................................................................................................................ 3
3.1 硬件要求............................................................................................................................ 3
3.2 安装准备............................................................................................................................ 3
3.3 安装控制台 ........................................................................................................................ 4
3.4 安装客户端代理 ................................................................................................................ 4
4 drozer的使用 ................................................................................................................................ 4
4.1启动agent,使用drozer连接客户端agent .................................................................... 4
4.2 drozer命令 ......................................................................................................................... 4
4.3 测试应用程序(sieve) ................................................................................................... 5
1 Drozer简介
drozer是一款针对Android系统的安全测试框架。Drozer可以通过与Dalivik
VM,其它应用程序的IPC端点以及底层操作系统的交互,避免正处于开发阶段,或者部署于你的组织的android应用程序和设备暴露出不可接受的安全风险。
drozer提供了很多Android平台下的渗透测试exploit供你使用和分享。对于远程漏洞,drozer能够生产shellcode帮助你部署drozer代理作为一个远程管理工具,最大化对设备的利用。
更快的Android安全评估
drozer可以大大缩减Android安全评估的耗时,通过攻击测试暴露Android APP的漏洞。
基于真机的测试
drozer运行在Android模拟器和真实设备上,它不需要USB调试或其他开发即可使用。
自动化和扩展
drozer有很多扩展模块,你可以找到他们进行测试以发现Android安全问题。
2 Drozer的特点
社区版 专业版
与Dalvik VM交互
发现已安装的应用 X X
发送Intents到IPC端点 X X
广播Intents X X
从其它应用进入数据库 X X
与其它应用的服务交互 X X
任意java执行 X X
与android OS交互
运行一个交互式shell X X
漏洞利用
通过远程攻击进入设备 X X
根权限升级 X X
用户接口 命令行接口 X
X
图形接口
X
注释结果 X
保存/恢复会话 X
Android工具集成
自动安装代理 X
控制AVD模拟器 X
模拟传感器输入 X
提高与扩展
下载附加模块 X X
编写自定义模块 X X
兼容性
在物理设备上使用drozer X X
在android模拟器上使用drozer X X
同时测试多台设备 X
支持
通过Dithub获得社区支持 X X
邮件支持 X
价格 X
3 Drozer的安装
3.1 硬件要求
1. 一台PC(运行Windows,Linux,MacOS均可);
2. 一台Android设备或者Android模拟器(Android2.1以上);
3.2 安装准备
PC上需要安装:
1. JRE或者JDK;
2. Android SDK;
3. Adb; 4. Java;
3.3 安装控制台
直接下载Windows平台下安装包直接解压安装(Linux,Mac OS平台参见软件指导书)。
3.4 安装客户端代理
通过adb将agent.apk安装于被测试的android设备。(先将设备与PC连接,且PC能正确识别设备)
4 drozer的使用
4.1启动agent,使用drozer连接客户端agent
4.2 drozer命令
命令 描述
run Module 执行一个drozer模块
list 显示当前会话所能执行的所有drozer模块。此处隐藏了未获得相应权限的模块。
shell 在设备上启动一个交互式Linux shell,
cd 挂载一个特定的命名空间作为会话的根目录,避免重复输入模块全称。
clean 移除Android设备上由drozer存储的临时文件。
contributors 显示对于drozer框架和模块有突出贡献的人员
echo 在控制台打印信息 exit 终止drozer会话
help ABOUT 显示一个特定指令或模块的帮助信息
load 加载一个包含drozer命令的文件并且按顺序执行。
module 从互联网发现并且安装一个额外的模块。
permissions 显示drozer agent被授予的权限。
set 将一个值存储在一个变量中,这个变量将作为一个环境变量传递给任何由drozer生成的liunx shell
unset 移除一个已命名的变量。这个变量是由drozer传递给linux shell的。
4.3 测试应用程序(sieve)
1. 找出应用程序
2. 列出应用程序基本信息
此处列出信息包括应用程序版本,应用程序数据存储路径,应用程序安装路径,相关权限等;
3. 确定攻击面
此处显示了一些潜在的攻击方向,这个应用程序输出了一些activities,content providers和services。我们注意到服务是可调式的,这意味着我们可以将调试器附加到进程上,进行逐步调试。
4. 启动activities
我们可以通过特定的命令深入这个攻击面。例如,我们可以查看任何一个activities的详细信息。
此处,PWlist很特别。由于这个activity被输出并且不需要任何权限,我们可以使用drozer启动它:
此处在后台制定了一个合适的意图,并且通过‘startActivity’call将其传递给了系统。可以确定,我们已经成功绕过了授权并且查看到了用户凭证列表。
5. 从Contend Provider读取信息
可以确定,这两个content provider都不需要任何特殊的权限才能和它们交互,除了DBContentProvider的/keys路径。
a. 基于数据库的Content Provider(数据泄露)
很容易可以猜测出,名为DBContentProvider的Content Provider必然存在某种形式的数据库。然而,由于不知道Content Provider是如何组织的,我们还需要花一番功夫去提取信息。
我们可以重建部分内容URIS,以进入Content Provider
drozer提供了一个扫描模块,其中包含了多种猜路径的方式,并且可以将可进入的内容URIs显示出来:
此时,我们可以使用其它的drozer模块从这些内容URIs中提取信息,甚至更改数据库中的数据。
b. 基于数据库的Content Provider(SQL注入)
通过操纵传递给Content Provider的投影或选择字段,很容易测试程序是否存在SQL注入漏洞: