faysalferdous/DroidForensicX

GitHub: faysalferdous/DroidForensicX

一款免费的开源 Android 防御性取证分流框架,提供从安全 ADB 采集、应用生命周期分析到证据哈希与专业报告生成的端到端案例工作流。

Stars: 0 | Forks: 0

# DroidForensicX **DroidForensicX — 免费的 Android 防御性取证分流与报告框架** ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![CLI](https://img.shields.io/badge/interface-Typer%20CLI-334155) ![Reports](https://img.shields.io/badge/reports-HTML%20%7C%20Markdown-0f766e) ![Safety](https://img.shields.io/badge/default-secrets%20redacted-b91c1c) 由 **Faysal Ferdous** 创建。 DroidForensicX 是一个开源的 Android 逻辑取证分流框架,专为授权的 DFIR、SOC、事件响应和防御性调查工作而设计。它将安全的 ADB 数据采集、合法的外部导出、应用生命周期痕迹、可疑指标、时间线、哈希值以及专业报告整合为一个可重复的案例工作流。 它专为 Android 调查的最初几小时而构建:建立设备上下文、保全逻辑证据、识别高风险应用行为、发现已卸载应用的痕迹、保护敏感数值,并生成可供分析师直接提交给审查人员的报告。 ## 核心定位 DroidForensicX 不是密码提取工具,也不是绕过工具。它是一个授权的 Android 逻辑取证分流、应用生命周期分析、证据哈希计算、时间线梳理、风险评分和报告生成框架。 **DroidForensicX 不会提取、解密、转储或绕过密码。它仅导入合法提供的凭证导出文件,并默认对敏感信息进行脱敏处理。** 它不会对设备进行 root、绕过锁屏、利用 Android 漏洞、突破应用沙箱、解密浏览器密码存储、转储私有社交媒体数据库,也不承诺从现代 Android 内部存储中完整恢复已删除的文件。它不能替代 Cellebrite、Magnet、MSAB、Oxygen 或任何商业取证套件。 ## 为什么分析师使用它 - 构建一个清晰的案例文件夹,其中包含笔记、清单、证据监管链起始文件、原始证据、分析结果、哈希值和报告。 - 运行安全、只读的 ADB 分流命令,不会清除日志或更改手机设置。 - 在缺少可选工具时能够优雅地继续运行,并在报告中记录该缺失情况。 - 将杂乱的 Android 痕迹转化为应用清单、生命周期置信度、可疑指标和时间线事件。 - 导入官方凭证导出文件,且不会在常规输出中暴露原始密码。 - 生成精美的 HTML/Markdown 报告,以供审查、上报或案件交接。 - 无需真实手机即可演示完整的工作流。 ## 功能矩阵 | 领域 | 输出 | | --- | --- | | 案件管理 | `case_manifest.json`, `case_notes.md`, `chain_of_custody.md` | | 安全 ADB 采集 | `getprop`, `settings`, `dumpsys`, `ps`, network state, `logcat -d` | | 应用清单 | `apps_current.csv`, `apps_permissions.csv`, `apps_summary.json` | | 应用生命周期 | `apps_lifecycle.csv`, `apps_uninstalled_candidates.csv`, 置信度级别 | | 指标 | `suspicious_indicators.csv`, `app_risk_score.json`, `risk_summary.json` | | 凭证 | 脱敏的 CSV 文件、密码重用分组、弱密码指标、敏感域名 | | 媒体 | 文件索引、元数据、时间线、重复文件哈希 | | 社交导入 | 合法导出的索引、聊天时间线、联系人提及 | | 时间线 | `timeline.csv`, `timeline.md`, `timeline.html` | | 完整性 | `SHA256SUMS.txt`, `evidence_manifest.json`, `hash_verify.txt` | | 报告 | `report.html`, `report.md`, `executive_summary.md` | ## 架构 ``` flowchart TD CLI[Typer CLI + Rich UI] --> Case[Case Folder Manager] CLI --> ADB[Safe ADB Collector] CLI --> Imports[Lawful Import Modules] CLI --> Optional[Optional Free Tool Integrations] ADB --> Parsers[Android Parsers] Imports --> Parsers Optional --> Evidence[External Evidence Outputs] Parsers --> Apps[App Inventory + Lifecycle] Parsers --> Risk[Indicators + Risk Scoring] Parsers --> Timeline[Unified Timeline] Apps --> Report[Jinja2 HTML/Markdown Report] Risk --> Report Timeline --> Report Evidence --> Hashes[SHA256 Evidence Manifest] Hashes --> Report ``` ## 安装 从 GitHub 压缩包安装: ``` unzip DroidForensicX-GitHub-Ready.zip cd DroidForensicX python3 -m venv .venv source .venv/bin/activate pip install -U pip wheel pip install -e . droidforensicx --help ``` 通过 Git 安装: ``` git clone https://github.com/faysalferdous/DroidForensicX.git cd DroidForensicX python3 -m venv .venv source .venv/bin/activate python -m pip install -U pip wheel pip install -e . droidforensicx --help ``` 手动安装: ``` python3 -m venv .venv . .venv/bin/activate python -m pip install -U pip python -m pip install -e ".[dev]" ``` ## 快速开始 ``` droidforensicx init --case BN-CASE-001 --examiner "Hashcode" droidforensicx check-device --case BN-CASE-001 droidforensicx acquire-basic --case BN-CASE-001 droidforensicx bugreport --case BN-CASE-001 droidforensicx app-inventory --case BN-CASE-001 droidforensicx app-lifecycle --case BN-CASE-001 droidforensicx indicators --case BN-CASE-001 droidforensicx timeline --case BN-CASE-001 droidforensicx hash --case BN-CASE-001 droidforensicx report --case BN-CASE-001 ``` 单条命令工作流: ``` droidforensicx defence-full --case BN-CASE-001 --examiner "Hashcode" ``` 演示工作流: ``` droidforensicx demo --case DEMO-ANDROID-FORENSIC open cases/DEMO-ANDROID-FORENSIC/14_reports/report.html ``` ## CLI 命令 | 命令 | 用途 | | --- | --- | | `init` | 创建取证案例文件夹和清单 | | `check-device` | 检查 `adb`、已连接的设备和授权状态 | | `acquire-basic` | 运行安全的 ADB 逻辑数据采集 | | `bugreport` | 存储 `adb bugreport` 的输出 | | `androidqf` | 在已安装的情况下运行 AndroidQF | | `mvt` | 在输入存在时运行受支持的 `mvt-android` 检查 | | `app-inventory` | 解析当前安装的应用和权限 | | `app-lifecycle` | 检测已安装及可能曾经安装过的应用 | | `media-scan` | 为合法的共享存储或导入的媒体建立索引 | | `credential-import` | 导入官方的凭证 CSV 导出文件并进行脱敏 | | `social-import` | 导入合法的社交/浏览器/聊天导出文件 | | `indicators` | 生成可疑指标和风险评分 | | `timeline` | 构建统一的时间线 | | `hash` | 对证据和生成的输出进行哈希计算 | | `report` | 生成专业的报告 | | `defence-full` | 端到端运行主要的工作流 | | `demo` | 构建一个完整的合成演示案例 | ## 案例文件夹布局 ``` cases// ├── 00_case/ ├── 01_raw_adb/ ├── 02_bugreport/ ├── 03_androidqf/ ├── 04_mvt/ ├── 05_aleapp/ ├── 06_apps/ ├── 07_media/ ├── 08_credentials_sensitive/ ├── 09_credentials_redacted/ ├── 10_social_imports/ ├── 11_indicators/ ├── 12_timeline/ ├── 13_hashes/ └── 14_reports/ ``` ## 凭证证据处理 `credential-import` 模块接受官方、合法提供的 CSV 导出文件,例如 Chrome/Google Password Manager/Firefox/Edge 桌面版导出。原始文件会被存储在 `08_credentials_sensitive/` 目录中并进行哈希计算。分析输出会被写入 `09_credentials_redacted/` 目录。 常规输出和报告永远不会打印原始密码值。密码会被表示为 `********`。该工具可能会在内部比对密码以进行重用分组和弱密码指标分析,但报告默认保持脱敏状态。 ``` droidforensicx credential-import --case BN-CASE-001 --csv official_password_export.csv ``` ## 应用生命周期分析 DroidForensicX 会关联以下数据: - 当前的包列表 - `pm list packages -u` - `dumpsys package` - `dumpsys usagestats` - `logcat` 中的包事件 - bugreport 痕迹 - 采集到的可访问的 `/sdcard/Android/data` 和 `/sdcard/Android/media` 残留文件 置信度级别: | 级别 | 含义 | | --- | --- | | `CONFIRMED_INSTALLED` | 在当前的包列表或 `dumpsys package` 证据中存在 | | `CONFIRMED_UNINSTALLED_TRACE` | 存在强烈的历史包痕迹 | | `POSSIBLE_PREVIOUSLY_INSTALLED` | 存在使用记录/logcat/bugreport 痕迹,但当前未安装 | | `WEAK_TRACE_ONLY` | 仅有低上下文的痕迹文件 | | `NO_EVIDENCE` | 没有支持性证据 | Android 不保证提供永久的卸载历史记录。生命周期结果是基于证据分级的线索,而非自动得出的结论。 ## 可选工具集成 DroidForensicX 会在安装后检测并能够使用以下免费工具: - `adb` / Android platform-tools - AndroidQF - MVT / `mvt-android` - ALEAPP - `exiftool` - `mediainfo` - `photorec` / `testdisk` - `hashdeep` 缺失的工具将被记录为警告,工作流会继续使用可用的模块执行。 ## 报告预览 演示报告包含: - 执行摘要卡片 - 风险级别和指标统计 - 设备身份信息表 - 已安装应用和已卸载应用痕迹表 - 高风险权限 - 脱敏的凭证证据 - 时间线摘要 - 哈希附录 - 明确的法律和技术限制说明 在本地生成报告: ``` droidforensicx demo --case DEMO-ANDROID-FORENSIC ``` 然后打开: ``` cases/DEMO-ANDROID-FORENSIC/14_reports/report.html ``` ## 安全默认设置 - `subprocess` 调用使用参数列表并设置 `shell=False`。 - ADB 数据采集使用只读命令。 - 日志通过 `logcat -d` 采集;不会清除现有日志。 - 原始的凭证导出文件与脱敏后的输出隔离存放。 - 在常规处理中,类似 `password`、`passwd`、`pwd`、`token`、`api_key` 和 `secret` 的敏感键值将被脱敏。 - 测试无需真实的 Android 设备即可运行。 ## 局限性 - 无 root 权限的 ADB 无法访问大多数应用私有数据库。 - 如果没有专门的合法取证获取手段,现代 Android 内部已删除文件的恢复能力非常有限。 - 不提取或解密浏览器密码。 - 不突破社交媒体私有数据库。 - 应用卸载历史记录可能不完整。 - 缺失可选工具会降低覆盖范围,但不会中止报告生成。 - 没有证据并不代表证据不存在。 ## 路线图 - 更丰富的 ALEAPP 导入支持。 - 更多的 bugreport 解析器。 - 静态报告图表。 - 增加更多官方导出格式。 - 增加更多应用风险启发式规则和测试数据。 - 可选的签名报告包导出功能。 ## 贡献 欢迎提交 Pull Request。贡献内容必须保留: - 授权使用的边界 - 默认的敏感信息脱敏 - 不包含任何绕过、漏洞利用、凭证转储或突破沙箱的逻辑 - 安全的 subprocess 使用方式 - 无需真实 Android 设备即可运行的测试 - 专业的报告用语 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。
标签:ADB, Android, DSL, Python, 库, 应急响应, 数字取证, 无后门, 自动化脚本, 逆向工具