SliceDroidTeam/SliceDroid

GitHub: SliceDroidTeam/SliceDroid

一款通过 ftrace 内核追踪与污点切片技术实现 Android 应用行为精确归因与分析的模块化工具链,支持事件可视化与敏感访问检测。

Stars: 4 | Forks: 0

# SliceDroid - Android 应用行为分析 一款模块化工具链,用于通过 `ftrace` 追踪 Android 内核事件,将追踪记录切片提取为单个应用的行为,并在 Web 仪表板中探索结果。适用于恶意软件分析、应用审计、隐私取证和研究。 ## 功能 - **设备端追踪器**:通过 `ftrace` 使用 `kprobes` 和 `tracepoints` 追踪文件/设备 I/O、binder 和 UNIX socket IPC、Bluetooth 以及 TCP/UDP — 同时辅以并行的 `tcpdump` 数据包捕获 - **基于污点的事件切片器**:跨进程边界(binder 事务、UNIX 流/数据报 socket)持续追踪目标应用,并仅提取由该应用引起的事件 - **追踪记录 ↔ pcap 关联**:恢复真实的 IP 地址和端口(否则 ftrace 中的 UDP 地址将无法使用),并根据实际数据包验证字节计数 - **敏感访问检测**:读取联系人 / 短信 / 日历 / 通话记录数据库以及相机 / 麦克风 / GNSS / NFC / Bluetooth 设备的访问,并通过 IPC 归因于相应应用 - **Web 仪表板**:提供按窗口的行为时间线、公共对等网络核算(基于 kretprobe 返回值获取的字节数)、敏感访问发现以及 JSON/CSV 导出 ## 前置条件 ``` - Rooted Android device with Developer settings enabled - Python 3.9+ and pip - adb for device communication if installing from source - Optional: scapy (only for the trace↔pcap correlation step) - A docker version is also available (see below) ``` ## 如何运行 SliceDroid ### 源码安装 **下载所需的依赖包:** ``` pip install -r requirements.txt ``` * 如果你想通过追踪 Android 设备并检查结果来运行端到端示例, 如果你的设备已经通过 adb 连接,请跳过步骤 1-3。 1. **在你的 Android 设备上启用无线调试 (Android 11+):** - 进入 **设置** → **开发者选项** → **无线调试** - 开启 **无线调试** - 点击 **使用配对码配对设备** - 记下 **IP 地址**、**配对端口**和**配对码** 2. **配对你的 Android 设备(仅限首次):** adb pair : *出现提示时输入配对码* 3. **通过 ADB 连接到设备(端口 5555):** adb connect :5555 *注意:首次配对后,你可以跳过步骤 2 并直接连接* **备选设置:** # 在通过 USB 连接时启用 TCP 模式 adb tcpip 5555 # 查找设备 IP 地址 adb shell ip route | grep wlan # 断开 USB 并进行无线连接 adb connect :5555 4. **运行 SliceDroid:** python3 run_slicedroid.py # 交互式菜单 或直接使用子命令: python3 run_slicedroid.py setup # 一次性运行:应用映射 + 设备类别映射 python3 run_slicedroid.py trace # 记录追踪记录(+ tcpdump);添加 --correlate 以修正 UDP 地址 python3 run_slicedroid.py dashboard # 启动 Web 仪表板 * 如果你已经拥有追踪记录并只想分析它: python3 webapp/app.py 然后打开 `http://localhost:5000`,在仪表板中上传 `.trace` 文件,选择目标应用或 PID(**PID** 标签页列出了追踪记录中发现的所有进程),然后点击 **Analyze**。 完整的追踪工作流(包括可选的追踪记录↔pcap 关联步骤)请参阅 [docs/TRACING.md](docs/TRACING.md)。 ### Docker 安装(推荐) 适用于可跨多种平台运行的容器化部署方案: **请遵循设置指南:** [DOCKER.md](docs/DOCKER.md) ## 项目结构 ``` ├── run_slicedroid.py # CLI: setup / trace / dashboard subcommands ├── webapp/ │ ├── app.py # Flask API + dashboard │ └── src/ │ ├── analysis/ # Unified analysis package │ │ ├── parser.py # ftrace log parser │ │ ├── slicer.py # taint-based event slicer (binder + UNIX sockets) │ │ ├── windows.py # sliding-window driver │ │ ├── devices.py # device categorization + sensitive-access detection │ │ ├── network.py # TCP/UDP metrics, per-peer byte accounting │ │ ├── insights.py # plain-language findings │ │ └── pipeline.py # run_analysis() orchestrator │ ├── services/ │ │ ├── app_mapper_service.py # App mapping service │ │ └── utils.py # Shared utilities │ ├── static/ # Dashboard CSS/JS (Chart.js, ES modules) │ ├── templates/ # index.html │ └── config.py # Paths & configuration ├── scripts/ │ ├── tracer/ # On-device ftrace + tcpdump script and configs │ ├── correlation/ # trace ↔ pcap correlator, UDP address rewrite │ ├── tracker/ # App-name mapping (androguard) │ └── resources_resolver/ # Device/category mapping scripts ├── tests/ # pytest suite + synthetic trace fixture ├── data/ # Generated at runtime (device-specific) │ ├── traces/ # Traces, pcap, correlations │ ├── mappings/ # cat2devs.txt device categories │ └── Exports/ # analysis.json, sliced_events.json └── docs/ # TRACING.md, DOCKER.md, CONTRIBUTING.md ``` **注意:** `data/` 目录在你运行 SliceDroid 时会自动创建,并包含特定于设备的映射和追踪记录。 如果你想提供自己的追踪记录或映射,你可以将它们放置在该目录中。 ## 许可证 本项目基于 Apache License 2.0 授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ## 初始贡献者 - [@nikalexo](https://github.com/nikalexo) – 研究负责人 – 初始代码库 - [@karyotakisg](https://github.com/karyotakisg) – 初始代码库 - [@foivospro](https://github.com/foivospro) – 初始代码库 - [@vtalos](https://github.com/vtalos) – 初始代码库 ## 致谢 - 由欧盟资助:本项目是 Horizon Europe 项目 [SPUCS:用于安全、隐私、用户控制的智能设备的软件架构](https://doi.org/10.3030/101108713) 的成果,旨在实现更透明、更值得信赖的个人设备。
标签:DAST, ftrace, 内核追踪, 安卓, 恶意软件分析, 请求拦截, 逆向工具