4.5 无线局域网MAC层接入安全分析
IEEE 802.11实施了4个主要的安全协议:WEP、WPA、WPA2和WPA3。实施安全协议是为了以认证和加密的形式为无线网络提供安全性保障,而不仅仅是为互联网提供无线介质。尽管WEP不再被接受为可靠的安全协议,也没有在新设备中实现,但在当今世界的一些设备中仍然可以看到这种协议。这些协议和加密方法除了优点,还有许多限制和漏洞。最新的设备具有最新的安全措施,能够支持所讨论的所有协议。然而,由于旧设备仍然存在,并且正在世界范围内使用,因此意识到这些限制仍然很重要。
1.WEP
WEP是第一个被用于保护无线网络的协议,它在1999年9月作为IEEE 802.11安全标准的一部分被引入。它的创建是为了提供类似于有线网络的安全性。它使用Rivest Cipher 4(RC4)流密码进行加密,与DES等较慢的加密方案相比,提高了整体通信的速度。RC4将一个40位的共享密钥和一个24位的初始化向量(IV)一起使用,这个共享密钥和IV被连接起来创建一个64位的密钥。64位密钥是一个伪随机数生成器的种子值。明文被发送到一个完整性检查算法,被称为循环冗余检查32(CRC-32),其中的产品是完整性检查值(ICV),用于比较明文的完整性。然后将PRNG生成的密钥序列与连接到ICV的明文结合以生成密文。IV连接到密文,由接收方进行解密。以相反的方式执行相同的过程,以获得有效的明文消息。
如上所述,WEP是被用于保护无线网络的第一个协议。然而,WEP已被证明很容易被打破。WEP的主要漏洞之一是能够广播假数据包。由于WEP使用共享密钥身份验证,攻击者很容易伪造身份验证消息。在共享密钥认证中,共享WEP密钥的知识通过加密挑战来证明。攻击者可以观察质询和加密的响应,以确定用于加密的RC4流。攻击者将来可以使用相同的流。WEP协议的另一个缺点是初始化向量的重用。不同的密码分析方法可以用来解密数据。
密钥管理也是WEP的一个主要弱点。标准没有规定密钥分发。每条消息中的一个字段用于标识所使用的密钥。在无线网络中,只使用一个密钥,因此如果多个用户使用该密钥,密钥被解密的机会就会增加。除了缺乏密钥管理,密钥的尺寸小也是该协议的弱点。40位长度的密钥可能会被对手解密。
2.WPA
(1)协议具体内容
WPA由无线联盟在2003年创建,目的是克服WEP的缺陷。WPA的版本1被设计为一个中间解决方案,旨在纠正WEP的加密缺陷(而不需要新的硬件),并使用临时密钥完整性协议(TKIP)进行加密。每个包的128位密钥是为每个包动态生成的。预共享密钥(PSK)是一种静态密钥,用于启动双方之间的通信。256位密钥用于认证无线设备,它从不通过空中传输。消息完整性代码(MIC)密钥和加密密钥源自PSK。
TKIP使用RC4设备(在无线网络适配器的硬件中实现)来改变共享密钥的使用方式。WEP在加密中使用共享密钥,而TKIP使用共享密钥生成其他密钥。TKIP对WEP做了4点改进:
①对MIC进行加密,防止篡改;
②使用严格的IV序列,防止重放攻击;
③使用改进的密钥生成;
④刷新密钥,以防止密钥重复攻击。
TKIP密钥在客户端经过身份验证和关联后使用。如图4.22所示,使用TKIP密钥进行四次握手,产生一个512位的密钥,在客户端和接入点之间共享。一个128位的临时键和两个64位的MIC键都是从这个512位的键派生出来的。一个MIC键用于接入点到客户端的通信,另一个用于客户端到接入点的通信。TKIP帧的发送方使用一种被称为迈克尔算法的算法来计算每个数据包的MIC值,利用该算法最终能够得到MIC和密钥。
与MIC连接的数据包使用WEP封装,因此它可以在旧的WEP硬件上实现。附加一个ICV,然后使用RC4和一个临时密钥、发射机MAC地址和TKIP序列计数器(TSC)相结合的函数的密钥对数据包进行加密。接收机将检查TSC是否正常,ICV是否正确。如果这些检查中的任意一个无效,该帧将被丢弃。重新组装原始数据包,并验证MIC值。如果它被接受,TSC重放计数器将被更新。
图4.22 四次握手示意图
(2)局限性
WPA协议有许多重大的缺点。首先,它在更高级的AES算法之上使用了RC4算法。如上所述,在同一个IV下计算两个或更多的RC4密钥使攻击者很容易计算时态密钥(TK)。
WPA的另一个缺点是WPA-PSK模式。如果使用简单的密码,它很容易受到暴力破解攻击。如果密码长度小于20个字符,可以使用字典攻击。WPA的又一个缺点是比WEP有更大的性能开销。根据Tripathi和Damani的研究,与使用WEP时的吞吐量和开销相比,使用WPA-TKIP时的平均吞吐量更低,开销更大。
WPA的主要漏洞是TKIP,这是由于在TKIP密钥混合中使用哈希函数时哈希冲突造成的。如果在同一个IV下计算了两个或多个RC4密钥,攻击者很容易计算TK并解密任何数据包,这使得在TKIP密钥混合中使用哈希函数时,WPA容易受到与哈希冲突相关的威胁。存在一个逐包键混合功能来将IV与弱键解除关联。重新密钥机制提供了新的加密和完整性密钥。这个机制被称为时态密钥散列,它产生一个128位的RC4加密密钥。如果攻击者收集了在同一个IV下计算的几个RC4密钥,就可以恢复TK和MIC密钥,MIC密钥用于检测伪造的数据包。目前的大多数新设备并不只支持TKIP选项。2014年,TKIP计划被完全取消。然而,目前该领域仍有支持并使用TKIP的遗留设备。
3.WPA2
(1)协议具体内容
WPA2保证所有安装了它的设备都能支持802.11i,它是一个在MAC层中提供安全性的标准。WPA2引入了密码块链消息认证码协议(CCMP)的计数模式,采用AES分组密码进行数据加密,TKIP还可用于向后兼容现有硬件。另外,WPA2有PSK和企业模式。由于AES的性质,AES有广泛的处理需求,因此WPA2需要替换旧的硬件。为了在WPA2中生成密钥,需要进行四次握手,以获得一对瞬态密钥(PTK)和组瞬态密钥(GTK),以及用于GTK更新或主机解离的组密钥握手。
在握手的开始,如图4.22所示,Client(客户端)和AP都有一个成对主密钥(PMK),这是PSK的一个PBDKF2功能名称,AP的服务集标识符(SSID)是一个哈希消息认证协议(HMAC)功能的名称。在客户端发送连接请求,并且AP确认请求后,AP将生成一个Nonce(ANonce),并将其发送给客户端。Nonce是发送方知道的一个随机值,用于测试接收方是否知道某条信息。通过使用Nonce和其他一些信息来测试客户端能否产生一个AP可以识别的新值。要创建PTK,客户机将生成自己的Nonce(SNonce),并将其与ANonce、PMK和AP与客户端的MAC地址连接起来。此密钥的一部分用于派生MIC,以确保明文发送的SNonce在传输中不被改变。一旦AP接收到SNonce和MIC,它将使用与客户端相同的信息导出PTK,并确认MIC匹配。PTK是通过交换的两个随机Nonces派生出来的,每个会话都会不同,这使得PTK在每个会话中都是新的。
CCMP是基于AES的CTR(Counter Mode)和CBC(Cipher-Block Chains)消息认证码。CTR用于数据保密性,CBC消息认证码用于认证和完整性。如图4.23所示,CCMP加密需要PTK或GTK加密密钥,并通过一个AES加密算法802.11头和标志位、发射机的MAC地址、数据包数量所需的信息和一些计数器AES计数器模式运行它。AES是一种分组密码算法,支持32位序列的128~256个密钥。密钥的长度和块的长度是独立选择的。这些块的值在每一轮完成后都会改变,密钥被放大成44个32位的字,每个字等于4个字节,这将创建在10轮中使用的11个密钥,第一个密钥用于初始化加密,最后一个密钥用于初始化解密。增加的轮数与增加的密钥大小一起使用。每一轮由一种排列和三种置换组成。该算法被认为是安全的,因为其在每一轮中包括排列和替换的组合,同时它具有密钥扩展的复杂性以及转换的复杂性。
(2)局限性
WPA2的一个限制是需要升级硬件才能部署它。这是因为CCMP和AES的实现需要对现有硬件进行更改。目前发布的所有新硬件都支持WPA2。自2006年以来,所有经过认证的Wi-Fi设备都支持WPA2。然而,对于已经部署的网络来说,用支持CCMP和AES的新硬件替换所有硬件的开销是昂贵的。
图4.23 CCMP加密图
WPA2会被一种被称为KRACK的方法所利用。这个过程利用了无线安全协议在连接到网络时用来验证用户身份的四次握手。对于这种攻击,攻击者将计数器设置为它们的初始值,然后可以重放消息并将消息解密。漏洞在于WPA2允许重新初始化密钥,而安全系统不应该这样做。
WPA2还允许将系统信息(称为管理帧)以明文包的形式从客户端发送到AP。有了这个漏洞,对手可以欺骗数据包(使其看起来像是来自目标客户端),并进行反身份验证等攻击。问题在于缺乏加密和身份验证来维护消息的真实性。
4.WPA3
(1)概述
WPA3于2018年6月发布,是目前最新的安全方案,旨在加强现有Wi-Fi网络的安全性,解决以前版本遇到的问题。WPA3使用基于密码的对等同步身份验证(SAE,Simultaneous Authentication of Equals)技术对客户端进行到AP的身份验证。SAE最初是Dan Harkins在2008年引入的用于WLAN网状网络(IEEE 802.11s)的协议,后来被证明容易受到被动攻击和主动攻击,以及离线字典攻击。RFC 7764标准在2015年被修订后,改进后的协议被证明提供了所承诺的保护。这种保护是通过蜻蜓握手,利用离散对数和椭圆曲线密码学来实现的。握手的结果生成一个PMK,然后在WPA2方案中使用的标准四次握手中使用PMK。
对手要破解密码,但它不能推导出PMK并解密过去的消息。这为系统提供了一个向前保密的元素。由于用户每次都需要与AP交互以获得新的PMK,所以对手只能一次尝试一个密码,接收正确或不正确的密码,然后再次尝试,以获得共享密码。这种级别的安全强度允许用户使用更简单的密码。
Wi-Fi认证的增强开放计划由Wi-Fi联盟实施,它对客户端和AP之间传输的每条消息应用了额外的一层加密,允许在开放Wi-Fi网络中不需要密码的私有连接。这是通过椭圆曲线密钥交换来完成的,不需要接下来的四次握手。在IEEE 802.11w中引入的保护管理帧(PMF)也被用于加密客户端和AP之间的系统管理信息,以便对手不能欺骗管理包(如去认证请求)。安全联盟(SA,Security Association)机制用于在管理帧未加密的情况下保护用户和AP。SA查询的工作方式是提示发送方稍后在指定的时间范围内尝试请求,然后,AP向发送方发送加密的SA请求,并等待加密的响应。如果发送者已经在网络中,那么发送者将能够在给定的时间内发送回一个加密的响应。否则,任何管理框架将被忽略和删除。
(2)安全评估与分析
当前WLAN安全措施中存在许多漏洞,攻击者可以利用这些漏洞造成各种破坏或获得控制。Wi-Fi联盟的研究人员试图更新安装了14年的最新WPA2系统,同时考虑这些漏洞。WPA3的发布试图解决这些问题并增强当前的安全状态。接下来将讨论针对所提到的每种攻击的缓解技术,以及WPA3是否能够提供解决方案。表4.3列出了问题的答案,随后将进行更详细的分析。
表4.3 针对Wi-Fi网络的攻击以及WPA3是否能够解决这些攻击
1)反身份验证(De-authentication)
这里,我们将展示WPA3如何通过添加PMF和SA查询来为反身份验证攻击提供保护。将给出两个案例,并给出抵抗的安全证明。
案例一:
攻击者可以发送反身份验证帧给AP,以欺骗客户端MAC地址来反身份验证客户端,并切断与AP的连接。
证明:
当AP从已经处于会话中的客户端接收到未加密的去身份验证或解关联帧时,AP将触发SA机制并返回一个错误响应,让客户端在给定的恢复时间后再尝试。然后,AP将向客户端发送加密的SA查询请求,并在响应时间内等待SA查询响应。如果没有加密密钥,对手将无法发送回加密的响应。因此,进行反认证攻击是不可行的。
案例二:
攻击者可以向一个或多个客户端发送反身份验证帧,以欺骗AP的MAC地址来反身份验证客户端,并切断与AP的连接。
证明:
当客户端从已经处于会话中的AP接收到一个未加密的去认证或解关联帧时,客户端将向AP发送一个加密的SA查询请求,并在响应时间内等待SA查询响应。真正的AP将能够用一个受保护的SA查询响应来回答,并忽略任何进入的去认证帧。因此,进行反认证攻击是不可行的。
2)握手捕获字典攻击(Handshake Capture Dictionary Attack)
对于离线字典攻击,WPA3采用SAE协议进行防御,该协议声称可以抵抗被动、主动和离线字典攻击。
如果不与AP交互,对手将无法通过遍历单词列表并计算来自蜻蜓握手的PMK来离线测试PTK的MIC。
3)PMKID哈希字典攻击(PMKID HASH Dictionary Attack)
与握手捕获字典攻击一样,SAE协议可以防御这种形式的脱机字典攻击。
如果不主动地进行蜻蜓式握手,对手将无法通过遍历单词列表并计算来自蜻蜓式握手的PMKID来测试并与候选PMKID进行比较以获得密码短语。
证明:
AP没有从PSK派生出来的静态PMK。相反,PMK来自蜻蜓式握手,这需要客户端交互。因此,在有效执行蜻蜓式握手之后,PMKID才会可用。因此,执行这种离线字典攻击是不可行的。
4)非法接入点(Rouge Access Point)
非法接入点的设置是为了欺骗用户连接到一个模仿真实路由器的假路由器。使用PMF可以提供一些保护,但这个问题仍然存在。我们将非法接入点分析分为两个部分:密钥获取和AP会话劫持。第一部分将描述对手试图使用恶意AP获取密钥的情况,该部分又分为两种情况:客户端要么已经连接,要么尚未连接。第二部分将演示对手如何试图从AP劫持会话,使客户端认为它正在使用两种技术与一个真正的AP而不是一个恶意的AP交谈。
①获取密钥
案例一:客户端连接
对手能够设置一个恶意AP,它模拟真实AP的SSID和MAC地址,以及使用错误密码短语的正确安全协议,试图让用户输入密码短语。然后,对手将无法取消已连接客户端的身份验证,而让它们重新连接到恶意AP。
证明:
对手识别目标AP并记录其SSID、MAC地址和安全协议。对手通过等待客户端连接到真正的AP来捕获握手。然后,对手通过欺骗SSID和MAC地址来建立一个与目标AP的配置匹配的非法AP。随后,对手向目标客户端发送反身份验证包,以切断与真正AP的连接。正如反身份验证证明所示,WPA3不会允许这种情况发生。于是,对手被迫等待或中止攻击。
案例二:客户端未连接
从案例一的场景继续,对手等待客户端尝试连接到真正的AP,并通过提供一个更强的信号让它们重新连接到恶意的AP。
证明:
对手识别目标AP并记录其SSID、MAC地址和安全协议。对手通过等待客户端连接到真正的AP来捕获握手。然后,对手通过欺骗SSID和MAC地址来建立一个与目标AP的配置匹配的非法AP。对手会加强AP的广播信号,等待客户端连接。一旦连接完成,在握手之前,AP将把用户重定向到一个登录页面,要求用户确认密码短语。然后,对手将获取明文条目,计算PMK、PTK和MIC,与捕获的握手进行比较,并找到正确的密钥。因此,通过非法接入点攻击获取网络密钥是可行的。
②劫持会话
案例一:物理连接和ARP欺骗
假设对手已经通过有线以太网将一个恶意的AP物理连接到一个网络,那么它将无法通过发送ARP包来欺骗客户机,使其认为它是真正的网关。
证明:
对手会向客户端发送一个ARP包,以自己的IP地址欺骗AP的MAC地址。对手将使用GTK加密消息,因此客户机可以使用相同的GTK解密消息,从而利用Hole 196漏洞。然而,打开客户端隔离的WPA3路由器不允许网络中的客户端彼此通信,或就此相互了解,因此,通过执行这种攻击来劫持来自真实AP的客户端会话是不可行的。
案例二:无线信道切换
对手无法向客户机发送消息,以将AP通道切换到恶意AP或取消对真实AP的身份验证。
证明:
对手将设置一个模仿客户端连接到AP的双面恶魔。对手会发送一个CSA信标来将信道从合法AP切换到恶意AP。PMF系统应该保护这种信息,因为它是在频谱管理中的,因此是受保护的。但是,如果不是,客户端将尝试切换到恶意AP。然后,对手将尝试取消对该AP的客户端身份验证,以避免来自该AP的任何干扰。我们已经在反身份验证证明中证明了这是不可能发生的,因此,通过执行这种攻击来劫持来自真实AP的客户端会话是不可行的。
5)双面恶魔攻击(Evil Twin Attack)
双面恶魔是一个恶意的AP,它试图通过克隆一个真正的AP并提供更好的信号来诱使用户,希望客户端能够连接到它。一旦客户端被欺骗并连接到一个恶意的AP,就超出了WPA3协议的保护范围。下面给出客户端已经连接或尚未连接的两种情况。
案例一:客户端连接
对手能够建立一个恶意的AP来模拟真正AP的SSID和MAC地址,以及正确的安全协议和密码短语,用于在客户端和互联网之间创建MITM。然后,对手将能够取消已经连接的客户端身份验证,并通过提供一个更强的信号来让它重新连接到恶意的AP。
证明:
对手使用一个无线适配器,并将其设置为监控模式,以观察客户端和AP之间的空中无线通信。对手识别目标AP并记录其SSID、MAC地址和安全协议。对手通过欺骗目标AP的SSID和MAC地址,并将密码设置为与真实AP相同,从而建立一个与目标AP的配置相匹配的恶意AP。然后,对手将向目标客户端发送反身份验证数据包,以切断与真正AP的连接。正如反身份验证证明所示,WPA3将不允许这种情况发生。于是,对手被迫等待或中止攻击。
案例二:客户端未连接
继续案例一的场景,对手将等待客户端尝试连接到真正的AP,并通过提供一个更强的信号来让它重新连接到恶意的AP。
证明:
对手使用一个无线适配器,并将其设置为监控模式,以观察客户端和AP之间的空中无线通信。对手识别目标AP并记录其SSID、MAC地址和安全协议。对手通过欺骗目标AP的SSID和MAC地址,并将密码设置为与真实AP相同,从而建立一个与目标AP的配置相匹配的非法AP。对手会加强AP的广播信号,等待客户端连接。客户端将输入与真正的AP共享的相同的口令。这将创建与恶意AP的可信连接,对手可以使用PTK解密所有流量。一旦脱离网络,WPA3协议就不再保护客户端的数据。因此,通过非法接入点攻击来创建MITM是可行的。
6)握手捕获加/解密(Handshake Capture En/Decryption)
在WPA2协议中,对手能够捕获在四次握手中生成并以明文方式发送的两个随机Nonces,并使用它们和密码短语来派生PTK和解密流量。WPA3协议使用SAE协议,该协议同时利用蜻蜓式握手和四次握手。
对手无法从这两次握手中捕获信息,并获得一个知道特定客户机密码的PTK,进而无法对通信进行解密。
7)KRACK
KRACK利用了在四次握手中重发消息3的可靠性。已经发布的AP的补丁和设备禁止了这种重传。
在截获AP的会话以重放四次握手中的消息3、重新初始化密钥并重置密钥流之后,对手将无法操纵客户端和AP之间的消息。
证明:
假设没有必要这样做,对手就会接管会话,重新提交消息3,并开始捕获数据包进行解密。通过更新安全补丁和配置,可以将WPA3路由器设置为不允许重传消息3,而消息3是攻击不可或缺的一部分,因此,执行KRACK攻击是不可行的。
8)ARP欺骗(ARP Spoofing)
ARP欺骗可以让对手成为客户端和网关之间的MITM(比如AP),或者劫持会话。WPA3只能部分解决这个问题。我们把这个证明分解成两种情况:①表明会话劫持是可能的;②表明获取MITM位置是不可能的。
案例一:客户端会话劫持
对手能够通过向冒充客户端的AP发送欺骗的ARP包来劫持会话。
证明:
对手向AP发送一个ARP包,以自己的IP地址欺骗目标客户端的MAC地址。由于ARP请求没有认证协议,AP将接受这个请求并更新它的ARP表,将目标客户端的数据包转发到对手的IP。因此,通过这种攻击来劫持会话是可行的。
案例二:MITM
对手不能向AP和客户端同时发送欺骗的ARP包,从而相互模拟它们,并创建一个MITM位置。
证明:
对手采取与案例一相同的步骤。此外,对手还会向客户端发送一个ARP包,以自己的IP地址欺骗AP的MAC地址。对手将使用GTK加密消息,因此客户机可以使用相同的GTK解密消息,从而利用Hole 196漏洞。然而,打开客户端隔离的WPA3路由器不允许网络中的客户端彼此通信,或就此相互了解。因此,通过这种攻击来创建MITM位置是不可行的。
9)SSL剥离(SSL Stripping)
SSL剥离攻击针对Internet上通过HTTP和HTTPS协议发送的数据包,这是第7层攻击,超出了WPA3路由器在第3层提供保护的范围。
处于MITM位置的对手能够使得来自客户端的HTTPS请求成为HTTP请求,并让服务器返回web页面的HTTP版本。用户输入的任何信息都不会受到HTTPS的SSL加密保护,而是以明文的形式发送。
证明:
根据攻击的性质,对手必须获得访问网络的权限和密钥才能成为活跃的MITM。因此,对手也能够解密使用WPA3加密的所有流量。对手将捕获来自客户机的所有HTTPS请求,并解密消息。然后,对手将请求更改为HTTP,并将其转发给路由器。路由器解密并将请求发送给服务器。随后,服务器使用一个HTTP响应页面进行响应。路由器加密响应并将其发送给客户机,而客户机将被对手捕获。对手把HTTP页面转发给客户机,客户机接收HTTP页面,并开始与之交互,但它并不知道这一点。在解密后,生成的流量将是明文,并被对手查看。因此,SSL剥离攻击仍然是可行的。
10)DNS欺骗(DNS Spoofing)
DNS欺骗是一种简单的攻击,但它依赖于获取MITM位置。一旦对手获得访问权并将自己置于网关和客户机之间,WPA3就无法提供进一步的保护。
处于MITM位置的对手能够使得自客户端的HTTPS请求成为HTTP请求,并让服务器返回web页面的HTTP版本。用户输入的任何信息都不会受到HTTPS的SSL加密保护,而是以明文的形式发送。
证明:
根据攻击的性质,对手必须获得访问网络的权限和密钥才能成为活跃的MITM。因此,对手也能够解密使用WPA3加密的所有流量。对手将看到客户端向某个域名发出DNS请求。然后,对手伪造DNS响应,并使用请求域的错误IP地址对其进行加密。客户端不会怀疑不信任加密的DNS响应,并转到该IP地址。因此,这种攻击仍然可行。
WPA3安全方案解决了其前身WPA2中存在的许多漏洞,但并没有解决全部漏洞。除了WPA3中存在的防御,我们还将研究在应用WPA3后仍然存在的漏洞的其他防御和缓解措施。
自1997年以来,无线技术取得了长足的进步,为我们提供了无须物理有线连接就能发送和接收数据的有效手段。一开始,安全并不是一个很大的问题,但随着时间的推移,无线网络面临的攻击变得越来越普遍,因为越来越多的人在这个领域学习。安全方案需要适应新的威胁,以便为用户提供尽可能多的安全性。到目前为止,我们已经看到了3种安全方案,WEP、WPA和WPA2,并发现它们有自己的漏洞可供攻击者利用。为了能够创建新的、更安全的方案(如WPA3),理解过去的、已停止的方案非常重要。新方案修复了WPA2中存在的许多问题,包括去认证、离线字典攻击和KRACK漏洞,但未能解决Wi-Fi网络中的一些主要漏洞。不过,人们可以采取一些防御措施和安全实践,例如使用VPN,以帮助在面临这些威胁时保持安全。