TLS Certificates from EAP Network Traffic
网络可以使用802.1X和可扩展认证协议(EAP)通过多种不同方法对客户端工作站进行认证。EAP在有线网络和无线网络环境中均有应用。在企业网络中,EAP-PEAP是最常见的认证方式,尽管EAP-TLS也可使用。
EAP-PEAP(EAP-PEAPv0)是最常用的EAP形式,其中MSCHAPv2编码的凭据受到TLS隧道保护。TLS隧道通过RADIUS协议向认证器(交换机或无线控制器)传递服务器证书建立,然后通过EAP传递给802.1x客户端/请求者。客户端/请求者必须在建立TLS隧道之前验证证书信任链。隧道建立后,使用MSCHAPv2将用户名和密码凭据发送到RADIUS服务器。
EAP-TLS与EAP-PEAP非常相似,只是执行相互TLS证书认证。客户端请求者提供由服务器验证的客户端证书,然后RADIUS服务器提供由客户端验证的服务器证书。证书交换过程完成并经过适当的信任链验证后,认证凭据可以通过TLS隧道传递。在某些组织中,甚至不验证凭据,仅相互签名证书的交换有时就视为足够。
在使用WPA2-Enterprise模式的无线网络环境中,所有EAP事务都以明文进行,因为基于AES加密的成对主密钥计算在交换认证凭据之前无法完成。
这意味着,当在有线端口或无线空间中使用嗅探器时,可以捕获交换的证书。如果(如某些组织实施的那样)相互证书交换被视为基于机器的认证足够,这可能是有用的信息。
注意:在802.1x和Microsoft Windows的世界中,802.1x请求者实现了双级认证。机器启动时可以呈现机器凭据,用户在启动阶段后登录机器时可以呈现用户凭据。
为了在EAP-TLS交换期间捕获X.509证书的字节,可以配置Wireshark监视代表客户端工作站和网络交换机之间被动网络分路器的有线接口,或配置监视模式的无线网络接口。无线命令行示例如下:
|
|
为了在Wireshark中捕获EAP流量,最简单的方法是使用关键字“eap”启用显示过滤器。
启用显示过滤器后,通过重新启动机器并重新认证,或简单地断开并重新连接有线网络接口,在相关客户端工作站上执行登录序列。
假设完整的认证序列成功,您应该看到类似于下图的包捕获。
认证器(无线AP或网络交换机)发送EAP“请求身份”消息,假设客户端工作站配置正确,它将响应“响应身份”消息。
假设配置正确,认证器将随后请求EAP-TLS协议,如上面列出的包188所示。
我们感兴趣的部分从包192开始,实际证书在此交换。在此交换中,我们应该能够导出客户端和服务器呈现的证书。此外,RADIUS服务器通常会随RADIUS服务器证书本身一起发送认证机构(CA)证书。总共我们可以提取三个证书。
注意,EAP包是OSI第2层,因此受传输介质MTU的限制,通常为1500字节或更少。因此,EAP协议会将证书数据分片到多个帧中。话虽如此,Wireshark会友好地重新组装这些碎片。
查看Wireshark捕获中的帧192,我们可以看到协议分析器在“SERVER HELLO”包中显示了两个不同的证书,其中一个的通用名称为“living.thyer.org”(RADIUS服务器),另一个的通用名称为“ROOT-CA”(认证机构)。
要保存证书,只需在协议分析器窗口中高亮“Certificate”字段,右键单击并选择“Export Selected Packet Bytes”进行简单的字节导出。
可以对EAP包交换中的所有证书重复此操作。完成后,您应该成功获得EAP流量中包含的两个或三个证书的二进制证书(DER)表示。
下图显示了从包号207开始的客户端证书。
为了验证证书格式和信息,您可以在命令行中使用OpenSSL读取证书。
|
|
要转换回PEM(base64)格式,您可以指定OpenSSL的“-out”标志和新文件名。
|
|