一、事件概括
2017年10月16号,比利时安全研究员Mathy Vanhoef公开发表研究论文,称发现WPA2协议的KRA(Key Reinstallation Attacks)漏洞,并制作攻击视频演示,详细介绍了漏洞的机制。概括如下:
目前大部分WI-FI网络通过WPA2协议进行 handshake四次握手消息,产生用于后续数据通信的加密密钥。此次KRA漏洞发生在,协议中规定四次握手中第三个消息报文可以被篡改,导致攻击者可以通过KRACK攻击重置客户端加密密钥,诱导被害者客户端自动连入伪造WIFI。结合中间人攻击,可对被害者流量进行嗅探、劫持和篡改等,获取WIFI网络中的数据信息。
由于漏洞的根本原因在于WPA2协议的逻辑漏洞,所以「几乎所有支持WIFI的设备」都受到影响,包括Android, Linux, Apple, Windows, OpenBSD, MediaTek, Linksys等。
二、漏洞原理
Key reinstallation attacks密钥重装攻击
四次握手协商密钥过程中消息报文,见图1 EAPOL格式。其中重放计数replay counter字段用于检测重复报文,每次发送一个报文,重放计数加一,nonce字段为加密密钥生成所需要的随机数。
▲图1 EAPOL帧简化报文格式
以groupkey为例,首先Client 进入PTK-INIT状态,初始化(PMK),当接收到消息1进入PTK_START状态,client会生成随机数SNonce,计算临时TPTK,发送消息2(带SNonce)到AP,当Client接收到消息3, replay counter重放计数等有效的条件下,进入PTK-NEGOTIATING协商状态,同时标记TPTK为有效,发送消息4到AP,然后直接进入PTK-DONE 状态, 使用MLME-SETKEYS安装KEY。特别注意的是,此状态机过程来自于802.11标准,清晰的考虑了未收到消息2或者4的情况,消息1或者3会继续重传。具体如下:
▲图2 四次握手状态机,KEY用MLME-SETKEYS.request 命令字进行安装
当client作为Supplicant加入Wi-Fi网络,client与AP认证端Authenticator进行四次握手协商新的加密密钥,见下图3,在接收到四次握手中的第3个消息报文时会安装新生成的加密密钥,后续数据通信使用该密钥进行数据加密。
因为报文可能丢失,如果AP未接收到client的响应会重发第三个消息报文,所以client可能重复接收到第3个消息报文多次。每次当client接收到此消息,都会重新安装相同的加密密钥,然后重置协议加密使用到的nonce值及重放计数。
攻击者可通过嗅探、重放四次握手过程中的第3个消息报文,强制重置协议加密使用到的nonce值及重放计数,重安装加密密钥,从而攻击协议的加密机制,数据报文可被重放、解密及篡改。
该攻击方法同时可用于攻击已在使用的加密密钥、group key、PeerKey, TDLS及快速BSS切换握手等。
▲ 图3 GroupKey 场景四次握手
▲ 以上内容来源于互联网
三、漏洞利用
不同于以往的WPA攻击,KRACK并不针对WPA加密,而是通过多次重播四次握手的信息三(第三次握手),来强制复位客户端本地保存的WPA2密钥,即把原来正确真实的WPA密钥替换掉,不对密钥进行破解,而是直接替换成攻击者预设的密钥。
■ 1. 攻击条件:
攻击者必须在受害者客户端连接WIFI的覆盖范围内
■ 2. 攻击准备:
■ 3. 进行攻击(上半场):
■ 4. 进行攻击(下半场KRACK漏洞利用):
此时客户端状态保持在状态2(通过对访问点进行身份验证的身份验证状态),接下来开始发送四次握手中的信息三(状态3),实施Key Reinstallation Attack攻击(利用WPA协议层中的逻辑缺陷,客户端可以重复接收到第3个消息报文多次。每次当客户端接收到此消息,都会重新安装相同的加密密钥,然后重置协议加密使用到的nonce值及重放计数,来强制复位client本地保存的WPA2密钥,即直接替换原来WPA密钥为预先设置伪造AP的密钥)。
■ 5. 攻击尾声,达到目的:
因客户端与伪造AP为同一信道,客户端用替换的密钥自动连上伪造AP(客户端无任何异常反应),配合SSLStrip之类的工具做中间人,通过重定向、钓鱼网站、嗅探等手法达到数据窃密等最终目的。
四、影响范围
密钥重装漏洞攻击实际影响如下图,第一列代表不同类型的Client客户端,第2列表示不同Client类型是否接受消息3,第三列表示如果PTK配置,EAPOL消息明文是否接收,第4列表示首个消息3报文快速发送后是否接收明文EAPOL报文,最后两列表示是否受到此漏洞攻击的影响。
▲ 图4 密钥重装漏洞攻击实际影响 图片来自互联网
五、解决方案
▍如何检测
1. 利用krack攻击,需要伪造相同mac的AP节点,现有的无线安全检测体系可轻松发现此特征,因此针krack的检测就变得非常容易。
以下两款脚本均可发现可疑伪造AP:
https://github.com/SYWorks/waidps
https://github.com/SYWorks/wireless-ids/blob/master/wids.py
开源无线WIFI入侵检测&防护系统-WAIDPS亦能发现可疑伪造AP:
https://github.com/SYWorks/waidps
2. 黑客为了使客户端与原有AP断线(为了提高攻击效率,黑客等待客户端自动掉线可能性不大),可能会使用泛洪终端拒绝服务攻击,可以实现特定信道、特定AP或特定客户端网络瘫痪,从而掉线,当发生突然掉线无法重连、大面积掉线时需注意附近是否有可疑人员,同时WIPS能够检测此类攻击。
▍如何防御
六、结论
七、附录
Mathy Vanhoef公布网站:https://www.krackattacks.com/
Mathy Vanhoef研究论文:http://papers.mathyvanhoef.com/ccs2017.pdf
补丁及影响信息参考(供应商响应列表):https://github.com/kristate/krackinfo
----------------------------------END----------------------------------
中睿天下
中睿天下是专注于网络攻击检测的信息安全公司。以先进的「攻击关联化分析」技术为核心,依托“睿眼”等系列产品和资深的专家团队,覆盖网络攻击的全生命周期,为企业提供终端安全、应用安全和邮件安全等解决方案。
汇全球之智|明安全之道