由于入域的工作站在锁屏页面中可以修改连接 Wi-Fi,攻击者可以滥用此功能将工作站接入非法的 Wi-Fi 中进行身份验证,以捕捉 MSCHAPv2。
默认情况下,加入域的Windows工作站允许从锁定屏幕访问网络选择UI。
可以物理访问具有WiFi功能的锁定设备(例如笔记本电脑或工作站)的攻击者可以滥用此功能,以强制笔记本电脑针对恶意访问点进行身份验证,并捕获域计算机帐户的MSCHAPv2质询响应哈希。
然后,可以在不到24小时的时间内将此质询响应哈希值提交给crack.sh以恢复计算机帐户的NTLM哈希值。
一旦恢复,此NTLM哈希与域SID结合可用于伪造Kerberos银票据,以模拟特权用户并危及主机。比如,为笔记本电脑的CIFS服务创建一张银票,以便以SMB身份作为SYSTEM用户进行身份验证并获得对硬盘的无限制访问权限。银票据(silver ticket):它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限,也就是只能访问特定的服务。
由于可以从锁定的设备执行攻击,因此可以利用它绕过BitLocker完整磁盘加密并获得对设备文件系统的访问权限。
此外,由于可以为特权用户伪造银票,因此也可以利用此攻击将特权提升到设备上本地管理员的特权。具体视频,请点此观看。
受影响的版本
确认该漏洞存在于加入域的Windows 10主机上。
Windows的早期版本也可能会受到影响,但尚未经过测试。
背景
熟悉企业无线网络的人可能会熟悉受保护的可扩展身份验证协议(PEAP)。
PEAP是隧道式身份验证协议,这意味着首先与RADIUS服务器建立SSL隧道(称为阶段1),以保护在身份验证(阶段2)期间发送的凭据材料。
Windows环境中使用的最常见的内部身份验证方法之一是MSCHAPv2。
这项研究的高潮是crack.sh服务,该服务保证为任何给定的MSCHAPv2质询响应哈希(无论密码复杂度如何)都恢复NTLM哈希。
在Windows环境中,当域用户使用带有MSCHAPv2的PEAP对无线访问点进行身份验证时,所产生的质询响应哈希是从域用户密码的NTLM哈希得出的。
除了域用户身份验证外,Windows还提供了使用计算机或计算机身份验证的选项,这可以允许设备在域用户登录之前向无线网络进行身份验证。
需要计算机身份验证来解决“先有鸡还是先有蛋”的情况,即设备在能够到达Active Directory并对域用户进行身份验证之前,首先需要对网络进行身份验证。为了为用户创建无缝体验,这种身份验证在用户登录到设备之前从锁屏开始进行。
计算机身份验证可以使用客户端证书或MSCHAPv2作为其内部身份验证机制。如果是客户端证书,则使用为域计算机帐户颁发的证书进行身份验证。但是,如果计算机身份验证与PEAP和MSCHAPv2一起使用,会发生什么情况呢?在本例中,域计算机帐户的NTLM哈希将用于身份验证。
计算机帐户密码复杂、冗长且随机生成。研究人员不可能恢复这个帐户的纯文本密码,所以为什么这很重要?所以研究人员无法恢复纯文本密码,但是由于使用了crack.sh,研究人员可以恢复NTLM哈希值。
计算机帐户NTLM哈希在Windows域环境中具有特殊意义,因为它们与Kerberos银票有关。使用计算机帐户的NTLM哈希对由计算机托管的服务(例如CIFS服务)的Kerberos服务票证进行签名和加密。
为了伪造服务票,研究人员需要以下信息:
1.计算机帐户的NTLM哈希;
2.研究人员想获得的服务名称;
3.域SID;
一旦研究人员从crack.sh中恢复了计算机帐户NTLM哈希,所需要的就只是域SID,研究人员可以伪造研究人员自己的票证。域SID不是秘密信息,可以由任何常规域用户检索。
权限从域用户升级到本地管理员
为了对此进行武器化,研究人员首先需要创建一个恶意访问点,该访问点支持将PEAP和MSCHAPV2设置为内部身份验证方法。有很多工具可以完成此操作,这里研究人员使用hostapd-mana。
注意为了允许Windows 10的更高版本连接到访问点,需要使用受信任的CA对RADIUS服务器证书进行签名。否则,将在Windows 10请求方上导致模糊的“连接失败”错误。
在这里,研究人员使用LetsEncrypt通过以下命令实现此目的。请注意,证书上的服务器名称无关紧要,只需由受信任的权威机构对其进行签名即可。
生成证书后,研究人员使用hostapd配置对其重命名以使其更有意义,并生成DH参数。
然后,研究人员创建一个包含以下内容的“hostapd.conf”文件:
和“ hostapd.eap_user”文件,其内容如下:
完成此操作后,可以使用命令./hostapd hostpad.conf运行hostpad-mana。此时,攻击者可以迫使笔记本电脑从锁定屏幕连接到访问点(忽略证书错误),从而捕获计算机帐户的MSCHAPV2质询响应哈希,如下所示。
由于MSCHAPv2要求访问点也知道密码,因此无线身份验证将在此阶段失败,但是将捕获质询响应哈希。
恢复NTLM哈希
然后,可以使用工具chapcrack将捕获的MSCHAPv2挑战响应哈希值转换为Cloud Crack格式,并提交给crack.sh进行破解。
出于POC目的,在研究人员的实验室中,研究人员使用了Impacket的工具secretsdump.py来验证chapcrack输出的K3的前4个字节与计算机帐户的NTLM哈希的后4个字节是否匹配。
作为经过身份验证的域用户,研究人员可以通过许多不同的方式来获取域SID。最简单的方法就是简单地运行whoami / all。
现在,研究人员已经获得了为设备上的CIFS服务伪造银票据所需的所有信息。由于研究人员可以指定服务票据中包含的用户和组SID,因此可以使用它以管理用户身份访问CIFS服务。
研究人员可以使用来自Impacket的工具ticketer.py和以下命令来执行此操作。
使用smbclient,研究人员现在可以访问笔记本电脑的整个文件系统。
Impacket中的smbexec.py之类的工具提供了一种简便的方法,可以在SYSTEM用户的安全环境中在主机上执行命令。
后来发现可以从锁定屏幕上获取质询响应哈希之后,这打开了一些更有趣的攻击方案,例如,针对启用了全盘加密(FDE)的锁定笔记本电脑。
但是,为了利用这一点,还需要域SID。研究人员需要一种无需先登录到计算机即可恢复它的方法。
在发现这次攻击的几个月后,一个客户找到研究人员,对其一台SOE笔记本电脑进行了测试。他们特别担心的一个问题是,如果攻击者能够得到一台被BitLocker全磁盘加密保护的锁定笔记本电脑,会造成多大的破坏。
在这个攻击场景中,研究人员重新考虑了这个想法,并着手看看是否可以找到一种无需登录计算机即可泄漏域SID的方法。
当加入域的计算机首次访问网络时,将执行许多CLDAP搜索,以识别域控制器上可用的服务,这些消息称为LDAP ping。
这听起来很有希望,因为在此发现过程中使用的CLDAP查询包含以下信息:
· DnsDomain
· Host
· DnsHostName
· User
· DomainSid
· DomainGuid
研究人员的初始测试涉及运行Wireshark捕获并观察无线客户端发出的LDAP DNS请求。
将这些srv-host DNS条目添加到dnsmasq配置并重新连接客户端后,研究人员找到了所需的内容。
这样,研究人员现在拥有了尝试攻击锁定笔记本电脑所需的一切条件。
在启用了全盘加密的情况下访问锁定的计算机
同样的rouge AP配置可以用于从目标设备的锁屏捕获挑战响应哈希并提交到crack.sh。
为了泄漏域SID,研究人员需要将笔记本电脑加入攻击者控制的网络,在该网络中,研究人员将使用攻击者的IP地址响应笔记本电脑发出的所有DNS SRV请求。
这将使研究人员能够捕获包含域SID和域名的“ LDAP ping”数据包。同样,研究人员将运行恶意访问点,并强制客户端从锁定屏幕进行连接。但是,这次研究人员将使用下面的hostapd.conf和hostapd-psk文件创建WPA2-PSK网络,而不是配置访问点以支持PEAP身份验证。
接下来创建一个文件hostapd-psk来为网络00:00:00:00:00:00 airstrike配置密码。
当研究人员希望笔记本电脑连接到研究人员的网络时,研究人员还需要使用带有以下dnsmasq.conf文件的dnsmasq运行DHCP和DNS服务器。
现在,研究人员可以为无线适配器分配IP地址并启动DNS / DHCP服务器。
为了从笔记本电脑中捕获流量,研究人员还将在无线接口上启用tcpdump。
一旦运行,研究人员就可以从锁定屏幕连接到无线网络,并且应该还会看到笔记本电脑从DHCP服务器接收到一个IP。
当笔记本电脑首次连接时,研究人员将看到许多未响应的SRV DNS请求。研究人员将记录所有这些内容,并修改dnsmasq.conf文件,以使用无线接入点的IP地址响应它们。
现在,研究人员可以从接入点断开并重新连接笔记本电脑,并检查新pcap文件的内容。如果研究人员对CLDAP协议的数据包进行过滤,可以看到笔记本电脑尝试对攻击者IP进行LDAP ping操作。 LDAP ping消息的内容包含Active Directory域名,笔记本电脑的主机名和域SID。
研究人员可以再次使用工具ticketer.py为CIFS服务创建一张银票,并使用smbclient进行身份验证以不受限制地访问设备的文件系统。
注意:在某些情况下,默认的RID 500帐户在加入域的主机上没有本地管理员权限。在这种情况下,可以通过增加银票中包含的RID,直到发现有效帐户来采取暴力手段。
目前研究人员已把该漏洞披露给Microsoft安全响应中心,并且已在2021年4月的最新安全更新中得到解决。
作为进一步的加强措施,可以通过以下组策略设置禁用从锁定屏幕访问网络选择UI的功能。
也可以通过启用DontDisplayNetworkSelectionUI标志通过注册表配置此设置。
本文翻译自:https://shenaniganslabs.io/2021/04/13/Airstrike.html如若转载,请注明原文地址