drozer 使用教程
🚀该教程基于最新版官方教程的二改,更符合国人体质。 By 张稳妥 - 2024年10月15日
drozer 是一个用于 Android 的安全测试框架。
drozer 通过模拟应用程序的角色,交互 Android 运行时、其他应用程序的 IPC 端点以及底层操作系统,帮助您查找应用程序和设备中的安全漏洞。
drozer 提供工具帮助您使用、分享和理解公共的 Android 漏洞利用代码。
drozer 是开源软件,由 WithSecure 维护,可以从以下网址下载:https://labs.withsecure.com/tools/drozer/
注意
这是重新编写的 drozer 版本的测试版;该版本已更新以支持 Python3。
当前存在以下已知问题:
- 自定义代理的构建功能将导致 drozer 客户端崩溃。此功能不在 drozer 项目测试版的范围内。
Docker 容器
为确保 drozer 可以在所有系统上运行,创建了包含 drozer 工作构建的 Docker 容器。
手动构建与安装
软件预需求
- Python3.8
- Protobuf 4.25.2 或更高版本
- Pyopenssl 22.0.0 或更高版本
- Twisted 18.9.0 或更高版本
- Distro 1.8.0 或更高版本
- Java Development Kit 11 或更高版本
安装
您可以使用 pip
或(推荐)pipx
从 PyPI 安装最新的 drozer 版本:
|
|
或者,您可以从 GitHub 下载各个版本并运行:
|
|
如果还没有,可以运行以下命令确保 pipx
安装的包出现在您的 PATH
中:
|
|
基本使用
安装 Agent
drozer 可以通过 Android Debug Bridge (adb) 安装。
下载最新的 drozer Agent:点击这里。
|
|
🧐
drozer-agent
用于在手机上接收PC指令的,与 frida 的工作模式相似。
会话设置
现在,您应该在 PC 上安装了 drozer Console,并在测试设备上运行了 Agent。接下来需要连接两者,即可开始探索。
我们将使用嵌入在 drozer Agent 中的服务器来完成此操作。首先,启动 Agent,选择“Embedded Server”选项,然后点击“Enable”以启动服务器。您应该看到服务器已启动的通知。
然后,按照以下选项之一进行操作。
选项 1:通过网络连接手机
默认情况下,drozer Agent 在端口 31415 上监听所有接口的 TCP 连接。要连接到 Agent,请运行以下命令:
|
|
如果您使用的是 Docker 容器,则等效命令为:
|
|
选项 2:通过 USB 连接手机
在某些情况下,可能无法通过网络连接设备。在这种情况下,我们可以利用 adb
的端口转发功能,通过 USB 建立连接。
首先,您需要设置适当的端口转发,以便您的 PC 可以连接到 Agent 在模拟器或设备内打开的 TCP 套接字。默认情况下,drozer 使用端口 31415。
|
|
您现在可以通过连接到 localhost
来连接 drozer Agent(也可以不指定目标 IP):
|
|
确认连接成功
您应该看到 drozer 命令提示符:
|
|
提示符确认了您已连接的设备的 Android ID、制造商、型号和 Android 软件版本。
现在,您可以开始探索设备了。
命令参考
命令 | 描述 |
---|---|
run | 执行 drozer 模块 |
list | 显示当前会话中可以执行的所有 drozer 模块的列表。隐藏您没有权限运行的模块。 |
shell | 在设备上启动交互式 Linux shell,处于 Agent 进程的上下文中。 |
cd | 将特定命名空间挂载为会话的根目录,以避免重复输入模块的全名。 |
clean | 删除 drozer 在 Android 设备上存储的临时文件。 |
contributors | 显示为 drozer 框架和当前系统中使用的模块做出贡献的人员列表。 |
echo | 打印文本到控制台。 |
exit | 终止 drozer 会话。 |
help | 显示有关特定命令或模块的帮助。 |
load | 加载包含 drozer 命令的文件,并按顺序执行它们。 |
module | 从互联网查找并安装额外的 drozer 模块。 |
permissions | 显示 drozer Agent 被授予的权限列表。 |
set | 将值存储在变量中,并将其作为环境变量传递给 drozer 启动的任何 Linux shell。 |
unset | 删除 drozer 传递给任何已启动 Linux shell 的命名变量。 |
常用案例
测试 Content Provider 未授权访问
|
|
测试 Content Provider,检测是否存在 SQL 注入
|
|
测试 Content Provider,检测是否存在目录遍历
|
|
测试 Activity 活动
|
|
测试 Service 服务
|
|
测试 Broadcast Receiver 广播
|
|