使用 Wireshark 和 Tshark 进行数据包分析

WiresharkBeginner
立即练习

介绍

在这个实验中,你将使用 Wireshark 及其命令行对应工具 Tshark 来学习网络数据包分析的基础知识。你将从探索网络接口开始,然后转向捕获实时网络流量。你还将学习如何使用 Tshark 命令行工具和 Wireshark 图形用户界面来读取、过滤和分析预先存在的捕获文件。这个实验为你提供了数据包分析的基础知识,这是网络故障排除和网络安全中的一项关键技能。

验证安装并列出网络接口

在这个实验环境中,Tshark 和 Wireshark 已经为你预装好了。你的第一步是验证安装并确定可用于数据包捕获的网络接口。网络接口是允许你的计算机连接到网络的硬件或虚拟设备。

  1. 首先,通过检查其版本来验证 Tshark 是否已正确安装。此命令确认该工具在系统的路径中可用。

    tshark --version

    你应该会看到显示 Tshark 和 Wireshark 版本号的输出。

    TShark (Wireshark) 4.2.x (Git v4.2.x packaged as 4.2.x-1)
    ...
  2. 接下来,你需要知道可以使用哪些网络接口来捕获数据包。使用 -D 标志列出所有可用的接口。

    tshark -D

    输出将按编号和名称列出接口。

    1. eth0
    2. any (一个在所有接口上捕获的伪设备)
    3. lo (回环接口)
    4. ...
    • eth0 通常是主要的以太网接口,在虚拟机和服务器中很常见。我们将使用它来进行实时捕获。
    • lo 是回环接口,用于在同一台计算机内部进行网络通信。
    • any 是一个特殊的伪设备,允许你同时从所有接口捕获流量。

现在你已经确认了安装并识别了 eth0 接口,就可以开始捕获数据包了。

执行基本的数据包捕获

确定了网络接口后,你现在可以执行实时数据包捕获了。对于这个练习,你将从 eth0 接口捕获少量数据包,以观察 Tshark 的实际运行情况。这是观察实时网络活动的一项基本技能。

  1. 要开始捕获,你需要使用 -i 标志指定接口,并使用 -c(计数)标志指定要捕获的数据包数量。运行以下命令从 eth0 接口捕获 10 个数据包。

    tshark -i eth0 -c 10
  2. Tshark 将开始捕获数据包,并实时显示每个数据包的单行摘要。输出将类似于下面的示例,显示数据包编号、时间戳、源和目标 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 的示例文件已在你的项目目录中提供。

  1. 首先,使用 ls 命令确认 capture.pcap 文件存在于你当前的目录(/home/labex/project)中。

    ls -l capture.pcap
  2. 要读取该文件中的数据包,请使用 -r(读取)标志。让我们查看文件中前 10 个数据包。

    tshark -r capture.pcap -c 10
  3. 手动检查所有数据包效率很低。Tshark 允许你使用显示过滤器来仅显示符合特定标准的那些数据包。使用 -Y 标志应用显示过滤器。让我们仅过滤 TCP 流量。

    tshark -r capture.pcap -Y "tcp" -c 5

    此命令从 capture.pcap 读取,应用显示过滤器 tcp,并且只显示前 5 个匹配的数据包。

  4. 现在,尝试过滤另一种协议,例如 UDP。

    tshark -r capture.pcap -Y "udp" -c 5

    你现在将只看到捕获文件中的 UDP 数据包。显示过滤器是一个强大的功能,可帮助你将分析重点放在特定的协议、地址或端口上。

过滤并保存实时捕获

在这一步中,你将结合捕获、过滤和保存。你可以应用捕获过滤器来仅保存你感兴趣的数据包,而不是保存所有流量。这对于创建有针对性的数据集非常高效。我们将仅捕获 DNS 流量并将其保存到一个新文件中。

  1. 要保存捕获,请使用 -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 个为止。

  2. 捕获完成后,验证新文件是否已创建。

    ls -l dns_traffic.pcap
  3. 现在,你可以检查你新创建的、经过过滤的捕获文件,以确认它只包含你想要的那部分流量。

    tshark -r dns_traffic.pcap

    输出应该只显示 DNS 数据包(或端口 53 上的其他流量),确认你的捕获过滤器已正确工作。

使用 Wireshark GUI 分析数据包

虽然 Tshark 非常适合命令行操作,但 Wireshark 图形用户界面(GUI)提供了一个强大的可视化环境,用于深入分析数据包。在这一步中,你将使用 Wireshark GUI 来检查 capture.pcap 文件。

  1. 使用以下命令启动 Wireshark 并打开 capture.pcap 文件。末尾的 & 会在后台运行该应用程序,从而释放你的终端。

    wireshark capture.pcap &
  2. Wireshark 窗口将会打开。花点时间熟悉主要布局:

    • 数据包列表窗格(顶部): 捕获中所有数据包的列表。
    • 数据包详细信息窗格(中间): 所选数据包协议层的详细、可展开的视图。
    • 数据包字节窗格(底部): 所选数据包的原始数据,以十六进制和 ASCII 格式显示。
  3. GUI 使过滤变得非常容易。找到窗口顶部的显示过滤器栏(它可能显示“Apply a display filter...”作为占位符文本)。将 http 输入此栏中,然后按 Enter 键。

    http
  4. 现在,“数据包列表”窗格将更新,仅显示捕获文件中包含的 HTTP 数据包。你可以点击任何数据包,在中间窗格中查看其详细信息。

  5. 完成探索后,关闭 Wireshark 窗口。

总结

在这个实验中,你获得了使用 Wireshark 套件的实践经验。你学会了如何验证 Tshark 安装并识别可用的网络接口。你练习了使用 tshark 捕获实时网络流量、从现有 .pcap 文件中读取数据,并应用了捕获过滤器和显示过滤器来隔离特定协议。你还学习了如何将过滤后的捕获保存到新文件中。最后,你接触了 Wireshark 图形用户界面,以获得更直观的数据包分析方法。这些技能对于任何从事网络管理、故障排除或安全工作的人来说都至关重要。