介绍
在这个实验中,你将使用 Wireshark 及其命令行对应工具 Tshark 来学习网络数据包分析的基础知识。你将从探索网络接口开始,然后转向捕获实时网络流量。你还将学习如何使用 Tshark 命令行工具和 Wireshark 图形用户界面来读取、过滤和分析预先存在的捕获文件。这个实验为你提供了数据包分析的基础知识,这是网络故障排除和网络安全中的一项关键技能。
验证安装并列出网络接口
在这个实验环境中,Tshark 和 Wireshark 已经为你预装好了。你的第一步是验证安装并确定可用于数据包捕获的网络接口。网络接口是允许你的计算机连接到网络的硬件或虚拟设备。
首先,通过检查其版本来验证 Tshark 是否已正确安装。此命令确认该工具在系统的路径中可用。
tshark --version你应该会看到显示 Tshark 和 Wireshark 版本号的输出。
TShark (Wireshark) 4.2.x (Git v4.2.x packaged as 4.2.x-1) ...接下来,你需要知道可以使用哪些网络接口来捕获数据包。使用
-D标志列出所有可用的接口。tshark -D输出将按编号和名称列出接口。
1. eth0 2. any (一个在所有接口上捕获的伪设备) 3. lo (回环接口) 4. ...eth0通常是主要的以太网接口,在虚拟机和服务器中很常见。我们将使用它来进行实时捕获。lo是回环接口,用于在同一台计算机内部进行网络通信。any是一个特殊的伪设备,允许你同时从所有接口捕获流量。
现在你已经确认了安装并识别了 eth0 接口,就可以开始捕获数据包了。
执行基本的数据包捕获
确定了网络接口后,你现在可以执行实时数据包捕获了。对于这个练习,你将从 eth0 接口捕获少量数据包,以观察 Tshark 的实际运行情况。这是观察实时网络活动的一项基本技能。
要开始捕获,你需要使用
-i标志指定接口,并使用-c(计数)标志指定要捕获的数据包数量。运行以下命令从eth0接口捕获 10 个数据包。tshark -i eth0 -c 10Tshark 将开始捕获数据包,并实时显示每个数据包的单行摘要。输出将类似于下面的示例,显示数据包编号、时间戳、源和目标 IP 地址、协议以及简要摘要等信息。
1 0.000000000 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x1a34 AAAA metadata.google.internal 2 0.000293393 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x1a34 No such name 3 0.000408893 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x2b1f A metadata.google.internal 4 0.000564893 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x2b1f No such name ...
捕获 10 个数据包后,Tshark 将自动停止。你现在已经成功地从命令行捕获并查看了实时网络流量。
使用 Tshark 分析捕获文件
除了捕获实时流量外,常见的任务是分析先前保存的数据包捕获文件。这些文件通常带有 .pcap 扩展名,允许进行离线分析。一个名为 capture.pcap 的示例文件已在你的项目目录中提供。
首先,使用
ls命令确认capture.pcap文件存在于你当前的目录(/home/labex/project)中。ls -l capture.pcap要读取该文件中的数据包,请使用
-r(读取)标志。让我们查看文件中前 10 个数据包。tshark -r capture.pcap -c 10手动检查所有数据包效率很低。Tshark 允许你使用显示过滤器来仅显示符合特定标准的那些数据包。使用
-Y标志应用显示过滤器。让我们仅过滤 TCP 流量。tshark -r capture.pcap -Y "tcp" -c 5此命令从
capture.pcap读取,应用显示过滤器tcp,并且只显示前 5 个匹配的数据包。现在,尝试过滤另一种协议,例如 UDP。
tshark -r capture.pcap -Y "udp" -c 5你现在将只看到捕获文件中的 UDP 数据包。显示过滤器是一个强大的功能,可帮助你将分析重点放在特定的协议、地址或端口上。
过滤并保存实时捕获
在这一步中,你将结合捕获、过滤和保存。你可以应用捕获过滤器来仅保存你感兴趣的数据包,而不是保存所有流量。这对于创建有针对性的数据集非常高效。我们将仅捕获 DNS 流量并将其保存到一个新文件中。
要保存捕获,请使用
-w(写入)标志。要应用捕获过滤器,请使用-f标志。DNS 通常使用 UDP 端口 53,因此我们将使用"port 53"作为我们的捕获过滤器。运行以下命令捕获 10 个 DNS 数据包并将它们保存到名为
dns_traffic.pcap的文件中。tshark -i eth0 -c 10 -f "port 53" -w dns_traffic.pcap与常规捕获不同,此命令不会将数据包打印到屏幕上。相反,它会显示捕获数据包的运行计数,直到达到 10 个为止。
捕获完成后,验证新文件是否已创建。
ls -l dns_traffic.pcap现在,你可以检查你新创建的、经过过滤的捕获文件,以确认它只包含你想要的那部分流量。
tshark -r dns_traffic.pcap输出应该只显示 DNS 数据包(或端口 53 上的其他流量),确认你的捕获过滤器已正确工作。
使用 Wireshark GUI 分析数据包
虽然 Tshark 非常适合命令行操作,但 Wireshark 图形用户界面(GUI)提供了一个强大的可视化环境,用于深入分析数据包。在这一步中,你将使用 Wireshark GUI 来检查 capture.pcap 文件。
使用以下命令启动 Wireshark 并打开
capture.pcap文件。末尾的&会在后台运行该应用程序,从而释放你的终端。wireshark capture.pcap &Wireshark 窗口将会打开。花点时间熟悉主要布局:
- 数据包列表窗格(顶部): 捕获中所有数据包的列表。
- 数据包详细信息窗格(中间): 所选数据包协议层的详细、可展开的视图。
- 数据包字节窗格(底部): 所选数据包的原始数据,以十六进制和 ASCII 格式显示。
GUI 使过滤变得非常容易。找到窗口顶部的显示过滤器栏(它可能显示“Apply a display filter...”作为占位符文本)。将
http输入此栏中,然后按 Enter 键。http现在,“数据包列表”窗格将更新,仅显示捕获文件中包含的 HTTP 数据包。你可以点击任何数据包,在中间窗格中查看其详细信息。
完成探索后,关闭 Wireshark 窗口。
总结
在这个实验中,你获得了使用 Wireshark 套件的实践经验。你学会了如何验证 Tshark 安装并识别可用的网络接口。你练习了使用 tshark 捕获实时网络流量、从现有 .pcap 文件中读取数据,并应用了捕获过滤器和显示过滤器来隔离特定协议。你还学习了如何将过滤后的捕获保存到新文件中。最后,你接触了 Wireshark 图形用户界面,以获得更直观的数据包分析方法。这些技能对于任何从事网络管理、故障排除或安全工作的人来说都至关重要。


