reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
# 移动取证决策树与证据分级
取证路径由「设备状态 × 可用访问级别」决定,不是先上工具。本文档与 SKILL.md 步骤 1-3 配套使用。
## 设备 × 访问级别决策树
```
移动设备取证
├─ Android
│ ├─ 已解锁 + 应用可备份 → adb backup(targetSDK<31 或 debuggable)
│ ├─ root 可用 → 分区镜像/dd + 直接读 /data
│ ├─ 仅锁屏/无 USB 调试授权 → 标注不可提取(授权流程外不绕过)
│ └─ 加密备份 → 有备份密码才可解析,否则标注
├─ iOS
│ ├─ 已解锁 + 信任本机 → idevicebackup2 备份(加密/非加密)
│ ├─ 已有本地备份(MobileSync/Backup)→ 解析 Manifest.db(文件索引)+ Manifest.plist(元数据/加密状态)
│ └─ 未越狱且无备份 → 仅可提取有限信息,标注边界
└─ 其他(功能机/定制系统)→ 按厂商工具与接口评估,无通用流程
```
## 目标数据类型分支
```
目标数据
├─ 应用数据库 → 定位 db 文件 → sqlite3 查询 → 删除记录走 freelist/WAL 页([[re-disk-forensics]])
├─ 聊天/媒体文件 → 应用沙箱路径枚举 → 直接提取;已删除 → foremost 雕刻
├─ 偏好/配置 → plist/SharedPreferences 解析
├─ Keychain/凭据 → iOS 需备份密码;Android Keystore 硬件绑定不可导出(标注)
└─ 时间线 → 文件时间戳 + 数据库时间戳合并 → 归一 UTC
```
## 提取方法分级表(证据可靠性)
| 级别 | 方法 | 说明 |
|---|---|---|
| 强 | 设备镜像/分区镜像 | 原始比特级副本,最适合删除恢复与完整性校验 |
| 中 | 官方备份(ab / iTunes 备份) | 应用数据全量导出,但经过打包/可能含加密层 |
| 中 | 应用沙箱直读(run-as/root pull) | 单应用数据,路径级提取 |
| 弱 | 已删除数据雕刻(foremost) | 碎片化,完整性差,只能佐证 |
| 标注 | 云同步/服务端数据 | 本技能范围外,需另行授权与流程 |
## 删除恢复分支
```
删除恢复请求
├─ SQLite 数据库 → freelist 页 + WAL 残留 → 页级提取(unallocated 页扫描)
├─ 普通文件 → 文件系统未分配空间 → foremost/等价雕刻(按签名)
└─ 无未分配空间(TRIM/覆写已执行)→ 标注不可恢复(见 [[gotchas]])
```
## 时间线证据分级
| 级别 | 来源 | 说明 |
|---|---|---|
| 强 | 数据库记录时间(内容自带) | 应用内部记录,与用户动作直接相关 |
| 中 | 文件时间戳(ctime/mtime/atime) | 可被改写,注意时间戳伪造 |
| 中 | 备份记录时间(备份本身时间线) | 佐证提取时点,不是用户活动时间 |
| 弱 | 删除/碎片恢复数据的时间 | 通常只能给区间,不能给精确点 |
## 实现教训(内化)
- 先隔离再取证:飞行模式/断网是第一动作,远端擦除不可逆
- 提取路径选择以「证据可靠性 × 可用性」为准:镜像 > 官方备份 > 直读 > 雕刻
- 每次提取记录设备状态(解锁/加密/网络)与产物 sha256,链条完整才可复核
- 拿不到的数据明说「不可提取」,不绕过授权边界
## 使用注意
- 仅授权设备;授权范围(设备/数据类别/时间窗)先确认
- 产物与结论按 [[re-analyze/analysis-contract]] 交付;删除恢复结论带「部分恢复」限定
- 司法场景注意证据链(保管链)要求,本技能产出按取证流程存档

View File

@@ -0,0 +1,30 @@
# 移动取证方法论坑与边界
## 提取坑
- **adb backup 版本差异**:Android 12 起 targetSDK≥31 的应用数据不再导出(官方弃用);Android 13+ 部分设备已移除支持——「备份为空」先查应用 targetSDK 与设备版本,再换 root/镜像路径(SKILL.md 步骤 1)
- **allowBackup=false 无警告**:备份命令照常执行但某应用数据缺失,无任何报错——按应用清单逐项核对导出内容,别假设备份完整
- **加密备份**:ab/iTunes 加密备份无密码不可解析(密码不保存在设备/备份内);不硬破解(授权边界),标注不可提取
- **备份中途损坏**:线缆断开/锁屏/磁盘满都会产出损坏备份——解析报错时先看产物大小与日志,重试前确认环境稳定
- **Keystore 密钥**:Android 硬件 Keystore 密钥绑定设备芯片,备份/镜像都导不出——涉及密钥目标时直接标注局限
## 解析坑
- **iOS 哈希路径**:备份文件按 fileID 命名(fileID = SHA1(domain + "-" + relativePath),路径派生、与内容无关),分两级目录(前两位/完整 fileID),没有索引就是乱码目录——永远先解析 Manifest.db 的映射再碰文件
- **索引损坏**:Manifest.db(文件索引)缺失/损坏时备份文件仍在,但映射不可用——可尝试按文件特征(plist/数据库头)反查,属弱证据
- **SQLite 状态**:WAL 模式下删除数据可能仍在 WAL 未 checkpoint 页;journal 模式下 freelist 页残留——恢复前先看数据库日志模式([[re-disk-forensics]] 方法)
- **时区与时钟**:设备时区/时钟偏差导致时间线错位——先归一 UTC,标注时间来源;跨设备合并时间线时先对齐时钟
## 证据保全坑
- **远端擦除**:设备联网可能触发厂商远端抹除/同步覆盖(定位锁/管理策略)——提取前断网(飞行模式),全程保持
- **解锁与操作污染**:解锁、安装工具、恢复备份都会写文件系统(覆写删除数据)——先镜像/备份(只读优先),再做低优先级操作
- **TRIM/自动覆写**:现代闪存删除数据后可能被 TRIM 回收,恢复成功率低——删除恢复结论带「部分恢复」限定
- **充电/自动关机**:电池耗尽自动关机导致中断——接电源/保温,保持设备状态稳定
## 使用注意
- 仅授权设备;授权范围先确认;越权路径(绕过锁屏等)不做
- 产物按取证流程存档(路径 + 设备状态 + sha256,见 [[re-triage]]);结论按 [[re-analyze/analysis-contract]] 交付
- 动态/运行态数据(进程内存、实时消息)本技能不覆盖,转 [[re-frida]] / [[re-mem-forensics]] 评估
- 云侧数据(iCloud/Google 云备份)需单独授权与流程,本技能只处理设备本地数据