日常使用标准
协议 | 发布日期 | 支持频段 | 最高速率 |
---|---|---|---|
802.11b | 1999 | 2.4G | 11M |
802.11a | 1999 | 5G | 54M |
802.11g | 2004 | 2.4G | 54M |
802.11n | 2009 | 2.4G/5G | 600M |
- 2.4GHz与5GHz都属于无线电(频率在3Hz-300Hz范围内的电磁波)的频段范围
- 另外工作在2.4GHz频段中的设备还有:微波炉,无绳电话,蓝牙设备
- 这里的2.4GHz与5GHz都指这个频率附近的频段
- 在我国2.4GHz频段的可用信道为13个,而5GHz频段的可用信道为五个
WLAN常用术语
通俗理解
- AP: 无线热点,如无线路由器
- STA: 无线终端,如手机,电脑等
- BSSID: 无线热点的MAC地址
- ESSID: 无线网络的名称,即平日所说的SSID
精确理解
无线抓包
我们正常用wireshark抓取本机无线网卡的流量,并无法看到802.11协议的包头,只能看到正常以太网的包头,这是因为在我们上网时,电脑的网卡工作在Managed的模式,这时无线网络的工作方式对用户来说是透明的,用户看到的就是数据包就是有线以太网的数据包。如果想要看到802.11的包头,需要将网卡更换到Monitor(侦听)模式,这时网卡不仅不会过滤掉802.11协议的包头,而且不过滤任何可以收到的数据包(目标主机不是本机的数据包)。
但侦听模式需要网卡本身的支持,操作系统安装了网卡的相应驱动,并且有控制无线网卡的命令工具,才可以完成整个抓包的操作。所以这里我们操作系统选择kali,网卡选择外置的TPlink-WN722N
注:无线网卡的默认接口名称是
wlan+数字
,按无线网卡的接入顺序,数字从0开始依次递增。当更改网卡为监听模式时,接口统一规范命名为wlan+数字+mon
无线网卡工具
linux中常用管理网卡的工具是ifconfig,而针对于无线网卡有专用的管理工具:iwconfig,iwlist,iw等,这些工具在kali中默认安装
- iwconfig 查看网卡状态信息
- iwlist 查看网卡支持的详细工作参数,如信道,频段,加密方式等
- iw 设置无线网卡模式,利用网卡扫描,设置网卡接口,查看详细参数等
其中iw与iwlist功能有重合,工具利用示例如下:
查看无线网卡详情
iwlist wlan0 frequency 查看网卡支持的工作信道
root@kali:~# iwlist wlan0 frequency
wlan0 13 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Channel 12 : 2.467 GHz
Channel 13 : 2.472 GHz
iw list 查看网卡的工作的各种参数,包括了上面打印的信道参数
root@kali:~# iw list
Wiphy phy7
max # scan SSIDs: 4
max scan IEs length: 2257 bytes
max # sched scan SSIDs: 0
max # match sets: 0
max # scan plans: 1
max scan plan interval: -1
max scan plan iterations: 0
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Device supports RSN-IBSS.
Device supports T-DLS.
Supported Ciphers:
* WEP40 (00-0f-ac:1)
* WEP104 (00-0f-ac:5)
* TKIP (00-0f-ac:2)
* CCMP-128 (00-0f-ac:4)
* CCMP-256 (00-0f-ac:10)
* GCMP-128 (00-0f-ac:8)
* GCMP-256 (00-0f-ac:9)
* CMAC (00-0f-ac:6)
* CMAC-256 (00-0f-ac:13)
* GMAC-128 (00-0f-ac:11)
* GMAC-256 (00-0f-ac:12)
Available Antennas: TX 0x1 RX 0x1
Configured Antennas: TX 0x1 RX 0x1
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
* outside context of a BSS
Band 1:
Capabilities: 0x116e
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-7
Bitrates (non-HT):
* 1.0 Mbps
* 2.0 Mbps (short preamble supported)
* 5.5 Mbps (short preamble supported)
* 11.0 Mbps (short preamble supported)
* 6.0 Mbps
* 9.0 Mbps
* 12.0 Mbps
* 18.0 Mbps
* 24.0 Mbps
* 36.0 Mbps
* 48.0 Mbps
* 54.0 Mbps
Frequencies:
* 2412 MHz [1] (20.0 dBm)
* 2417 MHz [2] (20.0 dBm)
* 2422 MHz [3] (20.0 dBm)
* 2427 MHz [4] (20.0 dBm)
* 2432 MHz [5] (20.0 dBm)
* 2437 MHz [6] (20.0 dBm)
* 2442 MHz [7] (20.0 dBm)
* 2447 MHz [8] (20.0 dBm)
* 2452 MHz [9] (20.0 dBm)
* 2457 MHz [10] (20.0 dBm)
* 2462 MHz [11] (20.0 dBm)
* 2467 MHz [12] (20.0 dBm)
* 2472 MHz [13] (20.0 dBm)
* 2484 MHz [14] (disabled)
...
...
...
扫描附近网络
以下两种方式均可获得附近热点的详细信息
root@kali:~# iwlist wlan0 scanning
root@kali:~# iw dev wlan0 scan
启用侦听模式
在启用监听模式之前,我们先用iwconfig查看网卡状态信息:
root@kali:~# iwconfig
eth0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
可见Mode字段为Managed,以下我们有两种方法将网卡置入侦听模式:
方法一
通过iw,添加侦听接口:
root@kali:~# iw dev wlan0 interface add wlan0mon type monitor
root@kali:~# ifconfig wlan0mon up
删除侦听接口:
root@kali:~# iw dev wlan0mon interface del
通过这种方式添加接口,原来的wlan0接口仍保留
方法二
这种方法是使用aircrack-ng套件中的airmon-ng工具来完成网卡监听模式的开启,添加侦听接口:
root@kali:~# airmon-ng start wlan0
删除侦听接口:
root@kali:~# airmon-ng stop wlan0mon
通过这种方式添加接口,原来的wlan0接口不被保留
wireshark抓包
通过上面两张方法开启网卡的侦听模式,然后重新用iwconfig查看网卡状态:
root@kali:~# iwconfig
eth0 no wireless extensions.
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
lo no wireless extensions.
可见新的网卡接口wlan0mon已经开启,所以可以利用wireshark等工具抓包,抓包时选择wlan0mon这个网卡接口,即可看到完整的802.11协议数据包的结构。
无线数据包结构
为了更好的理解无线网络工作的原理,有必要了解802.11协议的帧格式。
示例
在kali中的wireshark通过网卡开启的监听端口捕获的一些数据中,以一个AP广播的beacon帧为例:
wireshark解析出四个部分:
- RadioTap Header
- 802.11 radio imformation
- 802.11 Beacon Frame (802.11 Header)
- 802.11 WLAN Management frame (802.11 Body)
部分解析:
- 第一部分RadioTap Header的内容是AP的一些参数,比如工作信道,接受时的信号强度等信息。显然接受时的信号强度是由本机网卡测得的,所以这段数据并不是由AP发送的,而是本机网卡接受到数据包时自己加上的信息。
- 第二部分802.11 radio imformation基本是对第一段的概括,数据包中并无实际的数据与之对应
- 第三部分这里解析除了帧类型为beacon,其实这段就是802.11数据包的数据链路层的MAC子层的头部
- 第四部分解析为管理帧部分,但其实这段数据是MAC子层的数据部分
- 整个无线数据包最后还有四个字节的CRC校验,wireshare把这段数据解析到了Beacon Frame部分
所以通过这种方式捕获的无线数据包可以看成如下组成:
RadioTap | MAC Header | Frame Body | FCS |
---|---|---|---|
变长 | 最大30byte 变长 | 0-2324byte 变长 | 4byte |
在无线信号在传播过程中,实际是还有物理层的头部(PLCP header),具体参考:有关802.11的Beacon帧
MAC Header
其中MAC Header中的Frame Control中的type和subtype标记了802.11的不同类型的帧,Frame Body中包含了各种不同类型帧的数据部分。个人认为802.11数据包看起来费劲的原因主要是类型过多,且包头长度不固定。不过在无线渗透的过程,并不需要理解全部的数据包。802.11主要有三种类型的帧:控制帧、管理帧、数据帧
以下介绍常见帧的功能以及包含的信息等,具体帧的结构请参考:802.11 协议格式
管理帧(Type:0)
用于协商AP与STA之间的关系
Association Frame (subtype:0/1)
- Association Request
- Association Response
身份验证成功后,STA执行关联操作后方可加入网络
Probe Frame (subtype:4/5)
- Probe Request STA发出的探测帧,用于曾经连接过的AP是否在附近
- Probe Response AP与收到的probe请求帧信息相同时则响应
Beacon (subtype:8)
- AP发送的广播帧,通告无线网络的存在
- 内容包括SSID,支持速率,安全机制等信息
- 大概一秒发十个,速度可调
- 可关闭,即隐藏SSID广播
Authentication (subtype:11)
这个帧用来做鉴权认证,并且格式较为简单,大致如下:
MAC Header | Algorithm | seq | status code | challenge text | FCS |
---|---|---|---|---|---|
24byte | 2byte | 2byte | 2byte | 变长 | 4byte |
- Algorithm:0-开放身份验证,1-共享秘钥身份验证
- seq:可取1-65535,认证过程由多个帧组成,每个帧的seq唯一
- challenge text:只有WEP共享秘钥有此字段,传递随机数
- status code: 0-成功,1-失败
常见流程:
- 采取OPEN认证时,一般会有两个Authentication数据包,Algorithm为0,无challenge text字段
- 采取WEP认证时,一般会有四个Authentication数据包,Algorithm为1,第二个包包含有challenge text字段
- 采取WPA/WPA2认证时,不通过管理帧中的Authentication帧来完成认证,这时通过数据帧中的EAPOL帧来完成认证
Deauthentication(subtype:12)
- 这个帧一般由AP发送给STA,用来断开认证关系,但实际上也可由STA发送给AP
- Frame Body为两个字节的Reason code
- 此帧在WEP、WPA/WPA2的安全机制下均不进行加密处理,故可以任意伪造,从而完成拒绝服务的攻击
控制帧(Type:1)
通知设备开始,停止传输,或连接失败等情况的短消息
Ps-Poll (subtype:10)
STA省电模式下取数据的控制帧
RTS/CTS (subtype:11/12)
即请求发送/清除发送,用于半双工时的收发切换
ACK (subtype:13)
- 接收端正确收到向发送方返回ACK
- 单播帧立刻确认,广播组播不需要ACK
- 实现可由硬件完成
数据帧(Type:2)
主要用于传输数据
Data (subtype:1)
用于传输数据
Null Data (subtype:4)
用于STA声明自己进入省电模式
无线加密
因为无线网络是基于无线电波的,导致数据都可以被监听嗅探,所以加密是必须的手段。主要有保护无线的方法:WEP和WPA ,这里WEP和WPA都不是加密算法名称,而是一套保护无线网络的方法。
WEP
WEP为802.11标准的一部分,发布后不就被发现漏洞
- 使用预设共享秘钥,通过挑战应答机制来完成认证过程
- 对保护的数据使用RC4加密算法,起始向量为24位
- RC4位对称加密算法,实现简单速度快
WPA
802.11i组为提高无线安全,卡发的两个新的链路层加密协议:
- Temporal Key Integrity Protocol(TKIP)————WPA
- Counter Mode with CBC-MAC(CCMP)————WPA2
WPA个人:预设共享秘钥
WPA企业:802.1x和Radius/kerberos/Ldap等服务器实现AAA(认证,授权,记账)
参考:
WPS
WPS是wifi联盟2006年开发的一项技术,通过PIN码来简化无线接入的参数,PIN码是分为前后各四位两段共8位数字,主要包括两种快速接入的方法:PIN(personal identifiy number)and PBC( push button configuration),其中PIN又有以下两种
- STA直接访问AP,输入AP的PIN码即可(AP PIN)
- STA生成PIN码,通过AP的管理界面输入生成的PIN码即可链接(STA PIN)
- AP和STA各按一个按钮就能接入无线
第一种方式需要知道AP的PIN码
第二种方式需要有已经接入热点并能访问AP控制界面的管理员手动输入PIN码才可接入
第三种方式需要按下AP上的按键,与AP可以物理接触即可完成热点的接入
这三种方式均是接入AP的方式,当通过WPS的验证后,AP会将秘钥发送给STA设备,然后在通过WEP或者WPA的方式连接到AP。即可以认为WPS是建立在WEP或WPA保护机制之上的一个获取秘钥的方式,热点本身还是要采用以上两种的保护方式。
// ___________________
// | |
// | WPS |
// |___________________|
// | | |
// | WEP | WPA/WPA2 |
// |_______|___________|