SecurityRonin/cfb-forensic
GitHub: SecurityRonin/cfb-forensic
一款用于深度提取 OLE/CFB 复合文件中已删除数据残留与结构篡改痕迹的 Rust 取证分析库。
Stars: 0 | Forks: 0
# cfb-forensic
[](https://crates.io/crates/cfb-forensic)
[](https://docs.rs/cfb-forensic)
[](https://www.rust-lang.org)
[](LICENSE)
[](https://github.com/SecurityRonin/cfb-forensic/actions)
[](https://github.com/rust-secure-code/safety-dance/)
[](https://github.com/sponsors/h4x0r)
**深度提取 OLE Compound File Binary ([MS-CFB]) 文件中被正常读取路径所隐藏的内容——包括孤立(已删除)的目录条目、空闲扇区和残区残留,以及结构性篡改痕迹。**
CFB(又称 OLE2 / COM Structured Storage)是 JumpLists (`.automaticDestinations-ms`)、旧版 Office `.doc`/`.xls`/`.ppt`、`.msi`、`.msg`、thumbcache 以及便签背后的容器格式。成熟的 [`cfb`](https://crates.io/crates/cfb) crate 能够完美读取*活跃*流和存储;但它**不**暴露那些对审查人员至关重要的已删除流元数据、未分配扇区或标记违规。`cfb-forensic` 正是在此基础上添加了这一提取层——就像 `sqlite-forensic` 之于 `rusqlite` 一样,它是 CFB 的取证对应物。
## 30 秒审计复合文件
```
[dependencies]
cfb-forensic = "0.1"
```
```
use cfb_forensic::audit_bytes;
for finding in audit_bytes(compound_file_bytes) {
println!("{finding:?}"); // OLECF-ORPHANED-DIR-ENTRY, OLECF-FREE-SECTOR-RESIDUE, ...
}
```
`audit_bytes` 对头部、FAT/mini-FAT 和目录进行了最小化的原始遍历——这独立于 `cfb` 的逻辑视图——因此它能够发现那些已被导航层丢弃的扇区和目录条目。
## 观察内容
| 代码 | 观察内容 |
|---|---|
| `OLECF-ORPHANED-DIR-ENTRY` | 从根红黑树无法到达的目录条目——可恢复的**已删除流**名称、大小和内容指针 |
| `OLECF-FREE-SECTOR-RESIDUE` | FAT/mini-FAT 中标记为空闲(`FREESECT`)但仍保留非零字节的扇区——已删除流的残留物 |
| `OLECF-SLACK-RESIDUE` | 在流最后分配的扇区中,超出其声明大小的非零字节 |
| `OLECF-STRUCTURE-ANOMALY` | 标记 / DIFAT / 红黑树违规,或者带有非零 CLSID 或时间戳的流条目([MS-CFB] 规定对于流这些必须为零——这是一种篡改痕迹) |
| `OLECF-ROOT-CLSID` | 根存储 CLSID 以及 CFB 记录的唯一创建/修改时间戳 |
每一条发现都是一个 `forensicnomicon::report` 观察——**“与……一致”,绝不是最终结论**;结论由分析人员做出。格式常量(签名、扇区标记、目录条目偏移量、`ObjectType`/`Color` 枚举)来自 [`forensicnomicon::olecf`](https://crates.io/crates/forensicnomicon)。
## 信任但验证
对不可信输入保证无 panic——每个偏移量、扇区索引和长度字段在使用前都进行了范围检查,分配设有上限,且原始遍历绝不进行未检查的切片索引。代码使用 `#![forbid(unsafe_code)]`,针对 `audit_bytes` 进行了模糊测试,并根据真实的复合文件(JumpLists 和 `.msi`/`.msg` 样本)进行了验证。正常读取路径是经过实战检验的 `cfb` crate(自 2017 年以来下载量超过 4000 万次);我们仅添加了提取遍历部分。
[隐私政策](https://securityronin.github.io/cfb-forensic/privacy/) · [服务条款](https://securityronin.github.io/cfb-forensic/terms/) · © 2026 Security Ronin Ltd
标签:OLE/CFB, Rust, 代码示例, 可视化界面, 数字取证, 数据分析, 数据恢复, 文件格式分析, 网络流量审计, 自动化脚本, 通知系统