WLAN(Wireless Local Area Network)帧是在无线局域网中用于数据传输的基本单位。
WLAN帧的结构可以根据具体的协议标准,如IEEE 802.11(Wi-Fi)而有所不同。
下面是IEEE 802.11标准中WLAN帧的详细介绍:
1. 帧控制字段(Frame Control Field):帧控制字段包含16个比特,用于标识帧的类型、子类型和其他控制信息。其中包括帧的类型(管理帧、数据帧、控制帧)、帧的子类型(如数据帧的分片)、帧的保护机制(加密与否)、帧的传输序列控制等信息。
2. 接收地址(Address):这个字段包括接收端的MAC地址。在管理帧中,这个字段包括接收端的MAC地址或者是广播地址;在数据帧中,这个字段通常包括接收端的MAC地址。
3. 发送地址(Address):这个字段包括发送端的MAC地址。在管理帧中,这个字段包括发送端的MAC地址或者是广播地址;在数据帧中,这个字段通常包括发送端的MAC地址。
4. BSSID(Basic Service Set Identifier):这个字段表明了发射帧的无线接入点的MAC地址。
5. 序列控制字段(Sequence Control Field):这个字段用于管理数据帧的顺序以及对数据的确认。
6. 有效载荷(Payload):这个字段包含了实际需要传输的数据,长度可变。
7. 帧校验序列(Frame Check Sequence):帧校验序列是一个32比特的校验值,用于检测帧在传输过程中是否受损。
总体而言,WLAN帧从开始到结束的整体结构包括了帧控制字段、接收地址、发送地址、BSSID、序列控制字段、有效载荷和帧校验序列。通过解析这些字段的值,接收方可以理解帧的类型、发送方和接收方的身份信息,传输的数据内容以及帧的完整性。这样便能够实现无线网络中数据的可靠传输和接收。
在无线局域网(WLAN)中,根据IEEE 802.11标准,可以分为三种主要类型的WLAN帧:管理帧、数据帧和控制帧。下面是对这三种帧的详细介绍:
1. 管理帧(Management Frames):
管理帧用于在无线网络中进行管理和控制,实现诸如连接建立、网络发现、认证、关联、授权和局域网配置等功能。下面是一些常见的管理帧类型:
- Beacon Frame:Beacon帧由接入点定期广播以通知周围设备网络的存在和关键信息,如网络名称(SSID)、速率和加密设置等。它还包含了其他管理消息,比如时间戳,用于同步设备的时钟。
- Probe Request/Response Frame:Probe请求/响应帧用于设备扫描和搜索可用的网络。当设备在扫描附近网络时,它将发送Probe Request帧并等待接入点的Probe Response帧作为响应。
- Association Request/Response Frame:关联请求/响应帧用于设备连接到无线网络。当设备想要连接到特定的网络时,它发送一个关联请求,并且接入点将响应一个关联响应帧。
2. 数据帧(Data Frames):
数据帧用于在无线网络中传输实际的用户数据。下面是一些常见的数据帧类型:
- Data Frame:数据帧是在无线网络中传输实际数据的帧类型。它包含了要发送的数据以及目标设备的地址等信息。
- Null Data Frame:空数据帧用于在无线网络中发送空闲或保持活动状态信息,不携带实际的数据内容。
3. 控制帧(Control Frames):
控制帧用于在无线网络中进行控制和管理,但不承载实际的用户数据。下面是一些常见的控制帧类型:
- RTS(Request to Send) Frame:请求发送帧用于避免发送冲突,设备在发送数据前向接收方发出RTS帧,接收方发送CTS帧(清除对发送方的发送许可)以及其他设备发送ACK帧(确认信息)。
- CTS(Clear to Send) Frame:清除发送帧在收到RTS帧后,如果网络空闲,则接收方会发送CTS帧,以允许发送方发送数据。
- ACK(Acknowledgment) Frame:确认帧用于在接收到数据帧后,向发送方发送确认信息,以确保数据正确接收。
这些帧类型组成了WLAN中的基本通信和控制单位,通过使用不同类型的帧,设备可以在无线网络中进行数据传输、连接管理和冲突避免,以实现可靠的无线通信。
查看无线网卡接口:
airmon-ng
或 airmon-ng start
启动监听模式:
airmon-ng start
替换为要启动监听模式的无线网卡接口名称。mon0
。关闭监听模式:
airmon-ng stop
替换为要关闭监听模式的接口名称。检测与管理进程:
airmon-ng check
替换为要检测和管理的无线网卡接口名称。显示连接的客户端:
airodump-ng mon0
(假设 mon0
是监听模式的接口名称)显示无线网络信息:
airodump-ng mon0
(假设 mon0
是监听模式的接口名称)airodump-ng
是 Aircrack-ng 套件中的一个命令行工具,用于无线网络的数据包捕获、分析和监视,以下是对 airodump-ng
命令的详细介绍:语法:
airodump-ng <选项> <无线接口>
例如:
airodump-ng wlan0
主要选项:
-c <频道>
或 --channel <频道>
: 指定无线网络所使用的频道。-w <文件名>
或 --write <文件名>
: 将捕获到的数据包写入文件。-b
或 --bssid
: 指定要监视的特定 AP(访问点)的 BSSID(基本服务集标识符)。-d <目的地MAC>
或 --destmac <目的地MAC>
: 过滤以指定目的地 MAC 地址的数据包。-s
或 --encrypt
: 仅显示加密的网络。--ivs
: 显示捕获的 IV(初始化向量)。--gpsd
: 使用 GPSd 服务获取地理位置信息。-h
或 --help
: 显示帮助信息。使用示例:
airodump-ng -w capture wlan0
airodump-ng --bssid 00:11:22:33:44:55 wlan0
airodump-ng -s wlan0
airodump-ng --channel 6 wlan0
注意: 在使用 airodump-ng
之前,需要确保已经将无线网卡设置为监听模式。此外,使用 airodump-ng
进行无线网络监视和分析可能需要管理员权限。
aireplay-ng
是 Aircrack-ng 套件中的命令行工具之一,它用于无线网络的数据包注入、重放和生成。它是一种网络攻击工具,常用于测试和评估无线网络的安全性。语法:
aireplay-ng <选项> <无线接口>
例如:
aireplay-ng wlan0
主要选项:
-0 <次数>
: 以一个或多个数据包注入方式对目标无线网络的客户端发起退化攻击,主要用于生成 WEP 密钥。-1 <时间间隔>
: 生成 ARP 请求数据包并向目标无线网络的客户端发送,常用于攻击 WEP 密钥。-2
: 重复 -1
的攻击方法,但使用更快的攻击方式。-3 <时间间隔>
: 生成 ARP 请求数据包并向目标无线网络的 AP(访问点)发送,用于攻击 WEP 密钥。-4
: 重复 -3
的攻击方法,但使用更快的攻击方式。-5
: 生成穿插的数据帧,用于攻击 WEP 密钥。-6 <文件名>
: 使用指定的数据包文件作为攻击目标。-9
: 以同一无线接口上的单播传输数据包进行攻击,常用于攻击 WEP 密钥。-e
: 指定目标无线网络的 ESSID(扩展服务集标识符)。-h
或 --help
: 显示帮助信息。使用示例:
aireplay-ng -0 5 wlan0
aireplay-ng -1 0 -e MyNetwork wlan0
aireplay-ng -3 -b 00:11:22:33:44:55 -e MyNetwork wlan0
在无线网络中用wireshark抓取这些帧,抓包的第一步是要让接口在监控模式下运行,所以需要为笔记本电脑的无线网卡创造一个接口,使其可以接收到在空气中传播的所有无线帧,不管帧的归宿是不是该接口,对有线网络而言,这种接口所处的监控模式俗称混杂模式。
iwconfig
ifconfig wlan0 up
airmon-ng 用于验证系统在监控模式下是否已经检测到可用的无线网卡
该命令输出可以看到接口wlan0和wlan1
airmon-ng start wlan0创建与wlan0设备相对应的监控模式接口
这一处监控模式的新接口会被命名为wlan0mon(它可以执行任何不带参数的airmon-ng命令,来验证监控接口是否已经创建)
ifconfig wlan0mon 可以看到一个名为wlan0mon的新接口
就用同一块物理网卡,用airmon-ng
输入wireshark 启动这个程序
然后点击capture|options
在interface一栏下先选中wlan0mon,
再点击窗口右下角的start按钮,会弹出capture from wlan0mon窗口
就可以看到抓的数据包了
并且在抓包窗口的底部是有抓包的速度和抓取包的数量的
如果不想让抓包窗口向下滚动过快,可以先停止抓包
wlan.fc.type==0 wireshark显示所抓数据包中的所有管理帧
wlan.fc.type==1 wireshark显示所抓数据包中的所有控制帧
wlan.fc.type==2 wireshark显示所抓数据包中的所有数据帧
要想筛选并查看某一类 802.11 帧的某一种子类型,请使用wlan.fc.subtype过滤选项。
比方说,要选并查看所有管理帧中的信标(Beacon)帧,
过滤表达式应该这么写:(wlan.fc.type==0)&&(wlan.fc.subtype ==8)
wlan.fc.type==0
表示筛选出 802.11 帧的管理帧类型(0 代表管理帧)。wlan.fc.subtype==8
表示筛选出管理帧中的子类型为 8 的信标帧(8 代表信标帧)。还可以在抓包主窗口的数据包结构区域内,选中数据包的某个属性值单击右键
在弹出的右键菜单里点选ApplyasFilterlSelected 菜单项,将该属性值添加为显示过滤器
如此行事,将会在 Wireshark抓包主窗口的过滤器(Filter)一栏里,自动添加正确的过滤表达式。
参考 Wireshark使用手册,来学习与过滤表达式的写法及使用方面有关的信息。
在本节的实验里,将学到如何从特定的无线网络“窃取”数据包。
为了简单起见,先看看如何抓(窃)取未经任何加密的数据包。
抓取步骤如下所列。
1.给名为wireless ab的AP加电。保留其不启用加密的配置
2.首先得获悉AP wireless ab运行于哪个信道。
为此,请在Kali Linux主机的终端里执行 airodump-ng --bssid
其中
airodump-ng --bssid
是一个 airodump-ng 命令的使用示例,用于在无线网络监控模式下捕获指定 BSSID(基本服务集标识符)的数据包。下面解释一下每个部分的含义:
airodump-ng
是一个针对无线网络的强大工具,用于捕获和分析无线数据包。--bssid
是一个命令选项,用于指定要监视的特定基本服务集(BSS)的 MAC 地址。将
替换为你要监视的特定 BSSID 的实际 MAC 地址。wlan0mon
是监控模式下的接口名称,其中 wlan0
是无线网卡的接口名称,mon
表示监控模式。该命令一执行,终端窗口很快就会显示该AP 及其所运行的信道。
在这个实验中,AP wirelessab运行于信道11。
为了抓取由该 AP 收发的数据包,需将无线网卡锁定在这个信道,即信道11。
要锁定该信道,请执行iwconfig wlan0mon channel 11命令。
iwconfig wlan0mon channel 11
是一个用于设置无线网卡(wlan0mon)的信道(channel)的命令。下面解释一下每个部分的含义:
iwconfig
是用于配置无线接口的命令行工具。wlan0mon
是无线网卡的接口名称,其中 wlan0mon
表示监控模式下的接口名称。channel 11
是命令的选项,用于指定无线网卡连接的信道。在这个例子中,指定的信道11。然后,可执行iwconfig wlan0mon命令来进行验证。
在该命令的输出中,应该可以看到Frequency:2.462GHz(频率:2.462GHz)字样,这对应于信道11。
现在启动 Wireshark,令其从接口 wlan0mon 接口抓包。
开始抓包之后,在 Wireshark 抓包主窗口的过滤器区域中应用过滤表达式
wlan.bssid ==
要想筛选并查看由AP wireless Lab生成的数据包,
过滤表达式的写法为(wlan.bssid==
当子类型为 0x20
时,它表示 Wi-Fi 数据帧。
请在作为无线客户端的笔记本电脑上打开浏览器,输入访问AP管理界面的 URL。
该URL为http://192.168.0.1。
该操作生成的数据包将会被 Wireshark 捕获。
通过抓包,可以让任何人都能轻易地对未加密的数据包进行分析,这就是要启用无线加密的原因所在。
用 Wireshark 对数据包做进一步分析,就会发现无线客户端会发起DHCP请求,要是无线网络内有可用的DHCP服务器,便会为无线客户端分配一个IP地址。
随后,还会发现空气中还流淌着ARP数据包以及其他协议数据包。
这是在无线网络中以被动方式发现主机的一个既简单又好用的方法。
能够拥有抓包记录(packettrace),并且能够回溯(reconstruct)无线网络内主机所运行的应用程序之间的交流,可谓非常重要。
Wireshark支持一种叫做followstream的功能,允许一并查看隶属于同一条(TCP)流的所有数据包,这批数据包是 TCP 交换的一部分。
用KaliLinux提供的aireplay-ng,来执行数据包注入。
执行数据包注入的步骤如下所列。
1.要执行数据包注入测试,需先启动Wireshark,
再应用过滤表达式(wlan.bssid==
如此行事的目的是,只筛选出实验环境网络中的非信标帧。
在应用过滤表达式时,筛选出实验环境网络中的非信标帧是因为注入测试主要针对非信标帧进行操作。信标帧是Wi-Fi网络中用于同步和定位的管理帧之一,一般由接入点(AP)周期性地发送。在数据包注入测试中,我们主要关注非信标帧,因为这些帧更容易受到攻击者的注入。
2.在 Kali Linux主机的终端里执行aireplay-ng -9 -e wirelessLab -a
参数的顺序是固定的且具有特定的含义,不能随意互换。
-9
表示进行无线认证和关联攻击。-e wirelessLab
指定要攻击的无线网络的名称(ESSID)为"wirelessLab"。-a
指定要攻击的无线接入点(AP)的MAC地址。wlan0mon
是用于无线接口监测的接口名称。该命令是使用aireplay-ng工具执行无线网络攻击中的"Beacon Flood"(信标洪泛)攻击。
- aireplay-ng: 这是aircrack-ng套件中的一个工具,用于执行无线网络攻击。
- -9: 这个选项告诉aireplay-ng执行无线网络攻击中的"Beacon Flood"攻击。该攻击通过发送大量虚假的信标帧来混淆网络,并使客户端设备被迫重新关联。
- -e wirelessLab: 这个选项指定了要针对的目标网络的SSID(无线网络名称)。在这个例子中,目标网络的SSID被设置为"wirelessLab"。
- -a
- wlan0mon: 这个参数指定了用于无线攻击的无线网卡接口。在这个例子中,使用了wlan0mon作为无线网卡接口的名称。
通过执行该命令,aireplay-ng将发送大量的虚假信标帧来混淆目标网络,并尝试迫使目标系统上的客户端设备重新关联到它们认为是合法的访问点。这可以用于捕获重新关联时传输的敏感信息或利用潜在的漏洞。
3.回到Wireshark界面,应该可以看到它抓到了很多数据包。
其中的某些数据包正是由之前执行的aireplay-ng命令注入的,
还有一些数据包则是AP wirelessab生成的数据包,作为对注入数据包的响应。
利用 aireplay-ng工具,成功地将数据包注入了无线实验网络。
值得关注的是,KaliLinux主机的无线网卡其实并未连接AP wireless Lab,就能将数据包随意注入网络。
自行钻研aireplay-ng 工具的其他选项,使用这些选项来注入数据包。可用 Wireshark隔空抓取数据包,来验证注入是否成功。
WLAN 通常会在三个不同的频率范围(2.4 GHz、3.6 GHz和 4.9/5.0GHz)内运行。
并非所有WiFi无线网卡都支持这三个范围和相关频段。
比方说,较老的Alfa无线网卡只支持IEEE802.11b/g。
也就是说,这样的无线网卡不支持在 802.11a/n频率范围内运行。
因此,要想在特定的频段内执行数据包探或注入,WiFi网卡需要能够在该频段内运行。
WiFi还有一个地方非常有趣,那就是以上三个频段中的每一个都有多个信道。
需要注意的是,无论何时,一块WiFi网卡只能连接一个信道,不可能同时调谐至多个信道。
车载收音机就是一个最好的例子,在任意给定的时刻,只能将其调谐到一个可用的频道。
要是想听别的电台的节目,只有换个频道。
收音机的工作原理同样适用于用无线网卡执行WLAN 抓包。
于是,可以得出一个重要的结论,不能同时在所有信道抓包,需要选择自己感兴趣的信道。
这意味着,若AP运作于信道1,就得将无线网卡协调至该信道。
WLAN 抓包是这样,数据包注入也是这样。
要想将数据包注入特定的信道,则需将无线网卡无线电(wireless cardradio)协调至该信道。
接下来,要看看如何将无线网卡设置在特定的信道、如何设置跳频、如何设置管制区域以及如何设置功率等级。
要让无线网在特定的信道上运行
请执行 iwconfig wlan0mon channel x(x是信道)
iwconfig 系列命令没有跳频模式。
执行带各种选项的airodump-ng 命令,来随意跳频、只使用一个子集,或使用选定的频段。
可以使用不同的选项来在airodump-ng命令中实现跳频、子集过滤和选择频段。
下面是一些常用的选项和示例:
--channel
或 -c
: 在指定的信道或频率上监测无线网络。可以使用单个信道或逗号分隔的多个信道进行跳频。示例:airodump-ng --channel 1,6,11 wlan0mon
将在信道1、6和11进行跳频监测。
--bssid
或 -d
: 过滤指定的基础设施MAC地址(BSSID),只显示与此BSSID相关的数据包。示例:airodump-ng --bssid 00:11:22:33:44:55 wlan0mon
将只显示与指定BSSID相关的数据包。
--essid
或 -e
: 过滤指定的无线网络名称(ESSID),只显示与此ESSID相关的数据包。
示例:airodump-ng --essid wirelessLab wlan0mon
将只显示与指定ESSID相关的数据包。
--band
或 -b
: 选择特定的频段进行监测,可选的频段有"a"、“b”、“g”、“ab"和"gn”。示例:airodump-ng --band a wlan0mon
将仅监测802.11a频段。
请注意,具体的选项可能会因不同的版本和配置而有所不同。建议查看相关文档或运行airodump-ng --help
命令以获取更详细的选项列表和说明。
"a"、“b”、“g”、“ab"和"gn”是什么
“a”、“b”、“g”、"ab"和"gn"是无线网络标准的代号,用于表示不同的无线网络频段和技术。
"a"代表IEEE 802.11a标准,工作在5 GHz频段。802.11a网络通常具有较高的传输速率,但传输距离相对较短。
"b"代表IEEE 802.11b标准,工作在2.4 GHz频段。802.11b网络具有较低的传输速率,但传输距离相对较长。它是早期无线网络中最普遍使用的标准之一。
"g"代表IEEE 802.11g标准,同样也工作在2.4 GHz频段。802.11g是对802.11b的改进,具有更高的传输速率和向下兼容性。
"ab"通常用于表示同时支持802.11a和802.11b的设备,可以在2.4 GHz和5 GHz频段之间切换。
"gn"代表IEEE 802.11n标准,是对802.11g的进一步改进。802.11n网络使用多个天线和高级技术(如MIMO)实现更高的传输速率和更好的覆盖范围。
众所周知,无线网络中的数据包抓取及注入都要仰仗硬件的支持。
这意味着上述操作只能在无线网卡允许的频段和信道上进行。
此外,无线网卡无线电只能同时协调至一个信道。
也就是说,一次只能在一个信道上执行数据包的抓取或注入。
要是想同时从多个信道抓包,则需要多块物理 WiFi网卡。