在 Wireshark 中过滤流量

WiresharkBeginner
立即练习

介绍

在本实验中,你将学习如何使用 Wireshark 过滤网络流量,这是网络分析中不可或缺的工具。你将练习分析预先捕获的数据包文件,应用显示过滤器来隔离特定流量,并导出过滤后的结果以供进一步检查。这些技能将帮助你识别网络模式、排除连接问题并深入理解网络通信。

这是一个引导式实验,提供逐步指令来帮助你学习和练习。请仔细遵循说明完成每个步骤并获得实践经验。历史数据表明,这是一个初学者级别的实验,完成率为 93%。它获得了学习者 100% 的好评率。

开始使用 Tshark

在深入研究图形界面之前,你将先从 tshark 开始,它是 Wireshark 的命令行版本。对于快速分析和脚本编写来说,它是一个功能强大的工具。在这一步中,你将验证安装情况,并对提供的抓包文件进行基础检查。

  1. 首先,通过检查版本来验证 tshark 是否已正确安装。

    tshark --version

    你应该会看到显示 Wireshark 和 tshark 版本的输出,类似于:

    TShark (Wireshark) x.x.x (Git vx.x.x packaged as x.x.x-1)
    ...
  2. 一个名为 capture.pcap 的示例抓包文件已放置在你的项目目录中。使用 ls 命令确认其存在。

    ls -lh capture.pcap

    输出将显示文件详情,包括其大小和名称。

    -rw-rw-r-- 1 labex labex 9.1M Oct 24  2015 capture.pcap
  3. 要获取抓包文件的高级摘要,请使用 Wireshark 附带的 capinfos 工具。

    capinfos capture.pcap

    此命令提供有关文件的元数据,例如数据包数量、捕获时长和平均数据包大小。

    File name:           capture.pcap
    File type:           Wireshark/tcpdump/... - pcap
    File encapsulation:  Ethernet
    File timestamp precision:  microseconds (6)
    Packet size limit:   file hdr: 65535 bytes
    Number of packets:   14 k
    File size:           9444 kB
    Data size:           9216 kB
    Capture duration:    298.505344 seconds
    First packet time:   2011-01-26 02:52:22.484409
    Last packet time:    2011-01-26 02:57:20.989753
    Data byte rate:      30 kBps
    Data bit rate:       247 kbps
    Average packet size: 646.28 bytes
    Average packet rate: 47 packets/s
    SHA256:              77d06d3f33f1a95fb9f2610f20ead8ce978449077d6ba22d4945b85bd48f75d1
    RIPEMD160:           68e950b2e438c7be011a46646ddfc8105b65b339
    SHA1:                06e502dca8dbfe8e6a9cabc61f722d94756f6db9
    Strict time order:   True
    Number of interfaces in file: 1
    Interface #0 info:
                         Encapsulation = Ethernet (1 - ether)
                         Capture length = 65535
                         Time precision = microseconds (6)
                         Time ticks per second = 1000000
                         Number of stat entries = 0
                         Number of packets = 14261
  4. 最后,使用 tshark 读取文件中的前五个数据包。-r 标志指定输入文件,-c 限制数据包数量。

    tshark -r capture.pcap -c 5

    这将为前五个数据包中的每一个显示一行摘要,让你快速了解流量情况。

        1   0.000000 192.168.3.131 → 72.14.213.138 HTTP 997 GET /complete/search?client=chrome&hl=en-US&q=cr HTTP/1.1
        2   0.029841 72.14.213.138 → 192.168.3.131 HTTP 440 HTTP/1.1 200 OK  (text/javascript)
        3   0.223883 192.168.3.131 → 72.14.213.102 TCP 66 55950 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
        4   0.229423 192.168.3.131 → 72.14.213.138 TCP 54 57011 → 80 [ACK] Seq=944 Ack=387 Win=16192 Len=0
        5   0.242649 72.14.213.102 → 192.168.3.131 TCP 66 80 → 55950 [SYN, ACK] Seq=0 Ack=1 Win=5720 Len=0 MSS=1430 SACK_PERM=1 WS=64

使用 Tshark 进行基础过滤

抓包文件可能包含数千个数据包,这使得查找特定信息变得困难。显示过滤器用于缩小视图范围,仅显示符合特定条件的数据包。在这一步中,你将学习使用 tshark 应用基础过滤器。

  1. 显示过滤器通过 -Y(大写 Y)标志应用。要仅查看 TCP 数据包,请使用过滤器 tcp。让我们查看文件中的前五个 TCP 数据包。

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

    输出现在将仅显示协议为 TCP 的数据包。

  2. 你还可以根据 IP 地址进行过滤。要查看所有源自源 IP 地址 192.168.3.131 的数据包,请使用 ip.src 过滤器。

    tshark -r capture.pcap -Y "ip.src == 192.168.3.131" -c 5

    注意使用 == 进行精确匹配。

  3. 过滤器可以使用逻辑运算符(如 &&,表示「与」)进行组合。要查找来自源 IP 192.168.3.131 的 TCP 数据包,请结合前两个过滤器。

    tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131"
  4. 你可以将过滤后的输出保存到新的抓包文件中,以便稍后分析。-w 标志指定输出文件。让我们将过滤后的 TCP 数据包保存到名为 filtered_tcp.pcap 的文件中。

    tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131" -w filtered_tcp.pcap
  5. 验证新文件是否已创建。

    ls -lh filtered_tcp.pcap

    你将在目录中看到新生成的、体积更小的抓包文件。

使用 Wireshark 图形界面探索流量

虽然 tshark 非常适合自动化,但 Wireshark 图形用户界面(GUI)为深度数据包分析提供了丰富的交互式环境。在这一步中,你将启动 Wireshark 图形界面并探索其主要组件。

  1. 从终端启动 Wireshark 应用程序。重要提示:请确保你使用的是桌面界面(Desktop Interface),而不是纯终端界面,因为 Wireshark 是一个图形界面应用程序,需要图形环境才能正常运行。 末尾的 & 符号使应用程序在后台运行,从而释放终端以执行其他命令。

    wireshark &

    注意: 如果你尝试在没有桌面环境的纯终端中运行此命令,Wireshark 将无法启动。对于图形界面应用程序,请始终使用桌面界面。

    Wireshark 桌面界面
  2. Wireshark 主窗口将出现。由于我们正在分析现有文件,因此无需选择网络接口。相反,请打开 capture.pcap 文件。

    • 前往菜单栏,点击「文件」(File)->「打开...」(Open...)。
    • 在文件对话框中,导航到 /home/labex/project 并选择 capture.pcap
    • 点击「打开」(Open)按钮。
  3. 主窗口现在将填充文件中的数据包。花点时间熟悉三个主要面板:

    Wireshark 主窗口
    • 数据包列表面板(顶部): 捕获中所有数据包的列表,包含数据包编号、时间、源、目的、协议和其他摘要信息的列。
    • 数据包详情面板(中间): 列表面板中当前选中数据包的协议层详细、可展开视图。你可以展开每一层(例如 Ethernet、IP、TCP)来查看其字段。
    • 数据包字节面板(底部): 选中数据包的原始数据,以十六进制和 ASCII 格式显示。
  4. 点击数据包列表面板中的不同数据包,观察数据包详情和数据包字节面板中的信息如何相应更新。这种交互式探索是 Wireshark 最强大的功能之一。

在图形界面中应用显示过滤器

你在 tshark 中学习的显示过滤器语法在 Wireshark 图形界面中完全相同。图形界面提供即时的视觉反馈,使构建和测试复杂过滤器变得容易。

  1. 找到 Wireshark 窗口顶部的显示过滤器栏。它是一个长文本输入框,通常带有「应用显示过滤器...」(Apply a display filter...)作为占位符文本。

  2. 让我们过滤 HTTP 流量。在过滤器栏中输入 http,然后按 Enter 键或点击「应用」按钮(栏右侧的箭头)。

    http
    Wireshark HTTP 过滤器

    数据包列表面板将立即更新,仅显示 HTTP 数据包。注意过滤器栏变为绿色,表示语法有效。如果你输入了无效的过滤器,它将变为红色。

  3. 现在,让我们查找所有 DNS 流量。清除之前的过滤器,在过滤器栏中输入 dns,然后按 Enter

    dns

    你现在将看到捕获中的所有域名系统(DNS)查询和响应。

  4. 你可以像使用 tshark 一样组合过滤器。要查找涉及 IP 地址 192.168.3.131(作为源或目的)的 HTTP 流量,请将 ip.addr 过滤器与 http 过滤器结合使用。

    http && ip.addr == 192.168.3.131
    Wireshark HTTP 过滤器

    这种强大的组合允许你锁定特定的对话。尝试其他过滤器,例如 tcp.port == 80(针对标准 HTTP 端口的流量)或 udp(针对 UDP 流量)。要清除过滤器并再次查看所有数据包,请点击过滤器栏中的 X 按钮。

导出过滤后的数据

在过滤流量以隔离感兴趣的事件后,你通常需要导出结果以便生成报告、共享或在其他工具中进行进一步分析。Wireshark 和 tshark 提供了多种导出数据的方法。

  1. 首先,在 Wireshark 图形界面中,像上一步一样应用 http 过滤器。

  2. 要仅将显示的(过滤后的)数据包保存到新的抓包文件中:

    • 前往「文件」(File)->「导出特定数据包...」(Export Specified Packets...)。
    • 在对话框中,确保在「所有数据包」(All Packets)下选中了「已显示」(Displayed)单选按钮。
    • 将文件命名为 http_capture.pcap 并将其保存在 /home/labex/project 目录中。
    Wireshark 导出特定数据包
  3. 你还可以将数据包摘要导出为文本或 CSV 文件。要导出为 CSV:

    • 前往「文件」(File)->「导出数据包解析结果」(Export Packet Dissections)->「为 CSV...」(As CSV...)。
    • 确保为「所有数据包」选择了「已显示」(Displayed)。
    • 将文件命名为 http_packets.csv 并保存在项目目录中。
  4. 你可以在命令行上使用 tshark 执行相同的导出操作。这对于自动化非常有用。以下命令读取原始的 capture.pcap,过滤 http,并将特定字段导出到 CSV 文件。

    tshark -r capture.pcap -Y "http" -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method -e http.host -E header=y -E separator=, > http_export_cli.csv
    • -T fields:指定输出格式。
    • -e ...:指定要导出的字段(列)。
    • -E header=y:添加标题行。
    • -E separator=,:使用逗号作为分隔符。
  5. 验证导出的文件是否已创建。

    ls -lh http_*

    你应该会在目录中看到 http_capture.pcaphttp_packets.csvhttp_export_cli.csv 文件。

总结

在本实验中,你学习了使用 Wireshark 及其命令行对应工具 tshark 过滤网络流量的基础知识。你首先使用 tsharkcapinfos 检查了抓包文件。接着,你练习了应用显示过滤器来隔离特定的协议和 IP 地址,先是在 tshark 中操作,然后在交互式的 Wireshark 图形界面中进行。最后,你学习了如何将过滤后的结果导出为新的抓包文件和易于阅读的 CSV 文件,以便进行报告和分析。这些核心技能是进行任何网络分析或故障排除任务的基础。