分析数据包

根据前面的介绍,我们已经了解了如何捕获一个无线网络中的所有数据包。但是当捕获到一定量了之后,需要进行分析才可以获取有用的信息。所以这里我们介绍一下wireshark工具分析捕获的数据包。

wireshark简介

捕获过滤器

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

Protocol  Direction  Hosts  Value  Logical Operations  Other expression

以上内容解释:

Protocol:这个选项用来指定协议,可选的值有:ether  fddi  ip  arp  rarp  decnet  lat  sca  moproc  moproc  mopdl  tcp  udp  

Directions :这个用来指定来源或者目的。默认的值有src  or  dst  作为关键字

Hosts:指定主机的地址。如果没有指定,默认使用host关键字。可使用的值有net port host 和portrange

Logical Operations :用来指定逻辑运算符,苦役使用not and or 其中not具有最高的优先级

接下来我们演示一下捕获来自/到达主机192.168.56.117的数据包,其语法格式是host 192.168.56.117

点击管理过滤器,然后添加 host 192.168.56.117 之后完成了勾选这个过滤器,然后选择网卡就可以捕获到最终来自主机的数据包

显示过滤器

通常经过选择之后的内容还是很复杂,需要将显示的内容清晰呈现出来的话,还需要增加显示过滤器过滤

显示过滤器的语法格式如下所示

Protocal  String1  String2 Comparison operator Value  Operarions Other expression

Protocol(协议):该选项用来指定协议。

在首选项中可以看到支持筛选的协议的名称

在分析中选择显示过滤器表达式也可以将这些内容筛选出来

String1 String2 就是单击相关父类旁边的+号,然后选择其子类

Comparison operators:指定比较运算符,可以使用6种

eq==
ne!=
gt>
lt<
ge>=
le

<=

Logical expressions:指定逻辑运算符。可以使用四种

and&&
or ||
xor^^
not!

根据上面的内容我们就可以在这里指定筛选显示结果

使用显示过滤器可以分为以下几类。下面是几个例子

  1. IP过滤:你可以通过在Wireshark过滤栏中输入 "ip.addr==192.168.1.1" 来筛选出源IP或目的IP为192.168.1.1的所有数据包。

  2. 端口过滤:输入 "tcp.port==80" 可以筛选出所有使用TCP协议并且端口为80的数据包。

  3. 协议过滤:输入 "icmp" 来筛选出所有的 ICMP 协议数据包。

  4. 包长度过滤:输入 "frame.len==60" 可以筛选出所有数据包长度为60的数据包。

  5. HTTP模式过滤:输入 "http.request.method == GET" 可以筛选出所有的 GET 方式的HTTP请求。

  6. 连接符过滤:你可以通过使用 &&(并且)、||(或者)和!(非)等连接符来进行多条件过滤。例如,输入 "ip.addr==192.168.1.1 && tcp.port==80" 可以筛选出源或目的地址为192.168.1.1并且(tcp端口为80的所有数据包。

  7. 表达是过滤:通过使用表达式进行筛选,例如,“tcp contains "HTTP"”可以筛选含有"HTTP"字符串的TCP数据包。

显示过滤器和捕获过滤器一样,也可以添加自定义的过滤条件。在wireshark中点击Analysis|dispaly Filter 命令,可以出现和添加捕获过滤器相似的界面。

数据包导出

如果我们想要导出特定的数据包分组,只需要我们先在显示筛选框筛选好,然后点击导出特定分组我们就可以导出我们想要的分组数据包

当然wireshark中还有很多地方有小功能,比如改变字体颜色,在Packet List中添加无线专用列啥的,以上内容掌握了就已经基本了解了wireshark捕获数据包的方式和方法,接下来我们就可以开始正式分析我们的数据包了

使用wireshark

这里我们将介绍使用wireshark对一些特定的包进行过滤和分析

802.11数据包结构

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

管理帧

802.11头部的管理帧主要用于控制无线网络的建立、保持和断开。这些操作是通过各种不同类型的管理帧完成的。

管理帧的类型主要有以下几种:

  1. 探测请求帧(Probe Request)和探测响应帧(Probe Response): 探测请求帧通常由一个主机发送出来,用来搜索一个网络,而探测响应帧则通常由无线接入点发送出来,响应主机之前发送的探测请求。

  2. 关联请求帧(Association Request)和关联响应帧(Association Response): 这两种帧被用来建立一台主机和一个无线接入点的关联。

  3. 取消关联帧(Disassociation): 这种帧通常用来断开一台主机和一个无线接入点的关联。

  4. 认证帧(Authentication)和取消认证帧(Deauthentication): 这两种帧被用来验证主机所连接的无线接入点是正规的。

管理帧的结构主要由以下几个部分组成:

  1. 帧控制字段(Frame Control):标志该帧的类型和子类型。
  2. 持续时间/ID(Duration/ID):提供网络分配向量或者短帧ID。
  3. 地址字段(Address):提供有关发送者、接收者、源站和目标站的地址信息。
  4. 序列控制(Sequence Control):提供帧排序信息和重传标志。
  5. 帧正文(Frame Body):包含有关帧子类型的信息和可选信息元素等。
  6. 帧校验和(Frame Check Sequence):防止数据被篡改。

每一种管理帧的具体结构可能还会包含其他一些字段,例如SSID和认证算法等。这就是802.11头部管理帧的基本介绍。

控制帧

在802.11无线网络中,控制帧用于辅助数据帧的成功传输,控制帧主要包括以下几种类型:

  1. 请求发送(request to send, RTS):控制帧类型,用于解决"隐藏节点"问题,并实现对媒体的访问控制。在发送端发送大块数据之前,发送RTS帧以获取信道的使用权。

  2. 清除发送(clear to send, CTS):响应RTS,用于告诉发送端它可以发送数据帧了,并且通知所有的节点避免接下来的一段时间内使用这个频道。

  3. 应答帧(Acknowledgement, ACK): 在接收到帧后,接收端发送此帧以确认成功接收。如果在指定时间内发送方未收到ACK,则他们将重发该数据帧。

  4. 数据结束(DS)/众多接收方完成(end-of-frame, EOF):在空间流广播模式下使用,表示数据帧的结束。

控制帧的结构通常包含以下部分:

  • 帧控制:包含指定该帧类型和子类型的信息。
  • 持续时间:预计PHY(物理)协议层需要发送完这些帧的时间长度。
  • 接收方地址:收到这个控制帧的无线设备的地址。

帧控制、持续时间和接收方地址是所有类型的控制帧的共有字段。其他特定类型的控制帧可能会有其他的字段。比如,RTS和CTS帧中还会包含一个表示下一帧发送方的地址的字段。

数据帧

在802.11无线网络中,数据帧用于传输实际的数据载荷。数据帧的主要类型包括:

  1. 数据(Data):这是最简单的数据帧类型。它包含原始的数据包。
  2. 数据+应答(Data+ACK):这种数据帧包含应答字段,让发送者知道数据已被接收。
  3. 数据+应答+应答期望(Data+ACK+ACK Expectation):这种数据帧不仅包含应答信息,还包含期待进一步应答的标志。
  4. 数据+轮询(Data+Poll):这种数据帧包括一个轮询信息,强制接收方立即回应。

数据帧的结构包括以下几个部分:

  1. 帧控制:这个字段包含协议版本、帧类型、子类型、电源管理状态、保护帧、重用和其他控制数据。
  2. 持续/ID:这个字段表示需要占用无线介质的时间额度,以微秒为单位。
  3. 地址:这个部分包含多个字段,可能包括接收方地址、发送方地址、源地址、目的地址和BSSID。
  4. 序列控制:这个字段用于片段和重组数据包以及消除重复的数据包。
  5. 帧体:这是包含实际数据信息的部分,它的长度和内容由帧的类型和子类型决定。
  6. 校验和/帧检查序列(FCS):这个字段用于检查数据在传送过程中是否损坏。

这样,字节的分配是:帧控制、持续/ID、地址和序列控制各占2字节,最长的帧体(Payload)可以达到2312字节,校验和占4字节。

实战

我们直接按照之前文章所说的,开始捕获监听窗口的文件

我们以获取的第一个802.11的协议包为例

先解释一下beacon

在无线网络中,Beacon(也叫信标帧)是一种管理帧类型,由无线接入点(或称为基站)定期广播,用来表示无线网络的存在。

Beacon包含了无线网络的重要信息,包括:

  1. SSID:无线网络的名称。

  2. 时间戳:基站的内部时钟的值,客户端可以根据Beacon的时间戳校准自己的时钟。

  3. Beacon间隔:Beacon帧之间的时间间隔。

  4. 信道:基站所在的无线信道。

  5. 速率集:无线网络支持的物理传输速率。

  6. 加密方式:无线网络所采用的加密方式。

  7. 任何其他参数,比如支持的网络标准(例如802.11a、b、g、n、ac等)

客户端设备如电脑、手机等可以通过监听Beacon来搜索附近的无线网络,然后选择一个信号最好的网络连接。另外,在移动设备中,也可能使用Beacon来辅助定位。

这个是我们获得的beacon包的内容

这个Beacon包主要包含以下信息:

  1. Type/Subtype: Beacon frame - 显示这是一个信标帧。

  2. Frame Control Field: 0x8000 - 这是帧控制字段,定义了帧的属性,如类型和子类型。

  3. Duration: 0 microseconds - 持续时间为0微秒。

  4. Receiver address: Broadcast (ff:ff:ff:ff:ff:ff) - 接收者地址是广播地址。

  5. Destination address: Broadcast (ff:ff:ff:ff:ff:ff) - 目标地址也是广播地址。

  6. Transmitter address: RuijieNe_a6:c7:14 (48:81:d4:a6:c7:14) - 发送者地址是特定的MAC地址。

  7. Source address: RuijieNe_a6:c7:14 (48:81:d4:a6:c7:14) - 源地址和发送者地址相同。

  8. BSS Id: RuijieNe_a6:c7:14 (48:81:d4:a6:c7:14) - BSS ID也和上面相同,表明这是一个基础服务集的标识。

  9. Fragment number: 0 - 片段数是0,即没有被分片。

  10. Sequence number: 1664 - 这是包的序列号,用于识别和排序包。

  11. Frame check sequence: 0x11f94cc0 - 这是帧校验序列,用于错误检测。

这个是beacon包中封装的内容

我们来分析一下

。它包括固定参数(Fixed parameters)和标签参数(Tagged parameters)。

固定参数包含了以下信息:

  1. 时间戳(Timestamp):无线接入点的系统时间。
  2. 信标间隔(Beacon Interval):每个信标帧之间的时间间隔,以秒为单位。
  3. 功能信息(Capabilities Information):描述无线接入点的一些功能,如是否是AP,是否需要数据保密、是否实现了射频管理等。

标签参数部分包含了一系列详细的网络功能和配置信息:

  1. SSID:无线网络的名称
  2. 支持的速率:网络能够支持的数据传输速率。
  3. DS参数集:当前使用的信道频率。
  4. 流量指示图(Traffic Indication Map):数据传送和电源管理信息。
  5. 国家信息:无线频段和功率等级的规定。
  6. ERP信息:扩展速率集的信息。
  7. RSN信息:用于指示是否支持robust security network,即高级加密和认证方法。
  8. HT/VHT/HE能力:分别代表802.11n, ac, ax的特性和设置。
  9. 生产厂商特定信息:一些特定生产厂商增加的网络信息。

这个Beacon包提供了关于无线网络的诸多信息,从基本的网络名字SSID到详细的速率信息、加密方式,甚至厂商特定的信息。凭借这些信息,客户端设备可以根据各自的需要来判断哪个网络最适合自己进行连接。

分析特定的BSSID包

实际上,BSSID就是AP的Mac地址。用户使用wireshark的时候可能会捕获到很多个BSSID包,这个时候用户就可以通过筛选过滤BSSID来缩小分析包的范围,这样就可以具体分析一个AP的相关数据包。

比如这里,我们选中一个数据包之后点击最为删选条件,就可以将特定的BSSID包筛选出来

可以观察出通信的信道,SSID和频率等

分析特定的包类型

  1. 管理帧过滤(管理帧和其子类型的一些例子):

    • wlan.fc.type == 0 过滤所有类型为管理帧的包。
    • wlan.fc.type_subtype == 0x08 用于过滤信标帧。
    • wlan.fc.type_subtype == 0x04 用于过滤探测请求。
    • wlan.fc.type_subtype == 0x05 用于过滤探测响应。
  2. 控制帧过滤(控制帧和其子类型的一些例子):

    • wlan.fc.type == 1 过滤所有类型为控制帧的包。
    • wlan.fc.type_subtype == 0x1b 过滤RTS帧。
    • wlan.fc.type_subtype == 0x1c 过滤CTS帧。
    • wlan.fc.type_subtype == 0x1d 过滤ACK帧。
  3. 数据帧过滤(数据帧和其他子类型的一些例子):

    • wlan.fc.type == 2 过滤所有类型为数据帧的包。
    • wlan.fc.type_subtype == 0x20 过滤数据帧。

请注意,以上的值(如0x08, 0x04等)是802.11协议规定的特殊数字,它们代表各种具体的帧子类型。上述过滤器可以组合使用来进行更复杂的过滤。例如 wlan.fc.type == 0 && wlan.fc.type_subtype == 0x08 过滤所有类型为管理帧的包中的信标帧。

分析特定频率的包

在Wireshark中,若要筛选特定频率的包,可以通过 "wlan_radio.frequency" 进行筛选。例如,如果你想要筛选2.4 GHz频段(单位为MHz,例如2.4 GHz等于2400 MHz)的所有包,你可以输入以下筛选条件:

wlan_radio.frequency == 2400

请注意,这个筛选条件仅适用于捕获到的数据包包含无线电(Radio)信息的情况。并且,Wireshark中的频率值是以MHz为单位的,所以你需要相应的转换频率值。

分析无线AP认证包

在AP中通常使用的AP加密方式有两种,分别是WEP和WPA。

WEP(Wired Equivalent Privacy)和WPA(Wi-Fi Protected Access)都是Wi-Fi网络的安全协议,用于保护网络交互信息的安全。

  1. WEP:

    • WEP是802.11标准中最早的加密协议,提供等同于有线网络的隐私保护。
    • 它使用相同的密钥来加密和解密数据,也就是说它是基于对称密钥的。
    • 但WEP存在严重的安全问题,如IV(初始矢量)较小易于重复,密钥管理不足,以及无法防止数据篡改等,导致其可以被轻易破解。
    • 因此,WEP已在大多数现代Wi-Fi网络中被更安全的安全标准取代。
  2. WPA:

    • 由于WEP的安全问题,Wi-Fi联盟推出了WPA作为一种过渡解决方案,用以改进WEP的不足。
    • WPA提供了TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议),可以动态地改变加密密钥,这解决了WEP的静态加密密钥问题。
    • WPA还引入了MIC(Message Integrity Check,消息完整性检查)用于防止数据篡改,这在WEP中是无法实现的。
    • 此外,WPA还支持RADIUS/802.1X等企业级身份验证方法。
    • 尽管WPA比WEP安全,但仍存在一些问题。为了解决这些问题,Wi-Fi联盟进一步推出了WPA2和WPA3。

综上所述,WEP和WPA都是为实现Wi-Fi网络的安全而生的协议,但WEP的问题较多,已被WPA所取代。现在的网络,会推荐使用WPA2或WPA3,它们提供了更高的安全保障。

这里因为缺少实验的条件,我们就简单叙述一下原理(在一些工具中会自动捕获这些无线AP的认证包,所以我们只要会分析原理就行了)

WEP

在WEP(Wired Equivalent Privacy)无线加密协议中,存在两种认证方式:开放系统认证和共享密钥认证。

  1. 开放系统认证(Open System Authentication): 开放系统认证主要基于请求和应答,在这个过程中并不进行实质性的身份验证。任何请求连接的设备均可发送关联请求,接入点会自动给予应答,允许设备关联。实际的加密和安全保护措施是通过WEP密钥进行的数据加密来实现。但是,由于在认证阶段并未进行身份验证,导致任何设备都可以与接入点建立联系,对于保护无线网络的安全性存在一定的挑战。

  2. 共享密钥认证(Shared Key Authentication): 共享密钥认证则是需要在接入点和设备之间共享一个已知的WEP密钥。在进行认证时,接入点会向请求设备发送一个挑战文本,请求设备必须使用共享密钥对挑战文本进行加密并将结果返回给接入点。接入点再使用同样的密钥解密,如果解密的文本和最初的挑战文本匹配,那么设备的身份得到验证,可以建立连接。

总结起来,开放系统认证与共享密钥认证的主要区别在于,开放系统认证在建立连接的过程中并不进行实质性的身份验证,而是依赖后续的数据加密来实现安全保护;而共享密钥认证则会在设备关联以前进行一次基于密钥的身份验证,以此保护网络的安全性。

而我们主要分析的是共享秘钥认证中四次信号发送的过程:

共享密钥认证在IEEE 802.11网络中使用四次握手的过程。这是一种基于密钥挑战-响应方式进行的认证,具体如下:

  1. 第一次握手:客户端(STA,Station)向接入点(AP,Access Point)发送认证请求。这个请求包括算法号(共享密钥)以及一个序列号。

  2. 第二次握手:接入点接收到认证请求后,生成一个文本挑战,并发送给客户端。

  3. 第三次握手:客户端接收到接入点的文本挑战后,使用预先共享的密钥对挑战文本进行加密,然后将加密后的文本作为响应发送回接入点。

  4. 第四次握手:接入点接到客户端的响应后,同样使用预先共享的密钥对响应进行解密,如果解密后的值与原始发送的挑战文本一致,那么认证成功,接入点发送认证成功的报文给客户端,否则认证失败。

这个过程其实是一个双方验证彼此知道共享密钥的过程,并非传统意义上的握手过程。这种方式虽然比开放系统认证更安全,但由于WEP密钥存在被破解的风险,所以实际的安全性并不高。

我们可以看出来如果输入密码是错误的,那么前三次的握手的状态都是成功的,只有最后一次握手状态会失败。

WPA

  1. 客户端发送认证请求包:

    • 客户端首先向附近的无线接入点发送认证请求包。
    • 该包中包含客户端的身份信息和请求建立加密连接的意图。
    • 认证请求包的源MAC地址为客户端的MAC地址,目标MAC地址为广播地址(ff:ff:ff:ff:ff:ff)。
    • 包的类型字段指示为管理帧,子类型字段指示为认证请求包。
    • 其他参数可能包括无线网络的SSID、BSSID等。
  2. 无线接入点收到认证请求包:

    • 接入点收到认证请求包后,会对其进行处理。
    • 接入点验证请求包中的身份信息和请求的合法性。
    • 接入点生成一个随机数(ANonce)作为认证响应的一部分。
  3. 无线接入点发送认证响应包:

    • 接入点将认证响应包发送给客户端,其中包含了自己的身份信息和生成的ANonce。
    • 认证响应包的源MAC地址为接入点的MAC地址,目标MAC地址为客户端的MAC地址。
    • 包的类型字段指示为管理帧,子类型字段指示为认证响应包。
    • 认证响应包还可能包含其他参数,例如认证状态等。
  4. 客户端收到认证响应包:

    • 客户端接收到认证响应包后,会验证接入点的身份信息和认证状态。
    • 如果认证状态为成功,客户端将根据自己生成的随机数(SNonce)和接收到的ANonce进行计算。
    • 客户端使用这些随机数生成一个临时会话密钥(PTK),用于后续的加密通信。

通过这个过程,客户端和无线接入点之间建立了加密连接,并生成了用于加密和解密数据的会话密钥。这个会话密钥将在后续的通信中使用,以确保数据的机密性和完整性。

需要注意的是,WPA认证过程中的具体实现和配置可能因安全设置和协议版本而有所不同。上述过程是基于基本的WPA认证流程描述的简化版本。

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值