RoboDroid
RoboDroid 是一款前沿软件工具,旨在简化管理(很快也将支持部署)用于网络靶场环境的 Android 设备的过程。通过 RoboDroid,用户可以轻松设置和自定义 Android 设备的预定义行为,从而创建复杂的网络攻击场景并测试其针对各种威胁的防御能力。
移动设备在当今世界已无处不在。人们几乎在生活的方方面面使用智能手机,包括银行、购物和通信。因此,移动设备现已成为网络犯罪分子的主要目标。
然而,在网络安全培训和测试环境中,移动设备的安全性往往被忽视。这可能使组织容易受到利用移动设备弱点的攻击。因此,在下一代网络靶场中引入移动组件以适应当今越来越依赖智能手机的世界非常重要。
RoboDroid 旨在通过提供一套可以模拟类人智能手机行为的工具来帮助填补这一空白。预定义行为使用 Frida 创建,并在 RoboDroid 库 仓库中进行管理。
RoboDroid 的目标是提供一种将移动组件引入网络靶场环境的简单方法。其主要目标是为用户提供一个易于使用的平台,使他们能够模拟移动设备上的类人行为和操作。
RoboDroid 利用 Frida 技术运行特定于应用程序的行为,同时使用 ADB 进行所有其他操作。这种强大的组合使用户能够创建预定义行为的工作流,以模拟移动用户的操作。
一个可以在网络靶场环境中使用的工作流示例涉及模拟移动用户收到钓鱼邮件、点击邮件中的链接,随后下载恶意软件。
下图总结了这一过程:

该工作流可分为以下步骤:
通过创建和运行类似的工作流,用户可以模拟真实的网络攻击场景,并测试其针对各种威胁的防御能力。这有助于确保系统和网络免受潜在漏洞的侵害,并让用户做好在发生攻击时有效响应的准备。

RoboDroid 通过消息与 RoboDroid 库提供的 Frida Agent 通信,实现高效交互。
当 RoboDroid 开始一个特定行为时,它会等待来自 Frida Agent 的消息。消息可以是 FAILURE 或 COMPLETED 类型。
如果消息类型为 FAILURE,RoboDroid 会重启当前行为以确保成功完成。如果消息类型为 COMPLETED,当前步骤标记为完成,RoboDroid 进入下一步。
此外,类型为 COMPLETED 的消息还可以包含可在后续步骤中使用的输出。这确保了该工具可以优化其行为,以实现对移动设备上类人行为的准确模拟。
通过提供这种稳健的通信过程,RoboDroid 确保了 Frida Agent 与其工具集的顺畅集成,并促进了在网络靶场环境中模拟移动设备的复杂工作流的创建。
您可以通过运行以下命令轻松安装:
pipx install robodroid
我们建议您使用 pipx 而不是 pip,因为在未来的 Python 版本中,将取消在虚拟环境之外使用 pip 安装包。
RoboDroid 内置了对从 RoboDroid 库 仓库自动下载行为(很快也将支持自动更新)的支持。如果您想添加新的 Frida 行为,我们建议您前往特定仓库并提交拉取请求。
robodroid --help
这将显示工具的帮助信息:
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
用法: robodroid [OPTIONS] COMMAND [ARGS]...
使用预定义行为管理和部署 Android 设备,适用于网络靶场环境
╭─ 选项 ──────────────────────────────────────────────────────────────────────────────────╮
│ --help -h 显示此消息并退出。 │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
╭─ 命令 ───────────────────────────────────────────────────────────────────────────────────╮
│ run 运行 RoboDroid。 │
| update-library 将 RoboDroid 库更新至最新版本 |
│ version 打印当前版本并退出。 │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
run 命令您可以通过两种模式运行 robodroid:
default) &&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
用法: robodroid run [OPTIONS]
运行 RoboDroid。
╭─ 选项 ───────────────────────────────────────────────────────────────────────────╮
│ --log-mode [silent|normal|debug] 设置日志模式 [默认: normal] │
│ --mode -m [interactive|managed] 设置运行模式 [默认: interactive] │
│ --config -c TEXT 要加载的托管配置文件名称 │
│ --help -h 显示此消息并退出。 │
╰──────────────────────────────────────────────────────────────────────────────────╯
在交互模式下,会有一个提示让用户选择 ADB 主机、端口和要使用的设备;而托管模式使用一个必须放置在 $HOME/.RoboDroid/config 下的 yaml 格式配置文件。托管模式是在搭建实验室/环境时无需用户输入/配置的理想模式。
下表描述了配置文件中使用的字段:
| 键 | 必填 | 描述 |
|---|---|---|
| device | 是 | 关于要使用的设备的信息 |
| workflow | 是 | 要使用的工作流(文件名) |
在运行之前,您需要提供至少一个有效的工作流文件,该文件必须以 yaml 格式放置在 $HOME/.RoboDroid/workflows 下。
此配置文件定义了将要执行的工作流的所有步骤,您可以查看 examples 文件夹中一些有效的配置。下表描述了工作流文件中使用的字段:
| 键 | 必填 | 描述 |
|---|---|---|
| id | 是 | 工作流的 ID |
| init | 否 | 初始化部分,包含初始设置操作 |
在 init 部分,您可以设置必须安装的 APK 和必须在运行实际工作流之前清理(存储和缓存)的包。该部分的结构如下:
| 键 | 必填 | 描述 |
|---|---|---|
| install | 是 | 要安装的 APK 路径列表 |
| clear | 否 | 要清理(存储和缓存)的包列表 |
在 behaviors 部分中是实际的工作流。它是一个元素列表,称为步骤,旨在顺序执行。每个步骤具有以下结构:
最后,每个输入具有以下结构:
| 键 | 必填 | 描述 |
|---|---|---|
| id | 是 | 输入的 ID |
| value | 是 | 要分配给此输入的值 |
最后要说的是,您还可以将前一步骤的输出用作下一步骤的输入。为此,您可以使用保留前缀 robodroid.outputs 后跟步骤 ID 和输出 ID 来设置输入的值,例如:
...
- id: get-link
name: k9-mail-refresh-and-get-link
type: frida
- id: open-and-download
name: firefox-android-open-link-and-download
type: frida
inputs:
- id: link
value: robodroid.outputs.get-link.link
...
CLI 选项也可以通过环境变量设置(特别是在 Docker 内部运行时非常有用);下表列出了当前可用的环境变量:
| 键 | 描述 |
|---|---|
| ROBODROID_LOG_MODE | RoboDroid 的日志级别 [silent |
| ROBODROID_RUN_MODE | 运行模式 [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | 要使用的托管配置名称(在 managed 模式下运行时) |
待办
我们制作了一个简短的演示视频,展示了 RoboDroid 与一个模板的实际运行情况,该模板执行以下操作:
该工作流模拟了一次常见的钓鱼攻击(尽管经过了简化),可用于涉及 Android 移动设备的下一代网络靶场。
RoboDroid 是一个新生的工具,还需要成长!目前我们计划很快添加以下功能:
当然,我们计划在 RoboDroid 库 中添加更多行为,并在此仓库中添加更多 adb 命令。我们也鼓励每位用户为这个项目做出贡献,使其变得更好!
由 Angelo Delicato @SecSI 开发
RoboDroid 根据 GPL-3.0 许可证 发布
| behaviors | 是 | 要执行的行为列表 |
| 键 | 必填 | 描述 |
|---|
| id | 是 | 步骤的 ID |
| name | 是 | 行为名称(在 RoboDroid 库或命令列表中) |
| type | 是 | 行为类型("frida-behavior", "adb") |
| inputs | 否 | 输入列表 |