上次简介了KRACK、四次握手的内容以及针对可接受明文重传设备的四次握手攻击方法,这次介绍四种类型的握手攻击方法:仅接受加密信息重传设备的四次握手;Group Key 握手(即时密钥安装);Group Key 握手(延时密钥安装)和BSS过渡(FT)握手。
在介绍攻击方法之前,先科普一点相关的的密码学知识。
密码学知识
流密钥加密:利用动态的密钥来加密信息,将根据动态参数不断变化的密钥流 与 待加密的明文进行加密操作从而得到密文。
流密钥特点:如果参数一直变化(比如01234…..),可知密钥不会重复(你不可能获得两条用相同密钥加密的信息)
WPA加密协议:此加密协议用的是stream cipher加密(利用随机密钥异或明文)
异或(#):若已知C=A#B D=A#G,那么C#D=B#G 若已知B或G任何一个的值,那么另一个可知
由上文可知WPA用的就是流密钥加密,如果我们可以获得两条用相同密钥加密的不同明文,那我们就可以破解加密部分的内容。
攻击仅接受加密信息重传设备的四次握手
有些设备是不接受明文传输的消息3,他们在安装了PTK后,只接受加密的信息,那如何攻击呢?
攻击者发现:部分Android设备虽然在第一次接受了消息3后就安装了PTK,从而不接受明文信息,但是它会接受两条一起传过来的消息3,它会把他们放在缓冲内逐条读取处理。
而且,**用此方法触发的攻击可以达到破解部分加密数据的能力。** </span> </span>
所以:攻击者要从第二条消息后就截获消息3。AP未接到消息4,将重发消息3,至此截获了两个消息3(等待第二条),攻击者将两条消息3发给客户端,客户端回复第一条后第一次安装PTK,并发送用初始密钥加密的消息4(**攻击者此时获得用初始密钥加密的消息4),随后第二条消息3触发重新安装漏洞,客户端重置计数器随机数等,攻击者即可等待重新安装后用初始密钥加密的用户数据**,这条用户数据的密文被攻击者截获后,根据上面的原理即可知道用户数据那条信息的内容。</span>
图中符号:Enc(“明文”)表示加密的消息,上角标-计数器的数值,下角标-PTK。
攻击 Group Key 握手(即时密钥安装)
针对Group Key握手的攻击目的都是实现重放攻击,包括即时和延迟。
即时密钥安装的意思 就是 认证端发送消息1后立即安装GTK 。
目的:攻击者想重放AP发送的广播帧
困难:请求端有重放计时器,可以识别新旧信息
方法:重置重放计时器
实施过程:截取消息2,导致AP重发消息1,截取重传的消息1,等待AP发送广播帧,存下来并传给请求端(此时请求端收到第一次广播帧),再把消息1重发给请求端,导致重安装计数器,此时即可重放广播帧。
攻击 Group Key 握手(延迟密钥安装)
基于即时密钥安装的改进方法:将消息2传给AP后再进行攻击,关键是要收集到重传的消息1
攻击 BSS过渡(FT)握手
攻击FT握手区别于别的握手在于,此次攻击的是AP
在同一个网络的不同AP之间漫游的时候,使用这个协议(类似校园网,一个网络多个AP)
原则上AP和客户端要在认证阶段结束后就安装PTK,802.1x端口在握手结束后再打开(端口打开的意思是非认证信息可以通过)即当重新关联的时候不再重新安装PTK
以下是TF握手原理图
前两条消息是认证消息(认证帧),后两条消息是来传送GTK和身份验证的(叫做重新关联帧)
现实中大部分设备会在第4条消息后安装PTK,所以可以利用重发第三四条消息重置相关随机数
目的:重放数据帧
方法:窃听握手过程,拿到第三帧,重放给AP,AP重置随机数,可重放用户数据给AP 来进行重放攻击