0x5da/Network-Artifact-Recovery-tool
GitHub: 0x5da/Network-Artifact-Recovery-tool
从 PCAP 网络流量捕获中通过文件签名检测提取和重建文档、图像及压缩包的取证工具。
Stars: 1 | Forks: 0
## 网络工件恢复
*由 0x5da (toasty/OsintToast/WoahToast) 创建*
一种用于从网络流量捕获中提取文件的 PCAP 取证工具。通过文件签名检测,从数据包载荷中重建文档、图像和压缩包。适用于事件响应、威胁狩猎和数字取证调查。
### 为什么开发此工具
专为需要从网络流量捕获中提取工件的数字取证专家和事件响应人员开发。旨在无需完整的协议解析即可恢复安全事件期间传输的文件——从而实现从 PCAP 证据中更快地收集证据、获取恶意软件样本以及分析数据渗出。
### 功能特性
- **文件雕刻**: 通过魔数(文件头)识别并提取文件
- **格式支持**: JPEG、PNG、PDF、ZIP、GZIP 压缩包
- **流重组**: 重组跨多个数据包的碎片数据
- **统计报告**: 恢复的工件摘要和数据包处理指标
- **输出组织**: 提取的文件写入指定目录,并按顺序命名
### 工作原理
该工具逐包读取 PCAP 文件,提取 IP/TCP 头部和载荷数据。对于每个 TCP 流载荷,它扫描已知的文件签名。一旦检测到,利用启发式方法估算文件边界(完整文件使用结束标记,截断文件使用静态大小)。文件以结构化文件名(`carve_NNNN_NNNN.ext`)写入磁盘,指示数据包索引和偏移量。
### 构建与运行
```
make
./pcap-carver [output-dir]
```
**参数:**
- `pcap-file`: 来自 tcpdump 或 Wireshark 的输入 PCAP 文件
- `output-dir`: 提取文件的输出目录(可选,如果不存在则创建)
**示例:**
```
# Carve 文件到当前目录
./pcap-carver capture.pcap
# Carve 到指定输出文件夹
./pcap-carver network_traffic.pcap ./artifacts
# Carve 并按类型整理 (后处理)
./pcap-carver investigation.pcap ./evidence
ls -la ./evidence
```
### 系统要求
- libpcap-dev (Linux) 或 WinPcap (Windows)
- g++ 7.0+ (支持 C++11)
- 执行 PCAP 操作需要管理员/root 权限
### 支持的文件类型
| 格式 | 签名 | 终结符 |
|--------|-----------|-----------|
| JPEG | FFD8FF* | FFD9 |
| PNG | 89504E47 | IEND |
| PDF | 25504446 | %%EOF |
| ZIP | 504B0304 | Local end |
| GZIP | 1F8B | Trailer |
### 输出
```
[*] Starting file carving from: capture.pcap
[*] ====================================
[+] Carved JPEG: carve_0001_0234.jpg (15234 bytes)
[+] Carved PNG: carve_0045_1024.png (45612 bytes)
[+] Carved PDF: carve_0128_0512.pdf (123456 bytes)
[+] Carved ZIP: carve_0312_0768.zip (87654 bytes)
[+] Carved GZIP: carve_0567_2048.gz (21340 bytes)
====== CARVING STATISTICS ======
Total Packets Processed: 2341
Total Bytes: 5234567
JPEGs Found: 3
PNGs Found: 2
PDFs Found: 1
ZIPs Found: 1
GZIP Found: 2
```
### 注意事项
- 文件雕刻基于启发式方法;可能会恢复不完整的文件
- PNG 边界检测使用硬编码的 512 字节估算值;可根据不同的图像大小进行调整
- JPEG 图像结束标记 (FFD9) 可靠地检测完成情况
- PDF 结束标记匹配搜索 "%%EOF" 字符串;可能会遗漏自定义尾部
- 文件名冲突通过偏移量部分处理;可安全进行多次提取
- 提取的文件可能损坏或不完整;请使用 file 命令验证或打开查看
### 常见问题
- **恢复的文件很少**: 网络流量中包含不常见的文件类型或低概率签名
- **文件损坏**: 载荷截断或边界估算不正确;尝试使用更小的尺寸估算值
- **权限被拒绝**: 确保对输出目录具有写入权限
- **PCAP 格式错误**: 运行 `tcpdump -r file.pcap > /dev/null` 进行验证;可能需要转换
### 性能考虑
- 大型 PCAP 文件(>1GB)会完全加载到内存中;请考虑进行分割
- 文件写入 I/O 是顺序的;没有并行化
- 签名匹配对于每种文件类型都是 O(n) 复杂度;如果只需要特定类型,请考虑提前终止
### 局限性
- 流重组不处理跨多个分片的数据包分片
- 不验证提取文件的完整性(仅校验和、魔数)
- 不支持加密/混淆流量(显而易见)
标签:C/C++, DNS枚举, IP 地址批量处理, PCAP取证, TCP流重组, 事务性I/O, 域环境安全, 客户端加密, 库, 应急响应, 恶意软件样本提取, 数字取证, 数据恢复, 数据渗出分析, 文件雕刻, 流量重构, 网络安全工具, 网络流量分析, 自动化脚本, 证据固定, 魔法字节检测