第章无线网络数据包分析与传统有线网络相比,无线网络稍微有些不同。虽然我们仍然在处理TCP、IP等常见的通信协议,但是当移到OSI模型最底层时,游戏便发生了一点变化。在这里,由于无线网络和物理层的本质属性,数据链路层变得尤为重要。这给我们捕获和访问数据增加了新的限制。考虑到这些额外因素,你应该不会惊讶于这一整章都将讨论无线网络中的数据包捕获和分析。本章我们将讨论为什么无线网络在数据包分析中比较特殊,以及如何克服这些困难。当然,我们会通过捕获无线网络的实际例子来进行说明。11.1物理因素在无线网络中捕获和分析传输数据,首先考虑的是物理传输介质。到目前11238Wireshark数据包分析实战(第2版)为止,我们都没有考虑物理层,因为我们一直在物理的线缆上通信。现在我们通过不可见的无线电波通信,数据包就从我们身边飞过。11.1.1一次嗅探一个信道当从无线局域网(WirelessLocalAreaNetwork,WLAN)捕获流量时,最特殊的莫过于无线频谱是共享介质。不像有线网络的每个客户端都有它自己的网线连接到交换机,无线通信的介质是客户端共享的空间。单个WLAN只占用802.11频谱的一部分。这允许同一个物理空间的多个系统在频谱不同的部分进行操作。注意无线网络的基础是美国电子和电气工程师协会(InstituteofElectricalandElectronicsEngineers,IEEE)开发的802.11标准。整章涉及的“无线网络”“WLAN”等术语均指802.11标准中的网络。空间上的分离是通过将频谱划分为不同信道实现的。一个信道只是802.11无线频谱的一部分。在美国,有11个信道可用(有些国家允许使用更多的信道)。这是很重要的,因为WLAN同时只能操作一个信道,就意味着我们只能同时嗅探一个信道,如图11-1所示。所以,如果你要处理信道6的WLAN,就必须将系统配置成捕获信道6的流量。图11-1嗅探无线网络很麻烦,因为同一时间只能处理一个信道注意传统的无线嗅探只能同时处理一个信道,但有一个例外:某些无线扫描应用程序使用“跳频”技术,可以迅速改变监听信道以收集更多数据。其中最流行的工具是Kismet(),可以每秒跳跃10个信道,从而高效地嗅探多个信道。第11章无线网络数据包分析239240Wireshark数据包分析实战(第2版)11.1.2无线信号干扰当有其他因素干扰信号时,无线通信不能保证空气中传输的数据是完整的。无线网络有一定的抗干扰特性,但并不完全可靠。因此,当从无线网络捕获数据包时,你必须注意周边环境,确保没有大的干扰源,比如大型反射面、大块坚硬物体、微波炉、2.4Ghz无绳电话、厚墙面,以及高密度表面等。这些可能导致数据包丢失、数据包重复或数据包损坏。同时你还要考虑信道间干扰。虽然同一时刻只能嗅探一个信道,但还是有个小小的忠告:无线频谱被分为多个不同的传输信道,但因为频谱空间有限,信道间有些许重叠,如图11-2所示。这意味着,如果信道4和信道5上都有流量,当你在其中一个信道上嗅探时,会捕获到另一个信道上的数据包。通常,同一地域上的多个网络被设置成使用1、6和11这3个不重叠信道,所以你可能不会遇到这个问题,但以防万一,你还是要了解这是怎么回事。图11-2由于频谱空间有限,信道之间有重叠11.1.3检测和分析信号干扰无线信号干扰的问题不是在Wireshark上观察数据包就能解决的。如果你致力于维护WLAN,就应该定期检测信号干扰。这可以用频谱分析仪来完成,它可以显示频谱上的数据或干扰。商业的频谱分析仪价格昂贵甚至高达数千美元,但对于日常使用则有更好的方案。MetaGeek开发了一个叫Wi-Spy的产品,这是一个USB硬件设备,用于监测整个802.11频谱上的干扰。与MetaGeek的Chanalyzer软件搭配后,这个硬件可以输出图形化频谱,有助于解决无线网络的问题。Chanalyzer的示例输出如图11-3所示。第11章无线网络数据包分析241图11-3这个Chanalyzer显示同一地点有多个WLAN在工作11.2无线网卡模式在开始嗅探无线数据包之前,我们需要了解无线网卡的不同工作模式。无线网卡一共有4种工作模式。被管理模式(Managedmode):当你的无线客户端直接与无线接入点(WirelessAccessPoint,WAP)连接时,就使用这个模式。在这个模式中,无线网卡的驱动程序依赖WAP管理整个通信过程。Adhoc模式:当你的网络由互相直连的设备组成时,就使用这个模式。在这个模式中,无线通信双方共同承担WAP的职责。主模式(Mastermode):一些高端无线网卡还支持主模式。这个模式允许无线网卡使用特制的驱动程序和软件工作,作为其他设备的WAP。监听模式(Monitormode):就我们的用途而言,这是最重要的模式。当你希望无线客户端停止收发数据,专心监听空气中的数据包时,就使用监听模式。242Wireshark数据包分析实战(第2版)要使Wireshark捕获无线数据包,你的无线网卡和配套驱动程序必须支持监听模式(也叫RFMON模式)。大部分用户只使用无线网卡的被管理模式或adhoc模式。图11-4展示了各种模式如何工作。图11-4不同的无线网卡模式注意经常有人问我推荐哪款无线网卡做数据包分析。我强烈推荐自己使用的ALFA1000mWUSB无线适配器。这是市场上最好的产品之一,确保你捕获到每一个可能的数据包。大部分在线计算机硬件零售商都销售此款产品。第11章无线网络数据包分析24311.3在Windows上嗅探无线网络即使你有支持监听模式的无线网卡,大部分基于Windows的无线网卡驱动也不允许你切换到这个模式(WinPcap也不支持这么做)。你需要一些额外的硬件来完成工作。11.3.1配置AirPcapAirPcap(Riverbed旗下CACETechnologies公司的产品,)被设计用来突破Windows强加给无线数据包分析的限制。AirPcap像U盘一样小巧,如图11-5所示,用于捕获无线流量。AirPcap使用第3章讨论的WinPcap驱动和一个特制的客户端配置工具。图11-5AirPcap的设计非常紧凑,适合与笔记本电脑一同携带AirPcap的配置程序很简单,只有一些配置选项。如图11-6所示,AirPcap控制面板提供了以下几个选项。Interface:你可以在这里选择要捕获的设备。一些高级的分析场景会要求你使用多个AirPcap设备,同时嗅探多个信道。BlinkLed:选中这个按钮会使AirPcap设备上的LED指示灯闪烁。当存在多个AirPcap设备时,可用来识别正在使用的适配器。Channel:在下拉菜单里,你可以选择希望AirPcap监听的信道。Include802.11FCSinFrames:默认情况下,一些系统会去掉无线数据包的最后4个校验和比特。这个被称为帧校验序列(FrameCheckSequence,FCS)的校验和用来确保数据包在传输过程中没被破坏。除非你有特别的理由,否则请勾选这个复选框(包含FCS校验和)。CaptureType:这里有两个选项:802.11Only和802.11+Radio。802.11Only244Wireshark数据包分析实战(第2版)选项包含标准的802.11数据包头。802.11+Radio选项包含这个包头以及前端的radiotap头部,因而包含额外信息,比如数据率、频率、信号等级和噪声等级。选择802.11+Radio以观察所有可用的数据信息。FCSFilter:即便你没有选择Include802.11FCSinFrames,这个选项也可以过滤FCS认为已经被损坏的数据包。使用ValidFrames选项可以只显示FCS认为成功接收的那些数据包。WEPConfiguration:这个区域(在AirPcapControlPanel的Keys选项卡可见)允许你输入所嗅探网络的WEP密码。为了能解密WEP加密的数据,你需要在这里填入正确的WEP密码。WEP密码将在11.8节“无线网络安全”中讨论。图11-6AirPcap配置程序11.3.2使用AirPcap捕获流量一旦安装并配置好AirPcap,接下来的捕获过程你已经很熟悉了。只要启动Wireshark并选择Capture-Options。接着,在Interface下拉框中选择AirPcap设备,如图11-7所示。除了WirelessSettings按钮外,屏幕上的一切都很熟悉。单击这个按钮会给出与AirPcap配置程序一样的选项,如图11-8所示。AirPcap是完全嵌入Wireshark的,因此所有配置都可以在Wireshark中修改。一切都配置好之后,就可以单击Start按钮开始捕获数据包了。第11章无线网络数据包分析245图11-7选择AirPcap设备作为捕获接口图11-8AdvancedWirelessSettings对话框允许你在Wireshark中配置AirPcap11.4在Linux上嗅探无线网络在Linux系统嗅探只需要简单地启用无线网卡的监听模式,然后启动Wireshark即可。不幸的是,不同型号无线网卡启用监听模式的流程各不相同,所以在这里我不能给出明确提示。实际上,有些无线网卡并不要求你启用监听模式。你最好Google一下你的网卡型号,确定是否需要启用它,以及如何启用。在Linux系统中,通过内置的无线扩展程序启用监听模式是常用的办法之246Wireshark数据包分析实战(第2版)一。你可以用iwconfig命令打开无线扩展程序。如果你在控制台上键入iwconfig,应该会看到这样的结果。$iwconfigeth0nowirelessextensionslo0nowirelessextensionseth1IEEE802.11gESSID:TeslaWirelessNetworkMode:ManagedFrequency:2.462GHzAccessPoint:00:02:2D:8B:70:2EBitRate:54Mb/sTx-Power-20dBmSensitivity=8/0RetryLimit:7RTSthr:offFragmentthr:offPowerManagement:offLinkQuality=75/100Signallevel=-71dBmNoiselevel=-86dBmRxinvalidnwid:0Rxinvalidcrypt:0Rxinvalidfrag:0Txexcessiveretries:0Invalidmisc:0Missedbeacon:2iwconfig命令的输出显示eth1接口可以进行无线配置。这是显然的,因为它显示了与802.11g协议有关的数据,反观eth0和lo0,它们只返回了“nowirelessextensions”。这个命令提供了许多无线配置信息,仔细看下,有无线扩展服务设置ID(ExtendedServiceSetID,ESSID)、频率等。我们注意到“eth1”下面一行显示,模式已经被设置为“被管理”,这就是我们想改动的地方。要将eth1改成监听模式,你必须以root用户身份登录。可以直接登录或用切换用户(su)命令,如下所示。$suPassword:enterrootpasswordhere你成为root用户后,就可以键入命令来配置无线网卡选项。输入以下命令可以将eth1配置成监听模式。#iwconfigeth1modemonitor网卡进入监听模式后,再次运行iwconfig命令应该能反映出变化。输入以下命令,以确保eth1接口可以工作。#iwconfigeth1up我们也将使用iwconfig命令改变监听信道:输入以下命令,改变eth1接口的信道为信道3。#iwconfigeth1channel3注意你可以在捕获数据包的过程中随意修改信道,所以随便改吧,没事!也可以