在 Wireshark 中过滤流量

WiresharkBeginner
立即练习

简介

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

使用 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 读取文件中的前 5 个数据包。-r 选项指定输入文件,-c 选项限制数据包数量。

    tshark -r capture.pcap -c 5
    

    此命令会为前 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。查看文件中的前 5 个 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. 你可以使用 &&(AND)等逻辑运算符组合过滤器。要查找源 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 GUI,并了解其主要组成部分。

  1. 从终端启动 Wireshark 应用程序。重要:请确保使用 Desktop Interface,而不是独立的 Terminal Interface。Wireshark 是需要图形环境才能正常运行的 GUI 应用程序。 末尾的 & 会让应用程序在后台运行,从而释放终端以执行其他命令。

    wireshark &
    

    完成本步骤并运行步骤检查时,请保持 Wireshark 处于打开状态。

    注意: 如果你在没有桌面环境的独立终端中运行此命令,Wireshark 将无法启动。对于 GUI 应用程序,请始终使用 Desktop Interface。

    Wireshark Desktop Interface

  2. Wireshark 主窗口会出现。由于我们要分析已有文件,因此不需要选择网络接口。打开 capture.pcap 文件即可。

    • 在菜单栏中点击 File -> Open...。
    • 在文件对话框中进入 /home/labex/project,然后选择 capture.pcap。
    • 点击 Open 按钮。
  3. 主窗口现在会显示文件中的数据包。花一点时间熟悉 3 个主要窗格:

    Wireshark Main Window

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

在 GUI 中应用显示过滤器

你在 tshark 中学到的显示过滤器语法,在 Wireshark GUI 中完全相同。GUI 会立即提供可视化反馈,因此可以方便地编写和测试复杂过滤器。

  1. 在 Wireshark 窗口顶部找到显示过滤器栏。这是一个较长的文本输入框,通常会显示「Apply a display filter...」作为占位文本。

  2. 过滤 HTTP 流量。在过滤器栏中输入 http,然后按 Enter,或点击过滤器栏右侧的 Apply 按钮(箭头图标)。

    http
    

    Wireshark HTTP Filter

    数据包列表窗格会立即更新,只显示 HTTP 数据包。注意,过滤器栏会变成绿色,表示过滤器语法有效。如果输入无效过滤器,过滤器栏会变成红色。

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

    dns
    

    现在你会看到捕获文件中的所有域名系统查询和响应。

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

    http && ip.addr == 192.168.3.131
    

    Wireshark HTTP Filter

    这种组合可以帮助你精确定位特定通信。你还可以尝试其他过滤器,例如 tcp.port == 80(过滤标准 HTTP 端口上的流量)或 udp(过滤 UDP 流量)。要清除过滤器并再次查看所有数据包,请点击过滤器栏中的 X 按钮。

导出过滤后的数据

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

  1. 首先,在 Wireshark GUI 中像前一步一样应用 http 过滤器。

  2. 将当前显示的(经过过滤的)数据包保存到新的捕获文件:

    • 进入 File -> Export Specified Packets...。
    • 在对话框的「All Packets」区域中,确保选择 Displayed 单选按钮。
    • 将文件命名为 http_capture.pcap,并保存到 /home/labex/project 目录。

    Wireshark Export Specified Packets

  3. 你也可以将数据包摘要导出为文本文件或 CSV 文件。要导出为 CSV:

    • 进入 File -> Export Packet Dissections -> As CSV...。
    • 确保在「All Packets」中选择 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.pcap、http_packets.csv 和 http_export_cli.csv 文件。

总结

在本实验中,你学习了使用 Wireshark 及其命令行版本 tshark 过滤网络流量的基础知识。你先使用 tshark 和 capinfos 检查捕获文件,然后练习应用显示过滤器,以筛选特定协议和 IP 地址;先在 tshark 中操作,再在交互式 Wireshark GUI 中操作。最后,你学习了如何将过滤结果导出为新的捕获文件和便于人阅读的 CSV 文件,用于报告和分析。这些核心技能是进行网络分析或故障排查的基础。