跳过内容

MASTG-TOOL-0015: drozer

drozer 是一个 Android 安全测试框架,它允许你通过扮演一个与 Android 运行时、其他应用程序的 IPC 端点以及底层操作系统交互的应用程序的角色,来搜索应用程序和设备中的安全漏洞。

在 Android 安全评估期间,可以使用 drozer 自动执行任务。它允许测试人员和逆向工程师:

  • 发现并与 Android 应用程序暴露的攻击面进行交互。
  • 在设备上执行动态 Java 代码,从而避免编译和安装小型测试脚本的需求。

drozer 可以在 Android 模拟器和真机上运行。它不需要启用 USB 调试或其他开发功能;因此,你可以在其生产状态下对设备执行评估,以模拟攻击。

你可以使用其他模块扩展 drozer,以查找、测试和利用其他弱点;这与脚本编写的可能性相结合,有助于自动化安全问题的回归测试。

安装 drozer 和设置

有关如何在你的机器上安装和设置 drozer 控制台以及在 Android 手机上安装 drozer 代理的详细说明,可以在 drozer Github 仓库中找到。

使用示例

设置好 drozer 后,你可以从设备上的恶意应用程序的角度使用 drozer 对 Android 应用程序执行侦察和利用。drozer 用户手册介绍了一个故意存在漏洞的应用程序 - sieve - 以及逐步利用说明。

一些常见的 drozer 命令包括:

在设备上搜索应用程序

run app.package.list -f <keyword>

这将列出包含单词“”在其捆绑标识符中的任何软件包的基本信息。这包括包名、应用程序使用的关键目录以及应用程序使用或定义的任何权限。

枚举应用程序的攻击面

run app.package.attacksurface <package>

此命令检查目标应用程序的清单,并提供有关应用程序的任何导出组件的报告,并验证应用程序是否可调试。

一旦识别出攻击面,你就可以获得有关每个组件类的更多具体信息。例如,要列出 Activities,你可以使用以下命令:

run app.activity.info -a <package>

这将列出所有导出的 Activities 的名称,以及与它们交互所需的权限。

启动 Activity

为了启动导出的 activity,请使用以下命令:

run app.activity.start --component <package> <component name>

调用 app.activity.start 时,你可以构建一个更复杂的 intent。与所有 drozer 模块一样,你可以使用 help 命令请求更多使用信息:

dz> help app.activity.start
Attempting to run shell module
usage: run app.activity.start [-h] [--action ACTION] [--category CATEGORY [CATEGORY ...]] [--component PACKAGE COMPONENT] [--data-uri DATA_URI] [--extra TYPE KEY VALUE] [--flags FLAGS [FLAGS ...]] [--mimetype MIMETYPE]

你可以通过运行 help intents 了解有关如何创建 intents 的更多信息。

其他 drozer 资源

你可能会找到有用信息的其他资源包括: