leitfader/droidHunter
GitHub: leitfader/droidHunter
一款带 Web 界面的 Android 应用扫描工具,通过反编译 APK 自动发现 Firebase 端点配置暴露等安全问题。
Stars: 8 | Forks: 0
# droidHunter
用于扫描 Android APK 以发现 Firebase 暴露问题的本地工具链。它可以:
- 通过用户配置的 Aurora token 分发器下载 APK
- 直接从浏览器上传 APK
- 扫描本地 APK 或 APK 目录
- 探测 Firebase RTDB、Firestore、Storage 和 Remote Config 端点
- 可选择使用提取的 API 密钥尝试 Firebase Auth
- 通过受限并发将扫描加入队列,并将报告导出为 JSON 或 SARIF
## 项目结构
- `backend/` FastAPI API + 扫描运行器
- `web/` Node.js Web UI(静态资源)
- `aurora-downloader/` 匿名 Google Play 下载器 CLI
- `data/` 运行时产物(APK、结果、任务配置)
## 快速开始
需要 Python 3.10+ 和 Node.js 18+。
### Python API
```
cd droidHunter
python -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
uvicorn backend.api:app --host 127.0.0.1 --port 8000 --no-server-header
```
### Web UI
```
cd droidHunter/web
npm ci
npm start
```
打开 `http://localhost:3000` 并将 API base 设置为 `http://localhost:8000`。
默认情况下,这两个服务都绑定到 `127.0.0.1`。如果需要从其他主机访问,请显式设置 `API_HOST`、`UI_HOST` 和 `DROIDHUNTER_CORS_ORIGINS`。
API 接受服务器端的文件路径。请将其保留在受信任的网络中,在远程访问之前启用 API token,并将 TLS 部署在反向代理上。
### 可选的 API 身份验证
当未配置任何 token 时,为了保持本地兼容性,身份验证处于禁用状态。
设置一个管理员 token:
```
export DROIDHUNTER_API_TOKEN="replace-with-a-long-random-value"
```
如果需要为查看者、操作者和管理员提供独立的访问权限,请提供一个 JSON 映射:
```
export DROIDHUNTER_API_TOKENS='{
"replace-viewer-token-with-random-value": {"name": "reports", "role": "viewer"},
"replace-operator-token-with-random-value": {"name": "scanner", "role": "operator"},
"replace-admin-token-with-random-value": {"name": "owner", "role": "admin"}
}'
```
启动时会拒绝长度小于 16 个字符的 token。
查看者可以读取任务和产物,操作者可以创建和停止工作,管理员可以删除任务、查看审计日志并运行保留清理。
Web UI 仅将它的 API URL 和 token 保留在内存中。重新加载或关闭页面会同时清除这两者。
### 单条命令启动
```
./start.sh
```
## Aurora 下载器(可选)
默认情况下,未配置或建议使用任何公共分发器。请从 [Aurora 分发器源码](https://gitlab.com/AuroraOSS/aurora-dispenser) 运行你自己的实例,
然后在 UI 中输入其 URL,或者为服务器进程配置它:
```
export AURORA_DISPENSER_URL="https://your-dispenser.example/api/auth"
```
URL 也可以在每次请求时通过 `dispenser_url` 字段提供,或者通过 `--dispenser-url` 提供给独立下载器。如果未配置分发器,Aurora 下载、搜索、图表和自动扫描操作将失败并显示明确的错误。
构建一次:
```
./build-aurora.sh
```
构建好的下载器也可以独立运行:
```
./aurora-downloader/build/install/aurora-downloader/bin/aurora-downloader \
--package foo.bar \
--output example.apk \
--dispenser-url https://your-dispenser.example/api/auth
```
需要本地安装 Gradle 和 JDK 21+。请将 `JAVA_HOME`(或 `AURORA_JAVA_HOME`)设置为 JDK 21 安装路径。
## 可选工具
- `trufflehog` 可启用机密扫描。当其不可用时,扫描将继续进行并产生一个明确的错误结果。
- 只有在进行已连接设备扫描时才需要 `adb`。
- `jadx` 和可选的 OpenFirebase 集成可启用更深层的提取路径;没有它们,基本的 APK 和 Firebase 扫描也能正常工作。
## 使用说明
- 每次扫描提供**一种**输入类型(包名、本地 APK、APK 目录、项目 ID、DNS 文件、恢复路径或设备扫描)。
- 扫描任务会持久化进入队列。`DROIDHUNTER_MAX_CONCURRENT_JOBS` 默认为 `2`,`DROIDHUNTER_MAX_QUEUED_JOBS` 默认为 `100`。
- 停止请求会在强制终止前预留 15 秒的清理时间。请使用 `DROIDHUNTER_STOP_GRACE_SECONDS` 修改此设置。
- 浏览器上传被限制在 2 GiB 或 `DROIDHUNTER_MAX_UPLOAD_BYTES`(以配置的为准)以内。
- 经过身份验证的扫描默认仅执行登录。仅当获得明确授权创建持久测试账户时,才启用 **Allow Auth Sign-up**。
- 写入探测使用唯一的临时记录,并报告清理失败情况;如果请求超时或清理标记为失败,请查看扫描报告。
- 机密扫描在离线状态下运行,无需提供者验证,并且结果元数据永远不会存储机密值或部分匹配内容。
- `GET /capabilities` 会报告可选工具的可用性和活动限制。`POST /maintenance/prune` 仅限管理员使用,且默认为模拟运行。
- 仅扫描您拥有或获得明确测试权限的应用程序。
- 运行时数据存储在 `data/` 下。设置 `DROIDHUNTER_DATA_DIR` 可以将数据库、APK、任务配置和结果保存在其他位置。
## 致谢
- Aurora Store 团队 (AuroraOSS):[GitLab](https://gitlab.com/AuroraOSS/AuroraStore) 和 [GitHub 镜像](https://github.com/whyorean/AuroraStore)
- OpenFirebase 贡献者:[GitHub](https://github.com/Icex0/OpenFirebase)
## 许可证
项目编写的源代码采用 MIT 许可证。可选的下载器链接了 GPL-3.0 的 GPlay API 依赖项,因此分发的下载器构建受 GPL-3.0 约束。
请参阅 `LICENSE` 和 `THIRD_PARTY_NOTICES.md`。
标签:Android安全, APK分析, AV绕过, CCS 2025, FastAPI, Firebase, GraphQL安全矩阵, JS文件枚举, MITM代理, 后台面板检测, 安全扫描器, 目录枚举, 移动安全, 逆向工具