介绍
在本次实验中,你将学习如何利用 Wireshark 捕获过滤器(Capture Filter)根据特定条件选择性地捕获网络流量。捕获过滤器是强大的工具,能让你专注于相关数据,排除无关流量,从而使分析工作更高效。
你将探索不同的捕获过滤器表达式,并将其应用于实际场景。这种实践经验将提升你在网络故障排除和安全分析方面的技能。
在本次实验中,你将学习如何利用 Wireshark 捕获过滤器(Capture Filter)根据特定条件选择性地捕获网络流量。捕获过滤器是强大的工具,能让你专注于相关数据,排除无关流量,从而使分析工作更高效。
你将探索不同的捕获过滤器表达式,并将其应用于实际场景。这种实践经验将提升你在网络故障排除和安全分析方面的技能。
在网络分析领域,处理大量数据可能会让人应接不暇。这时,Wireshark 中的捕获过滤器就派上用场了。捕获过滤器能让你只收集符合特定条件的数据包,这能显著减少你需要分析的数据量。需要注意的是,捕获过滤器与显示过滤器(Display Filter)不同。显示过滤器用于过滤已经捕获的数据包,而捕获过滤器则在数据包捕获过程中发挥作用。
捕获过滤器使用伯克利数据包过滤器(Berkeley Packet Filter,BPF)语法。BPF 是一种专门设计的语言,用于在网络数据包被 Wireshark 等应用程序处理之前对其进行过滤。通过应用这些过滤器,你可以实现以下几个重要目标:
Wireshark 中的捕获过滤器使用基于 libpcap 过滤语言的特定语法。让我们来看看一些常见的元素:
host:此元素根据 IP 地址或主机名过滤流量。例如,如果你使用过滤器 host 192.168.0.2,Wireshark 将捕获所有与指定 IP 地址之间的流量。net:它根据网络地址和子网掩码过滤流量。例如,过滤器 net 10.0.0.0/24 将捕获来自 10.0.0.0/24 网络的流量。port:此元素根据端口号过滤流量。例如,port 80 用于捕获 HTTP 流量,因为 HTTP 通常使用端口 80。protocol:它根据协议过滤流量。例如,tcp 将捕获所有 TCP 流量,udp 将捕获所有 UDP 流量。你可以使用逻辑运算符组合这些元素:
and 或 &&:使用此运算符时,只有两个条件都为真时,数据包才会被捕获。or 或 ||:使用此运算符时,只要其中一个条件为真,数据包就会被捕获。not 或 !:此运算符用于取反条件。因此,如果你使用 not tcp,它将捕获所有非 TCP 流量。现在,让我们将所学知识付诸实践。按照以下步骤打开 Wireshark 并应用一个基本的捕获过滤器:
首先,你需要打开一个终端。你可以通过点击桌面任务栏上的终端图标,或者按下 Ctrl+Alt+T 来打开它。
终端打开后,输入以下命令启动 Wireshark:
wireshark
Wireshark 打开后,你会看到主启动屏幕。此屏幕显示了你系统上所有可用的网络接口。
在 Wireshark 窗口顶部找到“Capture Filter:”输入框。你将在此处输入捕获过滤器。

在过滤器框中输入 tcp。这样做是告诉 Wireshark 只捕获 TCP 数据包。
从接口列表中选择标记为 any 的接口。选择 any 意味着 Wireshark 将在所有网络接口上捕获数据包。
点击蓝色的鲨鱼鳍 Start 按钮。这将启动应用了过滤器的数据包捕获过程。

让 Wireshark 运行大约 10 - 15 秒。在此期间,它将捕获一些 TCP 数据包。你应该会开始在主窗口中看到数据包出现。
要停止捕获,点击工具栏中的红色正方形 Stop 按钮。
现在,你需要保存捕获的数据包以便后续分析。点击菜单栏中的 File > Save As。
在文件保存对话框中,导航到目录 /home/labex/project。
输入 step1.pcapng 作为文件名,然后点击 Save。

你现在已经成功应用了一个基本的捕获过滤器,只收集 TCP 数据包,并保存了结果以供后续分析。
在此步骤中,我们将专注于捕获特定的网络流量。具体来说,你将学习如何应用更精确的捕获过滤器来捕获端口 80 上的 HTTP 流量。端口 80 上的 HTTP 流量在互联网上非常普遍,因为它用于未加密的 Web 通信。设置好过滤器后,你将使用一个脚本来生成一些测试流量。这将帮助你了解过滤器在实际场景中的工作方式。
首先,让我们设置一个带有端口 80 过滤器的全新捕获。在开始新的捕获之前,我们需要确保没有先前打开的捕获。
如果你仍然打开着之前的捕获,请通过点击 File > Close 或点击数据包列表右上角的 Close this capture file 按钮 (X) 来关闭它。此步骤很重要,因为打开多个捕获可能会导致混淆,并可能影响你新捕获的准确性。

关闭之前的捕获后,你应该会看到 Wireshark 的欢迎屏幕,显示可用的接口。这个屏幕是你开始配置新捕获的地方。
这次我们将使用一种更详细的方法来设置捕获过滤器。点击 Capture Options 按钮(或在菜单中转到 Capture > Options)。Capture Options 对话框为你提供了更多关于 Wireshark 如何捕获数据包的控制,包括设置捕获过滤器。

在 Capture Options 对话框中,你将看到一个接口列表和一个位于底部的 Capture Filter 输入框。接口代表你系统上可用的网络连接,而 Capture Filter 框是你指定要捕获的数据包条件的地方。

点击 Capture Filter 框并输入过滤器:tcp port 80。此过滤器将仅捕获使用端口 80 的 TCP 流量。通过指定 tcp port 80,我们比仅使用 port 80 更具体——我们告诉 Wireshark 只捕获与此端口上的 HTTP 流量相关的 TCP 数据包,排除任何可能也使用端口 80 的 UDP 流量。这对于 HTTP 流量分析更精确,因为 HTTP 通常使用 TCP 作为其传输协议。
或者,你可以点击 Capture Filter: 按钮从保存的过滤器书签中进行选择。如果你经常使用一组过滤器,这会很有用。

在过滤器选择对话框中,你可以从预定义的过滤器中选择或创建一个新的过滤器。现在,只需直接在过滤器框中输入 port 80。这确保我们捕获了我们感兴趣的特定流量。

确保选择了 any 接口,然后点击 Start 按钮开始捕获匹配过滤器的数据包。选择 any 意味着 Wireshark 将捕获来自所有可用网络接口的数据包。
现在 Wireshark 正在捕获端口 80 上的流量,让我们生成一些测试流量来观察过滤器的实际效果。这将帮助你确认过滤器是否按预期工作。
通过点击任务栏中的终端图标或按 Ctrl+Alt+T 打开一个新的终端窗口。终端是你运行命令来生成测试流量的地方。
在新的终端中,导航到项目目录:
cd /home/labex/project
此命令将当前工作目录更改为包含流量生成脚本的项目目录。
运行预先创建的脚本来生成模拟的 HTTP 流量:
./simulate_traffic.sh
此脚本旨在创建一个监听端口 80 的简单服务器,并向其发送一些数据,模拟真实的 HTTP 流量。
你应该会看到类似以下的输出:
Netcat server listening on port 80...
Sending data to port 80...
Please check the Wireshark output for the data sent to port 80.
此输出表明脚本正在正常工作,并且数据正在发送到端口 80。
此脚本创建一个监听端口 80 的简单服务器,并向其发送一个简短的 "Hello, Wireshark!" 消息。如果过滤器工作正常,Wireshark 将捕获此消息。
返回 Wireshark 窗口。你应该会看到由脚本生成的流量包。这些流量包是我们刚刚生成的测试流量的结果。
这些流量包应该显示端口 80 上的通信,与我们的捕获过滤器匹配。这证实了过滤器按预期工作。

在数据包列表中,你应该至少看到 3 个流量包:
点击其中一个数据包,在中间窗格中查看其详细信息。你可以通过点击箭头图标来展开部分。这允许你查看数据包的不同部分,例如头部和数据。
现在通过点击工具栏中的红色方块 Stop 按钮来停止捕获。停止捕获很重要,这样你就可以在没有新数据包添加的情况下开始分析捕获的数据包。
通过在菜单栏中点击 File > Save As 来保存捕获的数据包。保存数据包允许你以后参考它们进行进一步分析。
在文件保存对话框中导航到 /home/labex/project 目录。这是我们想要存储捕获数据包的目录。
输入 step2.pcapng 作为文件名,然后点击 Save。.pcapng 文件格式是存储网络数据包捕获的常用格式。
你已成功应用了特定的捕获过滤器来仅收集端口 80 上的流量,并观察到了与此过滤器匹配的实际流量。
在这一步中,我们将学习如何使用显示过滤器来分析你已经捕获的流量。在开始之前,重要的是要理解捕获过滤器(capture filters)和显示过滤器(display filters)之间的区别。捕获过滤器用于决定首先要收集哪些流量。另一方面,显示过滤器让你专注于已经捕获的数据包的特定部分。它们就像你捕获的数据的放大镜,帮助你缩小到你感兴趣的细节。
让我们仔细看看捕获过滤器和显示过滤器之间的区别。
现在,让我们打开包含你之前捕获的数据包的文件。
File > Open。这是一种在许多软件应用程序中访问文件的常用方法。/home/labex/project 目录。这是存储捕获文件的位置。step2.pcapng 文件,然后单击 Open。.pcapng 文件格式通常用于存储网络数据包数据。接下来,我们将把显示过滤器应用于捕获的数据包。
在 Wireshark 窗口的顶部找到显示过滤器工具栏。这与你之前使用的捕获过滤器不同。激活时,它具有浅绿色背景。显示过滤器工具栏是你输入过滤器表达式以显示特定数据包的位置。
在显示过滤器字段中,键入 tcp,然后按 Enter 键或单击右箭头按钮。通过键入 tcp,我们告诉 Wireshark 仅显示使用 TCP 协议的数据包。这将仅在显示中显示 TCP 数据包,如果存在任何其他协议数据包,则将其过滤掉。
请注意,数据包如何在不需要新捕获的情况下立即在显示中被过滤。这是使用显示过滤器的优点之一。你可以快速分析捕获数据的不同方面,而无需再次捕获流量。
现在,让我们尝试一个更具体的显示过滤器。单击过滤器栏右侧的 X 按钮清除当前过滤器。这将删除先前的过滤器,并再次显示所有捕获的数据包。
输入以下过滤器以显示包含单词“Wireshark”的数据包:
frame contains "Wireshark"
此过滤器在数据包的帧数据中搜索单词“Wireshark”。
按 Enter 键或单击右箭头以应用过滤器。

现在,你应该只看到包含文本“Wireshark”的数据包——可能只有一两个包含我们的“Hello, Wireshark!”消息的数据包。这表明显示过滤器如何用于查找捕获数据包中的特定信息。
如果你单击数据包列表中的其中一个数据包,你可以在中间窗格中看到其详细信息。查找应显示“Hello, Wireshark!”文本的“Data”部分。这使你可以更详细地检查数据包的内容。
现在你已经使用显示过滤器分析了流量,让我们创建一个简单的报告来记录你发现的内容。
计算与 frame contains "Wireshark" 过滤器匹配的数据包的数量。该数字应显示在 Wireshark 窗口底部的状态栏中,显示类似“Displayed: X of Y packets”的内容。此数字表示包含单词“Wireshark”的数据包的数量。
通过单击任务栏中的终端图标或按 Ctrl+Alt+T 打开一个终端窗口。终端是一个强大的工具,允许你在计算机上运行命令。
在终端中,创建一个包含数据包计数信息的报告文件:
echo "Number of packets matching the filter expression: 1" > /home/labex/project/report.txt
注意:将上面的命令中的 1 替换为你观察到的与过滤器匹配的实际数据包数。此数字可能会因脚本的运行方式而异。

你现在已成功应用显示过滤器来分析捕获的网络流量,并将你的发现记录在报告文件中。
在本次实验中,你学习了如何使用 Wireshark 的捕获过滤器,根据特定标准有选择地捕获和分析网络流量。你练习了一些关键技能,例如理解基于伯克利数据包过滤器(Berkeley Packet Filter)语言的捕获过滤器的基本语法、在实时捕获过程中应用这些过滤器,以及区分捕获过滤器和显示过滤器。
这些技能对于处理网络问题或安全事件的网络管理员、安全分析师和 IT 专业人员来说至关重要。掌握捕获过滤器可以让你专注于相关流量,从而更高效地进行网络分析。随着你在网络分析领域的不断进步,你可以基于这些技能创建复杂的过滤器,以便在复杂环境中进行精细的流量选择。