查看原文
其他

分析WiFi网络数据包

计算机与网络安全 计算机与网络安全 2022-06-01

一次性付费进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587



微信公众号:计算机与网络安全

ID:Computer-network

当捕获一定的包后,需要进行分析才能够获取到有用的信息。本文介绍使用Wireshark工具分析捕获的数据包。


一、Wireshark简介


Wireshark是一款非常不错的网络封包分析软件。该软件可以截取网络封包,并且可以尽可能显示出最为详细的网络封包资料。在Wireshark工具中,可以通过设置捕获过滤器、显示过滤器,以及导出数据包等方法,对包进行更细致的分析。在使用Wireshark之前,首先介绍它的使用方法。


1、捕获过滤器


使用Wireshark的默认设置捕获数据包时,将会产生大量的冗余信息,这样会导致用户很难找出对自己有用的部分。刚好在Wireshark中,提供了捕获过滤器功能。当用户在捕获数据包之前,可以根据自己的需求来设置捕获过滤器。下面介绍Wireshark捕获过滤器的使用方法。


在使用捕获过滤器之前,首先了解它的语法格式。如下所示。


Protocol  Direction  Host(s)  Value  Logical Operations  Other expression


以上语法中各选项含义介绍如下。


● Protocol(协议):该选项用来指定协议。可使用的值有ether、fddi、ip、arp、rarp、decnet、lat、sca、moproc、mopdl、tcp和udp。如果没有特别指明是什么协议,则默认使用所有支持的协议。


● Direction(方向):该选项用来指定来源或目的地,默认使用src or dst作为关键字。该选项可使用的值有src、dst、src and dst和src or dst。


● Host(s):指定主机地址。如果没有指定,默认使用host关键字。可能使用的值有net、port、host和portrange。


● Logical Operations(逻辑运算):该选项用来指定逻辑运算符。可能使用的值有not、and和or。其中,not(否)具有最高的优先级;or(或)和and(与)具有相同的优先级,运算时从左至右进行。


了解Wireshark捕获过滤器的语法后,就可以指定捕获过滤器了。设置捕获过滤器的具体步骤如下所述。


(1)启动Wireshark。在图形界面依次选择“应用程序”|Kali Linux|Top 10 Security Tools|wireshark命令,将显示如图1所示的界面。

图1  Wireshark主界面

(2)该界面是Wireshark的主界面,在该界面选择捕获接口,即可开始捕获数据包。如果用户使用超级用户root启动Wireshark工具的话,将弹出如图2所示的界面。

图2  警告信息

如果使用的Wireshark工具不支持Lua扩展语言,将不会弹出该警告信息。


(3)该界面是一个警告信息,提示在init.lua文件中使用dofile函数禁用了使用超级用户运行Wireshark。这是因为Wireshark工具是使用Lua语言编写的,并且在Kali Linux中的init.lua文件中有一处语法错误,所以在该界面会提示Lua:Error during loading:。只需要将init.lua文件中倒数第二行修改一下就可以了,原文件的倒数两行内容如下:


root@kali:~# vi /usr/share/wireshark/init.lua

dofile(DATA_DIR.."console.lua")

--dofile(DATA_DIR.."dtd_gen.lua")


将以上第一行修改为如下内容:


--dofile(DATA_DIR.."console.lua")

--dofile(DATA_DIR.."dtd_gen.lua")


修改完该内容后,再次运行Wireshark将不会提示以上警告信息。但是,如果是以超级用户root运行的话,会出现如图3所示的界面。

图3  超级用户运行Wireshark

(4)该界面显示了当前系统使用超级root用户启动Wireshark工具,可能有一些危险。如果是普通用户运行的话,将不会出现该界面显示的信息。该提示信息是不会影响当前系统运行Wireshark工具的。这里单击“确定”按钮,将成功启动Wireshark工具,如图1所示。如果不想每次启动时都弹出该提示信息,可以勾选Don't show this again前面的复选框,然后再单击“确定”按钮。


(5)在该界面的工具栏中依次选择Capture|Options命令,将打开如图4所示的界面。

图4  添加过滤条件

(6)在该界面Capture Filter对应的文本框中添加捕获过滤条件,如捕获来自/到达主机192.168.6.102的数据包,其语法格式为host 192.168.6.102。在Capture下面的下拉框中选择捕获接口,在Capture Files下面文本框中可以指定捕获文件保存的位置及捕获文件名(host.pcapng),如图4所示。然后单击Start按钮,将开始捕获数据包,如图5所示。

图5  捕获的数据包

(7)从该界面捕获的数据包中,可以看到源或目标地址都是主机192.168.6.102的包。当捕获一定的数据包后,单击(Stop the running live capture)图标将停止捕获。


当使用关键字作为值时,需使用反斜杠\。如ether proto \ ip(与关键字ip相同),这样将会以IP协议作为目标。也可以在ip后面使用multicast及broadcast关键字。想排除广播请求时,no broadcast非常有用。


在图4中只能添加Wireshark默认定义好的捕获过滤器。如果指定的捕获过滤器不存在的话,也可以手动添加。在Wireshark的工具栏中依次选择Capture|Capture Filters命令,将显示如图6所示的界面。

图6  自定义捕获过滤器

从该界面可以看到Wireshark默认定义的所有捕获过滤器。如果要新建捕获过滤器,在该界面单击“新建”按钮,默认的过滤器名称和过滤字符串都为new,如图6所示。此时可以修改默认的名称,然后单击“确定”按钮即可添加定义的过滤器。


2、显示过滤器


通常经过捕获过滤器过滤后的数据还是很复杂。此时可以使用显示过滤器进行过滤,并且可以更加细致地查找。它的功能比捕获过滤器更为强大,在想修改过滤器条件时,也不需要重新捕获一次。显示过滤器的语法格式如下所示。


Protocol String1 String2 Comparison operator Value Logical Operations Other expression


以上各选项的含义介绍如下。


● Protocol(协议):该选项用来指定协议。该选项可以使用位于OSI模型第2层~7层的协议。在Wireshark主界面的Filter文本框后面,单击Expression按钮,可以看到所有可用的协议,如图7所示。

图7  Wireshark支持的协议

或者在工具栏中依次选择Internals|Supported Protocols命令,将显示如图8所示的界面。

图8  支持的协议

 String1,String2(可选项):协议的子类。单击相关父类旁的+号,然后选择其子类,如图9所示。

图9  子类

● Comparison operators:指定比较运算符。可以使用6种比较运算符,如表1所示。

表1  比较运算符

● Logical expressions:指定逻辑运算符。可以使用4种逻辑运算符,如表2所示。

表2  逻辑运算符

现在就可以通过指定过滤条件,实现显示过滤器的作用。该过滤条件在Wireshark界面的Filter文本框中输入,如图10所示。

图10  指定过滤条件

从该界面可以看到,输入过滤条件后,表达式的背景颜色呈浅绿色。如果过滤器的语法错误,背景色则呈粉红色,如图11所示。

图11  表达式错误

使用显示过滤器可以分为以下几类。下面分别举几个例子,如下所述。


(1)IP过滤


IP过滤包括来源IP或者目标IP等于某个IP。


显示来源IP:ip.src addr == 192.168.5.9 or ip.src addr eq 192.168.5.9


显示目标IP:ip.dst addr == 192.168.5.9 or ip.dst addr eq 192.168.5.9


(2)端口过滤


显示来源或目标端口,tcp.port eq 80。


只显示TCP协议的目标端口80,tcp.dstport == 80。


只显示TCP协议的来源端口80,tcp.srcport == 80。


过滤端口范围,tcp.port >= 1 and tcp.port <= 80。


(3)协议过滤


udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl等。


排除ssl包,!ssl或者not ssl。


(4)包长度过滤


udp.length == 26:这个长度表示udp本身固定长度8加上udp下面那块数据包之和。


tcp.len >= 7:表示IP数据包(TCP下面那块数据),不包括TCP本身。


ip.len == 94:表示除了以太网头固定长度14,其他都是ip.len,即从IP本身到最后。


frame.len == 119:表示整个数据包长度,从eth开始到最后(eth -->ip or arp-->tcp or udp-->data)。


(5)http模式过滤


http模式包括GET、POST和响应包。


指定GET包,如下所示。


http.request.method == "GET" && http contains "Host:"

http.request.method == "GET" && http contains "User-Agent:"


指定POST包,如下所示。


http.request.method == "POST" && http contains "Host:"

http.request.method == "POST" && http contains "User-Agent:"


指定响应包,如下所示。


http contains "HTTP/1.1 200 OK" && http contains "Content-Type:"

http contains "HTTP/1.0 200 OK" && http contains "Content-Type:"


(6)连接符and/or


指定显示tcp和udp协议的数据包,如下所示。


tcp and udp


(7)表达式


指定源ARP不等于192.168.1.1,并且目标不等于192.168.1.243,如下所示。


!(arp.src==192.168.1.1) and !(arp.dst.proto_ipv4==192.168.1.243)


显示过滤器和捕获过滤器一样,也可以添加自定义的过滤条件。在Wireshark的工具栏中依次单击Analyze|Display Filters命令,将显示如图12所示的界面。

图12  Display Filter

该界面和添加捕获过滤器的界面类似。添加显示过滤器和添加捕捉过滤器的方法基本一样,唯一不同的是,在定义显示过滤器时,可以选择表达式。设置完后,单击“确定”按钮,自定义的过滤器将被添加。


3、数据包导出


数据包导出,就是将原捕获文件中的数据包导出到一个新捕获文件中。例如,对数据包进行过滤后,为方便下次直接分析,这时候就可以将过滤后的数据包导出到一个新的捕获文件中。在导出包时,可以选择保存捕获包、显示包、标记包或指定范围的包。下面介绍在Wireshark中,将数据包导出的方法。


在前面捕获了一个名为host.pcapng捕获文件,下面以该捕获文件为例,介绍如何将数据包导出。具体操作步骤如下所述。


(1)打开host.pcapng捕获文件,如图13所示。

图13  host.pcapng捕获文件

(2)该界面显示了host.pcapng捕获文件中的所有包。可以对这些包显示过滤、着色或标记等。例如,过滤ICMP协议的包,并将过滤的结果导出到一个新文件中,可以在显示过滤器文本框中输入icmp显示过滤器,然后单击Apply按钮,如图14所示。

图14  使用icmp显示过滤器

(3)在该界面单击Apply按钮,将显示如图15所示的界面。

图15  显示过滤后的包

(4)从该界面可以看到,在包列表面板中,Protocol列都显示的是ICMP协议的包,并且从状态栏中也可以看到仅过滤显示出了6个包。如果想对某个包进行着色或者标记的话,可以选择要操作的包,然后单击右键,将弹出一个菜单栏,如图16所示。

图16  菜单栏

(5)在该界面可以选择标记包、忽略包、添加包注释和着色等。例如对包进行着色,在该界面选择Colorize Conversation命令,在该命令后面将显示着色的协议及选择的颜色,如图17所示。

图17  选择着色颜色

(6)从该界面可以看到,Wireshark工具提供了10种颜色。用户可以选择任意一种,也可以自己定义颜色规则。例如这里选择使用Color4颜色,将显示如图18所示的界面。

图18  高亮着色

(7)从该界面可以看到,包的颜色被着色为紫色。接下来就可以实现将数据包导出了,如将显示过滤的ICMP包导出到一个新的捕获文件中,可以在该界面的工具栏中依次选择File|Export Specified Packets命令,将打开如图19所示的界面。

图19  导出指定的包

(8)在该界面可以选择导出所有显示(捕获)包、仅选择的显示(捕获)包、仅标记的显示(捕获)包、从第一个到最后一个标记的显示(捕获)包,以及指定一个显示(捕获)包范围。在该界面选择导出所有显示(Displayed)包,并设置新的捕获文件名为icmp.pcapng,然后单击Save按钮,显示过滤出的包将被导出到icmp.pcapng捕获文件。


(9)这时候如果想分析显示过滤出的所有ICMP包时,就可以直接打开icmp.pcapng捕获文件,如图20所示。

图20  icmp.pcapng捕获文件

(10)该界面显示的包就是导出的所有ICMP包,从该界面显示的包可以看到,导出包的编号都已重新排列。这就是导出包的详细过程。


4、在Packet List面板增加无线专用列


Wireshark通常在Packet List面板中,显示了7个不同的列。为了更好地分析无线数据包,在分析包前增加3个新列。如下所示。


● RSSI(for Received Signal Strength Indication)列,显示捕获数据包的射频信号强度。


● TX Rate(for Transmission Rate)列,显示捕获数据包的数据率。


● Frequency/Channel列,显示捕获数据包的频率和信道。


当处理无线连接时,这些提示信息将会非常有用。例如,即使无线客户端软件告诉您信号强度很棒,捕获数据包并检查这些列,也许会得到与之前结果不符的数字。下面介绍如何在Wireshark中添加这些列。


在Wireshark Packet List面板中添加列。具体操作步骤如下所述。


(1)在Wireshark主界面的工具栏中依次选择Edit|Preferences命令,将打开如图21所示的界面。

图21  首选项界面

(2)在该界面左侧栏中选择Columns选项,将看到如图22所示的界面。

图22  默认的列

(3)从该界面右侧栏中可以看到默认的列标题。在该界面单击“添加”按钮,将Title修改为RSSI,然后在字段类型下拉列表中选择IEEE 802.11 RSSI,如图23所示。

图23  添加RSSI列

(4)重复以上步骤,添加TX Rate和Frequency/Channel列。在添加时,为它们设置一个恰当的Title值,并在Field type下拉列表选择IEEE 802.11 TX Rage和Channel/Frequency。添加3列之后,Preferences窗口显示界面如图24所示。

图24  在Packet List面板增加的列

(5)在该界面依次单击“应用”|“确定”按钮,使添加的列生效。此时在Wireshark的Packet List面板中可以看到添加的列,如图25所示。

图25  新增的列

(6)从该界面可以看到,在Packet List面板中显示了前面添加的3列。如果没有看到新增加列的话,可能它们被隐藏了。可以再次打开首选项窗口,查看添加的列是否被显示,即isplayed列的复选框是否被勾选,如果没有勾选的话,说明该列是隐藏的。这时勾选此复选框,然后单击“确定”按钮即可。也可以单击Packet List面板中的列,在弹出的菜单栏中选择显示列,如图26所示。

图26  选择显示隐藏列

(7)在该界面选择Displayed Columns命令,将会显示所有列的一个菜单栏,如图26所示。其中,列名称前面有对勾的表示该列被显示,否则为隐藏列。本例中RSSI(IEEE 802.11 RSSI)列是隐藏的,这里选择上该列后,即可显示在Packet List面板的列中。

二、使用Wireshark


对Wireshark有一个简单的认识后,就可以使用它并发挥其功能。下面介绍使用Wireshark对一些特定的包进行过滤并分析。


1、802.11数据包结构


无线数据包与有线数据包的主要不同在于额外的802.11头部。这是一个第二层的头部,包含与数据包和传输介质有关的额外信息。802.11数据包有3种类型。


● 管理帧:这些数据包用于在主机之间建立第二层的连接。管理数据包还有些重要的子类型,常见的子类型如表3所示。

表3  管理帧

● 控制帧:控制数据包允许管理数据包和数据包的发送,并与拥塞管理有关。常见的子类型如表4所示。

表4  控制帧

● 数据帧:这些数据包含真正的数据,也是唯一可以从无线网络转发到有线网络的数据包。常见的子类型如表5所示。

表5  数据帧

一个无线数据包的类型和子类型决定了它的结构,因此各种可能的数据包结构不计其数。这里介绍其中一种结构,beacon的管理数据包的例子。


下面通过Wireshark工具捕获一个所有无线信号的捕获文件,其文件名为802.11beacon.pcapng。然后通过分析该捕获文件,介绍beacon的管理数据包。具体操作步骤如下所述。


(1)启动Wireshark工具。


(2)选择监听接口mon0开始捕获文件,捕获到的包如图27所示。

图27  捕获到的数据包

(3)该界面就是捕获到的所有数据包,这里捕获到的包文件名为802.11beacon.pcapng。这里以第一个数据包为例(该包包含一种叫beacon的管理数据包),分析802.11数据包结构,其中包详细信息如图28所示。

图28  第一个包的详细信息

(4)beacon是包括很多信息量的无线数据包之一。它作为一个广播数据包,由WAP发送,穿过无线信道通知所有无线客户端存在这个可用的WAP,并定义了连接它必须设置的一些参数。在图28中可以看到,该数据包在802.11头部的Type/Subtype域被定义为beacon(编号1)。在802.11管理帧头部发现了其他信息,包括以下内容。


● Timestamp:发送数据包的时间戳。

● Beacon Interval:beacon数据包重传间隔。

● Capabilities Information:WAP的硬件容量信息。

● SSID Parameter Set:WAP广播的SSID(网络名称)。

● Supported Rates:WAP支持的数据传输率。

● DS Parameter set:WAP广播使用的信道。


这个头部也包含了来源、目的地址,以及厂商信息。在这些知识的基础上,可以了解到本例中发送beacon的WAP的很多信息。例如,设备为TP-Link(编号2),使用802.11b标准B(编号3),工作在信道1上(编号4)。


虽然802.11管理数据包的具体内容和用途不一样,但总体结构与该例相差不大。


2、分析特定BSSID包


BSSID,一种特殊的Ad-hoc LAN的应用,也称为Basic Service Set(BSS,基本服务集)。实际上,BSSID就是AP的Mac地址。当使用Wireshark工具捕获数据包时,在捕获文件中可能会捕获到很多个BSSID的包。这时候就可以根据过滤BSSID来缩小分析包的范围,这样就可以具体分析一个AP的相关数据包。下面介绍分析特定BSSID包的方法。


从捕获文件中过滤特定BSSID包,并进行分析。具体操作步骤如下所述。


(1)在分析包之前,需要先有一个捕获文件供分析。所以,这里首先捕获一个捕获文件,其名称为802.11.pcapng,如图29所示。

图29  802.11.pcapng捕获文件

(2)该界面显示了802.11.pcapng捕获文件中捕获到的所有数据包。在该界面可以看到,捕获的数据包中源地址都不同。这里选择过滤Mac地址为8c:21:0a:44:09:f8的AP,输入的显示过滤器表达式为wlan.bssid eq 8c:21:0a:44:09:f8。然后单击Apply按钮,将显示如图30所示的界面。

图30  匹配过滤器的数据包

(3)从该界面可以看到,显示的包都是地址为8c:21:0a:44:09:f8(源或目标)的包。接下来就可以分析每个包的详细信息,进而从中获取到重要的信息,如信道、SSID和频率等。


3、分析特定的包类型


802.11协议的类型有很多,通常根据这些类型和子类型可以过滤特定类型的包。对于特定类型,可以用过滤器wlan.fc.type来实现。对于特定类型或子类型的组合,可以用过滤器wc.fc.type_subtype来实现。下面介绍如何分析特定的包类型。


802.11数据包类型和子类型,常用的语法格式如表6所示。

表6  无线类型/子类型及相关过滤器语法

在表6中列出了常用的一些帧类型/子类型的语法。了解各种类型的过滤语法格式后,就可以对特定的包类型进行过滤了。例如,过滤802.11.pcapng捕获文件中认证类型的数据包,使用的显示过滤器语法为wlan.fc.type_subtype eq 0x0B。在802.11.pcapng捕获文件中使用该显示过滤器后,将显示如图31所示的界面。

图31  过滤出的认证包

从Wireshark的状态栏中可以看到,有两个包匹配wlan.fc.type_subtype eq 0x0B过滤器。


4、分析特定频率的包


每个信道工作的中心频率是不同的。可以使用显示过滤器过滤特定频率的包。过滤特定频率的包,可以使用radiotap.channel.freq语法来实现。下面介绍如何分析特定频率的包。


为了方便查找每个信道对应的中心频率值,下面以表格的形式列出,如表7所示。

表7  802.11无线信道和频率

从802.11.pcapng捕获文件中,过滤工作在信道6上的流量,使用的过滤器语法为radiotap.channel.freq==2437。输入该显示过滤器后,单击Apply按钮,将显示如图32所示的界面。

图32  工作在信道6上的数据

从Wireshark的状态栏中,可以看到有3个包工作在信道6上。


三、分析无线AP认证包


在AP中通常使用的加密方式有两种,分别是WEP和WPA。WEP是最早使用的一种加密方式,由于该加密方法存在弱点,所以产生了WPA加密方式。不管是WEP加密还是WPA,如果要和AP建立一个连接,就必须要经过认证(Authentic)和关联(Association)的过程。下面介绍如何分析无线AP认证包。


1、分析WEP认证包


WEP(Wired Equivalent Privacy,有线等效保密)协议,该协议是对两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。下面分别分析WEP认证成功和失败的包信息。


(1)成功的WEP认证


在分析成功的WEP认证之前,首先要配置一个使用WEP加密的AP,并且捕获该AP的相关数据包。下面以TP-LINK路由器为例来配置AP,其ESSID名称为Test。具体配置方法如下所述。


1)登录TP-LINK路由器。在浏览器中输入路由器的IP地址,然后将弹出一个对话框,要求输入登录路由器的用户名和密码


2)登录成功后,将显示如图33所示的界面。

图33  路由器的主界面

3)在该界面的左侧栏中依次选择“无线设置”|“无线安全设置”命令,将显示如图34所示的界面。

图34  设置加密方式

4)在该界面选择WEP加密方式,然后设置认证类型及密钥,如图34所示。使用WEP加密时,有两种认证类型,分别是“开放系统”和“共享密钥”。其中,“开放系统”表示即使客户端输入的密码是错误的,也能连接上AP,但是无法传输数据;“共享密钥”表示如果要想和AP建立连接,必须要经过四次握手(认证)的过程。所以,本例中设置认证类型为“共享密钥”。


5)将以上信息配置完成后,单击“保存”按钮。此时,将会提示需要重新启动路由器,如图35所示。这里必须重新启动路由器,才会使修改的配置生效。

图35  重启路由器

6)在该界面单击“重启”命令,将会自动重新启动路由器。重新启动路由器后,所有的设置即可生效。接下来,就可以使用客户端连接该AP。


通过以上步骤的详细介绍,一个使用WEP加密的AP就配置好了。下面使用Wireshark工具指定捕获过滤器,仅捕获与该AP(Mac地址为8C-21-0A-44-09-F8)相关的数据包。具体操作步骤如下所述。


1)启动Wireshark工具。


2)在Wireshark主界面的工具栏中依次选择Capture|Options命令,将显示如图36所示的界面。

图36  设置捕获过滤器

3)在该界面选择捕获接口mon0(监听模式),并使用ether host设置了捕获过滤器。这里将捕获的数据包保存到WEPauth.pcapng捕获文件中,然后单击Start按钮将开始捕获数据包,如图37所示。

图37  捕获的数据包

4)从该界面可以看到,所有包的都是发送/到达地址为8C-21-0A-44-09-F8主机的。在该界面显示的这些包,是AP向整个无线网络中广播自己的ESSID的包。此时,如果要捕获到WEP认证相关的包,则需要有客户端连接该AP。这里使用一个移动设备连接该AP,其Mac地址为00-13-EF-90-35-20。


5)当移动设备成功连接到该AP后,返回到Wireshark捕获包界面,将会在Info列看到有Authentication的相关信息。如果捕获到的包过多时,可以使用显示过滤器仅过滤认证类型的包。显示过滤结果如图38所示。

图38  认证的包

6)在该界面显示了52~55帧就是客户端与AP建立连接的过程(四次握手)。下面分别详细分析每一个包。如下所述。


第一次握手:客户端发送认证请求给AP,详细信息如下所示。


Frame 52: 48 bytes on wire (384 bits), 48 bytes captured (384 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 Authentication, Flags: ........  #帧类型

Type/Subtype: Authentication (0x0b) #帧类型为Authentication

Frame Control Field: 0xb000 #帧控制字段

.000 0001 0011 1010 = Duration: 314 microseconds #时间戳

Receiver address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #接收者地址(RA)

Destination address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #目标地址(DA)

Transmitter address: KingjonD_90:35:20 (00:13:ef:90:35:20) #发送者地址(TA)

Source address: KingjonD_90:35:20 (00:13:ef:90:35:20) #源地址(SA)

BSS Id: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #AP的MAC地址

Fragment number: 0 #片段号

Sequence number: 56 #序列号

IEEE 802.11 wireless LAN management frame #802.11管理帧

Fixed parameters (6 bytes) #固定的参数,其大小为6个字节

Authentication Algorithm: Shared key (1) #认证类型,这里是共享密钥(1)

Authentication SEQ: 0x0001 #认证序列号

Status code: Successful (0x0000) #状态码

根据对以上信息的详细分析可以看到,是客户端(00:13:ef:90:35:20)发送给AP(8c:21:0a:44:09:f8)的请求包,AP使用的认证类型为“共享密钥”,认证序列号为0x0001(第一次握手)。


第二次握手:AP收到请求后,发送一个认证响应帧,里面包含一个128字节的随机数列。具体详细信息如下所示。


Frame 53: 178 bytes on wire (1424 bits), 178 bytes captured (1424 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 Authentication, Flags: ........ #帧类型

Type/Subtype: Authentication (0x0b) #帧类型为Authentication

Frame Control Field: 0xb000 #帧控制字段

.000 0001 0011 1010 = Duration: 314 microseconds #时间戳

Receiver address: KingjonD_90:35:20 (00:13:ef:90:35:20) #接收者地址(RA)

Destination address: KingjonD_90:35:20 (00:13:ef:90:35:20) #目的地址(DA)

Transmitter address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #发送者地址(TA)

Source address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #源地址(SA)

BSS Id: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #BSSID的MAC地址

Fragment number: 0 #片段号

Sequence number: 0 #序列号

IEEE 802.11 wireless LAN management frame #IEEE 802.11管理帧

Fixed parameters (6 bytes) #固定参数

Authentication Algorithm: Shared key (1) #认证类型为“共享密钥(1)”

Authentication SEQ: 0x0002 #认证序列号

Status code: Successful (0x0000) #状态码

Tagged parameters (130 bytes) #标记参数

Tag: Challenge text #标记

Tag Number: Challenge text (16) #标记编号

Tag length: 128 #标记

Challenge Text: 5f4946221e0f14f10aaf7e5b7764631e93e14a59b89b8302... #随机数列


从以上详细信息中可以看到,认证编号已经变成2了,状态也是成功的;在帧的最后,是一个128字节的随机数列。


第三次握手:客户端收到AP的响应后,用自己的密钥加3个字节的IV,并用RC4算法产生加密流,然后用异或操作加密128字节的随机数列,并发送给AP。具体详细信息如下所示。


Frame 54: 186 bytes on wire (1488 bits), 186 bytes captured (1488 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 Authentication, Flags: .p...... #帧类型

Type/Subtype: Authentication (0x0b) #帧类型为Authentication

Frame Control Field: 0xb040 #帧控制字段

.000 0001 0011 1010 = Duration: 314 microseconds #时间戳

Receiver address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #接收者地址(RA)

Destination address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #目的地址(DA)

Transmitter address: KingjonD_90:35:20 (00:13:ef:90:35:20) #发送者地址(TA)

Source address: KingjonD_90:35:20 (00:13:ef:90:35:20) #源地址(SA)

BSS Id: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #BSSID的MAC地址

Fragment number: 0 #片段号

Sequence number: 57 #序列号

WEP parameters #WEP参数

Initialization Vector: 0x5b0000 #IV

Key Index: 0 #键索引

WEP ICV: 0xffb619a2 (not verified) #WEP完整性校验值

Data (136 bytes)

Data: 6fcb185580d074148458616a126102d10156c924554b9596... #加密后的随机序列

[Length: 136] #随机序列的长度


根据以上信息的详细介绍可以发现,多了一个Initialization Vector(初始向量)字段,但是看不到认证序列号。该字段就是人们经常说的IV(明文的),最后data中的内容就是加密后的随机序列。


第四次握手:AP用自己的密钥加客户端发过来的IV,用RC4算法产生加密流,然后用异或操作加密那段随机数列(challenge text)。如果客户端的密钥和AP的密钥相同,则说明加密后的数据应用是相同的。详细信息如下所示。


Frame 55: 48 bytes on wire (384 bits), 48 bytes captured (384 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 Authentication, Flags: ........ #帧类型

Type/Subtype: Authentication (0x0b) #帧类型为Authentication

Frame Control Field: 0xb000 #帧控制字段

.000 0001 0011 1010 = Duration: 314 microseconds #时间戳

Receiver address: KingjonD_90:35:20 (00:13:ef:90:35:20) #接受者地址(RA)

Destination address: KingjonD_90:35:20 (00:13:ef:90:35:20) #目标地址(DA)

Transmitter address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #发送者地址(TA)

Source address: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #源地址(SA)

BSS Id: Tp-LinkT_44:09:f8 (8c:21:0a:44:09:f8) #BSSID的MAC地址

Fragment number: 0 #片段号

Sequence number: 1 #序列号

IEEE 802.11 wireless LAN management frame #802.11管理帧

Fixed parameters (6 bytes) #固定参数

Authentication Algorithm: Shared key (1) #认证类型为“共享密钥”

Authentication SEQ: 0x0004 #认证序列号

Status code: Successful (0x0000) #状态码


根据以上信息的详细描述可以知道,最后一次握手的序列号为4,状态是成功。至此,4次握手的过程就全部完成了。成功认证后,客户端可以发送关联(association)请求、接收确认,以及完成连接过程,如图39所示。

图39  关联请求和响应

通过对以上4个包的详细分析可以发现,在802.11帧控制头部中包括4个Mac地址。这4个Mac地址在不同帧中的含义不同,下面进行详细介绍。


● RA(receiver address):在无线网络中,表示该数据帧的接收者。

● TA(transmitter address):在无线网络中,表示该数据帧的发送者。

● DA(destine address):数据帧的目的Mac地址。

● SA(source address):数据帧的源Mac地址。


这里的DA和SA与普通以太网中的含义一样,在无线网络中用户可能需要通过AP把数据发送到其他网络内的某台主机中。但是有人会想,直接在RA中填这台主机的Mac地址不就可以了吗?但是要注意,RA的含义指的是无线网络中的接收者,不是网络中的接收者,也就是说这台目的主机不在无线网络范围内。在这种情况下,RA只是一个中转,所以需要多出一个DA字段来指明该帧的最终目的地。当然,如果有了DA,也必须有SA。因为若目的主机要回应的话,SA字段是必不可少的。


(2)失败的WEP认证


当一个用户在连接AP时,如果输入的密码不正确,几秒后无线客户端程序将报告无法连接到无线网络,但是没有给出原因。这时候也可以通过抓包来分析错误的原因。下面分析认证失败的WEP数据包。


下面捕获一个名为WEPauthfail.pcapng捕获文件,具体捕获方法如下所述。


1)启动Wireshark工具。


2)在Wireshark主界面的工具栏中依次选择Capture|Options命令,将显示如图40所示的界面。

图40  设置捕获选项

3)在该界面选择捕获接口,设置捕获过滤器。然后指定捕获文件的位置及名称,如图40所示。设置完成后,单击Start按钮将开始捕获数据包。


4)为了使Wireshark捕获到认证失败的包,这里手动地在客户端输入一个错误的密码,并连接SSID名为Test的AP。当客户端显示无法连接时,可以到Wireshark捕获包界面停止数据包捕获,将看到如图41所示的界面。

图41  WEPauthfail.pcapng捕获文件

5)该界面显示了WEPauthfail.pcapng捕获文件中的数据包。此时,就可以分析WEP认证失败的数据包。但是,如果要从所有的包中找出认证失败的包有点困难。所以,同样可以使用显示过滤器仅显示认证的包,然后进行分析。过滤仅显示WEP认证的包,如图42所示。

图42  认证的包

6)从该界面包的Info列可以看到,这些包都是认证包。仅从包列表中是无法确定哪个包中包含了认证失败信息,所以需要查看包的详细信息,并进行分析。认证失败与成功时一样,都需要经过4次握手。在图42中,101~104就是客户端与AP建立连接的过程。前3次握手(101~103帧)的状态都是成功,并且在第103帧中客户端用户向AP发送了WEP密码响应。最后一次握手就是104帧,如果输入密码正确的话,在该包详细信息中应该看到状态为成功。本例中显示的结果如图43所示。

图43  认证失败

7)从该界面可以看到状态码没有显示成功,而是显示了Responding STA does not support the specified authentication algorithm(0x000d)。这表明客户端的密码输错了,所以连接失败。


2、分析WPA认证包


WPA全名为Wi-Fi Protected Access,有WPA和WPA2两个标准,是一种保护无线电脑网络安全的系统。WPA是为了弥补WEP(有线等效加密)中的弱点而产生的。下面介绍分析WPA认证成功或失败的包。


(1)WPA认证成功


WPA使用了与WEP完全不同的认证机制,但它仍然依赖于用户在无线客户端输入的密码来连接到网络。由于需要输入密码后才可以连接的网络,所以,就会出现输入密码正确与错误两种情况。这里将分析正确输入密码后,连接到无线网络的数据包。


在分析包前,首先要确定连接的AP是使用WPA方式加密的,并且要捕获相应的包。下面介绍如何设置WPA加密方式,以及捕获对应的包。这里仍然以TP-LINK路由器为例来配置AP,其ESSID名称为Test。具体操作步骤如下所述。


1)登录TP-LINK路由器。在浏览器中输入路由器的IP地址,然后将弹出一个对话框,要求输入登录路由器的用户名和密码


2)登录成功后,将显示如图44所示的界面。

图44  路由器的主界面

3)在该界面的左侧栏中依次选择“无线设置”|“无线安全设置”命令,将显示如图45所示的界面。

图45  无线网络安全设置

4)在该界面选择WPA-PSK/WPA2-PSK选项,然后设置认证类型、加密算法密码。设置完成后,单击“保存”按钮,并重新启动路由器


通过以上步骤将AP的加密方式设置为WPA方式后,就可以捕获相关的数据包了。具体捕获包的方法如下所述。


1)启动Wireshark工具。


2)在Wireshark主界面的工具栏中依次选择Capture|Options命令,将显示如图46所示的界面。

图46  捕获选项设置

3)在该界面选择捕获接口,设置捕获过滤器,并指定捕获文件的位置及名称。这里设置仅过滤AP(Test)的数据包,如图46所示。设置完成后,单击Start按钮,开始捕获数据包。


4)在客户端(00:13:ef:90:35:20)选择连接前面配置好的AP(Test),并输入正确的密码。当客户端成功连接到网络后,返回到Wireshark捕获包界面停止捕获,将看到如图47所示的界面。

图47  捕获到的数据包

5)在该界面显示了客户端成功连接到AP捕获到的所有数据包。在该界面显示的这些包,都是AP在向网络中广播自己SSID的包。当客户端收到该广播包后,就向接入点发送探测请求,进而进行连接。


下面将分析WPAauth.pcapng捕获文件中,客户端与AP建立连接的包。这里首先分析AP发送的beacon广播包(以第1帧为例),具体详细信息如下所示。


Frame 1: 271 bytes on wire (2168 bits), 271 bytes captured (2168 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 Beacon frame, Flags: ........

IEEE 802.11 wireless LAN management frame #802.11管理帧信息

Fixed parameters (12 bytes) #固定的参数

Tagged parameters (217 bytes) #被标记参数

Tag: SSID parameter set: Test #SSID参数设置

Tag: Supported Rates 1(B), 2(B), 5.5(B), 11(B), 6, 9, 12, 18, [Mbit/sec] #支持的速率

Tag: DS Parameter set: Current Channel: 1 #数据集参数设置

Tag: Traffic Indication Map (TIM): DTIM 0 of 0 bitmap #传输指示映射

Tag: Country Information: Country Code CN, Environment Any #国家信息

Tag: ERP Information #增强速率物理层

Tag: RSN Information #安全网络信息

Tag: Extended Supported Rates 24, 36, 48, 54, [Mbit/sec] #扩展支持的速率

Tag: HT Capabilities (802.11n D1.10) #超线程性能

Tag: HT Information (802.11n D1.10) #超线程信息

Tag: Vendor Specific: Microsof: WPA Information Element #供应商及WPA信息元素

Tag Number: Vendor Specific (221) #供应商编号

Tag length: 22  #长度

OUI: 00-50-f2 (Microsof) #安装程序

Vendor Specific OUI Type: 1 #供应商指定的安装程序类型

Type: WPA Information Element (0x01) #类型为WPA

WPA Version: 1 #WPA版本为1

Multicast Cipher Suite: 00-50-f2 (Microsof) AES (CCM) #多播密码套件

Unicast Cipher Suite Count: 1 #单播密码套件数

Unicast Cipher Suite List 00-50-f2 (Microsof) AES (CCM) #单播密码套件列表

Auth Key Management (AKM) Suite Count: 1 #认证密钥管理套件数

Auth Key Management (AKM) List 00-50-f2 (Microsof) PSK #认证密钥管理列表

Tag: Vendor Specific: Microsof: WMM/WME: Parameter Element

Tag: Vendor Specific: AtherosC: Advanced Capability

Tag: Vendor Specific: Microsof: WPS


当客户端(00:13:ef:90:35:20)收到该广播后,将向AP(8c:21:0a:44:09:f8)发送一个探测请求,并得到响应。然后无线客户端和AP之间将会生成认证与关联的请求及响应包,如图48所示。

图48  认证与关联的包

在该界面中,第101帧是认证请求包,第102帧是AP响应了客户端的认证请求,第103帧是客户端向AP发送的关联请求包,第104帧是AP响应客户端的请求包。通过以上过程,客户端和AP建立了关联。接下来,客户端将会和AP通过四次握手过程建立连接。在使用WPA加密方式中,4次握手使用的协议是EAPOL。所以用户可以直接使用显示过滤器,过滤仅显示握手的包,避免受一些无关数据包的影响。这里将使用eapol显示过滤器过滤显示握手的包。显示结果如图49所示。

图49  握手的包

从该界面显示了WPA握手的过程。该过程也就是WPA质询响应的过程,在该界面中第113和115帧是AP对客户端的质询包,第114和116帧是客户端响应AP的数据包。这4个包分别代表两次质询和两次响应,包含4个完整的数据包。每个质询和响应在数据包内使用Replay Counter值来搭配。4个数据包的详细信息如下所述。


第一次握手:AP向客户端发送质询(113帧),其包详细信息如下所示。


Frame 113: 151 bytes on wire (1208 bits), 151 bytes captured (1208 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 QoS Data, Flags: ......F. #802.11 QoS数据

Logical-Link Control

802.1X Authentication #802.1X认证信息

Version: 802.1X-2004 (2) #认证版本

Type: Key (3) #认证类型

Length: 95 #长度

Key Descriptor Type: EAPOL RSN Key (2) #密钥描述类型

Key Information: 0x008a #密钥信息

Key Length: 16 #密钥长度

Replay Counter: 1 #作为请求和响应配对值,该请求为1

WPA Key Nonce: cf59fffcacd102cdffa1f8ac6ffca5f6daf077a125e248f3... #随机数(SNonce)

Key IV: 00000000000000000000000000000000 #密钥IV(初始化向量,48位)

WPA Key RSC: 0000000000000000

WPA Key ID: 0000000000000000 #密钥ID

WPA Key MIC: 00000000000000000000000000000000 #消息完整性编码

WPA Key Data Length: 0 #密钥信息


从以上信息中可以看到,在第一次握手时,包里面包含一个64位字符的Hash值。


第二次握手:客户端响应AP的文本信息(114帧),其详细内容如下所示。


Frame 114: 173 bytes on wire (1384 bits), 173 bytes captured (1384 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 QoS Data, Flags: .......T

Logical-Link Control

802.1X Authentication #802.1X认证信息

Version: 802.1X-2001 (1) #认证版本

Type: Key (3) #认证类型

Length: 117 #长度

Key Descriptor Type: EAPOL RSN Key (2) #密钥描述类型

Key Information: 0x010a #密钥信息

Key Length: 0 #密钥长度

Replay Counter: 1 #响应AP请求的配对值,此处为1,与上个包匹配

WPA Key Nonce: b657d66beb40b295c58ef1eab97e3f7156be727da0a6aa2e...#随机数(ANonce)

Key IV: 00000000000000000000000000000000 #密钥IV(初始化向量,48位)

WPA Key RSC: 0000000000000000

WPA Key ID: 0000000000000000

WPA Key MIC: b0a0ccb3090d8b5f4d03b34a38793490 #消息完整性编码

WPA Key Data Length: 22 #数据长度

WPA Key Data: 30140100000fac040100000fac040100000fac020000 #响应的文本内容


从以上信息中可以看到,在该包中同样包含一个64位字符的Hash值,并且还包含一个MIC值。


第三次握手:AP向客户端再次发送质询请求(115帧),其详细内容如下所示。


Frame 115: 231 bytes on wire (1848 bits), 231 bytes captured (1848 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 QoS Data, Flags: ......F.

Logical-Link Control

802.1X Authentication #802.1X认证信息

Version: 802.1X-2004 (2) #认证版本

Type: Key (3) #认证类型

Length: 175 #长度

Key Descriptor Type: EAPOL RSN Key (2) #密钥描述类型

Key Information: 0x13ca #密钥信息

Key Length: 16 #密钥长度

Replay Counter: 2 #AP质询的匹配值

WPA Key Nonce: cf59fffcacd102cdffa1f8ac6ffca5f6daf077a125e248f3... #随机数(SNonce)

Key IV: 00000000000000000000000000000000 #密钥IV(初始化向量,48位)

WPA Key RSC: 6900000000000000

WPA Key ID: 0000000000000000

WPA Key MIC: e4060a803263bce29b06349261c28217 #消息完整性编码

WPA Key Data Length: 80 #密钥数据长度

WPA Key Data: c9de362a185cc6ccd27b203754d618d40e7245e7d43b4a4f... #密钥数据


从以上信息中可以看到,在该包中的WPA Key Nonce值(64位Hash值)和第一次握手包中的值相同,并且在该包中又生成一个新的MIC值。


第四次握手:客户端响应AP的详细信息(116帧),其详细内容如下所示。


Frame 116: 151 bytes on wire (1208 bits), 151 bytes captured (1208 bits) on interface 0

Radiotap Header v0, Length 18

IEEE 802.11 QoS Data, Flags: .......T

Logical-Link Control

802.1X Authentication #802.1X 认证信息

Version: 802.1X-2001 (1) #认证版本

Type: Key (3) #认证类型

Length: 95 #长度

Key Descriptor Type: EAPOL RSN Key (2) #密钥描述类型

Key Information: 0x030a #密钥信息

Key Length: 0 #密钥长度

Replay Counter: 2 #响应的匹配值

WPA Key Nonce: 000000000000000000000000000000000000000000000000... #随机数(ANonce)

Key IV: 00000000000000000000000000000000 #密钥IV(初始化向量,48位)

WPA Key RSC: 0000000000000000

WPA Key ID: 0000000000000000

WPA Key MIC: 6e3a4c5c4fb2533778baaf82dbb80938 #消息完整性编码

WPA Key Data Length: 0 #密钥数据长度


从以上信息中可以看到,该握手包中只包含一个MIC值。


根据以上对包的详细介绍,可以发现包里面有很多陌生的参数值。这时候用户可能不知道这些值是怎样算出来的,并且使用了什么算法。下面做一个简单介绍。


支持WPA的AP工作需要在开放系统认证方式下,客户端以WPA模式与AP建立关联之后。如果网络中有RADIUS服务器作为认证服务器,客户端就使用802.1X方式进行认证;如果网络中没有RADIUS服务器,则客户端与AP就会使用预共享密钥(PSK,Pre-Shared Key)的方式进行认证。在本例中AP是使用预共享密钥(PSK,Pre-Shared Key)方式认证的,WPA-PSK在认证之前会进行初始化工作。在该过程中,AP使用SSID和passphare(密码)使用特定算法产生PSK。


在WPA-PSK中PMK=PSK。PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)。


然后,将开始4次握手。


1)第一次握手


AP广播SSID(AP_MAC(AA)→STATION),客户端使用接收到的SSID,AP_MAC(AA)和passphrase使用同样算法产生PSK。


2)第二次握手


客户端发送一个SNonce到AP(STATION→AP_MAC(AA))。AP接收到SNonce,STATION_MAC(SA)后产生一个随机数ANonce。然后用户PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce用以下算法产生PTK。最后,从PTK中提取前16个字节组成一个MIC KEY。


PTK=SHA1_PRF(PMK, Len(PMK),“Pairwise key expansion”,MIN(AA,SA) ||Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))


3)第三次握手


AP发送在第二次握手包中产生的ANonce到客户端,客户端接收到ANonce和以前产生的PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同样的算法产生PTK。此时,提取这个PTK前16个字节组成一个MIC KEY。然后,使用MIC=HMAC_MD5(MIC Key,16,802.1X data)算法产生MIC值。最后,用这个MIC KEY和一个802.1X data数据帧使用同样的算法得到MIC值。


4)第四次握手


客户端发送802.1X data到AP。客户端用在第三次握手中准备好的802.1X数据帧在最后填充上MIC值和两个字节的0(十六进制),使后发送的数据帧到AP。AP端收到该数据帧后提取这个MIC值,并把这个数据帧的MIC捕获都填上0(十六进制)。这时用这个802.1X data数据帧和上面AP产生的MIC KEY使用同样的算法得到MIC。如果MIC等于客户端发送过来的MIC,则第四次握手成功,否则失败。


(2)WPA认证失败


WPA与WEP一样,当用户输入密码错误后,无线客户端程序显示无法连接到无线网络,但是没有提示问题出在哪里。所以,用户同样可以使用Wireshark工具通过捕获并分析包了解原因。下面分析WPA认证失败的数据包。


具体捕获包的方法和捕获WPAauth.pcapng捕获文件的方法一样。唯一不同的是,在客户端连接AP时,输入一个错误的密码。本例中将捕获的包保存到名为WPAauthfail.pcapng捕获文件中。


在WPAauthfail.pcapng捕获文件中捕获的包,与WPAauth.pcapng捕获文件类似。同样在捕获文件中包括探测、认证和关联请求及响应包。客户端无法成功认证时,出现错误的信息会在握手包中。所以,这里同样过滤WPAauthfail.pcapng捕获文件中的握手包进行分析,显示结果如图50所示。

图50  握手包

从该界面显示的结果中可以看到,这些包一直重复着第一次和第二次握手过程。通过返回包的信息,可以判断出客户端响应给AP的质询内容有误。握手过程重复三次后,通信终止了。如图51所示,第106帧表明无线客户端没有通过认证。

图51  认证失败

从该界面显示的信息中可以看到,认证类型为Deauthentication(解除认证),并且从管理帧详细信息中可以看到,返回的原因代码提示客户端没有被认证。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存