SECFORCE/droidground
GitHub: SECFORCE/droidground
专为 Android CTF 竞赛设计的挑战平台,通过受控的运行时环境让选手在真实设备上完成漏洞利用挑战,避免 flag 被静态分析轻易提取。
Stars: 114 | Forks: 7
DroidGround
在传统的 **CTF 挑战** 中,通常会将 flag 隐藏在系统的文件中,要求攻击者利用漏洞来获取它们。然而,在 Android 领域,这种方式并不奏效。APK 文件很容易被下载和逆向,因此 **将 flag 放置在设备上通常使其极易** 通过静态分析或模拟器技巧被提取出来。这严重限制了创建逼真的、基于运行时的挑战的能力。 _DroidGround_ 正是为了解决这个问题而设计的。 它是一个为在 **受控** 且 **逼真** 的环境中举办 Android 移动黑客挑战而定制的平台,在这里 **攻击者受到足够的限制**,从而必须以预期的方式来解决挑战。 重要的是,参与者可能会被 **限制在应用环境中**。该工具的模块化设计允许设置用户是否可以生成 shell、读取任意文件或侧载工具。一切都可以进行设置,使得获取 flag 的唯一途径就是理解并利用应用本身。 ## 📋 目录 - [🧭 概述](#-overview) - [✨ 功能特性](#-features) - [📸 截图](#-screenshots) - [⚙️ 配置](#️-configuration) - [🧩 用例](#-use-cases) - [⚙️ 使用方法](#️-usage) - [💡 提示](#-tips) - [🛠 开发](#-development) - [🤝 贡献](#-contributing) - [📚 致谢](#-credits) - [🪪 许可证](#-license) ## 🧭 概述 _DroidGround_ 能够实现各种传统 CTF 设置中难以实施的 _Android_ 挑战。例如,在远程代码执行 (RCE) 挑战中,选手可能会收到一个 APK 用于本地分析。在发现漏洞后,他们可以开发一个 Frida 脚本,并通过 DroidGround 在真实的目标设备上运行,以从内部存储中提取 flag。其他类型的挑战可以包括隐藏的 Activity、自定义广播 Intent、Service 漏洞利用,或使用预加载工具进行动态分析。 凭借实时设备流传输、精细的功能控制、Frida 集成以及可自定义的设置和重置脚本,DroidGround 使 CTF 组织者能够构建安全、灵活且逼真的 Android 挑战,远远超越了传统的可能范畴。 ## ✨ 功能特性 DroidGround 提供了一组丰富的由服务器控制的功能。 - **实时设备屏幕** (通过 `scrcpy`) - **重置挑战状态** - **重启应用 / 启动 Activity / 启动 Service** - **发送广播 Intent** - **关闭 / 重启设备** - **下载 Bugreport (bugreportz)** - **Frida 脚本编写** - 从预加载库运行 (受限模式) - 运行任意脚本 (完全模式) - **文件浏览器** - **终端访问** - **APK 管理** - **Logcat 查看器** - **Exploit 服务器** (如果启用了团队模式) 几乎所有功能都是 **模块化** 的,并通过环境变量进行定义,确保对挑战范围进行精确控制。 ## 📸 截图 |  |  | | ------------------------------------------------------ | ----------------------------------------------------- | | 概述 | 启动 Activity | |  |  | | Frida 受限模式 | Frida 完全模式 | |  |  | | 文件浏览器 | 应用管理器 | |  |  | | 终端 | 日志 | ## ⚙️ 配置 根目录中的 `.env.sample` 文件是一个很好的起点。以下是当前支持的所有环境变量的完整列表: | 变量 | 描述 | 默认值 | | ------------------------------------- | --------------------------------------------------------------------------------- | ----------- | | `DROIDGROUND_BASE_PATH` | Web 应用的路径(适用于在子路径上托管) | - | | `DROIDGROUND_APP_PACKAGE_NAME` | 目标应用的包名 | - | | `DROIDGROUND_ADB_HOST` | ADB 主机 | `localhost` | | `DROIDGROUND_ADB_PORT` | ADB 端口 | `5037` | | `DROIDGROUND_ADB_SERIAL` | 可选的要连接的 ADB 设备序列号 | - | | `DROIDGROUND_DEVICE_TYPE` | `usb` 或 `network` | `usb` | | `DROIDGROUND_DEVICE_HOST` | Android 设备的 IP (`adb`) (仅限网络模式) | - | | `DROIDGROUND_DEVICE_PORT` | Android 设备的端口 (`adb`) (仅限网络模式) | - | | `DROIDGROUND_INIT_SCRIPTS_FOLDER` | 包含 `setup.sh` 和 `reset.sh` 的文件夹 | `/init.d` | | `DROIDGROUND_HOST` | 绑定地址 | `0.0.0.0` | | `DROIDGROUND_PORT` | 绑定端口 | `4242` | | `DROIDGROUND_RESTART_APP_DISABLED` | 禁用应用重启 | `false` | | `DROIDGROUND_APP_MANAGER_DISABLED` | 禁用应用管理器 | `false` | | `DROIDGROUND_BUG_REPORT_DISABLED` | 禁用 bugreport | `false` | | `DROIDGROUND_FILE_BROWSER_DISABLED` | 禁用文件浏览器 | `false` | | `DROIDGROUND_FRIDA_DISABLED` | 禁用 Frida 支持 | `false` | | `DROIDGROUND_FRIDA_TYPE` | `jail` 或 `full` | `jail` | | `DROIDGROUND_FRIDA_INJECTION` | `server` 或 `gadget` | `server` | | `DROIDGROUND_LOGCAT_DISABLED` | 禁用 logcat | `false` | | `DROIDGROUND_REBOOT_ENABLED` | 启用重启 | `false` | | `DROIDGROUND_SHUTDOWN_ENABLED` | 启用关闭 | `false` | | `DROIDGROUND_START_ACTIVITY_DISABLED` | 禁用 startActivity | `false` | | `DROIDGROUND_START_RECEIVER_DISABLED` | 禁用广播 | `false` | | `DROIDGROUND_START_SERVICE_DISABLED` | 禁用 startService | `false` | | `DROIDGROUND_TERMINAL_DISABLED` | 禁用终端 | `false` | | `DROIDGROUND_RESET_DISABLED` | 禁用重置 | `false` | | `DROIDGROUND_EXPLOIT_APP_DURATION` | exploit 应用保持活动状态的时间(以秒为单位) | `10` | | `DROIDGROUND_EXPLOIT_APP_MAX_SIZE` | exploit 应用的最大大小(以 MB 为单位) | `50` | | `DROIDGROUND_NUM_TEAMS` | 同时进行比赛的队伍数量 | - | | `DROIDGROUND_TEAM_TOKEN_
标签:Android CTF, Android应用安全, APK安全, CTF平台, MITM代理, 云安全监控, 云资产清单, 安全测试, 安全竞赛, 安全靶场, 应用防护, 攻击性安全, 沙箱环境, 目录枚举, 移动安全, 网络安全, 自动化攻击, 请求拦截, 越狱逃逸, 逆向工程, 隐私保护, 静态分析, 黑帽大会