Drozer 使用教程

   
文章摘要
摘要小助理今天溜号啦……😜

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 容器。

  • Docker 容器和基本设置说明可以在这里找到。
  • 关于构建您自己的 Docker 容器的说明可以在这里找到。

手动构建与安装

软件预需求

  1. Python3.8
  2. Protobuf 4.25.2 或更高版本
  3. Pyopenssl 22.0.0 或更高版本
  4. Twisted 18.9.0 或更高版本
  5. Distro 1.8.0 或更高版本
  6. Java Development Kit 11 或更高版本

安装

您可以使用 pip 或(推荐)pipx 从 PyPI 安装最新的 drozer 版本:

1
pipx install drozer

或者,您可以从 GitHub 下载各个版本并运行:

1
pipx install ./drozer-*.whl

如果还没有,可以运行以下命令确保 pipx 安装的包出现在您的 PATH 中:

1
pipx ensurepath

基本使用

安装 Agent

drozer 可以通过 Android Debug Bridge (adb) 安装。

下载最新的 drozer Agent:点击这里

1
adb install drozer-agent.apk

🧐 drozer-agent 用于在手机上接收PC指令的,与 frida 的工作模式相似。

会话设置

现在,您应该在 PC 上安装了 drozer Console,并在测试设备上运行了 Agent。接下来需要连接两者,即可开始探索。

我们将使用嵌入在 drozer Agent 中的服务器来完成此操作。首先,启动 Agent,选择“Embedded Server”选项,然后点击“Enable”以启动服务器。您应该看到服务器已启动的通知。

然后,按照以下选项之一进行操作。

选项 1:通过网络连接手机

默认情况下,drozer Agent 在端口 31415 上监听所有接口的 TCP 连接。要连接到 Agent,请运行以下命令:

1
drozer console connect --server <手机的 IP 地址>

如果您使用的是 Docker 容器,则等效命令为:

1
docker run --net host -it withsecurelabs/drozer console connect --server <手机的 IP 地址>

选项 2:通过 USB 连接手机

在某些情况下,可能无法通过网络连接设备。在这种情况下,我们可以利用 adb 的端口转发功能,通过 USB 建立连接。

首先,您需要设置适当的端口转发,以便您的 PC 可以连接到 Agent 在模拟器或设备内打开的 TCP 套接字。默认情况下,drozer 使用端口 31415。

1
adb forward tcp:31415 tcp:31415

您现在可以通过连接到 localhost 来连接 drozer Agent(也可以不指定目标 IP):

1
drozer console connect

确认连接成功

您应该看到 drozer 命令提示符:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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,处于 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 未授权访问

1
run scanner.provider.finduris --package APP包名 e

测试 Content Provider,检测是否存在 SQL 注入

1
run scanner.provider.injection -a APP包名 

测试 Content Provider,检测是否存在目录遍历

1
run scanner.provider.traversal -a APP包名

测试 Activity 活动

1
2
3
4
# 先查询所有 Activity 的名称
 run app.activity.info --package APP包名
 # 再一个一个执行访问 Activity
 run app.activity.start --component APP包名 Activity全名

测试 Service 服务

1
2
# 先查询所有 Service 的名称
run app.service.info --package APP包名

测试 Broadcast Receiver 广播

1
run app.broadcast.info --package APP包名
CC BY-NC-SA 4.0
最后更新于 2024-11-05 03:44