百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

PCAP 拆分和合并(pcap分割)

suiw9 2024-11-17 01:38 82 浏览 0 评论

有时也会在网络故障排除期间发生,但对于有关网络取证的分析作业也很常见:处理大量数据包,有时是数百万个或更多。两种典型的情况可能会让您摸不着头脑:要么您有一个同时包含所有数据包的大文件,要么您需要查看大量小文件。因此,让我们看看我们如何仍然可以同时解决这两个问题。


捕获文件大小的问题

首先,让我们看一下只有一个大文件要处理,在我的例子中,它的大小大约在 256MB 以上。我经常将捕获的文件大小设置为 128 或 256MBytes,因为它们在 Wireshark 中打开时仍然“还可以”——加载和过滤它们需要一些时间,但还不错。但是当我最终得到比这更大的文件时——有时大小超过 10GB——那就不再起作用了。这并不是说Wireshark不能加载文件 - 因为它经常可以加载,至少是最新版本。开发人员努力改进这一点,您现在可以打开几年前无法打开的文件。

但是,当您执行数据包分析任务时,文件的初始加载并不是耗时的部分 - 过滤才是。您应用的每个显示过滤器都会从磁盘重新读取整个文件。每次,因为 Wireshark 不会将数据包保存在内存中,除了当前解码和显示的一个数据包。因此,如果您以任何方式应用过滤器,Wireshark 需要再次读取所有数据包以检查它们是否与当前过滤器条件匹配。这意味着处理大文件会很慢,而且与往常一样,当您进行故障排除或执行取证调查时,您通常没有时间,因为快速获得结果至关重要。

专业提示:使用Wireshark中的“查找”功能(快捷方式:CTRL-F)和过滤器表达式来查找匹配的数据包,而无需应用过滤器本身。这通常可以节省大量时间。

拆分大型捕获文件

如果你有一个大文件,你可以很容易地把它分成更小的文件,使用editcap。editcap是一个与Wireshark一起安装的命令行工具。这就是为什么将 Wireshark 安装路径添加到路径变量中是个好主意,以便您可以在任何地方运行命令行工具。无论如何,回到editcap:我称它为“PCAP的瑞士小刀”,因为它有很多处理捕获文件的选项。我经常用它来将大文件切割成更小的块,如下所示:

[C:\traces\demo\]editcap -c 100000 bigfile.pcapng smallfile.pcapng

“-c”参数告诉editcap将bigfile.pcapng切割成更小的文件,每个文件有100,000个数据包,这(根据我的经验)通常会导致文件大小为64-100 MBytes的文件。当然,这取决于原始文件中的数据包大小。您也可以改用“-i <每个文件秒数”,但我不太喜欢这样,因为可能会有流量突发导致一些非常大的文件和一些非常小的文件。如果你想知道为什么只有一个输出文件名而不是很多:editcap会自动将时间戳附加到它创建的每个文件中,使结果看起来像这样:

11.07.2018 19:43 74.082.680 smallfile_00000_20121003191440.pcapng
11.07.2018 19:43 76.672.476 smallfile_00001_20121003191609.pcapng
11.07.2018 19:43 79.812.736 smallfile_00002_20121003191714.pcapng
11.07.2018 19:43 51.724.288 smallfile_00003_20121003191826.pcapng

好消息是文件名的格式与Wireshark“兼容”,因此可以将其作为文件集进行导航:

图1 –Wireshark文件集

顺便说一下,转换捕获文件格式也可以使用 editcap 使用“-F”参数完成。例如,如果您需要 PCAP 格式的文件,请使用以下命令(某些 editcap 版本可能需要“libpcap”而不是“pcap”作为格式值):

[C:\traces\demo\]editcap -F pcap capture.pcapng capture.pcap

如果您有多个文件,请运行批处理作业,如下所示(例如g. 在 Windows 命令行上):

[C:\traces\demo\]for %a in (*.pcapng) do editcap -F pcap %a %a.pcap

这会将当前目录中的所有文件转换为 PCAP 格式。如果您使用空的“-F”参数运行它,Editcap 可以告诉您它支持的所有文件格式:

[C:\traces\demo\]editcap -F
editcap: The available capture file types for the "-F" flag are:
5views - InfoVista 5View capture
btsnoop - Symbian OS btsnoop
commview - TamoSoft CommView
dct2000 - Catapult DCT2000 trace (.out format)
erf - Endace ERF capture
eyesdn - EyeSDN USB S0/E1 ISDN trace format
k12text - K12 text file
lanalyzer - Novell LANalyzer
logcat - Android Logcat Binary format
logcat-brief - Android Logcat Brief text format
logcat-long - Android Logcat Long text format
logcat-process - Android Logcat Process text format
logcat-tag - Android Logcat Tag text format
logcat-thread - Android Logcat Thread text format
logcat-threadtime - Android Logcat Threadtime text format
logcat-time - Android Logcat Time text format
modpcap - Modified tcpdump - pcap
netmon1 - Microsoft NetMon 1.x
netmon2 - Microsoft NetMon 2.x
nettl - HP-UX nettl trace
ngsniffer - Sniffer (DOS)
ngwsniffer_1_1 - NetXray, Sniffer (Windows) 1.1
ngwsniffer_2_0 - Sniffer (Windows) 2.00x
niobserver - Network Instruments Observer
nokiapcap - Nokia tcpdump - pcap
nsecpcap - Wireshark/tcpdump/... - nanosecond pcap
nstrace10 - NetScaler Trace (Version 1.0)
nstrace20 - NetScaler Trace (Version 2.0)
nstrace30 - NetScaler Trace (Version 3.0)
nstrace35 - NetScaler Trace (Version 3.5)
pcap - Wireshark/tcpdump/... - pcap
pcapng - Wireshark/... - pcapng
rf5 - Tektronix K12xx 32-bit .rf5 format
rh6_1pcap - RedHat 6.1 tcpdump - pcap
snoop - Sun snoop
suse6_3pcap - SuSE 6.3 tcpdump - pcap
visual - Visual Networks traffic capture

警告 – 某些格式可能无法相互转换,具体取决于格式区域的不同程度。

使用文件集

在许多情况下,您最终会得到一组文件,有时甚至是数千个文件。例如,流行的SecurityOnion发行版捕获每个文件约160MByte:

19.06.2018 02:06 160.365.341 snort.log.1529366405
19.06.2018 02:08 159.951.916 snort.log.1529366801
19.06.2018 02:12 160.134.953 snort.log.1529366891
19.06.2018 02:14 160.052.639 鼻息.log.1529367123
19.06.2018 02:16 159.996.030 鼻息.log.1529367278

这有时会使提取存在于多个文件中的流成为一项挑战(例如,从第一个文件开始,以第五个文件结束)。要解决这个问题,您有两个主要选择:

  1. 首先使用 mergecap(也是 Wireshark 命令行工具集的一部分)将所有捕获文件合并在一起,然后从大合并文件中雕刻您需要的流程。这里的主要问题是,您最终可能会得到一个如此之大的文件,以至于大多数雕刻工具无法再处理它。
  2. 从每个部分文件中剪切部分流,并将提取的数据包合并在一起作为最后一步。这通常效果最好,例如,在所有文件的批处理作业中使用 tshark 或 tcpdump,然后进行合并。

mergecap语法非常简单(例如,当尝试合并上面列出的snort文件时):

[C:\traces\demo\]mergecap -a -w snort_all.pcapng snort.log.*

“-a”参数告诉 mergecap 连接文件,而不是按帧时间戳合并它们。为此,您应该确保您的文件名按时间顺序列出,否则您将在合并文件中出现时间跳跃。在这种情况下,只需省略“-a”参数,让 mergecap 为您排序帧。

专业提示:有一些旧版本的 mergecap(1.x,我记不清了)不适用于通配符,需要您指定所有文件。我建议购买更新的Wireshark安装,而不是这样做。

提取具有上下文的数据包

很多时候,我们需要从一大堆中提取特定的数据包来调查发生了什么。对于网络取证调查尤其如此,对于某些网络分析作业尤其如此,在这些作业中,您正在运行 24/7 捕获并需要查找特定会话的数据包。有一系列的工具可以解决这类问题,我现在将介绍其中的一些。总的来说,我找到了很多工具,但我跳过了所有太过时的工具,或者没有产生数据包提取(如tcpflow,它提取 TCP 之上的内容,而不是数据包本身)。

wireshark

当然,您可以使用Wireshark从捕获文件中提取数据包。它也可能是最通用的工具(与tshark一起)。其强大功能来自大量的显示过滤器,您可以应用这些过滤器来获取所需的内容,并将过滤结果保存到新文件中。在大多数情况下,这意味着应用会话过滤器来隔离单个 TCP 连接。或者其中几个。另一方面,Wireshark 可能太复杂而无法用于提取任务,因为它需要大量的手动交互才能获得所需的结果。

典型的步骤是:

  1. 查找要使用的筛选条件(通常是对话筛选器,如“ip.addr==192.168.0.1 和 ip.addr==10.0.0.1 和 tcp.port==54321 和 tcp.port==80”)
  2. 打开第一个文件
  3. 应用过滤器
  4. 通过 File -> 导出特定数据包(不是“另存为”!但是,如果你这样做了,不要感到难过,每个人都是错误的。我仍然这样做)
  5. 打开下一个文件,然后从步骤 3 开始重复,直到您确定已获得所有内容(提示:加载仍应用显示过滤器的文件将加快速度)
  6. 将部分结果合并在一起(如果需要 - 您也可以在Wireshark中执行此操作。查看文件菜单中的合并选项,或者简单地在UI上拖放多个文件 )
  7. 使用另一个过滤器重复此操作(如果需要)

优点

  • 所有平台
  • 极其强大

缺点

  • 一次一个文件
  • 需要大量的手工工作
  • 不是很快
  • 可能会遇到大文件的问题

专业提示:Wireshark中有一个鲜为人知/被忽视的功能,您可以在其中应用负载过滤器,在加载文件时仅允许匹配的数据包通过。语法只是显示过滤器语法,所以它非常强大:

图2 –Wireshark文件集

tshark

tshark 非常适合提取数据包,因为它具有 Wireshark 拥有的所有显示过滤器,您可以编写脚本例如对整个文件集执行这样的批处理提取:

[C:\traces\demo\]for %a in (*.pcapng) do tshark -r %a -Y "ip.addr==192.168.0.1 and ip.addr==10.0.0.1 and tcp.port==54321 and tcp.port==80" -w %a_conversation1.pcapng

最后一步是将所有提取的文件合并在一起,然后就可以进行对话,例如:

[C:\traces\demo\]mergecap -a -w conversation1_all.pcapng *_conversation1.pcapng

tshark 有时会遇到无法正确剖析的协议的麻烦(您在控制台上收到错误消息),并且通过使用与您正在做的事情无关的协议剖析器也会减慢速度。例如,如果您按IP和端口过滤对话(这是迄今为止最常见的方式),则所有应用程序协议都无关紧要。在这种情况下,我创建了一个特定的配置文件,该配置文件仅使用我在Wireshark中真正需要的剖析器,如下所示:

  1. 启动 Wireshark
  2. 为tshark创建一个新的个人资料(我经常将这个命名为“tshark”)
  3. 禁用所有协议
  4. 启用您需要的协议(通常:以太网、IPv4/v6、TCP、UDP/UDPLite)

图 3 – 启用 Wireshark 的协议

然后使用您的新配置文件运行 tshark,方法是使用“-C”参数指定它,后跟配置文件名称:

[C:\traces\demo\]tshark -C tshark -r capture.pcapng -Y "ip.addr==192.168.0.1 and ip.addr==10.0.0.1 and tcp.port==54321 and tcp.port==80" -w filtered.pcapng

专业提示:当新的Wireshark版本发布时,添加到代码中的新协议剖析器默认处于启用状态,因此您可能需要检查缩小的配置文件并禁用新的解析器,除非您需要它们。

优点

  • 所有平台
  • 极其强大

缺点

  • 需要对需要应用的每个筛选器的文件集进行多次运行
  • 对于大量数据包来说仍然不是很快
  • 可能无法处理大文件

tcpdump

TCPDUMP在用法上与tshark非常相似,但有一个关键的区别:它不支持Tshark拥有的数十万个显示过滤器,因此它可以过滤的内容更加有限。但从好的方面来说,tcpdump 也有一个很大的优势:因为它可以使用 BPF 进行过滤,而无需显示过滤器引擎开销,所以速度很快。非常快。如果您只关心对话之类的事情,那么它可能是该任务的最佳命令行工具。

当使用 tcpdump 时,上面 tshark 示例中使用的相同过滤器如下所示(当然,现在使用 BPF 语法):

tcpdump -r capture.pcap -w filtered.pcap "host 192.168.0.1 and 10.0.0.1 and tcp port 54321 and 80"

请记住,tcpdump 还不能写入 pcapng 文件格式,并且只有在它使用的 libpcap 版本支持的情况下才会读取 pcapng。还有一个名为windump的Windows版本,但它似乎已停产,仅限于pcap文件。因此,如果您想针对一组 pcapng 文件运行它,您需要先转换它们,这也需要时间。

优点

  • 大多数平台(windump.exe适用于Windows)
  • 适用于大文件
  • 极快

缺点

  • 需要对需要应用的每个筛选器的文件集进行多次运行
  • 可能仅适用于 PCAP 文件,需要先转换 PCAPNG 文件
  • 筛选仅限于 BPF 语法
  • 无法写入 pcapng 格式,因此可能会丢失一些元信息

TraceWrangler

我曾经使用Wireshark从一组数百个文件中过滤了数百个对话,花了两天时间。从那以后,我学会了以更聪明的方式做到这一点,例如使用 tcpdump 而不是 Wireshark。但这仍然需要运行数百次文件集,而不仅仅是一次。所以我在TraceWrangler 中添加了提取功能,尽管它在过滤器引擎方面几乎不如 tshark 甚至 tcpdump 强大,但它使用起来非常方便。它只需要运行一次即可同时提取到多个过滤器。还有一个特殊的模式,它可以根据Snort警报文件结果提取对话,我在这里写了博客。

使用 TraceWrangler 提取数据包有两种主要方法:通过会话摘要或使用提取任务。

对话摘要

将对话摘要视为 Wireshark 中的对话统计信息,但聚合到当前文件列表中的所有文件:

图4 –跟踪牧马人对话摘要

双击任何一行都会将完整的对话提取到一个临时文件中,并用它打开Wireshark。您还可以选择多行并使用弹出菜单,或切换聚合模式 (CTRL-O) 以将所有对话列在相应 IP 对下方。该表还具有Wireshark(尚未)没有的额外值,例如iRTT(如果可用),数据包比率(指示哪个IP发送了总流量的多少),或者显示有关握手和拆解的详细信息的状态列(仍然有一些我需要修复的问题)。

提取任务

提取任务用于按各种标准提取数据包,例如,通过为特定 IP 对的所有对话添加过滤器:

图 5 – 跟踪牧马人提取任务筛选器

提取任务通过一个看起来不怎么大的功能非常强大:输出文件名模式。使用该模式,您可以控制提取的数据包将最终进入哪个文件,例如按套接字对、IP 或 VLAN 和许多其他值拆分它们。

图 6 – 跟踪牧马人提取任务输出模式

根据你的设置方式,跟踪牧马人会将数据包聚合到输出文件中。默认情况下,这将是基于套接字对(IP 和端口)的文件,但如果您希望每个 IP 对的所有数据包都放在一个文件中,您可以将其设置为 <sourceip>-<destinationip> 之类的内容。值得注意的是,您还可以使用目录值的占位符,例如,在其中为 IP 对和基于套接字的文件名创建一个目录。

优点

  • 适用于无限大小的文件集(主要取决于可用 RAM)
  • 可以在一次运行中将数据包提取到多个文件中
  • 可以基于指示器数据包执行复杂的提取

缺点

  • 只有Windows在撰写这篇博文时
  • 过滤非常有限
  • 不写 pcap,只写 pcapng(是的,有些人一直在要求 pcap 支持)

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: