概述
工作需要学习一点无线知识,索性就买了个USB的无线网卡,做了个实验,简单了解下wifi无线破解的知识。
基础知识
WEP(Wired Equivalent Privacy有线对等保密)
最早的无线加密体制,由于算法的缺陷很容易被破解。抓包获取在数据流中明文传输的IV,再通过统计学方法用IV得到密钥。

WPA
在不升级硬件的前提下,WAP使用TKIP(Temporal Key Integrity Protocol临时密钥集成协议) 来实现WLAN的访问控制、密钥管理和数据加密来增强WEP的安全性。WPA加密算法有两个版本。
- WPA = 802.1x + EAP + TKIP + MIC = Pre-shared Key + TKIP + MIC
- WPA2 = 802.1x + EAP + AES + CCMP = Pre-shared Key + AES + CCMP
PS:
身份校验算法:802.1x + EAP(工业级、不怕网络劫持和字典攻击、认证服务器)、Pre-shared Key(家庭用、容易被字典攻击、无服务器)
数据传输加密算法:TKIP、AES
数据完整性校验算法:MIC、CCMP
WPA-PSK 的四次握手过程

- AP初始化
使用 SSID 和passphares作为入参,通过哈希算法产生PSK。在WPA-PSK 中PSK=PMK=pdkdf2_SHA1(passphrase, SSID, SSID length, 4096)
- 第一次握手
AP广播SSID,AP_MAC(AA);
STATION 端使用接收到的SSID,AP_MAC和passphares使用同样算法产生PSK。
- 第二次握手
STATION 发送一个随机数SNonce,STATION_MAC(SA)给AP;
AP端接收到SNonce、STATION_MAC(SA)后产生一个随机数ANonce,然后用 PMK、AP_MAC(AA)、STATION_MAC(SA)、SNonce、ANonce 用以下SHA1_PRF算法产生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))
- 第三次握手
AP发送上面产生的ANonce给STATION
STATION 端用接收到ANonce 和以前产生PMK、SNonce、AP_MAC(AA)、STATION_MAC(SA)用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC KEY使用以下算法产生MIC值用这个MIC KEY 和一个802.1X数据帧使用以下算法得到MIC值
MIC = HMAC_MD5(MIC Key,16,802.1X data)
- 第四次握手
STATION 发送802.1X 数据帧,MIC给AP;STATION 端用上面那个准备好的802.1X 数据帧在最后填充上MIC值和两个字节的0(十六进制)然后发送这个数据帧到AP。
AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1X数据帧,和用上面AP产生的 MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次握手成功。若不等说明则AP 和 STATION 的密钥不相同,握手失败了。
破解
WPA—PSK破解原理
用我们字典中的Passphrase+SSID先生成PMK,然后结合握手包中的STA_MAC、AP_MAC、ANONCE、SNONCE计算PTK,再加上原始的报文数据算出MIC并与AP发送的MIC比较,如果一致,那么该PSK就是密钥。
环境
- VMware workstation 中安装的Kali Linux 2.0 (2018.1)
- TL-WN725N 无线网卡
PS:由于是虚拟机,注意是否usb挂载成功以及宿主机的VM usb服务是否开启。
插上USB无线网卡后,运行iwconfig以及lsusb,发现kali没有相关驱动:

安装驱动
- 安装内核源代码、内核头文件以及编译环境。
|
|
- 在虚拟机中安装网卡驱动。
由于官网找不到这个型号网卡在Linux上的驱动,通过google找到了可用的驱动,选择其中一个下载并安装即可:
- 运行
airmon-ng或者iwconfig,驱动安装成功:
|
|

破解过程
- 把usb网卡插入虚拟机,并开启网卡到监听模式,命令如下:
|
|

- 抓包查看所在区域无线网的状态,选择需破解的目标网络,命令如下:
|
|

- 抓取目标网络的握手包,命令如下:
|
|

如果抓不到握手包,说明没有人用这个热点。
- 重新打开一个terminal窗口,使用DEAUTH攻击使已经连接的客户端断开并重新连接,以产生握手包。(注意:抓握手包破解必须有合法的客户端才行)命令如下:
|
|
当获取到握手包时会出现红框内的信息:

- 通过四次握手包和字典破解密码
|
|

总结
编译Linux驱动还很烦人的,主要时间还是浪费在了驱动上,破解操作比较简单,基本安装参考文章来的。
参考文章: WPA-PSK无线网络破解原理与过程