WPA2 “KRACK” 缝隙简介与沉现

颁布功夫 2018-01-24

1、概述

        2017年10月,,,,,, ,,比利时安全钻研员Mathy Vanhoef披露了无线网络和谈WPA2存在高危缝隙,,,,,, ,,缝隙允许攻击者监听AP和接入点STA之间传输的Wi-Fi数据流量。。。。。。 。。作者颁布了缝隙验证演示视频[1][2]。。。。。。 。。由于缝隙存在于WiFi和谈层,,,,,, ,,理论上所有支持WPA2的客户端(桌面操作系统、移动OS、路由器、物联网设备等)都将受到“KRACK”攻击的影响(其透过WiFi传输的数据存在被篡改、嗅探的风险,,,,,, ,,诸如被攻击者的支付、财富账号、用户名、密码、邮件、照片等敏感信息可被截获,,,,,, ,,风险大影响领域广)。。。。。。 。。

        8827太阳集团ADLab通过对全零密钥缝隙的分析成功沉现“KRACK”攻击。。。。。。 。。

2、和谈简介

        802.11i是IEEE工作组为无线网络802.11和谈组界说的安全尺度。。。。。。 。。WPA实现了IEEE 802.11i尺度的大部门,,,,,, ,,是在802.11i完整之前代替WEP的过渡规划,,,,,, ,,后被WPA2取代[3]。。。。。。 。。WPA和WPA2都是基于802.11i,,,,,, ,,区别在于WPA2要求支持更安全的CCMP。。。。。。 。。WPA和WPA2均使用802.11i中界说的四次握手。。。。。。 。。

        下图是客户端(Station, STA)衔接接入点(Access Point, AP)的新闻交互过程。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        STA和AP在四次握手中协商会话密钥PTK(Pairwise Transient Key),,,,,, ,,PTK是由PMK和PKE推算天生,,,,,, ,,而PMK由ANonce、SNonce和双方MAC地址等推算天生。。。。。。 。。PTK分为KCK,,,,,, ,,KEK和TK三部门,,,,,, ,,其中,,,,,, ,,KCK用于MIC校验,,,,,, ,,KEK用于加密GTK,,,,,, ,,TK为数据加密密钥。。。。。。 。。四次握手实现后,,,,,, ,,传输数据使用TK进行加密。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

3、缝隙道理

        wpa_supplicant是linux系统下WiFi客户端,,,,,, ,,用于衔接无线网络,,,,,, ,,Android WiFi系统引入了wpa_supplicant,,,,,, ,,它的整个WiFi系统是以wpa_supplicant为主题来界说上层用户接口和基层驱动接口。。。。。。 。。

        下图为wpa_supplicant版本颁布功夫线。。。。。。 。。Android 6.0 WiFi系统是基于v2.5,,,,,, ,,Android 6.0+ WiFi系统是基于v2.6。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        v2.4版本引入了一个全零密钥缝隙。。。。。。 。。这个缝隙是由802.11尺度中的一句话引起的,,,,,, ,,该尺度间接建议在装置了TK之后从内存断根TK;;; ; ;2016年10月颁布的V2.6对这个缝隙进行了一次建复,,,,,, ,,由于思考不全面,,,,,, ,,代码依然存在缝隙;;; ; ;在2017年10月颁布的补丁中,,,,,, ,,最终建复了这个缝隙。。。。。。 。。下面结合代码对缝隙进行具体分析。。。。。。 。。

3.1.  V2.4(2.5)

        wpa_supplicant 2.4(2.5) 四次握手中的状态转移如下图所示:

        (1)当衔接到无线网络进行四次握手的时辰,,,,,, ,,首先进入PTK_INIT状态。。。。。。 。。

        (2)当接管到Msg1时,,,,,, ,,进入PTK-START阶段。。。。。。 。。wpa_supplicant会随机天生一个SNonce,,,,,, ,,推算一个一时PTK(TPTK),,,,,, ,,并且在Msg2中将SNonce发送给AP。。。。。。 。。

        (3)当接管到Msg3时,,,,,, ,,若是MIC和replay counter校验成功,,,,,, ,,进入PTK-NEGOTIATING状态。。。。。。 。。而后将TPTK赋值给PTK,,,,,, ,,并发送Msg4。。。。。。 。。

        (4)接着进入PTK-DONE阶段,,,,,, ,,装置PTK和GTK,,,,,, ,,并且打开802.1x的端口,,,,,, ,,使wpa_supplicant和AP正常接管和发送数据包。。。。。。 。。

        由于无线网络存在滋扰,,,,,, ,,可能会造成数据帧的迷失,,,,,, ,,因而在802.11i划定若是AP没有收到Msg2和Msg4,,,,,, ,,会相应的沉传Msg1和Msg3。。。。。。 。。从图中能够看出,,,,,, ,,当实现PTK装置后,,,,,, ,,若是收到沉传的Msg3,,,,,, ,,会沉新装置PTK。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        当wpa_supplicant收到Msg3后,,,,,, ,,会挪用wpa_supplicant_install_ptk函数装置PTK,,,,,, ,,其中wpa_sm_set_key函数掌管将密钥PTK.TK装置到驱动。。。。。。 。。在supplicant v2.4(v2.5)中,,,,,, ,,在挪用wpa_sm_set_key函数实现PTK的装置后,,,,,, ,,执行os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN),,,,,, ,,对PTK.TK进行清零操作。。。。。。 。。

        若是攻击者劫持Msg3或Msg4,,,,,, ,,造成Msg3的沉传,,,,,, ,,凭据状态转移图,,,,,, ,,STA会沉新装置PTK,,,,,, ,,而PTK.TK之前已经被清零,,,,,, ,,导致STA装置全零加密密钥。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

3.2.  V2.6

        下面结合V2.5和V2.6的源代码进行分析。。。。。。 。。

        (1)V2.6在wpa_sm结构体中增长了一个标志位tk_to_set。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        (2)V2.6批改了wpa_supplicant_install_ptk函数。。。。。。 。。在装置完PTK后,,,,,, ,,将tk_to_set赋值为0,,,,,, ,,当再次进入该函数时,,,,,, ,,若是tk_to_set==0,,,,,, ,,直接return,,,,,, ,,不再沉装PTK。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        (3)V2.6批改wpa_supplicant_process_1_of_4函数。。。。。。 。。当每次收到Msg1时,,,,,, ,,推算tptk,,,,,, ,,并将tk_to_set沉置为1。。。。。。 。。

8827太阳集团(Macau)股份有限公司-Official website

        针对V2.6,,,,,, ,,攻击者通过在沉传的Msg3之前插入一个伪造的Msg1,,,,,, ,,依然能够实现全零密钥的装置。。。。。。 。。固然STA初次装置PTK后对tk_to_set进行清零,,,,,, ,,但是紧接处置伪造的 Msg1时,,,,,, ,,将tk_to_set沉置为1,,,,,, ,,因而在最后处置沉传Msg3时,,,,,, ,,成功绕过wpa_supplicant_install_ptk函数的tk_to_set前提判断代码。。。。。。 。。

        在2017年10月颁布的补丁中,,,,,, ,,删除了wpa_supplicant_process_1_of_4函数中的sm->tk_to_set = 1;语句,,,,,, ,,建复了全零密钥缝隙。。。。。。 。。

4、缝隙沉现

        8827太阳集团ADLab “KRACK”沉现视频地址为:https://v.qq.com/x/page/m0538vcwqbb.html 。。。。。。 。。

        视频中出现的步骤及提醒字幕:

        1.本尝试使用Nexus6手机作为被攻击设备。。。。。。 。。

        2.首先,,,,,, ,,Nexus衔接到真实AP(SSID=wap,,,,,, ,,加密方式是WPA2,,,,,, ,,信路10,,,,,, ,,频率2457)。。。。。。 。。

        3.接着,,,,,, ,,运行Hostapd创建克隆AP(SSID=wap,,,,,, ,,加密方式是WPA2,,,,,, ,,信路3,,,,,, ,,频率2422)。。。。。。 。。

        4.同时,,,,,, ,,启动wireshark监听克隆AP网卡,,,,,, ,,捕获客户端数据。。。。。。 。。

        5.运行攻击剧本,,,,,, ,,指定AP的SSID和Nexus的Mac地址。。。。。。 。。

        6.运行ssltrip,进行Https降级。。。。。。 。。

        a.wireshark显示了成立衔接的数据包。。。。。。 。。

        b.攻击成功,,,,,, ,,Nexus衔接到克隆wap,,,,,, ,,频率2422。。。。。。 。。

        c.接见uk.match.com 显示当前衔接为http衔接,,,,,, ,,输入测试用户名和密码。。。。。。 。。

        d.wireshark能够成功捕获用户名和密码。。。。。。 。。

        e.关关Hostapd(频率2422)。。。。。。 。。

        f.沉新衔接到真实wap(频率2457),,,,,, ,,再次接见uk.match.com 显示衔接为https衔接。。。。。。 。。

        下表中列出了沉现视频中使用的设备:

8827太阳集团(Macau)股份有限公司-Official website

5、缝隙编号及建复情况

        “KRACK”涉及的有关缝隙编号:

        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)

        建复情况:

        2017年10月2日,,,,,, ,,Linux的hostapd和wpa_supplicant 补丁已颁布,,,,,, ,,详见 https://w1.fi/security/2017-1/。。。。。。 。。

        2017年10月10日,,,,,, ,,微软在Windows 10 操作系统中颁布补丁 KB4041676。。。。。。 。。

        苹果在最新的 beta 版本iOS、macOS、 tvOS和 watchOS中建复了无线网络安全缝隙。。。。。。 。。

6、参考链接

        [1]https://www.krackattacks.com/

        [2]https://papers.mathyvanhoef.com/ccs2017.pdf

        [3]https://zh.wikipedia.org/wiki/WPA