Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

攻击者如何使用 AdminSDHolder 和 SDProp 实现持久性

攻击者如何使用 AdminSDHolder 和 SDProp 实现持久性

Jun 16, 2023

一旦攻击者获取了特权凭据,例如通过 利用攻击路径 ,他们会希望确保不会失去在域中的立足点。也就是说,即使他们已入侵的账户被禁用或其密码被重置,他们也希望能够轻松重新获得 Domain Admin 权限。

实现这种持久性的一个方法,是利用 Active Directory 中旨在让特权账户保持受保护状态的功能:AdminSDHolder 和 SDProp。本文将解释这种策略的工作原理,以及如何进行防御。

AdminSDHolder 和 SDProp 是什么?

AdminSDHolder 是一个存在于每个 Active Directory 域 中的容器,用于特定目的:AdminSDHolder 对象的访问控制列表(ACL)被用作模板,将权限复制到 Active Directory 中所有受保护的 以及它们的成员。(受保护的组 是那些已被识别为需要额外安全的内置组,包括域管理员(Domain Admins)、管理员(Administrators)、企业管理员(Enterprise Admins)和架构管理员(Schema Admins)。)

默认情况下,SDProp 进程每 60 分钟将 AdminSDHolder 对象的 ACL 应用于所有受保护的组及其成员用户。由于 AdminSDHolder 的 ACL 被设计为非常严格,因此该进程通常有助于增强安全性。

但是,如果攻击者修改了 AdminSDHolder 的 ACL,那么这些被修改的访问权限将自动应用到所有受保护的对象中。比如,攻击者可能会将其控制的用户帐户添加到 AdminSDHolder 的 ACL,并授予其完全控制权限:

Image

即使管理员在某个受保护的对象上看到不恰当的权限并将其移除,SDProp 进程也会在一小时内重新应用修改后的 ACL。 因此,这种策略有助于攻击者获取对敏感信息的访问权限。

使用 AdminCount 评估你的风险

AdminCount 是 Active Directory 对象的一个属性。AdminCount 值为 1 表示该对象是(或曾是)至少一个受保护组的成员。 因此,通过查看所有 AdminCount 值为 1 的对象,你可以大致了解针对 AdminSDHolder 的攻击在你的环境中可能会有多普遍。

你可以使用 PowerShell 和 LDAP 过滤器操作轻松完成此分析:

      $ldapFilter = “(adminCount=l)”

$domain = New-Object System.DirectoryServices.DirectoryEntry

$search = New-Object System.DirectoryServices.DirectorySearcher

$search.SearchRoot = $domain

$search.PageSize = 1000

$search.Filter = $ldapFilter

$search.SearchScope = “Subtree”

$results = $search.FindAll()

foreach ($result in $results)

      {

             SuserEntry = $result.GetDirectoryEntry()

             Write-host “Object Name = “ $userEntry.name

             Write-host “Obect Class = “ $userEntry.objectClass

             foreach($AdminCount in $userEntry.adminCount)

             {

                   Write-host “AdminCount =” $AdminCount

                   Write-host “”

             }

}
      

需要注意的一点是,即使用户已从特权组中移除,其 AdminCount 值仍会保持为 1;然而,由于 Active Directory 不再将他们视为受保护对象,因此不会对他们应用 AdminSDHolder ACL。尽管如此,这些对象很可能仍然保留了某个版本的 AdminSDHolder 权限,因为当对象曾被 AdminSDHolder 权限保护过时,权限继承仍可能因残留而保持被禁用。 因此,查看这些对象仍然很有用,且在大多数情况下,应当重新启用权限继承。

防止 AdminSDHolder 被滥用

只有具有管理权限的用户才能修改 AdminSDHolder ACL,因此,防范这种持久化战术的最佳方式是防止管理凭据遭到泄露。

此外,如果管理帐户遭到入侵,重要的是监控 AdminSDHolder 对象,并对任何更改及时获取告警。更改不应发生,因此任何告警都值得立即进行调查并回滚。

同样重要的是,定期对 AdminCount 值为 1 的对象进行汇报。如果其中任何对象不应拥有管理权限,请将其放置到正确的位置,并确保其继承相应的权限。

Netwrix 如何提供帮助

Netwrix Active Directory Security Solution 可以支持你们组织在防御滥用 AdminSDHolder 和 SDProp 的攻击方面的工作。特别是,你可以:

  • 保护特权帐户免遭入侵,确保其无法用于修改 AdminSDHolder。
  • 及时发现表明身份遭到入侵的可疑行为。
  • 监控 AdminSDHolder 对象,并在发生任何变更时收到告警。
  • 识别并移除过度授权,以限制被泄露凭据造成的损害。
  • 通过实时告警和详细报告,及时了解对 Active Directory 环境所做的任何更改。

常见问题解答

AdminSDHolder 是什么?

AdminSDHolder 是在每个 Active Directory 域中创建的容器对象。其 ACL 会自动应用于该域中所有受保护组以及这些组的成员。

AdminSDHolder 位于哪里?

AdminSDHolder 容器位于 System 容器(CN=System)中。你可以通过在 Active Directory Users and Computers(ADUC)管理控制台中启用“高级功能”来查看它。

什么是 AdminCount?

AdminCount 是 AD 对象的一个属性。AdminCount 值为 1 表示该对象是(或曾经是)至少一个受保护组的成员。

分享到

了解更多

关于作者

Jeff Warren

首席产品官

Jeff Warren 负责监督 Netwrix 的产品组合,在安全领域的产品管理与开发方面拥有十多年的经验。在加入 Netwrix 之前,Jeff 曾在 Stealthbits Technologies 领导产品团队;他运用自己作为软件工程师的经验,开发创新且面向企业规模的安全解决方案。凭借亲力亲为的工作方式以及解决棘手安全挑战的能力,Jeff 致力于打造真正可落地、行之有效的实用解决方案。他拥有特拉华大学(University of Delaware)的信息系统(Information Systems)学士学位。