drozer 是一个用于 Android 的安全测试框架。
drozer 允许你通过扮演一个应用的角色,与 Android 运行时、其他应用的 IPC 端点以及底层操作系统进行交互,来搜索应用和设备中的安全漏洞。
drozer 提供了帮助你使用、分享和理解公开 Android 漏洞利用的工具。
drozer 是开源软件,由 Reversec 维护。入门用户指南可在 Reversec Labs 找到。
这是重写版 drozer 的 BETA 版本;此版本已更新以支持 python3。
目前,存在以下已知问题:
为了帮助确保 drozer 可以在所有系统上运行,我们创建了一个 Docker 容器,其中包含可正常工作的 drozer 构建版本。
你可以使用 pip 或 pipx(如果可用,推荐)从 PyPI 安装 drozer 的最新版本:
pipx install drozer
或者,你也可以从 GitHub 下载单个 发布版本 并运行:
pipx install ./drozer-*.whl
如果你还没有这样做,建议运行:
pipx ensurepath
以确保 pipx 安装的包出现在你的 PATH 中。
要从源代码构建 drozer,你可以运行:
git clone https://github.com/ReversecLabs/drozer.git
cd drozer
pip install .
要针对特定 SDK 构建 Android 原生组件,你可以将 ANDROID_SDK 环境变量设置为该路径。例如:
Linux/macOS:
export ANDROID_SDK=/home/drozerUser/Android/Sdk/platforms/android-34/android.jar
Windows - PowerShell:
New-Item -Path Env:\ANDROID_SDK -Value 'C:\Users\drozerUser\AppData\Local\Android\sdk\platforms\android-34\android.jar'
Windows - cmd:
set ANDROID_SDK = "C:\Users\drozerUser\AppData\Local\Android\sdk\platforms\android-34\android.jar"
所使用的 d8 工具的位置也可以通过设置 D8 来更改。
你可以使用 Android Debug Bridge (adb) 安装 drozer。
在此处下载最新的 drozer Agent:最新版本。
adb install drozer-agent.apk
现在你应该已经在你的 PC 上安装了 drozer 控制台,并在测试设备上运行了 Agent。现在,你需要将两者连接起来,然后就可以开始探索了。
我们将使用 drozer Agent 中嵌入的服务器来完成此操作。首先,启动 Agent,选择“嵌入服务器(Embedded Server)”选项,然后点击“启用(Enable)”启动服务器。你应该会看到服务器已启动的通知。
然后,按照以下选项之一操作。
默认情况下,drozer Agent 在所有接口上监听端口 31415 的传入 TCP 连接。要连接到 Agent,请运行以下命令:
drozer console connect --server <手机IP地址>
如果你使用的是 Docker 容器,等效命令是:
docker run --net host -it drozerdocker/drozer console connect --server <手机IP地址>
在某些场景下,通过网络连接设备可能不可行。在这些场景中,我们可以利用 adb 的端口转发功能通过 USB 建立连接。
首先,你需要设置一个合适的端口转发,以便你的 PC 可以连接到由模拟器或设备上的 Agent 打开的 TCP 套接字。默认情况下,drozer 使用端口 31415。
adb forward tcp:31415 tcp:31415
现在,你可以通过连接到 localhost(或直接不指定目标 IP)来连接到 drozer Agent。
drozer console connect
你应该会看到一个 drozer 命令提示符:
Selecting ebe9fcc0c47b28da (Google sdk_gphone64_x86_64 12)
.. ..:.
..o.. .r..
..a.. . ....... . ..nd
ro..idsnemesisand..pr
.otectorandroidsneme.
.,sisandprotectorandroids+.
..nemesisandprotectorandroidsn:.
.emesisandprotectorandroidsnemes..
..isandp,..,rotecyayandro,..,idsnem.
.isisandp..rotectorandroid..snemisis.
,andprotectorandroidsnemisisandprotec.
.torandroidsnemesisandprotectorandroid.
.snemisisandprotectorandroidsnemesisan:
.dprotectorandroidsnemesisandprotector.
drozer Console (v3.0.0)
dz>
该提示符确认了你所连接的设备的 Android ID,以及制造商、型号和 Android 软件版本。
现在你已经准备好开始探索设备了。
| 命令 | 描述 |
|---|---|
| run | 执行一个 drozer 模块 |
| list | 显示当前会话中所有可执行的 drozer 模块列表。这会隐藏那些你没有合适权限运行的模块。 |
| shell | 在设备上以 Agent 进程的上下文启动交互式 Linux shell。 |
| 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 的命名变量。 |
drozer 依据 3-clause BSD 许可证发布。详情请参见 LICENSE 文件。
drozer 是开源软件,得益于社区的贡献而变得伟大。
完整的源代码、报告错误、建议功能以及贡献补丁,请访问我们的 GitHub 项目:
https://github.com/ReversecLabs/drozer
错误报告、功能请求、评论和问题可以提交到 这里。