拆分大型 PCAP——提取单次会话不失上下文

如何分割大型 PCAP 文件,提取一个 TCP 或 UDP 会话,并为协议故障排除保留足够的上下文。

PCAP, 大捕获, 拆分pcap, tcp流, 故障排除

大型 PCAP 文件难以打开、共享和审阅。从繁忙的服务器、摄像头网关、USB-over IP 实验室或生产事件捕获的数据可能会迅速增长到千兆字节。显而易见的解决方法是拆分文件或提取一个对话。风险在于切断解释失败的背景。

正确的问题不仅仅是“如何使 PCAP 更小?”问题是“什么样的环境必须保留下来,这样较小的捕获仍然有用?”

为什么大型捕获变得难以使用

大量捕获会产生实际问题:

  • 数据包分析器内存压力
  • 索引速度慢
  • 难以上传到支持门户
  • 敏感的无关流量
  • 太多对话
  • 时间跨度长
  • 真实事件周围的重复噪音

按大小拆分可以使文件易于管理。提取对话可以使证据集中。但这两种操作都可以隐藏重要的设置、DNS、ARP、TLS 或重传上下文。

提取对话需要五个以上元组

TCP 或 UDP 会话通常由源 IP、目标 IP、端口和协议来标识。这是一个好的开始。但故障排除可能还需要:

  • 连接前进行 DNS 查找
  • ARP 或邻居发现
  • TCP握手
  • TLS 握手
  • ICMP 错误
  • 可见故障之前的重传
  • 相关控制通道
  • 客户端重试后服务器响应

如果仅在应用程序错误后提取数据包,接收者可能会错过真正的原因。

按大小拆分与按时间拆分

按文件大小拆分对于工具兼容性和上传限制很有用。按时间分割对于事件窗口很有用。按对话拆分对于集中调试很有用。每个都有权衡。

问:

  • 接收工具有文件大小限制吗?
  • 事件时间窗口重要吗?
  • 一个流程代表整个案例吗?
  • 是否需要多个相关流程?
  • 时间戳需要保持原始状态吗?
  • 数据包编号应该保留还是重新映射?

输出应记录所使用的拆分策略。

保留原始数据包证据

生成较小的文件时,保持原始捕获不变。派生捕获应该是可重复的。如果支持团队稍后在提取的窗口之前请求数据包,则原始数据包必须仍然存在。

有用的元数据:

  • 原始文件名和哈希值
  • 分流或萃取过滤器
  • 时间窗口
  • 之前和之后的数据包计数
  • 包括对话
  • 有意丢弃的数据包
  • 输出文件哈希值

这将“我剪切文件”变成了一种防御性操作。

PCAP 手术适合的场合

PCAP 手术专为证据审查和受控编辑而设计。大型捕获处理是其中的一部分:首先检查,其次选择最小输出,第三记录操作。

对于大型 PCAP 工作流程,PCAP 手术应有助于回答:

  • 存在哪些对话?
  • 哪个流程包含故障?
  • 它有多少背景?
  • 提取了什么?
  • 故意排除了什么?
  • 衍生捕获可以再生吗?

如果您的搜索查询是“split large pcap”或“从 pcap 中提取 tcp 会话”,请勿仅针对文件大小进行优化。针对较小的捕获进行优化,但仍然可以解释失败。