AdminSDHolder

AdminSDHolder

本次安全科普为大家介绍AD域中的AdminSDHolder,与AdminSDHolder相关的特性频繁被攻击者利用来进行留后门等操作,在检查AD域安全时AdminSDHolder相关属性也是排查的重点。

0x00 域内受保护的用户和组

在Active Directory中,一些高权限的用户和组被视为受保护的对象

通常对于受保护的用户和组,权限的设置和修改是由一个自动过程来完成的,这样才能保证在对象移动到其他目录时,对象的权限也始终保持一致

不同系统版本的域控制器上受保护的用户和组也不同,具体可以参考微软文档:APPENDIX-C–PROTECTED-ACCOUNTS-AND-GROUPS-IN-ACTIVE-DIRECTORY

也可以使用adfind来查询

Adfind.exe -f "&(objectcategory=group)(admincount=1)" -dn

Adfind.exe -f "&(objectcategory=user)(admincount=1)" -dn
20211027153744-c5e31a24-36f8-1

1. AdminSDHolder

AdminSDHolder对象的目的是为域内受保护的用户和组提供权限的“模板”,其在LDAP上的路径为:CN=AdminSDHolder,CN=System,DC=<domain_component>,DC=<domain_component>

20211027153753-cb787e8e-36f8-1

AdminSDHolder由Domain Admins组拥有,默认情况下,EA可以对任何域的AdminSDHolder对象进行更改,域的Domain Admins和Administrators组也可以进行更改

尽管AdminSDHolder的默认所有者是域的Domain Admins组,但是Administrators或Enterprise Admins的成员可以获取该对象的所有权

20211027153804-d231b1aa-36f8-1

2. SDProp

SDProp是一个进程,该进程每60分钟(默认情况下)在包含域的PDC模拟器(PDCE)的域控制器上运行

SDProp将域的AdminSDHolder对象的权限与域中受保护的帐户和组的权限进行比较。如果任何受保护帐户和组的权限与AdminSDHolder对象的权限不匹配,则将受保护帐户和组的权限重置为与域的AdminSDHolder对象的权限匹配

0x01 利用

既然默认每60分钟SDProp会将受保护帐户和组的权限重置为与域的AdminSDHolder对象的权限匹配,那么我们完全可以对AdminSDHolder添加ACL来留后门

利用权限:

  1. 对AdminSDHolder有WriteDACL权限的账户

1. 添加ACL

(1) Admod

.Admod.exe -b "CN=AdminSDHolder,CN=System,DC=testad,DC=local" "SD##ntsecuritydescriptor::{GETSD}{+D=(A;;GA;;;testadtest1)}"
20211027153815-d86715ba-36f8-1

(2) PowerView

这里有一个坑点,PowerView在github的主分支中很多功能是没有的,所以推荐使用Dev分支

PowerView_dev

Import-Module .PowerView.ps1

Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName test1 -Verbose -Rights All

2. 执行SDProp

除了等待默认的60分钟后SDProp自动执行,我们还可以用以下两种方法来更快速的执行SDProp

(1) 修改默认时间

如果需要修改60min的执行时间间隔,只需要在HKLMSYSTEMCurrentControlSetServicesNTDSParameters中添加或修改AdminSDProtectFrequency的值

该值的范围是从60到7200,单位为秒,键类型为DWORD

可以直接使用命令行更改:

reg add hklmSYSTEMCurrentControlSetServicesNTDSParameters /v AdminSDProtectFrequency /t REG_DWORD /d 600

如果需要恢复为默认的60min,则可以在注册表中删除AdminSDProtectFrequency这一项

(2) 手动执行

首先启动Ldp.exe,然后选择菜单栏中“连接” —> “连接”

20211027153830-e16cc7ae-36f8-1

输入拥有PDC模拟器(PDCE)角色的DC的FQDN或IP:

20211027153848-ec2d4600-36f8-1

选择菜单栏菜单栏中“连接” —> “绑定”

20211027153859-f2c7762a-36f8-1

绑定窗口中输入有权修改rootDSE对象的用户帐户的凭据,或者直接已当前已登录的用户身份绑定

20211027153913-faeaf976-36f8-1

选择菜单栏菜单栏中“浏览” —> “修改”

20211027153924-01b9901e-36f9-1

在修改窗口这里针对不同版本的域控制器有不同的情况:

  • 域控为Windows Server 2008: 将“DN”字段留空。在“编辑条目属性”字段中,输入FixUpInheritance,在“值”字段中,输入Yes。单击输入填充条目列表
  • 域控为Windows Server 2008 R2或Windows Server 2012: 将“DN”字段留空。在“编辑条目属性”字段中,输入RunProtectAdminGroupsTask,在“值”字段中,输入1。单击输入填充条目列表
20211027153940-0b14ff86-36f9-1

最后在“修改”对话框中点击“运行”即可

3. 添加特权

SDProp执行后,这些受保护的用户和组就被同步与AdminSDHolder一样的ACL

20211027153957-1559bd42-36f9-1

现在我们已经对这些特权组/用户拥有FC权限了,以添加域管组成员为例:

20211027154016-207a2018-36f9-1

0x02 防御与检测

该攻击手法的核心点在于需要修改AdminSDHolder的ACL,因此我们只需要检测对AdminSDHolder的ACL的修改行为即可,可以通过5136日志来监控

20211027154031-29a170b0-36f9-1

转载自

https://xz.aliyun.com/t/10436

主题测试文章,只做测试使用。发布者:视频运营,转转请注明出处:https://community.anqiangkj.com/archives/8941

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年3月17日 上午10:34
下一篇 2022年3月17日 上午10:59

相关推荐

发表回复

您的电子邮箱地址不会被公开。