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





由 **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, 库, 应急响应, 数字取证, 无后门, 自动化脚本, 逆向工具