freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

企业级wifi认证安全性分析
2024-12-30 15:49:16
所属地 浙江省

一、wifi认证简介

wifi认证在理解上可以简化为两个阶段:获取PMK,然后通过四次握手,把PMK派生成PTK,建立加密通道,后续使用的密钥从PTK上拆分。
wifi认证,个人及企业的密钥生成及分发流程是一致的,区别在于PMK的生成逻辑不一样,以WPA2为例,WPA2-PSK(个人)的PMK是以密码为输入的一个确定性算法(PBKDF2-SHA1)计算出来的,而WPA2-Enterprise是通过EAP协议认证过程中的上下文信息计算出PMK的。当拿到PMK后,后面的流程完全相同。

1、personal

个人版认证方式,通常的使用形式,就是设置一个wifi密码,路由器上设置一个,终端需要接入时,也需要提供相同的密码。通常家庭或一些小型公共场所会提供这种wifi接入方式。目前主流的认证协议为WPA2-PSK/WPA3-SAE。WPA2-PSK认证双方可以直接计算出PMK,而WPA3-SAE通过SAE密钥协商算法计算出PMK。SAE属于PAKE(Password-authenticated key exchange)算法,是Dragonfly算法的一个变种。SAE是安全的PAKE算法,可具有前向安全性,协商过程可以防止中间人攻击。WPA2与WPA3在获得PMK后,使用相同的4次握手流程,但是WPA3要求强度更高的密码学算法。

2、Enterprise

企业级认证主要目的就是支持多用户接入,每个用户都有独立的账号。使用EAP协议进行账号认证。常用的认证方式有:EAP-PEAP,EAP-TLS,EAP-TTLS,其他还有各种不常用的认证方式。EAP-PEAP与EAP-TTLS只是构建了个加密隧道,在加密隧道内进行实际的认证。

3、其他

最常见的方式为开放式+Web认证,提供一个开放式网络,终端连接上网络后,会尝试访问一个地址检测是否可以访问Internet,此时如果终端未经过认证,则重定向到认证地址。类似此种方式安全性很差,不能用于企业级认证。不在此讨论范围内。

二、Enterprise认证协议

1.EAP-TLS

EAP-TLS是目前最安全也是最简单的认证协议,本质上就是一个TLS的双向认证。如图

1735207041_676d2881a45e56c94f431.png!small

上图中EAP Server只是为了简化进行的抽象,实际上可能是一个设备,也可能会把其中的认证服务拆分到单独的服务器。常见的,由RADIUS服务来进行实际的认证。这里抽象成EAP Server不影响安全性讨论,后面其实协议也使用相同的抽象方式。

EAP-TLS的主要问题在于,需要企业有自己的PKI,为每个需要登录的员工颁发一张独立的证书。对于没有能力自建PKI的企业,则不能用此种方案,而对于能自建PKI的企业,维护运维一个PKI也是一个不小的开销。

2. EAP-PEAP


1735207358_676d29becd293dbd4c819.png!small

PEAP本身不只是一个单向认证,Supplicant对EAP Server进行认证,用于建立一个TLS隧道,在隧道中使用内层的认证协议进行EAP Server对Supplicant的认证。EAP-PEAP支持EAP-MSCHAPv2和EAP-TLS作为内层认证协议。EAP-MSCHAPv2协议是用户密码认证,而在PEAP里面再套一个EAP-TLS显得意义不大,不如直接使用EAP-TLS,没有必要在EAP-TLS外套一层安全性相对较差的EAP-PEAP,所以EAP-PEAP的内置认证算法几乎清一色的是EAP-MSCHAPv2。MSCHAPv2是一个不安全的认证算法,虽然已经使用EAP-PEAP事先构造了加密隧道,但是MSCHAPv2本身使用的算法会造成一些密码存储上的安全问题,具体后面详述。EAP-PEAP规范中,建立TLS隧道使用的是TLS1.0,安全性较差。在微软24年最新的协议文档中,仍然明确写着使用TLS1.0建立隧道。所以,目前不推荐使用EAP-PEAP。

3.EAP-TTLS

1735208125_676d2cbdd0f16c32a80a6.png!small

EAP-TTLS与EAP-PEAP区别相当小,原理也一模一样,主要还是设计者不同造成的差异。两者最大的区别在于EAP-TTLS支持比EAP-PEAP更多的内层认证协议(如:PAP,CHAP,MSCHAP,MSCHAPv2),包括非EAP协议,还包含EAP协议(如:EAP-MSCHAv2,EAP-TLS)。从总体上来看,EAP-TTLS相比EAP-PEAP差别不大,但是EAP-PEAP没有更新TLS版本,还在使用TLS1.0,而且只有draft版本的RFC,导致安全性不够。EAP-TTLS一直在更新,目前使用最新规范已经弃用了TLS1.0及TLS1.1,支持TLS1.2及TLS1.3。目前,使用TLS1.2及TLS1.3版本的EAP-TTLS,可以建议安全的TLS隧道。如果使用用户名密码认证,使用EAP-TTLS+EAP-MSCHAPv2在安全性会优于EAP-PEAP+EAP-MSCHAPv2.

4.共性问题

以上协议都有一个共同的问题,就是Supplicant认证EAP Server的证书的名称不是强制的,绝大部分企业不会要求用户配置这个信息,同时,Supplicant是否配置都不会影响证书正确时的认证结果。Supplicant不认证EAP Server的证书名称,MITM以及伪造wifi热点有了理论上的可能性。

三、用户名密码认证协议

1.PAP协议

就是简单的明文用户名+密码的认证协议

2.CHAP协议

CHAP协议可以简化为了以下三步:

  • 认证服务器向Supplicant发送一个id+随机数的质询(Challenge,也叫挑战)
  • Supplicant计算MD5(id+密码+随机数)的响应
  • 认证服务器使用Supplicant相同的算法,计算出响应,并与Supplicant发送过来和响应比较

从中可以看出,认证服务器需要维护所有的Supplicant的明文密码在自己的数据库中,这对认证服务器的安全性提出了很高的要求

3.MSCHAPv2

1735544517_67724ec578288dadab56d.png!small?1735544518658

相关算法说明:

3.1PeerResponse

PaddedPasswordHash=MD4(Password)||\0x00\0x00\0x00\0x00\0x00

ChallengeHash=SHA1(PeerChallenge || ServerChallenge|| UserName)[0..7]

PeerResponse=DesEncrypt(ChallengeHash,Key=PaddedPasswordHash[0..6])||DesEncrypt(ChallengeHash,Key=PaddedPasswordHash[7..13])||DesEncrypt(ChallengeHash,Key=PaddedPasswordHash[14..20])

3.2ServerResponse

PasswordHashHash = MD4(MD4(Password))

Magic1[39] = {0x4D, 0x61, 0x67, 0x69, 0x63, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74} Magic2[41] = {0x50, 0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E}


ServerResponse =

"S=" || Hex(SHA1(SHA1(PasswordHashHash||PeerResponse||Magic1)||ChallengeHash||Magic2))

其中,ChallengeHash同3.1

根据上述算法,可以发现攻击者只要拿到ChallengeHash,或者PeerChallenge 、ServerChallenge和UserName以及PeerResponse即可进行暴破,而且第三次Des加密部分,实际有效密钥长度为2个字节,很容易就能计算出PasswordHash的后两个字节,为后续的暴破增加了不少便利。所以,MSCHAPv2同样是一个不安全的算法,不能在不安全信道中使用。

同时也可以看出,认证服务器必须保存所有Supplicant的用户名及密码(明文或者密码的MD4)。虽然数据库可以保存密码的MD4,但不能回加盐,如果数据泄露,也很容易被暴破。也CHAP类似,也对认证服务器的安全性提出很高的要求。

四、省流

企业认证最安全的是EAP-TLS,但是需要企业建PKI设施,成本高,如果无法使用EAP-TLS,则可以使用EAP-TTLS+EAP-MSCHAPv2的方式,但是需要对服务端数据库进行高规格的安全加固。不推荐使用EAP-PEAP,因为其规范太老,没有更新。同时,企业需要通过流程要求接入终端配置需要验证的证书名称。



本文作者:一乐@涂鸦智能安全实验室

漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。

# 企业安全 # 网络安全技术
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录