导语:在协议中还存在一条危险的注释“一旦安装后,就可从内存中清除加密密钥”,若按此注释进行实现,在密钥重装攻击时会从内存中取回已经被0覆盖的key值,从而导致客户端安装了值全为零的秘钥。而使用了wpa_supplicant的Linux及Android设备便因
360天马安全团队(PegasusTeam)点评:
本次的WPA2“密钥重装攻击”,基本原理为利用WPA协议层中的逻辑缺陷,多次重传握手过程中的消息3从而导致重放随机数和重播计数器,为攻击者提供了利用条件。
在协议中还存在一条危险的注释“一旦安装后,就可从内存中清除加密密钥”,若按此注释进行实现,在密钥重装攻击时会从内存中取回已经被0覆盖的key值,从而导致客户端安装了值全为零的秘钥。而使用了wpa_supplicant的Linux及Android设备便因此遭受严重威胁。 整体来说,此次漏洞的危害程度弱于WEP漏洞的影响,但对于Linux及Android设备需额外注意要及时更新修补此漏洞,防止遭受嗅探、劫持等攻击。
需要注意的是:
此攻击无法破解WIFI密码,同时更改WiFi密码无法缓解此类攻击。
攻击主要面向客户端设备,路由器可能并不需要进行安装更新。
WPA/WPA2协议还是安全的,一些客户端的实现需要更改,可通过向下兼容的方式进行修复,无需更换设备。一旦修复更新发布,请立即为您的设备安装。
截止北京时间2017.10.17 14:00,官方并未公布该漏洞的POC/EXP。
概况
近日,安全研究员 Mathy Vanhoef 发现 WPA2 协议层中存在逻辑缺陷,几乎所有支持Wi-Fi的设备(包括但不限于Android, Linux, Apple, Windows, OpenBSD, MediaTek, Linksys)都面临威胁,其传输的数据存在被嗅探、篡改的风险。攻击者可获取WiFi网络中的数据信息,如信用卡、邮件、账号、照片等,危害巨大。
这种攻击方式被命名为密钥重装攻击(Key Reinstallation Attacks)。漏洞成因在于802.11标准中没有定义在4次握手(和其他握手)中何时应该安装协商密钥,攻击者可通过诱使多次安装相同的密钥,从而重置由加密协议使用的随机数和重放计数器。
图1
以下为此次漏洞相关的CVE编号:
CVE-2017-13077: 在四次握手中重装成对加密密钥(PTK-TK) CVE-2017-13078: 在四次握手中重装组密钥(GTK) CVE-2017-13079: 在四次握手中重装完整组密钥(IGTK) CVE-2017-13080: 在组密钥握手中重装组密钥(GTK) CVE-2017-13081: 在组密钥握手中重装完整组密钥(IGTK) CVE-2017-13082: 接受重新传输的快速BSS切换(FT)重新关联请求,处理的同时重装成对加密密钥(PTK-TK) CVE-2017-13084: 在PeerKey握手中重装STK密钥 CVE-2017-13086: 在TDLS(Tunneled Direct-Link Setup,通道直接链路建立)握手中重装TDLS PeerKey(TPK) CVE-2017-13087: 处理无线网络管理(WNM)休眠模式响应帧时重装组密钥(GTK) CVE-2017-13088: 处理无线网络管理(WNM)休眠响应帧时重装完整组密钥(IGTK)
影响范围
由于漏洞缺陷存在于WiFi协议层,这意味着所有支持WPA2的客户端都将遭受影响。根据描述,此密钥重装攻击可用于:
WPA1及WPA2 个人及企业网络。 Ciphers WPA-TKIP, AES-CCMP 和 GCMP
虽然Windows及iOS在实现“4次握手”时,不接受“消息3”的重传(未遵守802.11标准),在4次握手中不会遭到密钥重置攻击的影响,但在Group Key Handshake以及802.11r中的FT handshake中依然可被攻击。
图2
其中,wpa_supplicant 2.4及2.5版本实现了协议注释内容“一旦安装后,就可从内存中清除加密密钥”,将导致客户端会安装值全为零的秘钥。因此使用了这些wpa_supplicant版本的Linux及Android设备将遭受严重威胁。
下图为wpa_supplicant版本发布时间线:
图2-2
官网的补遗中提到,对于wpa supplicant 2.6,采用John A. Van Boxtel提出的方法依然可以攻击—— 通过以与原始消息1中使用的相同的ANonce伪造的消息1,然后将重传的消息3转发给受害者。
时间线
2017年7月14日左右,Mathy Vanhoef – 便向所测产品的设备供应商发出了通知。在与多个供应商沟通后发现漏洞普遍存在于几乎所有设备上,实为协议的漏洞而非实现的问题。
2017年8月24日,Mathy Vanhoef在Black Hat Webcast上发表了《[Securely ImplementingNetwork Protocols: Detectingand Preventing Logical Flaws][4]》,讲述对网络协议中逻辑漏洞的检测方法。
2017年8月28日,CERT/CC向供应商发出了广泛的通知。
2017年10月6日,上线漏洞官网,及Paper上披露漏洞细节。
截止目前,利用工具暂未公布。
防护
及时更新无线路由器、手机,智能硬件等所有使用WPA2无线认证客户端的软件版本。(有补丁的前提下)
有条件的企业及个人请合理部署WIPS(无线入侵防御系统),及时监测合法WiFi区域内的恶意钓鱼WiFi,并加以阻断干扰,使其恶意WiFi无法正常工作。
无线通信连接使用VPN加密隧道及强制SSL规避流量劫持与中间人攻击造成的信息泄漏。
在不使用WiFi时关闭手机WiFi功能,公共WiFi下不要登录有关支付、财产等账号、密码。如需登录、支付,将手机切换至数据流量网络。
家用WiFi该怎么使用就怎么使用,WPA/WPA2本身是安全的,也不用修改WiFi密码。
修复情况
2017年10月2日,Linux的hostapd和wpa_supplicant 补丁已公布,详见 https://w1.fi/security/2017-1/。
2017年10月10日,微软在Windows 10 操作系统中发布补丁 KB4041676
苹果在最新的 beta 版本iOS、macOS、 tvOS和 watchOS中修复了无线网络安全漏洞
详情分析
本次攻击主要是针对WPA2协议的四次握手过程,使用了一种叫做Key重新安装攻击(KRACK)新的攻击技术。我们知道当客户端试图连接到一个受保护的WiFi网络时,AP将会发起四次握手,完成相互认证。
图3
同时,在四次握手过程中将会协商好一个新的用于加密接下来通信数据的加密密钥。
图4
在四次握手过程中,当客户端收到AP发来的Message 3后将会安装加密密钥key,用于加密正常的数据帧。因为message可能丢失或者被丢弃,如果AP没有收到响应AP将会重新传输message3,这样客户端可能会收到多次message3。客户端每次收到此message都会重新安装加密key,从而重置加密协议使用的增量发送数据包号nonce和接收重放计数器。而攻击者可以通过收集和重放重新发送四次握手中的message3强制重置nonce,从而成功攻击加密协议,解密客户端发送通信数据包,截获敏感信息。
另外,这一漏洞似乎是由WiFi标准中的一句话引起的。该标准建议,一旦首次安装,就可以从内存中清除加密密钥。当客户端收到四次握手的重传message3时,它将重新安装现已清除的加密密钥,有效地安装了一个全为零的密钥。
值得注意的是本次攻击没有获取到wifi网络的密码,也没有获取在四次握手过程中协商的新生的加密密钥。
演示视频分析
1、首先测试设备连接真实的TestNetWork网络:
图5
2、开启WireShark并监听在稍后被设为钓鱼热点的网卡:
图6
3、 攻击演示:
真实热点Real AP:
Ssid: testnetwork
MAC:bc:ae:c5:88:8c:20
Channel:6
被攻击客户端target:
MAC: 90:18:7c:6e:6b:20
伪造同名同MAC热点(Rouge AP):
Ssid: testnetwork
MAC:bc:ae:c5:88:8c:20
Channel:1(信道不同)
图7
注入CSA beacon pairs 将客户端信道变为1,也就是迫使客户端target与rouge AP通信。伪AP向目标target发送Disassociate数据包,使其解除关联。
4.利用网卡建立目标AP的伪造热点,迫使客户端连接到伪造热点上。此时设备经历重连,WiFI状态为正在认证。
当目标targe与真实AP完成认证过程,准备发起连接时,注入CSA beacon pairs,使信道切换到channel 1 实施中间人攻击,同时客户端状态保持在state 2,接下来开始发送四次握手中的message 3,实施密钥重新安装(Key Reinstallation Attack)攻击。
图8
图9
5、此时密钥重装攻击已经执行成功,客户端已连接上伪造热点:
图10
6、在此伪造热点中,利用钓鱼网站获取用户的账号信息:
图11
7、用户在此钓鱼网站提交的账号信息可被攻击者获取。
图12
Q&A
Q:我是否应该修改 Wi-Fi 密码?
A:家用WiFi该怎么使用就怎么使用,WPA/WPA2本身是安全的,也不用修改WiFi密码。
Q:我正在使用WPA2-CCMP。这是否仍然面临安全风险?
A:同样存在安全隐患,WPA/WPA2,PSK和Enterprise都存在风险。
Q:四次握手在理论上被证明是安全的,您的攻击为何能够实现?
A:这个攻击和之前对WPA2协议安全的证明并不矛盾。因为在证明的时候已经默认密钥只会被安装一次。
Q:是否已经有人开始对这一漏洞加以实际利用?
A:目前我们没有公布POC/EXP代码
Q:我是否应该暂时使用 WEP,直到我的设备完成补丁安装?
A:不需要,该怎么使用就怎么使用,WPA/WPA2本身是安全的
Q:与其它针对 WPA2 的攻击相比,这种攻击方式有何特点?
A:这是一种不需要依靠密码猜测的 WPA2 协议攻击手段。