Home | WHOAMI's Blog
在过去一段时间中,我一直试图探索 Mimikatz 这款经典工具的底层原理,比如明文凭据如何缓存在 LSASS 进程中,为什么可以使用 sekurlsa::wdigest
来提取这些凭据,但这并不是本篇文章要讨论的主题。在细扣 sekurlsa::wdigest
模块的同时,我拓展了一个绕过 Credential Guard 的小技巧。或许您已经听说过这种巧妙的 Credential Guard 绕过方法,它包括简单地修补 LSASS 进程中的两个全局变量。
通常情况下,攻击者能够在域的 ms-DS-MachineAccountQuota
属性值的限制内创建新的机器账户,并利用基于资源的约束委派实现提权。默认情况下,ms-DS-MachineAccountQuota
属性值为 10,也就是说一个域用户只能创建 10 个机器账户。但是,管理员可以将该属性值设为 0 以阻止潜在的攻击。当 ms-DS-MachineAccountQuota
属性值为 0 的时候,我们能否使用域用户账户代替机器账户完成 RBCD 攻击过程呢?
Windows 系统提供了与 RpcImpersonateClient()
功能相似的 ImpersonateNamedPipeClient()
函数。这意味着,在命名管道通信中,管道服务器也可以模拟已连接的管道客户端。因此,如果能够欺骗特权进程连接到我们创建的命名管道,我们可以通过令牌窃取的思路获得客户端令牌,并在特权令牌的上下文中创建进程。
2022 年 5 月 10 日,微软发布补丁修复了一个 Active Directory 域权限提升漏洞(CVE-2022–26923,Certifried)。我们可以通过 KrbRelay 中继 Kerberos ,为当前计算机账户设置 msDS-KeyCredentialLink
,从而利用 Shadow Credentials + SCMUACBypass 实现本地提权。然后修改当前计算机的 dNSHostName
属性值,进而实现域内提权。
2022 年 5 月 10 日,微软发布补丁修复了一个 Active Directory 域权限提升漏洞(CVE-2022–26923)。该漏洞是由于对用户属性的不正确获取,允许低权限用户在安装了 Active Directory 证书服务(AD CS)服务器角色的 Active Directory 环境中将权限提升至域管理员。这一漏洞最早由安全研究员 Oliver Lyak(@ly4k_)在 2021 年 12 月 14 日通过 Zero Day Initiative 向微软报告,Microsoft 在 2022 年 5 月的安全更新中对其进行了修补。
很多时候,NTLM Relay 并没有我们想象的那么完美。例如,在对 LDAP/s 这种协商签名的服务执行 NTLM Relay 时,如果在 Net-NTLM Hash 交换期间设置了协商签名标志,则目标服务器将忽略未签名的消息,从而导致攻击失败。幸运的是,并非所有客户端都设置了协商签名标志,如果客户端不支持签名,那么服务器是不会强制签名的。
在某些情况下,具有高完整性级别或系统完整性级别的进程处理特权进程/线程/令牌,然后产生较低完整性的进程。如果这些特权进程的句柄足够强大、类型正确并且被子进程继承,我们可以从另一个进程对它们进行复制,然后滥用它们来提升权限或绕过 UAC。
在 Black Hat Europe 2019 大会期间,Michael Grafnetter(@MGrafnetter)讨论了针对 Windows Hello for Business 技术的多种攻击方法,其中包括域持久化技术。该技术涉及修改目标计算机账户或用户帐户的 msDS-KeyCredentialLink
属性,以获得用于检索 NTLM 哈希值和请求 TGT 票据。即使目标帐户的密码被修改后,该属性也不会受到影响,因此,攻击者可以使用该技术完美的实现域持久性。
2021 年 10 月,James Forshaw(@tiraniddo)在 Project Zero 上发表了一篇名为 《Using Kerberos for Authentication Relay Attacks》 的文章,介绍了其在中继 Kerberos 身份验证方面的相关研究。该项研究一举反驳了多年以来不能中继 Kerberos 的观点。文章中介绍了一些技巧,可以使 Windows 对不同的服务主体名称(SPN)进行身份验证,这意味着 Kerberos 并不像我假设的那样完全可以避免中继。这促使 Dirk-jan Mollema(@dirkjanm)研究了一种新的滥用技术:使用 mitm6 通过 DNS 中继 Kerberos 身份验证。
2018 年对于攻击性社区来说是非常好的一年,因为 Dirk-jan Mollema(@dirkjanm)公布了有关基于 IPv6 中间人攻击的研究。在现代 Windows 操作系统中,默认情况下将启用 IPv6。这意味着系统会定期轮询 IPv6 配置,因为 IPv6 是比 IPv4 更新的协议,因此在 Microsoft 操作系统中,IPv6 的优先级将高于 IPv4。
然而,在绝大多数组织中,攻击者可以劫持客户端的 IPv6 DHCP 请求,并通过设置 DNS 服务器等方式,强制客户端对攻击者控制的服务器进行身份验证。这将为后续的 NTLM Relay 攻击铺平道路。
在本篇文章,我将对这种攻击思路进行讲解和演示,尽管这已经不是什么新技术了。
本篇文章大部分翻译并复现自 Will Schroeder(@harmj0y)和 Lee Christensen(@tifkin_)在 2021 年的 BlackHat 大会上所发布的白皮书 《Certified Pre-Owned - Abusing Active Directory Certificate Services》,其中详细介绍了关于 Active Directory Certificate Services 的滥用方法,关于 Active Directory 证书服务的攻击方法第一次系统性的进入我们的视野。
域委派是指将域内用户的权限委派给服务账户,使得相关服务账户能够以域用户的身份权限获得相关域内服务资源的访问权限。值得注意的是,在域环境中,只有机器账户和服务账户拥有委派属性,也就是说只有这两类账户可以配置域委派。
机器帐户被许多技术用于特权升级和横向移动,但也有通过机器帐户建立域持久性的情况。这涉及将任意机器帐户添加到特权组(例如域管理员组)或修改机器帐户的 userAccountControl
属性,使其转换为域控制器。在这两种情况下,攻击者都可以通过机器帐户进行身份验证并执行特权操作,例如通过 DCSync 导出所有域哈希等。
@Sean Metcalf 是第一个公开披露如何通过将机器帐户添加到高权限组来将机器帐户用作域持久性后门的人,此方法与向域管理员组添加标准用户帐户相同。2020 年, @Stealthbits 发布了一篇名为《SERVER (UN)TRUST ACCOUNT》的文章,展示了另一种持久性技术,其中涉及如何从机器帐户进行 Active Directory 复制。尽管通过 DCSync 技术转储密码哈希并不新鲜,并且相关操作可能会触发适当的警报,但使用机器帐户执行相同的技术能够达到更隐蔽的目的。