前言
无线安全应用无所不在,企业和个人在使用开放的无线网络时,虽然知道存在安全风险,但仍然依赖于这种网络模式。为了保护用户、设备和服务系统的安全,企业安全团队必须重视无线网络的安全性。了解可能出现的无线网络攻击类型以及采取适当的保护措施至关重要。本篇将简析下Wifi安全的常见攻击手法。
IEEE 802.11
802.11 体系结构包括几类主要组件, AP(Access Point,无线接入点)、STA(Station,站)、IBSS、BSS、DS、ESS。
802.11标准将所有数据包分为3种:数据、管理、控制
- 数据帧:用于传输用户数据,如文件、视频或音频等。
- 管理帧:用于管理和维护网络,执行诸如扫描、连接和身份验证等功能。
- 控制帧:用于控制数据传输过程,包括管理数据传输速率和流动,以及处理碰撞等。
协议标准
在802.11标准中有多种不同的规范,每种规范都提供不同的数据传输速率、频率范围和安全特性。802.11标准已成为最为广泛的WLAN技术,并得到了各种设备的广泛支持。
- Wi-Fi 1 = IEEE 802.11b:支持2.4GHz频段的无线局域网协议,最高速率为11 Mbps。
- Wi-Fi 2 = IEEE 802.11a:支持5GHz频段的无线局域网协议,最高速率为54 Mbps。
- Wi-Fi 3 = IEEE 802.11g:支持2.4GHz频段的无线局域网协议,最高速率为54 Mbps。
- Wi-Fi 4 = IEEE 802.11n:支持2.4GHz和5GHz频段的无线局域网协议,最高速率为600 Mbps。
- Wi-Fi 5 = IEEE 802.11ac:支持5GHz频段的无线局域网协议,最高速率可达1.3 Gbps。
- Wi-Fi 6 = IEEE 802.11ax:支持2.4GHz和5GHz频段的无线局域网协议,最高速率可达10 Gbps。
2.4GHz与5GHz频段优缺点对比如下:
在802.11b 802.11g 802.11n标准中,2.4GHz频段被划分为14个信道,1~13信道无需申请可以随意使用。
每个信道的有效带宽为20MHz【实际带宽22MHz,其中2MHz为隔离频带】,相邻信道的中心频点间隔为5MHz,因此在多个信道之间会存在重叠的频率。
干扰最小的新的有3组,可同下图看出(1、6、11 和 2、7、12 和 3、8、13)
图自 《黑客大揭秘:近源渗透测试》
802.11 加密系统
无线网络的安全协议通常包括 WEP、WPA、WPA2、WPA3,其中较为安全的是WPA2和WPA3。使用WPA2/WPA3加密可以确保数据传输的安全性,避免被攻击者窃取或篡改。同时在使用时,建议使用高强度密码以增加被破解的难度。
WEP
全称是 Wired Equivalent Privacy,有线等效保密。WEP的核心采用RC4加密,加密密钥长度有64位、128位和152位。
其中有24bit的IV偏移向量,有效密钥长度为40位、104位、128位。IV位于每个802.11帧头部的字段,在加解密过程中使用。
WPA
全称是 WiFi Protected Access,WiFi访问保护,常用的无线网络认证机制之一。WPA有两种不同的模式:
- 企业模式 WPA-EAP
- 个人模式 WPA-PSK
WPA使用256位密钥,相比于WEP标准中使用的64位和128位密钥,并且在WPA中使用动态密钥加密,破解起来要比WEP困难。在WPA中密码越复杂,安全性越高。
TKIP算法 虽然比起WEP有巨大进步,但是其仍是基于相同的RC4加密算法进行的,也很容易存在相同的问题。
WPA2
WPA2 使用AES加密算法取代了WPA中的RC4,也使用更强完整性校验算法CCMP。
是WPA的高级版本,用两种更强大的加密和身份验证机制取代了RC4和TKIP(临时密钥完整性协议,Temporal Key Integrity Protocol):AES(advanced encryption standard,高级加密标准) 和分别使用密码块链接消息身份验证代码协议 ( CCMP ) 的计数器模式。
WAP2 对于家庭网络较为使用,但对于企业网络很脆弱。攻击者可以访问使用WPA2保护的网络,访问网络后他们可以访问密码。字典攻击是WPA2密码最容易受到攻击的部分,可以利用
airomon-ng对密码进行破解攻击。
WPA3
Wi-Fi Protected Access Version 3 Wi-Fi访问保护3代 2018年提出的新安全标准,采用AES-GCMP加密方式,缓解了WPA2中存在的技术缺陷,环境类KRACK攻击和deauth等无线攻击带来的影响,大大提高了配置、身份验证、加密上的安全性。
WAP3有两种安全模式:
- WAP3个人模式:提供 128 位加密,使用 WPA-PSK/预共享密钥。
- WAP3企业模式:提供 192 位加密,使用 AAA/RADIUS 认证服务器。
802.11 连接过程
接入点(AP)和无线客户端之间的连接包含3个过程:扫描、认证、关联。完成安全性校验后 AP向Station 发起四次握手。
扫描(探测):Station扫描所在区域存在的802.11网络
Station主动发送Req包,AP收到Req帧后回复Rsp帧
认证:Station与AP进行认证
AP确认 Station是不是802.11设备 确认彼此可以正常通讯
关联: Station与AP进行关联
Station与AP关联以便获得网络的访问权,关联成功后Station会收到AP的响应,包含成功的状态码和关联标识符
WPA/WPA2 四次握手
无线Wifi的四次握手就是 key exchange的过程。整个过程分为身份认证(authentication)、关联(association)和安全验证(security validation)。四次握手不是直接将密码发送到 AP,而是通过 EAPOL(Extensible authentication protocol over LAN)进行消息交换。下面将简单介绍下四次握手的流程。
Msg1
- AP
AP生成一个随机数ANonce 广播发送给Station
- Sta
Sta接收AP发送的随机数ANonce,计算生产PTK(Sta)
提取PTK的前16字节KCK 计算出MIC(Sta)
Msg2
- Sta
Sta发送SNonce和MIC(sta)给AP
- AP
AP收到Snoce后计算生成PTK(AP)
根据PTK的前16字节KCK 生成MIC(AP)
通过比对MIC(AP)和MIC(Sta)校验来PTK(AP)和PTK(Sta),如果一致则进行下一步握手
Msg3
- AP
AP根据GMK、ANonce、AP Mac 生成 GTK,使用PTK中间16字节KCK加密GTK
GTK = PRF(GMK + ANonce + Mac(AA))
根据PTK(AP)前16字节 KCK 生成 MIC(AP)
将加密后的GTK和MIC(AP)发送给Sta
- Sta
验证MIC(AP)与MIC(Sta)
将AP发送的加密后的GTK使用PTK中间16字节KEK进行解密
Msg4
- Sta
发送最后一次EAPOL-KEY给AP 进行最终认证
- AP
接收Sta发送的EAPOL-KEY进行认证,认证通过则代表握手成功。
如果认证成功 双方将安装各种计算出来的GTK和PTK 完成四次握手。
常见攻击方式
离线字典攻击
可通过aircrack-ng 对WPA-PSK 进行密码破解
查看可用的无线网卡 sudo airmon-ng
指定无线网卡开启监听模式 airmon-ng start wlan0
查看网卡是否开启监控 ifconfig
扫描附近的无线网络 sudo airodump-ng wlan0mon
BSSID :无线AP的硬件地址
PWR:信号强度,绝对值越小信号越强。值为负数
CH:无线网络信道
ENC:加密方式
ESSID:无线网络名
使用参数过滤扫描列表,确定扫描目标
使用命令:airodump-ng -w <扫描结果保存的文件名> -c <无线网络信道> --bssid <目标无线 ap 的硬件地址> <处于监听模式的网卡名称>处于监听模式的网卡名称>目标无线>无线网络信道>扫描结果保存的文件名>
1 | sudo airodump-ng -w output -c 11 --bssid E2:D7:74:C2:F9:44 wlan0mon |
使用aireplay-ng 对目标wifi发起攻击
使用命令:aireplay-ng -<攻击模式> <攻击次数> -a <无线AP硬件地址> -c <用户设备硬件地址> <处于监听模式的网卡名称>处于监听模式的网卡名称>用户设备硬件地址>无线AP硬件地址>攻击次数>攻击模式>
1 | sudo aireplay-ng -0 2 -a E2:D7:74:C2:F9:44 -c 56:D1:E9:EB:EA:2F wlan0mon |
发起攻击后,当airodump-ng 成功监听到了握手包,退出抓包后可以进行爆破。在桌面下生成了output-01.cap
使用aircrack-ng 暴力破解wifi密码
aircrack-ng -w 密码字典 <包含握手包的 cap 文件>包含握手包的>
1 | sudo aircrack-ng -w pass.txt output-01.cap |
这里的密码还需要跟着实际情况去构造,成不成功主要取决于密码字典的强度。
DeAuth Attack
Wifi中断攻击,攻击原理: Wi-Fi关联数据帧没有被加密,导致攻击者可以伪造管理帧,从而让攻击者可以发送人员 取消认证的数据包强行切断AP与客户端之间的连接。
1.查看可用的无线网卡 sudo airmon-ng
2.指定无线网卡开启监听模式 airmon-ng start wlan0
3.airodump-ng wlan0 对当前环境无线网络进行嗅探 根据ESSIS获取攻击目标MAC
扫描附近的无线网络 sudo airodump-ng wlan0mon
找到测试目标wifi Se及连接手机的MAC地址
WIFI MAC 26:04:1C:39:46:7F
Station MAC A2:B4:63:18:D6:C2
4.利用 airreplay-ng 进行 DeAuth 攻击
sudo aireplay-ng -0 100 -a 26:04:1C:39:46:7F -c A2:B4:63:18:D6:C2 -D wlan0mon
-0 选择DeAuth攻击模式
-a AP的MAC地址
-c 指定目标机器的mac地址
-D 如果不加的话会报错No such BSSID available.
攻击成功后 连接目标网络的机器都会被断开连接。
Wi-Fi 钓鱼
Wifiphisher
项目地址:https://github.com/wifiphisher/wifiphisher
工作原理:
- 嗅探附件无线区域内的AP,并创建一个伪造的AP
- Wifiphisher对目标AP连接的所有客户端持续发送大量的解除认证的数据包
- 向被攻击者推送一个钓鱼页面,要求被攻击者输入密码
实例如下:
sudo wifiphisher
然后会探测到周边的网络信号源,然后选择需要攻击的wifi(这里以手机热点MI11为例)
接着选择攻击模式,第一项“网络管理器连接“:模拟wifi失败然后需要重新输入密码。
回车之后会自动跳转到以下
wifiphisher会发射一个与原wifi相同名称的wifi,如果用户想要重新连接该wifi,会弹出一个重新输入密码的页面。
如果点击取消会如下如所示,还是伪装的比较真实的。
当用户输入密码时 我们便通过这种wifi调用的方式得到了wifi密码
密钥重装攻击
密钥重装攻击,其本质属于重放攻击,主要是利用 WPA/WPA2 协议在实现上的漏洞,出现在四次握手过程中。当客户端试图连接一个受保护的Wi-Fi网络时,AP将会发起四次握手完成相互认证。其中包含一个 AP 向客户端传输 Msg3 的过程,攻击者可以反复重放这一过程,导致 Nonce 被重置,继而导致传输的数据可以被攻击者解密,这便是 Krack攻击的大致流程。
具体原理分析如下:
在四次握手客户端与AP通信过程中,AP一般称为"Authenticator",表示认证方;客户端称为"Supplicant",表示请求方。在四次握手协议中都会生成一个会话密钥 PTK(Pairwise Transit Key),成对传输密钥,用来加密 AP 和 Station 通讯的单播数据包,AP 与每个 Station 通信用的PTK都是唯一的。PTK的包含五部分:PMK、ANonce、SNonce、Mac(AA)、MAC(SA),其中ANonce、SNonce为生成的随机数;MAC(AA)、MAC(SA)则为对应两端的MAC地址;PMK为主密钥,与前面四者共同组成PTK,PTK才是整个的用来加密数据的密钥。
客户端在如果要发送明文数据,则需要利用 PTK 和 Nonce 生产一个密钥,这个密钥中的 Nonce 并不是前面提到的 ANonce 或 SNonce,它会随着客户端每发送一个报文,Nonce 就会自动加1, Nonce 和 PTK 混合成为密钥流后,与明文数据进行异或运算便生成了密文数据。
所以在 Krack 攻击过程中 Nonce 重用,也就意味着密钥流重用。在四次握手过程中,客户端收到 AP 发来的 Msg3 后,会按照加密密钥,以用于加密数据帧。如果客户端没有收到 AP发送的 Msg3,AP 会重传 Msg3,但是 Station 并不会根据是否收到 Msg3 进行判断。 在AP重传 Msg3 之前,客户端已经在之前的 Msg4 发送后安装了 PTK,此时客户端肯定会向 AP 发送了加密数据。但由于前面重传 Msg3 导致 Nonce 被重用了,在数据加密时还是采用之前的 Nonce 值,所以客户端传输的两次数据中使用的是同一个 Nonce。
在四次握手过程中发过来的明文的msg4 和重传 msg3 后的msg4 处理Authenticator 之外没有不同(msg1和msg2中的Authenticator为同一个,在msg3中则为Authenticator+1),而 Authenticator 对 Msg4 又无影响。此时攻击者有了明文的 Msg4 和对应 Msg4 的密文,明文异或密文便可得到加密时的密钥流。
由于 Nonce 重置导致我们在加密数据时使用的密钥和前面的密钥流是同一个密钥,那我们就可以使用前面推到的密钥流去解密后面传输的数据,最终实现数据的解密。
攻击者作为中间人,放任四次握手过程中的前三次握手,在最后一次握手是阻断msg4的传输,导致 AP 重传Msg3、密钥重装、Nonce 被重置,再根据前面的明文和密文对应关系推到出密钥流,然后通过密钥流解密被重装后加密的数据,最终实现数据解密。
在Linux和Android系统重设定了接受加密Msg3重传,而在Windows 系统和 IOS 系统违背了 IEEE 规定的802.11标准,不会接受 Msg3 重传而逃过一劫。
对于Krack的防御,对于个人用户针对Krack最方便的方法就是及时更新或安装对应补丁;对于企业用户,可以考虑采用 WIPS 的防御系统,它采用的是与攻击者类似的思路,也是采用链路攻击的方式打掉攻击者的设备而实现保护。
References
https://www.krackattacks.com/
https://www.kanxue.com/book-47-748.htm
https://forum.butian.net/share/1819
https://cloud.tencent.com/developer/article/2032816
https://www.jianshu.com/p/1a1927304a4e
https://zhuanlan.zhihu.com/p/30229178
《黑客大揭秘:近源渗透测试》