域持久性 – AdminSDHolder

2022-01-06 14:42:38 浏览数 (1)

在红队评估期间,利用现有的 Microsoft 功能进行进攻性操作非常普遍,因为它提供了融入环境并不被发现的机会。Microsoft 引入了“ AdminSDHolder ”活动目录对象,以保护高权限帐户(例如域管理员和企业管理员)免受无意修改的权限,因为它被用作安全模板。Active Directory 检索“ AdminSDHolder ”的 ACL”对象定期(默认情况下每 60 分钟一次)并将权限应用于属于该对象的所有组和帐户。这意味着在红队操作期间,即使在 60 分钟内检测到一个帐户并将其从高特权组中删除(除非强制执行),这些权限也将被推回。

如果域遭到破坏,可以将标准用户帐户添加到“ AdminSDHolder ”的访问控制列表中,以建立域持久性。该用户将获得相当于域管理员的“GenericAll”权限。这种技术并不新鲜,因为它最初是由Sean Metcalf在 2015 年的 DerbyCon 期间提出的。 通过执行以下 PowerView 模块,从提升的 PowerShell 控制台实施攻击是微不足道的:

代码语言:javascript复制
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName pentestlab -Verbose -Rights All
AdminSDHolder – 修改AdminSDHolder – 修改

60 分钟后,将应用权限更改,并且可以使用模块“ Get-ObjectAcl ”来验证用户“ pentestlab ”是否具有“ GenericAll ”活动目录权限。

代码语言:javascript复制
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'pentestlab'}
AdminSDHolder – 通用所有权限AdminSDHolder – 通用所有权限

ACL 中的更改将在 60 分钟后自动传播。这是由于安全描述符传播器 (SDProp) 进程在主体域控制器 (PDC) 模拟器上每 60 分钟运行一次,并使用 AdminSDHolder 中存在的组和帐户的安全权限填充访问控制列表。但是,可以通过修改 DN 来强制执行这些操作,如下所示,使用“ ldp.exe ”实用程序。

AdminSDHolder – 修改 DNAdminSDHolder – 修改 DN

或者,修改域控制器上的特定注册表项可以将 SDProp 的时间间隔减少到 3 分钟(12c 十六进制值)。应该注意的是,Microsoft 不建议修改此设置,因为这可能会导致与跨域的 LSASS 进程相关的性能问题。

代码语言:javascript复制
REG ADD HKLMSYSTEMCurrentControlSetServicesNTDSParameters /V AdminSDProtectFrequency /T REG_DWORD /F /D 300

从 Active Directory 的角度来看,通过查看其属性,可以看到用户“ pentestlab ”已添加到“ AdminSDHolder ”对象中。

AdminSDHolder – 属性AdminSDHolder – 属性

作为“ AdminSDHolder ”容器一部分的组和帐户将“ adminCount ”属性设置为1。该标志表示即使权限被修改,来自该容器的权限也将在60分钟内跨域复制。

AdminSDHolder – adminCountAdminSDHolder – adminCount

由于用户具有所需的权限,因此可以将其添加到“域管理员”组。

代码语言:javascript复制
net group "domain admins" pentestlab /add /domain
将用户添加到域管理员组将用户添加到域管理员组

执行下面的命令将验证域控制器现在可以访问并且域持久性已经建立。

代码语言:javascript复制
dir \10.0.0.1c$
AdminSDHolder – DC 访问AdminSDHolder – DC 访问

0 人点赞