mmfahmi/android-portable-sandbox
GitHub: mmfahmi/android-portable-sandbox
这是一个基于Docker的便携式Android模拟器实验室,旨在通过自动化脚本和流量捕获工具,为本地恶意软件分析提供可重复的网络观察环境。
Stars: 0 | Forks: 0
# Mobile Research Lab
Docker 化的 Android 模拟器实验室,用于可重复的应用程序网络观察会话。
## 提供的功能
- Android SDK 命令行工具
- Android Emulator 和 `adb`
- `tcpdump` 和 `tshark` 用于数据包捕获
- `mitmproxy` 用于可选的 HTTP/HTTPS 拦截
- 用于创建 AVD、启动 AVD、安装 APK 以及收集产物的脚本
- 支持侧载 APK 分析或基于 Play Store 的模拟器镜像
## 主机要求
- 推荐使用 Linux 主机
- Docker 和 Docker Compose
- 容器可用 `/dev/kvm` 以获得可用的模拟器性能
- 足够的磁盘空间用于 Android SDK 包和系统镜像
## 操作模式
这是一个本地 Android 研究环境,专用于红队或恶意软件分析机器。将模拟器视为研究目标,而非强大的隔离边界。
## 快速开始
0. 一次性本地机器设置:
```
./scripts/init.sh
```
如果您的主机用户尚未加入 `kvm` 组,请将其加入并启动一个新的 shell 会话:
```
sudo gpasswd -a "$USER" kvm
```
1. 构建镜像:
```
docker compose build
```
2. 创建 AVD:
```
docker compose run --rm mobile-lab create-avd
```
这将创建默认的非 Play Store AVD:
- `mobile-lab-api-34`
单独创建 Play Store AVD:
```
docker compose run --rm \
-e AVD_NAME='mobile-lab-play-api-34' \
-e ANDROID_SYSTEM_IMAGE='system-images;android-34;google_apis_playstore;x86_64' \
mobile-lab create-avd
```
3. 启动模拟器:
```
docker compose up mobile-lab
```
用于 Play Store 和手动交互的可选 GUI 模式:
```
docker compose --profile gui up mobile-lab-gui
```
然后打开:
```
http://127.0.0.1:6080/vnc.html?autoconnect=1&resize=scale
```
专用的 Play Store GUI 模式:
```
docker compose --profile gui --profile playstore up mobile-lab-play-gui
```
然后打开:
```
http://127.0.0.1:6081/vnc.html?autoconnect=1&resize=scale
```
请使用 `mobile-lab` 或 `mobile-lab-gui` 中的一个,不要同时针对同一个 AVD 运行两者。
请使用 `mobile-lab-gui` 或 `mobile-lab-play-gui` 中的一个,不要同时针对同一个 AVD 状态运行两者。
如果在 noVNC 中 Android 导航按钮不可靠,请从另一个 shell 使用 `adb`:
```
docker compose exec mobile-lab-gui android-back
docker compose exec mobile-lab-gui android-home
docker compose exec mobile-lab-gui android-recents
docker compose exec mobile-lab-gui android-force-stop your.package.name
```
4. 在另一个 shell 中,安装 APK:
```
docker compose exec mobile-lab install-apk /workspace/apks/sample.apk
```
5. 开始捕获:
```
docker compose exec mobile-lab start-capture sample-run
```
6. 停止捕获:
```
docker compose exec mobile-lab stop-capture
```
产物将写入 `artifacts/` 目录下。
## 冒烟测试
运行一键就绪和流量冒烟测试:
```
docker compose exec mobile-lab smoke-test
```
该命令会:
- 等待模拟器设备
- 等待 `sys.boot_completed`
- 等待 Android `activity` 服务出现
- 启动数据包捕获
- 使用 Android `VIEW` intent 打开 `https://example.com`
- 停止捕获并写入产物
## 常用命令
```
docker compose logs -f mobile-lab
docker compose exec mobile-lab adb devices
docker compose exec mobile-lab-gui android-home
docker compose --profile gui logs -f mobile-lab-play-gui
docker compose exec mobile-lab smoke-test
docker compose exec mobile-lab run-session /workspace/apks/sample.apk com.example.app/.MainActivity sample-run
```
## 注意事项
- 默认的 `mobile-lab` 服务是无头模式。
- 可选的 `mobile-lab-gui` 服务通过 `http://127.0.0.1:6080/vnc.html?autoconnect=1&resize=scale` 上的 noVNC 暴露模拟器。
- 可选的 `mobile-lab-play-gui` 服务在 `http://127.0.0.1:6081/vnc.html?autoconnect=1&resize=scale` 上使用启用 Play Store 的 AVD。
- 不要针对同一个 AVD 状态同时运行无头服务和 GUI 服务。
- 数据包捕获需要 `docker-compose.yml` 中定义的容器能力。
- HTTPS 拦截是可选的,并且取决于应用程序的信任行为。
- 机器本地的运行时 UID/GID/KVM 值位于 `.env` 中;请在每台主机上使用 `./scripts/init.sh` 生成或刷新该文件。
- 基础 SDK 工具已内置到镜像中;绑定挂载仅保留 AVD 状态和分析产物。
- AVD 元数据通过 `android-avd/` 和 `android-user-home/` 持久化;如果其中任何一个丢失或过时,请重新创建 AVD。
- SDK 包通过 `android-sdk/` 持久化;入口点在首次运行时将命令行工具重新放入该挂载点。
- 如果必须从 Google Play 安装应用程序,请使用 `google_apis_playstore` 镜像,并预期需要在模拟器内手动登录 Google 帐号。
- 某些 Play Store 应用程序依赖于 Play Services、许可或 Integrity 检查,在侧载时可能无法正常运行。
标签:ADB, Android SDK, Android安全, Android模拟器, APK分析, AVD, DAST, Docker, HTTPS拦截, HTTP工具, Mitmproxy, NIDS, OpenCanary, Tshark, 中间人攻击, 云安全监控, 云资产清单, 安全防御评估, 容器化, 恶意软件分析, 数字取证, 版权保护, 目录枚举, 移动安全, 网络安全, 网络安全实验室, 网络监听, 自动化脚本, 请求拦截, 逆向工程, 隐私保护, 静态分析