ReversecLabs/drozer
GitHub: ReversecLabs/drozer
drozer 是一个用于Android系统的开源安全测试框架,帮助通过代理与控制台交互识别应用与设备的安全漏洞。
Stars: 4501 | Forks: 832
# drozer
drozer 是用于 Android 的安全测试框架。
drozer 允许你通过扮演一个应用的角色来搜索应用和设备的安全漏洞,并与 Android 运行时、其他应用的 IPC 端点以及底层操作系统进行交互。
drozer 提供工具,帮助你使用、共享和理解公开的 Android 漏洞利用。
drozer 是开源软件,由 Reversec 维护。入门用户指南可在 [Reversec Labs](https://labs.reversec.com/tools/drozer/) 找到。
## NOTE
这是一个被重写的 drozer 版本的 BETA 发布;此版本已更新以支持 python3。
目前存在以下已知问题:
- 构建自定义代理的功能会导致 drozer 客户端崩溃。此功能在重生的 drozer 项目的 BETA 发布版本中属于范围之外。
## Docker 容器
为了确保 drozer 可以在所有系统上运行,我们创建了一个包含可运行 drozer 构建的 Docker 容器。
* Docker 容器和基础设置说明请参考[这里](https://hub.docker.com/r/drozerdocker/drozer)。
* 构建你自己的 Docker 容器的说明请参考[这里](https://github.com/ReversecLabs/drozer/tree/develop/docker)。
## 手动构建和安装
### 软件前置条件
1. [Python3.8](https://www.python.org/downloads/)
2. [Protobuf](https://pypi.python.org/pypi/protobuf) 4.25.2 或更高版本
3. [Pyopenssl](https://pypi.python.org/pypi/pyOpenSSL) 22.0.0 或更高版本
4. [Twisted](https://pypi.python.org/pypi/Twisted) 18.9.0 或更高版本
5. [Distro](https://pypi.org/project/distro/) 1.8.0 或更高版本
6. [Java Development Kit](https://adoptopenjdk.net/releases.html) 11 或更高版本
### 安装
你可以使用 `pip` 或 `pipx`(如果可用,优先使用)从 PyPI 安装 drozer 的最新版本:
```
pipx install drozer
```
或者,你可以从 GitHub 下载单独的 [releases](https://github.com/ReversecLabs/drozer/releases/) 并运行:
```
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` 来更改。
## 用法
### 安装代理
drozer 可以通过 Android Debug Bridge (adb) 安装。
在此处下载最新的 drozer Agent [这里](https://github.com/ReversecLabs/drozer-agent/releases/latest)。
```
adb install drozer-agent.apk
```
### 会话设置
你现在应该已经在 PC 上安装了 drozer 控制台,并在测试设备上运行了代理。现在,你需要将两者连接起来,就可以开始探索了。
我们将使用 drozer 代理中内置的服务器来实现这一点。首先,启动代理,选择“嵌入式服务器”选项,然后点击“启用”以启动服务器。你应该会看到服务器已启动的通知。
然后,按照以下选项之一操作。
#### 选项 1:通过网络连接到手机
默认情况下,drozer 代理监听所有接口上的 31415 端口的传入 TCP 连接。为了连接到代理,请运行以下命令:
```
drozer console connect --server
```
如果你使用的是 Docker 容器,则等效命令为:
```
docker run --net host -it drozerdocker/drozer console connect --server
```
#### 选项 2:通过 USB 连接到手机
在某些场景下,通过网络连接到设备可能不可行。在这些场景中,我们可以利用 `adb` 的端口转发功能,通过 USB 建立连接。
首先,你需要设置一个合适的端口转发,以便你的 PC 可以连接到代理在模拟器内或设备上打开的 TCP 套接字。默认情况下,drozer 使用端口 31415:
```
adb forward tcp:31415 tcp:31415
```
现在,你可以通过连接到 `localhost`(或省略目标 IP)来连接 drozer 代理:
```
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 | 在设备上的代理进程上下文中启动交互式 Linux shell。 |
| cd | 将某个命名空间挂载为会话的根目录,以避免反复输入完整的模块名称。 |
| clean | 删除 Android 设备上由 drozer 存储的临时文件。 |
| contributors | 显示对 drozer 框架和你系统上使用的模块有贡献的人员列表。 |
| echo | 将文本打印到控制台。 |
| exit | 终止 drozer 会话。 |
| help | 显示有关特定命令或模块的帮助。 |
| load | 加载包含 drozer 命令的文件并按顺序执行。 |
| module | 从 Internet 查找并安装额外的 drozer 模块。 |
| permissions | 显示授予 drozer 代理的权限列表。 |
| set | 将值存储在变量中,该变量将作为环境变量传递给 drozer 生成的任何 Linux shell。 |
| unset | 移除 drozer 传递给其生成的任何 Linux shell 的命名变量。 |
## 许可证
drozer 在 3-clause BSD License 下发布。完整细节请参见 LICENSE。
## 联系项目
drozer 是开源软件,由社区的贡献使其变得出色。
如需完整的源代码、报告错误、提出功能建议和贡献补丁,请访问我们的 Github 项目:
错误报告、功能请求、评论和问题可在此处提交:[提交反馈](https://github.com/ReversecLabs/drozer/issues)
标签:Android Runtime, Android安全评估, beta发布, Distro, Docker容器, drozer, IPC, Java 11, OS安全, pipx安装, Protobuf, PyOpenSSL, Python3, Reversec Labs, SEO: Android security framework, SEO: mobile security testing, SEO: open source Android security tool, Twisted, 云资产清单, 公开漏洞利用, 多语言支持, 安全测试框架, 容器化安全工具, 开源安全工具, 手动安装, 接口测试, 攻击面发现, 目录枚举, 移动安全, 请求拦截, 逆向工具, 逆向工程, 逆向工程平台