ITPub博客

首页 > IT基础架构 > 网络安全 > 浅论密钥重装攻击KRACK

浅论密钥重装攻击KRACK

网络安全 作者:IT168GB 时间:2018-07-24 16:23:58 0 删除 编辑

KRACK 即为 Key Reinstallation Attacks ,中文译为密钥重装攻击。是由比利时鲁汶大学信息安全研究人员 Mathy Vanhoef 提出的一种针对 WPA2 的攻击方式。


Mathy Vanhoef

时间线

•       2017.5.19    论文被提交

•       2017.6.16    向攻击涉及的供应商发出通告

•       2017.8.28   CERT/CC 向所有供应商发出通告

•       2017.10.15   作者在 https://www.krackattacks.com 公开披露细节,并演示了一个攻击实例

•       2017.11.1  论文在 CCS 会议报告

 

灵感的来源

“Ha. I wonder what happens if that function is called twice.”

      athy 在写另一篇论文时,注意到 WiFi 标准中一个安装密钥的函数,通常只会被调用一次,他猜想调用两次将会重置相关参数。

在正式开始介绍之前,为了便于理解,我先给出一些名词。

•        成对临时密钥 (Pairwise Transient Key ,PTK) 作为会话密钥。

•        成对主密钥  (Pairwise Master Key, PMK)

•        接入端 随机数 Anonce

•        客户端随机数 Snonce

•        临时密钥 (Temporal KEY, TK)

•        预共用密钥 (PSK)  同一无线路由器底下的每个用户都使用同一把密钥,区别于 802.1X 认证服务器来分发不同的密钥给各个终端用户

•        接收计数器 (Receive Sequence Counter,RSC)

•        信息完整性校验码 (MIC)

  接下来正式开始介绍

 

1  背景知识

1.1  WPA 的产生

WPA 全名为 Wi-Fi Protected Access ,有 WPA WPA2 两个标准,是一种保护 无线网络 安全的系统。它是研究者为了解决在前一代的 有线等效加密 WEP )系统中找到的几个严重的弱点:

•         WEP 不是强制使用的,使得许多设施根本就没有启动 WEP

•         WEP 并不包含 钥匙管理协定 ,却在用户间共用一个 秘密钥匙

•         RC4 所用的 24 比特的 IV (初始向量)并没有长到足以担保不会重复

而产生的。商业联盟   Wi-Fi Alliance 制定了 WPA 标准,对 WPA 标准的实际运用检验从 2003 年4 开始,并于 2003 年11 变成强制性。

1.2  WPA 802.11i 的关系

由于 WEP 已被证明不够安全,人们需要更安全的加密标准,但制定 802.11i 的工作比原先预期的久了很多,在大家越来越关心无线安全的同时,该标准的制定花费了四年才完成。芯片厂商已经迫不及待的需要一种更为安全的算法,并能成功兼容之前的硬件,所以, WPA 包含了与 WEP 兼容的 802.11i 子集合 , 实现了 IEEE   802.11i 标准的大部分,先于完整的 802.11i 推出。在完整的 802.11i 标准于 2004 年6 通过之后, Wi-Fi Alliance 2004 年9 推出了实现了 802.11i 强制性元素的 WPA2

1.3  WPA2 的改进

WEP 所使用的 CRC 循环冗余校验 )先天就不安全,在不知道 WEP 密钥的情况下,要篡改所载数据和对应的 CRC 是可能的,而 WPA 使用了名为 “Michael” 的更安全的 消息认证码 (在 WPA 中叫做 消息完整性查核 MIC ), WPA2 采用了计数器模式密码块链消息完整码协议 CCMP Counter CBC-MAC Protocol ),其安全性已被严格地证明了。

WPA 仍使用 RC4 ,使用可以动态改变密钥的 临时密钥完整性协议 Temporal Key Integrity Protocol TKIP ),以及 48 位的 IV WPA2 RC4 AES 取代。

 

2  攻击原理

2.1   四次握手

WPA WPA2 均使用 802.11i 中定义的四次握手,客户端( Station, STA )和接入点( Access Point, AP )通过四次握手相互验证和协商名为成对临时密钥( Pairwise Transient Key, PTK )的会话密钥。 PTK 通过成对主密钥( Pairwise Master Key, PMK )、 AP 随机数 ANonce STA 随机数 SNonce 和双方 MAC 地址等计算生成,其中 PMK 由登录密码等双方均已知的信息计算生成。而后续正常数据加密所使用的临时密钥( Temporal KEY, TK )即派生自 PTK 。各密钥、参数的关系如下图所示。


说明: IMG_256

 2-1  四次握手中各密钥、参数关系


 2-2  四次握手中所用数据报文格式  

说明: IMG_256


 2-3  四次握手过程

消息 1,2 与攻击关系不大,略过不提, WPA2 所遵循的 802.11i 标准中规定, AP 在发起连接时就安装组密钥 GTK, 客户端接收到消息 3 将安装 PTK 和组密钥 GTK, 发送消息 4 作为回应, AP 收到消息 4 安装 PTK, 未收到消息 4 将重发消息 3.

为了完成密钥重装,攻击者需要嗅探、重放四次握手过程中的第 3 个消息报文,强制重置协议加密使用到的 nonce 值及重放计数,重安装加密密钥。而会话密钥与双方 MAC 地址有关,所以,普通的中间人攻击是无法奏效的,需要运用 channel-based MitM 技术,伪造同名同 MAC 不同信道热点。

 

3  不同场景的攻击

3.1   接受明文重传消息 3 ,不安装全 密钥


攻击者作为中间人,首先放行消息 1,2,3 ,阻塞客户端对消息 3 的回复消息 4 。此时客户端安装了 PTK, 将发送以此 PTK 加密的数据, nonce 1 ,攻击者将此数据阻塞。


AP 未接收到消息 4 ,将重发消息 3 ,攻击者将其转发给客户端。客户端重装 PTK, 此时,攻击者将先前拦下的消息 4 发送给 AP ,此后发送的加密数据将重用 PTK, nonce 被重置为 1

nonce 重用引发的后果与所采用的数据保密协议密切相关。三种数据保密协议:

•       临时密钥完整性协议 TKIP

•       计数器模式密码块链消息完整码协议 CCMP

•       伽罗瓦 / 计数器模式协议 GCMP

所采用的数据加密算法分别为流密码 RC4 、认证加密算法 AES-CCM 和认证加密算法 AES-GCM ,其中 AES-CCM AES-GCM 的加密部分都是基于 CTR 模式的流式加密。明文数据与算法生成的密钥流按比特逐位异或后得到密文数据。流式加密的问题是在密钥固定的条件下重用 nonce 时总会生成相同的密钥流。这一特性可以被利用来解密数据包。

     KeyStream 表示密钥流, P1 P2 表示两组明文数据, KeyStream P1 P2 具有相同的比特长度,则两组明文对应的密文分别为:

•       C1 = P1  ⊕ KeyStream

•       C2 = P2  ⊕ KeyStream

攻击者可以通过网络收集到密文 C1 C2 ,如果攻击者知道密文 C 1 对应的明文 P1 ,则可以据此恢复明文 P2 的信息:

•       P2 = C2  ⊕ keystream = C2 ⊕(P1 ⊕ C1)

在实际情况中,通常能找到已知内容的数据包,所以可以认为在密钥固定的条件下重用 nonce 时获得密文数据包可根据上述过程解密。即使已知内容的数据包确实无法获得,当对消息类型有足够的知识(比如消息为英文字符)的条件下,也可能解密还原出明文。

    WAIT!!!!!!!! AP 安装 PTK 了吗 ?

客户端重装 PTK 之后,发送的消息 4 将被加密 , 而此时 AP 尚未安装 PTK, 无法识别,消息 4 将被丢弃,攻击失败了吗?

     802.11 标准表述存在瑕疵:

“On reception of message 4, the Authenticator verifies that the Key Replay Counter field value is one that it used on this 4-way handshake.”

注意其表述为“ one” ,也就是只要先前用过的都行。凡是照此实现的算法,均可用之前的消息 4 取代。使得攻击者可以完成一个完整的四次握手过程,使 AP 安装 PTK 。进而实现对通信数据包的解密。此时,攻击者并不知道实际安装的密钥。

 

3.2   接受明文重传消息 3 ,安装全 密钥

Linux Android 系统中,实现 WPA2 的是 wpa_supplicant. 由于其 2.3 版本以上对协议的错误实现


使得安装 PTK 后将 TK ,客户端再次收到消息 3 重装密钥时,会从内存中取回 TK 。在这种情况下,则会导致安装全 密钥 TK ,使得攻击者不仅能解密数据包,还能进行流量劫持。


基本步骤与前例一致,区别只在于此时安装的 TK 是全 ,攻击者知道了 TK, 可以进行流量劫持,监控并篡改客户端发出的全部数据

3.3   接受加密重传消息 3 (转变为接受明文重传)

Linux Android 系统中,虽然设定为接受加密重传的消息 3 ,但其也会接受明文重传的消息 3 ,只要重传的消息 3 紧跟在原始消息 3 之后。

     无线网卡会将其送入 CPU 的接收队列中。

    CPU 先处理第一条消息 3 ,发出第一条消息 4 , 发出命令,让无线网卡安装密钥。

    CPU 再处理第二条消息 3 ,发出第二条消息 ,无线网卡使用 PTK 对其加密。 CPU 发出命令 , 无线网卡重装密钥, nonce 被重用为 1 。被转化为接收明文重传消息 3


2-7        接受加密重传消息 3 (被转变为接受明文)

3.4   仅接受加密重传消息 3

攻击者先等待客户端完成一次完整的四次握手,在第二次的四次握手过程中,阻塞消息 3 ,等待 AP 重传的消息 3 到来,一起交付给客户端的无线网卡。

     无线网卡使用当前的 PTK 将其解密,送入 CPU 的接收队列。

    CPU 先处理第一条消息 3 ,发出第一条消息 4 发出命令,让无线网卡安装新的密钥 PTK’

     系统并不对对消息 3 加密的密钥进行检查,所以尽管第二条消息 3 是用以前的 PTK 进行的加密,对其不加区别。所以 CPU 直接发出第二条消息 ,发出命令,让无线网卡重装密钥, nonce 被重用为 1.


3. 5   不听话的孩子幸免于难?


Windows iOS  违背 802.11 标准,不接受消息 3 重传,所以其免疫四次握手攻击。

但是,组密钥握手攻击, Fast BSS Basic ServiceSet  Transition FT )握手攻击然有效。


最后,我们一起来看一个攻击实例 , 视频演示可在 https://www.krackattacks.com 查看

 

4 攻击实例

利用安卓设备存在的可被强制安装全 密钥漏洞,获取用户登录名及密码等敏感的个人信息

4.1   工具

工具

•       探测漏洞是否可用的脚本,

•       漏洞利用脚本

•       https 降级工具 sslstrip

•       抓包工具 wireshark

4.2   攻击过程

安卓手机在没有恶意设备接入时连接到 WPA2 加密的无线网络


4-1        接入加密网络

手机访问 macth.com, 安卓手机默认开启 SSL (安全套接层)


4-2        网站开启 SSL

启动攻击脚本 krack-all-zero-tk.py ,各项信息如下

真实热点 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

 


4-3        启动攻击脚本

启动 enable_internet_forwarding.sh 脚本,使得钓鱼热点可用


4-4        使钓鱼热点可用

启动 sslstrip, 去除 SSL 保护


4-5        去除 SSL 保护

接下来,使用 wireshark 抓包,手机再次连接无线网络。


4-6        再次连接

此时,手机首先依然连接到真实热点,通过构造 CSA(Channel Switch Announcement  信道切换公告 ) 信标 (beacon) 的方式来强制切换到钓鱼热点。


4-7       CSA 元素格式


说明: IMG_256

4-8        攻击成功

手机再次连接网页, SSL 保护已去除


4-9        SSL 保护已去除

输入账号密码登录 说明: IMG_256


4-10  登录

查看 wireshark 捕获数据 说明: IMG_256


4-11   WPA2 保护已被绕过


本文转载至“安全客”( https://www.anquanke.com/post/id/152210   ),原文编辑:边边

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31510736/viewspace-2158424/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-12-11

  • 博文量
    157
  • 访问量
    298576