三、WPA
1、简介
WPA(WiFi ProtectedAccess,无线保护访问)有WPA和WPA2两个标准。Wi-Fi联盟给出的WPA的定义为:WAP=802.1x+EAP+TKIP+MIC,其中802.1x是IEEE的802.1x身份认证标准;EAP(Extensible Authentication Protocol,扩展身份认证协议)。这两者就是新添加的用户级身份认证方案。TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议);MIC(Message Integrity Code,消息完整性编码)用来对消息的完整性进行检查,防止攻击者拦截、篡改、重放数据包。
2、WPA工作原理
WAP包括TKIP和802.1x机制,两者一起为移动客户端提供了动态密钥加密和相互认证功能。WPA通过为每台客户机生成唯一的加密密钥来保护数据安全。
TKIP为WPA引入了新的算法,这些算法包括扩展的48位的初始化向量与相关的序列规则、数据包密钥构建、密钥生成与分发功能和信息完整码。
在应用中,WPA与利用802.1x和EAP的认证服务器(如远程认证拨号用户服务)连接。这台认证服务器用于保存用户的证书。这种功能可以实现有效的认证控制,以及与已有信息系统的集成。由于WPA具有运行“预共享的密钥模式”的能力,SOHO环境中的WPA部署并不需要认证服务器,与WEP类似,一部客户机预先共享的密钥必须与接入点中保存的预共享密钥相匹配。接入点使用通行字进行认证,如果通行字相符合,客户机被允许访问接入点。该过程又被称为四次握手,其通信过程如下:
WPA用户认证是使用802.1x和扩展认证协议(EAP),为了满足企业或个人用户的不同安全需求WPA规定了两种应用模式:
企业模式:通过使用认证服务器和复杂的安全认证机制,来保护无线网络通信的安全。
家庭模式(包括小型办公室):在AP(或无线路由器)以及连接无线网络的无线终端上来输入共享密钥,以保护无线电路的通信安全。
3、加密算法
在无线路由器的WPA加密模式中 ,默认提供了自动、TKIP和AES3加密算法。
(1)TKIP加密算法
TKIP负责处理无线安全问题的加密部分,TKIP是包裹在已有WEP密码外围的一层“外壳”,TKIP中密码使用的密码长度为128位。TKIP的一个重要特性就是每个数据包所使用的密钥是“动态”的。密钥的组成因素有基本密钥(TKIP中所谓的成对瞬时密钥)、发射站的MAC地址以及数据包的序列号。TKIP传送的每一个数据包都具有独特的48位序列号,48位的序列号需要千年才会重复,所以比较安全。
(2)AES加密算法
AES(Advanced EncryptionStandard,高级加密标准)是一个迭代的、对称密钥分组的密码,它可以使用128位、192位、256位密钥,并且128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥不同,对称密钥密码使用相同的密钥加密和解密数据,通过分组密码返回的加密数据和输入的数据位数相同,迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
四、WPA2
1、简介
WPA2是WPA的第二个版本,是对WPA在安全方面的改进版本,与第一版的WPA相比,主要改进的是所采用的加密标准,从WPA的TKIP/MIC改为AES-CCMP。所以WPA2的加密方式为:WPA2=IEEE 802.11i=802.11x/EAP+AES-CCMP。AES-CCMP(Advanced Encryption Standard-Countermode with Cipher-block chaining Message,高级加密标准-计算器模式密码区块链接消息身份验证代码协议),WPA中的TKIP虽然针对WEP的弱点做了重大改进,但仍保留了RC4算法和基本架构,也就是TKIP亦存在着RC4本身的弱点。
WPA2针对WEP的改进如下表:
WEP存在的弊端 |
WPA2的解决方法 |
初始化向量(IV)太短 |
在AES-CCMP中,IV被替换为“数据包编号”字段,并且大小增致48位 |
不能保证数据完整性 |
采用WEP加密的校验和计算替换为可严格实现数据完整性的AES CBC-MAC算法。CBC-MAC算法计算得出一个128位的值,然后WPA2使用高阶64位作为消息完整性代码(MIC)。WPA2采用AES计数器模式加密方式对MIC进行加密 |
使用主密钥而非派生密钥 |
AES-CCMP使用一组从主密钥和其他派生的临时密钥,主密钥是从“可扩展身份验证协议-传输层安全性”(EAP-TLS)或“受保护的EAP”(PEAP)802.1x身份验证过程派生而来的。 |
不重新生成密钥 |
AES-CCMP自动重新生成密钥以派生新的临时密钥 |
无重播保护 |
AES-CCMP使用“数据包编号”字段作为计数器来提供重播保护 |
无身份认证 |
采用IEEE 802.1x进行身份认证 |
2、WPA2漏洞
几个月前安全研究员Mathy Vanhoef发现了WPA2协议中存在的密钥重装攻击(Key Reinstallation Attacks)漏洞,该漏洞利用WPA2协议加密密钥生成机制上的缺陷,针对的是客户端或AP在密钥认证结束后的以协商消息加密密钥为目的的四次握手阶段,不是破解密码,是利用用户客户端连接WiFi后与AP交互过程中产生的信息过程构成威胁。其传输的数据存在被嗅探、篡改的风险,攻击者可获取WiFi网络中的数据信息,如信用卡、邮件、账号、照片等,危害巨大。在协议中还存在一条危险的注释“一旦安装后,就可从内存中清除加密密钥”,若按此注释进行实现,在密钥重装攻击时会从内存中取回已经被0覆盖的key值,从而导致客户端安装了值全为零的秘钥。而使用了wpa_supplicant的Linux及Android设备便因此遭受严重威胁。 整体来说,此次漏洞的危害程度弱于WEP漏洞的影响,但对于Linux及Android设备需额外注意要及时更新修补此漏洞,防止遭受嗅探、劫持等攻击。
客户端和AP交流的第一阶段是认证阶段,此阶段双方验证密码,而攻击是在之后的握手阶段和组密钥(Group key)。
四次握手过程中协商密钥PTK(Pairwise Transient Key),PTK和报文数据经过AES或TKIP(Temporal Key Integrity Protocol)算法生成密文和签名。
四次握手流程:
1、 AP先把A-nonce(AP端随机数)传给STA,STA生成PTK。
2、 STA把S-nonce(STA端随机数)传给AP,同时加了MIC,AP接到后MIC,AP生成PTK、GTK。
3、 AP将GTK和MIC发给STA(此时两边都有PTK)
4、 STA发送ACK进行确认并使用密钥加密。
漏洞所在就是在接受AP重传的消息3时,客户端会进行重装,而重装的内容就是PTK(加密密钥),重置重传计数器(用来分辨是否接受个某个帧)。因为客户端与AP要进行四次握手才能协商密钥,在客户端发出的消息4之后安装PTK时,攻击者劫持消息4,AP没有收到消息4,就会重发消息3,客户端再次收到消息3,就会触发重安装,客户端重安装PTK会重置重传计数器。这就导致客户端同意接受一些之前收到过的信息,形成重放攻击。
五、WPA+RADIUS
1、RADIUS简介
RADIUS(Remote AuthenticationDial In User Service,远程用户拨入验证服务)是一个AAA协议,即同时兼顾验证(Authentication)、授权(Authorization)及计费(Accounting)。该协议是一种在网络接入服务器(Network AccessServer)和共享认证服务器间传输认证授权和配置信息的协议,采用C/S架构。路由器或NAS上运行的AAA程序对用户来说是服务器,对RADIUS服务器来说是客户端,RADIUS 通过建立一个唯一的用户数据库存储用户名和密码进行验证,存储传递给用户的服务类型以及相应的配置信息来完成授权。当用户上网时,路由器决定对用户采取何种验证方法。
RADIUS还支持漫游和代理。代理就是一台服务器可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。漫游就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行验证。
RADIUS的主要特征如下:
C/S服务模式
网络安全
灵活的认证机制
协议的可扩充性
2、RADIUS的原理
RADIUS服务的工作原理图如下所示:
(1)客户端接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名和密码等相关信息。其中用户密码是经过MD5加密的,双方使用共享密钥。这个密钥不经过网络传播。
(2)RADIUS服务器对用户名和密码的合法性进行校验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的验证。
(3)如果合法,则给NAS返回Access-Require数据包,允许用户进行下一步操作,否则返回Access-Reject包,拒绝用户访问。如果允许访问,NAS向RADIUS服务器提出计费请求Acount-Require,RADIUS服务器响应Acount-Accept,此时,将开始对用户计费,用户也能进行自己的操作。
RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813负责计费。因为NAS和RADIUS服务器大多处于同一个局域网,所以使用UDP更方便快捷。除此之外,RADIUS还提供重传机制。
参考文献:《Kali Linux无线网络渗透测试详解》