Abusing Active Directory ACLs/ACEs
本页面主要总结了来自 https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces 和 https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges的技术总结。有关更多详细信息,请查看原始文章。
用户的 GenericAll 权限
此权限授予攻击者对目标用户帐户的完全控制。一旦使用 Get-ObjectAcl
命令确认了 GenericAll
权限,攻击者可以:
更改目标的密码:使用
net user <username> <password> /domain
,攻击者可以重置用户的密码。针对性 Kerberoasting:将 SPN 分配给用户帐户,使其可进行 Kerberoasting,然后使用 Rubeus 和 targetedKerberoast.py 提取并尝试破解票据授予票 (TGT) 哈希。
Targeted ASREPRoasting: 禁用用户的预身份验证,使其账户容易受到 ASREPRoasting 攻击。
GenericAll 权限在组上
此权限允许攻击者操纵组成员资格,如果他们在像 Domain Admins
这样的组上拥有 GenericAll
权限。在使用 Get-NetGroup
确定组的区分名称后,攻击者可以:
将自己添加到 Domain Admins 组:这可以通过直接命令或使用像 Active Directory 或 PowerSploit 这样的模块来完成。
GenericAll / GenericWrite / Write on Computer/User
持有这些权限在计算机对象或用户帐户上允许:
Kerberos 基于资源的受限委派:允许接管计算机对象。
影子凭证:使用此技术通过利用创建影子凭证的权限来冒充计算机或用户帐户。
WriteProperty on Group
如果用户对特定组(例如,Domain Admins
)的所有对象具有 WriteProperty
权限,他们可以:
将自己添加到 Domain Admins 组:通过结合使用
net user
和Add-NetGroupUser
命令实现,此方法允许在域内提升权限。
自我(自我成员)在组中
此权限使攻击者能够通过直接操纵组成员资格的命令将自己添加到特定组,例如 Domain Admins
。使用以下命令序列可以实现自我添加:
WriteProperty (自我成员资格)
一个类似的权限,这允许攻击者通过修改组属性直接将自己添加到组中,如果他们在这些组上拥有 WriteProperty
权限。此权限的确认和执行通过以下方式进行:
ForceChangePassword
持有用户的 User-Force-Change-Password
的 ExtendedRight
允许在不知道当前密码的情况下重置密码。可以通过 PowerShell 或其他命令行工具验证此权限及其利用,提供多种重置用户密码的方法,包括交互式会话和非交互式环境中的单行命令。这些命令从简单的 PowerShell 调用到在 Linux 上使用 rpcclient
,展示了攻击向量的多样性。
WriteOwner 权限在组上
如果攻击者发现他们对一个组拥有 WriteOwner
权限,他们可以将该组的所有权更改为自己。这在该组是 Domain Admins
时尤其具有影响力,因为更改所有权允许对组属性和成员资格进行更广泛的控制。该过程涉及通过 Get-ObjectAcl
确定正确的对象,然后使用 Set-DomainObjectOwner
修改所有者,可以通过 SID 或名称进行修改。
GenericWrite on User
此权限允许攻击者修改用户属性。具体而言,拥有 GenericWrite
访问权限的攻击者可以更改用户的登录脚本路径,以便在用户登录时执行恶意脚本。这是通过使用 Set-ADObject
命令更新目标用户的 scriptpath
属性,使其指向攻击者的脚本来实现的。
GenericWrite on Group
通过此权限,攻击者可以操纵组成员资格,例如将自己或其他用户添加到特定组中。此过程涉及创建凭据对象,使用它来添加或移除用户,并使用 PowerShell 命令验证成员资格更改。
WriteDACL + WriteOwner
拥有一个AD对象并对其具有WriteDACL
权限使攻击者能够授予自己对该对象的GenericAll
权限。这是通过ADSI操作实现的,允许对该对象进行完全控制并能够修改其组成员资格。尽管如此,在尝试使用Active Directory模块的Set-Acl
/ Get-Acl
cmdlets利用这些权限时仍然存在限制。
域上的复制 (DCSync)
DCSync 攻击利用域上的特定复制权限,模拟域控制器并同步数据,包括用户凭据。这种强大的技术需要像 DS-Replication-Get-Changes
这样的权限,使攻击者能够在没有直接访问域控制器的情况下,从 AD 环境中提取敏感信息。在这里了解更多关于 DCSync 攻击的信息。
GPO 委派
GPO 委派
委派管理组策略对象 (GPO) 的访问权限可能会带来重大安全风险。例如,如果用户如 offense\spotless
被委派 GPO 管理权限,他们可能拥有 WriteProperty、WriteDacl 和 WriteOwner 等权限。这些权限可能被滥用用于恶意目的,使用 PowerView 识别:bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
枚举 GPO 权限
要识别配置错误的 GPO,可以将 PowerSploit 的 cmdlet 链接在一起。这允许发现特定用户有权限管理的 GPO:powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
应用特定策略的计算机:可以解析特定 GPO 应用到哪些计算机,帮助理解潜在影响的范围。powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}
应用于特定计算机的策略:要查看应用于特定计算机的策略,可以使用 Get-DomainGPO
等命令。
应用特定策略的 OU:可以使用 Get-DomainOU
识别受特定策略影响的组织单位 (OU)。
滥用 GPO - New-GPOImmediateTask
配置错误的 GPO 可以被利用来执行代码,例如,通过创建一个立即的计划任务。这可以用来将用户添加到受影响机器的本地管理员组,从而显著提升权限:
GroupPolicy module - Abuse GPO
GroupPolicy模块(如果已安装)允许创建和链接新的GPO,并设置首选项,例如注册表值,以在受影响的计算机上执行后门。此方法要求更新GPO,并且用户必须登录计算机以执行:
SharpGPOAbuse - 滥用 GPO
SharpGPOAbuse 提供了一种滥用现有 GPO 的方法,通过添加任务或修改设置,而无需创建新的 GPO。此工具需要修改现有 GPO 或使用 RSAT 工具创建新的 GPO,然后再应用更改:
强制策略更新
GPO 更新通常每 90 分钟发生一次。为了加快这个过程,特别是在实施更改后,可以在目标计算机上使用 gpupdate /force
命令强制立即更新策略。此命令确保对 GPO 的任何修改在下一个自动更新周期之前立即应用。
背后原理
在检查给定 GPO 的计划任务时,例如 Misconfigured Policy
,可以确认添加了诸如 evilTask
的任务。这些任务是通过脚本或命令行工具创建的,旨在修改系统行为或提升权限。
任务的结构,如 New-GPOImmediateTask
生成的 XML 配置文件所示,概述了计划任务的具体细节,包括要执行的命令及其触发器。该文件表示如何在 GPO 中定义和管理计划任务,提供了一种作为政策执行一部分执行任意命令或脚本的方法。
用户和组
GPO 还允许在目标系统上操纵用户和组的成员资格。通过直接编辑用户和组政策文件,攻击者可以将用户添加到特权组,例如本地 administrators
组。这是通过委派 GPO 管理权限实现的,允许修改政策文件以包含新用户或更改组成员资格。
用户和组的 XML 配置文件概述了这些更改是如何实施的。通过向该文件添加条目,可以授予特定用户在受影响系统上的提升权限。这种方法提供了一种通过 GPO 操作进行权限提升的直接途径。
此外,还可以考虑其他执行代码或维持持久性的方式,例如利用登录/注销脚本、修改注册表键以实现自动运行、通过 .msi 文件安装软件或编辑服务配置。这些技术提供了通过滥用 GPO 维持访问和控制目标系统的各种途径。
参考文献
Last updated