使用 Tshark 捕获无线帧

WiresharkWiresharkBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习使用 Wireshark 的命令行工具 Tshark 来捕获和分析无线网络帧。你将通过实际操作练习在无线接口上启用监控模式、使用特定过滤器捕获数据包,以及查看帧的详细信息。

本实验涵盖了一些重要技术,包括接口配置、实时数据包捕获,以及对 802.11 信标帧的针对性分析。你将通过命令行和图形用户界面 (GUI) 两种方式获得实际操作经验,以观察在标准网络模式下通常不可见的无线流量。

使用 -I 启用监控模式

在这一步中,你将学习如何使用 -I 标志在 Wireshark 中启用监控模式。监控模式是一种特殊的无线接口模式,它允许你的网络适配器捕获特定信道上的所有无线流量,包括并非发送给你的设备的数据包。这与正常的“管理模式”不同,在管理模式下,你的设备仅接收发送给自己的数据包。

在开始之前,我们需要确认你的无线接口是否可用。大多数 Linux 系统使用 wlan0 作为默认的无线接口名称。我们将使用 iwconfig 命令进行检查:

iwconfig

你应该会在接口列表中看到 wlan0。如果你看到的是其他名称,则需要在后续命令中替换该名称。

接下来,我们将使用 aircrack-ng 套件中的 airmon-ng 来启用监控模式。这个工具可以帮助管理无线接口:

sudo airmon-ng start wlan0

此命令会创建一个处于监控模式的新虚拟接口,通常命名为 wlan0mon。“mon”后缀表示该接口处于监控模式。

让我们通过检查接口属性来验证该模式是否已激活:

iwconfig wlan0mon

在输出中,查找“Mode:Monitor”,这表明该接口已正确配置。你可能还会在此处看到有关频率和信道的详细信息。

现在,我们准备以启用监控模式的方式启动 Wireshark:

wireshark -I -i wlan0mon

-I 标志专门告诉 Wireshark 使用监控模式,而 -i wlan0mon 则指定了我们的监控接口。如果没有这些参数,Wireshark 将尝试以正常的管理模式进行捕获。

当 Wireshark 打开时,查看接口列表。你应该会看到 wlan0mon,其旁边带有“(monitor mode)”指示符。这种直观的确认有助于确保你正在正确捕获所有无线流量。

使用 -i wlan0 开始捕获

在这一步中,你将使用 Wireshark 的命令行界面捕获无线网络流量。-i 标志非常关键,因为它告诉 Wireshark 要监控哪个网络接口。由于我们处理的是无线网络,所以将使用之前准备好的监控模式接口。

在开始之前,让我们确认监控模式接口已正确设置。此验证可确保我们捕获的是正确类型的无线数据:

iwconfig wlan0mon

在输出中查找“Mode:Monitor”,这表明你的接口已准备好捕获你周围的所有无线流量,而不仅仅是发往你设备的流量。

现在,我们将启动 Wireshark 开始捕获数据包:

wireshark -i wlan0mon

-i wlan0mon 部分专门告诉 Wireshark 使用我们的监控模式接口。在出现的 Wireshark 窗口中:

  • 当你周围的设备传输无线帧时,数据包列表将实时更新
  • 确认状态栏中显示“wlan0mon”,以确保选择了正确的接口
  • 观察数据包计数器增加,表明捕获活动成功

完成数据包捕获后,若要停止捕获:

  • 点击工具栏中显眼的红色“Stop”按钮
  • 或者,按 Ctrl+E 来切换捕获的开启和关闭

如果你更喜欢在终端中操作,或者需要自动执行捕获任务,那么 Tshark(Wireshark 的命令行版本)是个不错的选择:

tshark -i wlan0mon -c 10

此命令会精确捕获 10 个数据包,然后自动停止,并将结果直接显示在你的终端中。-c 标志用于控制在停止捕获之前要捕获的数据包数量。

使用 -Y "wlan.fc.type_subtype==0x08" 过滤信标帧

在这一步中,你将学习如何使用显示过滤语法在 Wireshark 中过滤信标帧。信标帧是一种特殊的管理帧(类型为 0x08),无线接入点会持续广播这些帧以宣告其网络的存在。这些帧包含了诸如网络名称(SSID)、支持的数据速率和安全设置等重要信息。

  1. 首先,确保 Wireshark 正在运行,并通过 wlan0mon 接口进行捕获(从上一步开始):
wireshark -i wlan0mon

此命令将启动 Wireshark 并开始在 wlan0mon 接口上捕获数据包,该接口应该已经在之前的设置中处于监控模式。

  1. 在 Wireshark 界面中:
    • 找到顶部的“Filter”工具栏(位于主菜单下方)
    • 输入过滤表达式:
wlan.fc.type_subtype == 0x08

这个过滤器告诉 Wireshark 只显示帧类型/子类型与信标帧匹配的数据包(十六进制的 0x08)。

  • 按下 Enter 键或点击“Apply”以激活过滤器
  1. 现在,你应该只会在数据包列表中看到信标帧。这些帧通常会显示:

    • 接入点的源 MAC 地址(用于识别物理设备)
    • 数据包详细信息中的 SSID(网络名称,即用户看到的 WiFi 名称)
    • 固定的间隔(通常为每 100ms,这是默认的信标间隔)
  2. 若要详细检查某个信标帧:

    • 在数据包列表中点击选择任意一个信标帧
    • 展开中间面板中的“IEEE 802.11 Wireless LAN Management Frame”部分
    • 在这里你可以查看重要的详细信息,例如:
      • SSID(在“Tagged Parameters”下)
      • 支持的数据速率
      • 信道信息
      • 安全功能
  3. 若要使用 tshark 进行命令行过滤(适用于自动捕获):

tshark -i wlan0mon -Y "wlan.fc.type_subtype==0x08" -c 5

此命令会从 wlan0mon 接口捕获恰好 5 个符合我们过滤器(-Y)的信标帧(-c 5),然后自动退出。tshark 中的 -Y 标志的作用与 Wireshark 的显示过滤器类似。

使用 -V 显示帧信息

在这一步中,你将学习如何使用 Wireshark 的详细输出模式,通过 -V 标志在终端中显示详细的帧信息。当使用像 tshark 这样的命令行工具时,这特别有用,因为它比默认的摘要视图提供更全面的信息。

  1. 首先,确保你已经捕获了一些信标帧(从上一步开始)。我们将使用 tshark 来完整详细地显示它们:
tshark -r /tmp/capture.pcap -Y "wlan.fc.type_subtype==0x08" -V

此命令从你保存的捕获文件(/tmp/capture.pcap)中读取数据,并过滤出信标帧(类型/子类型为 0x08)。-V 标志告诉 tshark 显示每个帧的所有可用详细信息。

  1. -V 标志提供详细输出,显示:

    • 完整的帧头(包括所有 802.11 帧字段)
    • 所有协议层(从物理层到应用层数据)
    • 详细的字段值(并解释每个值的含义)
    • 十六进制的有效负载转储(有助于分析原始数据包内容)
  2. 若要捕获并实时显示详细输出的帧:

tshark -i wlan0mon -Y "wlan.fc.type_subtype==0x08" -V -c 5

这将:

  • 从 wlan0mon 接口(你的监控模式接口)进行捕获
  • 仅过滤信标帧(使用与之前相同的过滤器)
  • 显示详细输出(包含上述所有详细信息)
  • 在捕获 5 个帧后停止(-c 5 参数限制捕获数量)
  1. 在详细输出中需要关注的关键信息:

    • 帧控制字段值(显示帧类型、方向和其他标志)
    • MAC 地址(源地址、目的地址和 BSSID)
    • 信标间隔(接入点发送信标帧的频率)
    • 能力信息(接入点支持的功能)
    • 支持的数据速率(接入点能够处理的数据速率)
  2. 为了提高可读性,特别是对于较长的输出,你可以将输出通过管道传递给 less

tshark -i wlan0mon -Y "wlan.fc.type_subtype==0x08" -V -c 5 | less

这样你就可以使用箭头键逐页滚动输出,而不是让所有内容一次性显示在终端中。完成查看后,按 'q' 退出 less 查看器。

总结

在本次实验中,你学习了如何使用处于监控模式的 Wireshark 捕获无线帧。关键步骤包括使用 airmon-ng 启用监控模式、使用 iwconfig 验证接口状态,以及使用 -I 标志启动 Wireshark 以进行监控模式捕获。你还练习了使用 -i 指定监控接口并观察实时流量。

此外,你探索了过滤技术,使用 -Y 过滤信标帧,使用 -V 进行详细分析。本次实验涵盖了 GUI 和命令行两种方法,包括使用 tshark 进行无界面操作,为无线帧分析奠定了坚实的基础。