你的Wi-Fi 还安全吗?全球重大漏洞WPA2 KRACK 详细分析报告

你的Wi-Fi 还安全吗?全球重大漏洞WPA2 KRACK 详细分析报告近日,Wi-Fi加密协议被曝光存在重大安全漏洞,用于保护Wi-Fi网络安全的WPA2安全加密协议已被黑客破解。这种被称作“Krack”(密钥重装攻击)攻击意味着用户连接的绝大多数Wi-Fi已经不安全了,包括家中的路由器Wi-Fi,都存在被盗号的风险。攻击者可通过此漏洞获取万能密钥来访问WPA2网络,从而窃听用户的通讯信息。究竟这个漏洞是由哪些缺陷引起的?会对用户造成什么影响?作为技术人的我们,又…

大家好,又见面了,我是你们的朋友全栈君。

近日,Wi-Fi加密协议被曝光存在重大安全漏洞,用于保护Wi-Fi网络安全的WPA2 安全加密协议已被黑客破解。这种被称作“Krack”(密钥重装攻击)攻击意味着用户连接的绝大多数Wi-Fi已经不安全了,包括家中的路由器Wi-Fi,都存在被盗号的风险。攻击者可通过此漏洞获取万能密钥来访问WPA2网络,从而窃听用户的通讯信息。

图片描述

究竟这个漏洞是由哪些缺陷引起的?会对用户造成什么影响?作为技术人的我们,又该如何完美防御?今天我们邀请到了阿里安全部的高级安全专家东帆,来回答以上问题。

漏洞概述

比利时安全研究员Mathy Vanhoef发现的WPA2协议的KRA(Key Reinstallation Attacks)漏洞,利用WPA2协议标准加密密钥生成机制上的设计缺陷,四次握手协商加密密钥过程中第三个消息报文可被篡改重放,导致在用密钥被重新安装。

Wi-Fi网络通过WPA2 handshake四次握手消息协商用于后续数据通信的加密密钥,其中交互的第三个消息报文被篡改重放,可导致中间人攻击重置重放计数器(replay counter)及随机数值(nonce),重放给client端,使client安装上不安全的加密密钥。

此漏洞攻击方式被命名为Key reinstallation attacks密钥重装攻击,除了影响已经在用的数据加密密钥,同时也影响PeerKey, group key, Fast BSS 切换FT握手等,会导致Wi-Fi通信数据加密通道不安全,存在被嗅探、篡改和重放等风险,攻击者可获取Wi-Fi网络中的数据信息。

图片描述

几乎所有支持Wi-Fi的设备(Android, Linux, Apple, Windows, OpenBSD, MediaTek, Linksys等)都面临安全威胁,危害较大。

该漏洞相关影响取决于被攻击的握手过程和数据加密协议,例如AES-CCMP可被重放和解密,TCP流量存在被劫持和注入恶意流量的可能,WPATKIP和 GCMP可被重放、篡改及解密,影响会更大,因为GCMP两端使用的相同的认证密钥。

相关CVE如下,其中每个CVE代表一种特定场景下的密钥重装攻击。

CVE-2017-13077:四次握手过程中重装PTK-TK加密密钥对
CVE-2017-13078:四次握手过程中重装GTK
CVE-2017-13079:四次握手过程中重装IGTK
CVE-2017-13080:Group key 握手过程中重装GTK
CVE-2017-13081:握手过程中重装IGTK
CVE-2017-13082:接收重传的快速BSS切换重关联请求,在处理过程中重安装PTK-TK加密密钥对
CVE-2017-13084:在PeerKey握手过程中重安装STK KEY
CVE-2017-13086:在DTLS握手过程中重安装TDLS PeerKey
CVE-2017-13087:在处理WNM睡眠模式响应帧过程中重安装GTK
CVE-2017-13088:在处理WNM睡眠模式响应帧过程中重安装IGTK

WPA2协议介绍

WPA全名为Wi-FiProtected Access,有WPA和WPA2两个标准, WPA(Wi-Fi Protected Access)加密方式目前有四种认证方式:WPA、WPA-PSK、WPA2、WPA2-PSK,采用的加密算法有两种:AES(Advanced Encryption Standard高级加密算法)和TKIP(Temporal Key Integrity Protocol临时密钥完整性协议)。

由于WEP已被证明为不安全的协议,在802.11i协议完善前,采用WPA为用户提供一个临时性的解决方案。该标准的数据加密采用TKIP协议(Temporary Key Integrity Protocol),TKIP的两个主要功能是:逐包密钥及消息完整性检查(MIC),与WEP相同的加密算法RC4来实现这一点,虽然TKIP解决了所有已知的WEP问题,但WPA2的AES加密更安全,适应更广泛的工业标准并在实践中广泛使用。

WPA2是WPA的增强型版本,与WPA相比,WPA2新增了支持AES的加密方式,采用AES加密机制。

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 场景四次握手

漏洞根因分析及影响

802.11协议标准仅提供粗粒度的伪码描述四次握手的状态机,但并未清晰描述特定的握手消息应该在什么时候处理。

密钥重装漏洞滥用了消息3重传的流程,首先在Client和AP之间确定MitM中间人攻击的点,在AP接收到消息4之前不断重传篡改后的消息3,导致Client 重新安装已用的加密密钥,同时重置nonce值。

实际情况,实施此攻击的时候,并非所有的Wi-Fi客户端client都正确实现了此状态机,Windows和iOS未接收处理消息3的重传,这违背了802.11标准,所以密钥重装漏洞攻击的时候并未生效产生漏洞,但在group key 握手的场景下仍然存在安全漏洞,此外在FT 握手情况下仍可能被间接攻击。

对于Android 6.0影响更大,在此攻击的情况下,强制使用了可预测全零的加密密钥。

密钥重装漏洞攻击实际影响如下图4,第一列代表不同类型的Client客户端,第2列表示不同Client类型是否接受消息3,第三列表示如果PTK配置,EAPOL消息明文是否接收,第4列表示首个消息3报文快速发送后是否接收明文EAPOL报文,最后两列表示是否受到此漏洞攻击的影响。

特别需要注意的,研究者当前并没有破解Wi-Fi网络的密码,也并没有通过四次握手协商过程的攻击破解新生成的加密密钥。

图片描述

图4 不同Clients的实际漏洞效果

漏洞影响范围

此漏洞存在于协议标准设计缺陷,所有支持WPA2的客户端都受到影响。
攻击主要面向WPA2客户端设备。

漏洞安全加固建议

1、漏洞攻击需要实施MitM中间人攻击,条件许可建议合理部署无线入侵防御系统或者VPN加密,及时监测恶意钓鱼Wi-Fi,禁止私搭AP等;
2、及时升级此漏洞的安全补丁(有补丁的情况),更新WPA2客户端到最新版本;
3、仅连接可信Wi-Fi,公共场合尽量使用蜂窝移动网络,Wi-Fi连接不用的情况下建议禁用,攻击面最小化。

注:
1、Linux的hostapd和wpa_supplicant 补丁已公布,详见 https://w1.fi/security/2017-1/
2、微软在Windows 10 操作系统中发布补丁 KB4041676;
3、苹果在最新的 beta 版本iOS等中修复了无线网络安全漏洞。

参考文档:
[1]https://papers.mathyvanhoef.com/ccs2017.pdf
[2]https://techcrunch.com/2017/10/16/wpa2-shown-to-be-vulnerable-to-key-reinstallation-attacks/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136898.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 身份验证错误 要求的函数不受支持 Windows远程桌面连接

    身份验证错误 要求的函数不受支持 Windows远程桌面连接PhpStorm绝对是PHP开发最好的开发工具。之前好好的能远程桌面连接到服务器,但是今天来就不能连接上了,并提示:身份验证错误。要求的函数不受支持。猜想可能是Windows又更新了什么鬼,后面查询资料知道是由于CredSSP加密Oracle修正的原因,这里我整理了下解决方案,希望能帮到你。微软给出解决方案:https://support.microsoft.com/zh-…

    2022年6月11日
    532
  • Android 开发环境详细概述

    Android 开发环境详细概述理解AndroidApp开发环境搭建的部分以及他们之间如何联系,协调工作(会和理解为什么要去做,知其然知其所以然)掌握环境搭建的步骤掌握配置环境项的用途,以方便我们的开发操作Android开发组成Java+AndroidSDK+开发工具(IDE)Android的开发语言是Java,只有安装JDK才能让Java运行起来Android的SDK提供了运行和硬件开发环境Eclipse开发工具可以提高编…

    2022年7月23日
    11
  • Linuxstat_linux内核编译的基本流程

    Linuxstat_linux内核编译的基本流程stat函数讲解:表头文件:#include#include定义函数:intstat(constchar*file_name,structstat*buf);函数说明:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:执行成功则返回0,失败返回-1,错误代码存于errno错误代码:ENOENT参数file_name指定的文件不存在ENOT…

    2022年8月21日
    11
  • java+widthstep,i*step+j*channels+k 以及widthStep大小计算及原理

    java+widthstep,i*step+j*channels+k 以及widthStep大小计算及原理一直以为IplImage结构体中的widthStep元素大小等于width*nChannels,大错特错!查看OpenCV2.1的源码,在src/cxcore/cxarray.cpp文件中,找到cvInitImageHeader函数,函数中对widthStep大小赋值如下:image->widthStep=(((image->width*image->nChannels…

    2022年6月9日
    38
  • 进程间通信方式——共享内存「建议收藏」

    进程间通信方式——共享内存「建议收藏」进程间通信方式共享内存和与共享内存函数详解,以及模拟共享内存实现进程间通信,以及共享内存的优缺点。

    2022年8月31日
    2
  • 新建移动apn让网速变快(移动apn接入点哪个快)

    4G网络可以给我们带来畅快的网速体验,其实我们目前使用的LTE网络根据网速还分为多个标准,标准对4G网络的支持也不太一样,但是有时我们任然可以感觉到在有4G基站的地方上网网速也不是那么的满意,这是怎么回事儿呢?TD-LTE和FDD-LTE尽管被宣传为4G无线标准,但它其实并未被3GPP认可为国际电信联盟所描述的下一代无线通讯标准IMT-Advanced,因此在严格意义上其还未达到4G的标准。APN…

    2022年4月12日
    158

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号