SecurityRonin/4n6mount
GitHub: SecurityRonin/4n6mount
这是一款基于 Rust 的通用取证 FUSE 挂载工具,能够在不修改原始镜像的前提下,提供只读访问、写时复制覆盖层、已删除文件恢复及哈希过滤等功能。
Stars: 1 | Forks: 0
# 4n6mount
**将取证镜像挂载为文件系统。像浏览文件一样浏览证据。在不触碰原始文件的情况下进行写入。**
只需一条命令,即可将取证磁盘镜像转换为挂载的文件系统,提供只读证据访问、可写的写时复制覆盖层、已删除文件恢复、取证时间线以及基于哈希的过滤——所有这些都不会修改原始镜像的任何一个字节。
## 为什么存在这个工具
取证人员在工具摩擦上花费了太多时间:
- **以只读方式挂载镜像**虽然可行,但你无法在同一挂载点上运行 grep、保存笔记或将输出通过管道传递到文件
- **复制证据**会破坏监管链并浪费磁盘空间
- **仅限 GUI 的工具**无法融入脚本化工作流或 CI 流水线
- **已知良好文件过滤**需要使用单独的工具和单独的哈希数据库
4n6mount 解决了所有这些问题。挂载一次。在 `ro/` 中浏览证据。对 `rw/` 运行分析工具(写入操作会进入 sidecar 文件,绝不会写入镜像)。在 `evidence/` 中过滤掉操作系统噪音。所有功能都在一个挂载点中,只需一条命令。
## 快速开始
```
# 挂载 ext4 镜像
4n6mount image.dd /mnt/evidence
# 自动检测文件系统类型 (ext4, NTFS, exFAT)
# 创建虚拟目录:
ls /mnt/evidence/
# ro/ - 只读原始证据
# rw/ - 可写 (COW overlay, 镜像未修改)
# deleted/ - 恢复已删除文件
# journal/ - 日志事务快照
# metadata/ - superblock.json, timeline.jsonl
# unallocated/ - 原始未分配块范围
# session/ - 会话状态
```
## 虚拟目录布局
```
/mnt/evidence/
├── ro/ Read-only. Pristine evidence. Never modified.
├── rw/ Writable. Copy-on-write overlay.
│ All writes go to a sidecar directory.
│ Identical to ro/ until you write something.
├── deleted/ Recovered deleted files: {inode}_{name}
├── journal/ Journal transaction snapshots
├── metadata/ superblock.json, timeline.jsonl
├── unallocated/ Raw unallocated block data
├── evidence/ Like rw/, but known-good files hidden
│ (only when --filter-db is provided)
└── session/ Session metadata
```
## 主要功能
### 在不修改证据的情况下写入
```
# 在证据上运行 grep,保存结果 — 镜像未修改
grep -r "password" /mnt/evidence/rw/ > /mnt/evidence/rw/grep-results.txt
# 您的分析工具正常工作
strings /mnt/evidence/rw/var/log/auth.log | sort -u > /mnt/evidence/rw/unique-strings.txt
```
所有写入操作都会进入镜像旁边的 **sidecar 目录**。原始镜像永远不会被修改。会话导出功能可以将 sidecar 打包,以便与其他取证人员共享。
### 过滤已知良好文件
```
# 使用 NSRL 数据库挂载 — evidence/ 隐藏已知 OS/app 文件
4n6mount image.dd /mnt/evidence --filter-db /path/to/nsrl.db
# 仅查看重要文件
ls /mnt/evidence/evidence/home/suspect/
```
支持 **NSRL RDSv3** (SQLite)、**HashKeeper** (CSV) 和 **自定义哈希列表**(每行一个 MD5)。
### 会话持久化
```
# 使用会话开始分析
4n6mount image.dd /mnt/evidence --session ./case-001
# 稍后返回
4n6mount image.dd /mnt/evidence --session ./case-001 --resume
# 与另一位检查员共享
4n6mount --export-session ./case-001 --output case-001.tar.gz
# 他们导入并继续
4n6mount --import-session case-001.tar.gz --session ./case-001-copy
```
恢复时会验证镜像哈希(SHA-256)——检测证据篡改。
### 守护进程模式
```
# 后台挂载
4n6mount image.dd /mnt/evidence --daemon
# 前台 (默认) — Ctrl+C 卸载
4n6mount image.dd /mnt/evidence
```
## 文件系统支持
| 文件系统 | 状态 | 功能标志 |
|-----------|--------|-------------|
| **ext4** | 已支持 | `--features ext4` (默认) |
| NTFS | 计划中 | `--features ntfs` |
| exFAT | 计划中 | `--features exfat` |
| HFS+ | 计划中 | `--features hfsplus` |
| APFS | 计划中 | `--features apfs` |
通过魔数自动检测。使用 `--fs ext4` 覆盖。
## 平台支持
| 平台 | FUSE 后端 | 状态 |
|----------|-------------|--------|
| **Linux** | fuser (libfuse) | 已支持 |
| **macOS** | fuser (macFUSE) | 已支持 |
| **Windows** | WinFSP | 存根(进行中) |
## 安装
```
cargo install forensic-mount
```
或从源代码构建:
```
git clone https://github.com/SecurityRonin/4n6mount
cd 4n6mount
cargo build --release
# 二进制文件位于 target/release/4n6mount
```
## ForensicFs trait
4n6mount 也是一个 **库**。任何取证文件系统解析器都可以通过实现 `ForensicFs` trait 来接入:
```
use forensic_mount::{ForensicFs, FsDirEntry, FsMetadata, FsResult};
impl ForensicFs for MyFilesystemParser {
fn root_ino(&self) -> u64 { 2 }
fn read_dir(&mut self, ino: u64) -> FsResult> { /* ... */ }
fn lookup(&mut self, parent: u64, name: &[u8]) -> FsResult
标签:BurpSuite集成, COW, exFAT, ext4, FUSE, HashKeeper, MIT协议, NSRL, NTFS, Rust, 写时复制, 取证, 只读, 可视化界面, 司法鉴定, 哈希过滤, 域渗透, 开源, 恢复删除, 挂载, 数字取证, 数据恢复, 文件系统, 日志快照, 时间线, 未分配空间, 电子数据取证, 磁盘镜像, 网络流量审计, 网络调试, 自动化, 自动化脚本, 虚拟目录, 证据保全, 通知系统