第5章 分析数据包

根据前面章节的介绍,用户已经了解了如何能够捕获到一个无线网络中的所有数据包。当捕获一定的包后,需要进行分析才能够获取到有用的信息。所以,本章将介绍使用Wireshark工具分析捕获的数据包。

5.1 Wireshark简介

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

5.1.1 捕获过滤器

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

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

Protocol  Direction  Host(s)  Value  Logical Operations  Other expression

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

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

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

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

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

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

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

image

图5.1 Wireshark主界面

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

image

图5.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运行的话,会出现如图5.3所示的界面。

image

图5.3 超级用户运行Wireshark

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

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

image

图5.4 添加过滤条件

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

image

图5.5 捕获的数据包

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

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

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

image

图5.6 自定义捕获过滤器

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

5.1.2 显示过滤器

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

Protocol String1 String2 Comparison operator Value Logical Operations Other expression

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

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

image

图5.7 Wireshark支持的协议

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

image

图5.8 支持的协议

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

image

图5.9 子类

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

表5-1 比较运算符

英文写法 C语言写法 含义
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于

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

表5-2 逻辑运算符

英文写法 C语言写法 含义
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非

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

image

图5.10 指定过滤条件

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

image

图5.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命令,将显示如图5.12所示的界面。

image

图5.12 Display Filter

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

5.1.3 数据包导出

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

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

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

image

图5.13 host.pcapng捕获文件

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

image

图5.14 使用icmp显示过滤器

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

image

图5.15 显示过滤后的包

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

image

图5.16 菜单栏

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

image

图5.17 选择着色颜色

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

image

图5.18 高亮着色

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

image

图5.19 导出指定的包

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

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

image

图5.20 icmp.pcapng捕获文件

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

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

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

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

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

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

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

【实例5-1】 在Wireshark Packet List面板中添加列。具体操作步骤如下所述。

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

image

图5.21 首选项界面

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

image

图5.22 默认的列

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

image

图5.23 添加RSSI列

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

image

图5.24 在Packet List面板增加的列

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

image

图5.25 新增的列

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

image

图5.26 选择显示隐藏列

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

5.2 使用Wireshark

对Wireshark有一个简单的认识后,就可以使用它并发挥其功能。为了使用户更好地使用该工具,本节将介绍使用Wireshark对一些特定的包进行过滤并分析。

5.2.1 802.11数据包结构

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

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

表5-3 管理帧

子类型Subtype值 代表的类型
0000 Association request(关联请求)
0001 Association response(关联响应)
0010 Reassociation request(重新关联请求)
0011 Reassociation response(重新关联响应)
0100 Probe request(探测请求)
0101 Probe response(探测响应)
1000 Beacon(信标)
1001 ATIM(通知传输指示消息)
1010 Disassociation(取消关联)
1011 Authentication(身份验证)
1100 Deauthentication(解除身份验证)
1101~1111 Reserved(保留,未使用)

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

表5-4 控制帧

子类型Subtype值 代表的类型
1010 Power Save(PS)- Poll(省电-轮询)
1011 RTS(请求发送)
1100 CTS(清除发送)
1101 ACK(确认)
1110 CF-End(无竞争周期结束)
1111 CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)

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

表5-5 数据帧

子类型Subtype值 代表的类型
0000 Data(数据)
0001 Data+CF-ACK
0010 Data+CF-Poll
0011 Data+CF-ACK+CF-Poll
0100 Null data(无数据:未传送数据)
0101 CF-ACK(未传送数据)
0110 CF-Poll(未传送数据)
0111 Data+CF-ACK+CF-Poll
1000 Qos Data c
1000~1111 Reserved(保留,未使用)
1001 Qos Data + CF-ACK c
1010 Qos Data + CF-Poll c
1011 Qos Data + CF-ACK+ CF-Poll c
1100 QoS Null(未传送数据)c
1101 QoS CF-ACK(未传送数据)c
1110 QoS CF-Poll(未传送数据)c
1111 QoS CF-ACK+ CF-Poll(未传送数据)c

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

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

(1)启动Wireshark工具。

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

image

图5.27 捕获到的数据包

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

image

图5.28 第一个包的详细信息

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

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

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

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

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

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

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

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

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

5.2.2 分析特定BSSID包

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

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

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

image

图5.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按钮,将显示如图5.30所示的界面。

image

图5.30 匹配过滤器的数据包

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

5.2.3 分析特定的包类型

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

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

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

帧类型/子类型 过滤器语法
Management frame wlan.fc.type eq 0
Control frame wlan.fc.type eq 1
Data frame wlan.fc.type eq 2
Association request wlan.fc.type_subtype eq 0x00
Association response wlan.fc.type_subtype eq 0x01
Reassociation request wlan.fc.type_subtype eq 0x02
Reassociation response wlan.fc.type_subtype eq 0x03
Probe request wlan.fc.type_subtype eq 0x04
Probe response wlan.fc.type_subtype eq 0x05
Beacon wlan.fc.type_subtype eq 0x08
Disassociate wlan.fc.type_subtype eq 0x0A
Authentication wlan.fc.type_subtype eq 0x0B
Deauthentication wlan.fc.type_subtype eq 0x0C
Action frame wlan.fc.type_subtype eq 0x0D
Block ACK requests wlan.fc.type_subtype eq 0x18
Block ACK wlan.fc.type_subtype eq 0x19
Power save poll wlan.fc.type_subtype eq 0x1A
Request to send wlan.fc.type_subtype eq 0x1B
Clear to send wlan.fc.type_subtype eq 0x1C
ACK wlan.fc.type_subtype eq 0x1D
Contention free period end wlan.fc.type_subtype eq 0x1E
NULL data wlan.fc.type_subtype eq 0x24
QoS data wlan.fc.type_subtype eq 0x28
Null QoS data wlan.fc.type_subtype eq 0x2C

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

image

图5.31 过滤出的认证包

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

5.2.4 分析特定频率的包

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

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

表5-7 802.11无线信道和频率

信道 中心频率(MHz)
1 2412
2 2417
3 2422
4 2427
5 2432
6 2437
7 2442
8 2447
9 2452
10 2457
11 2462
12 2467
13 2472

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

image

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

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

5.3 分析无线AP认证包

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

5.3.1 分析WEP认证包

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

1.成功的WEP认证

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

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

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

image

图5.33 路由器的主界面

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

image

图5.34 设置加密方式

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

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

image

图5.35 重启路由器

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

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

(1)启动Wireshark工具。

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

image

图5.36 设置捕获过滤器

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

image

图5.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的相关信息。如果捕获到的包过多时,可以使用显示过滤器仅过滤认证类型的包。显示过滤结果如图5.38所示。

image

图5.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)请求、接收确认,以及完成连接过程,如图5.39所示。

image

图5.39 关联请求和响应

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

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

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

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

image  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命令,将显示如图5.40所示的界面。

image

图5.40 设置捕获选项

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

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

image

图5.41 WEPauthfail.pcapng捕获文件

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

image

图5.42 认证的包

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

image

图5.43 认证失败

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

5.3.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)登录成功后,将显示如图5.44所示的界面。

image

图5.44 路由器的主界面

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

image

图5.45 无线网络安全设置

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

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

(1)启动Wireshark工具。

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

image

图5.46 捕获选项设置

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

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

image

图5.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之间将会生成认证与关联的请求及响应包,如图5.48所示。

image

图5.48 认证与关联的包

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

image

图5.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捕获文件中的握手包进行分析,显示结果如图5.50所示。

image

图5.50 握手包

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

image

图5.51 认证失败

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