AdminSDHolder安全解密

阅读量320948

发布时间 : 2021-10-30 10:00:58

 

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

1. AdminSDHolder

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

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

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

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;;;testad\test1)}"

(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的执行时间间隔,只需要在HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters中添加或修改AdminSDProtectFrequency的值

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

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

reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 600

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

(2) 手动执行

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

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

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

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

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

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

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

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

3. 添加特权

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

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

 

0x02 防御与检测

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

本文由御守实验室原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/257326

安全客 - 有思想的安全新媒体

分享到:微信
+10赞
收藏
御守实验室
分享到:微信

发表评论

御守实验室

网星安全御守实验室(Amulab)是隶属于网星安全(中安网星)的纯技术研究团队。主要职能包括横向移动研究、AD域安全研究、Windows安全研究等前瞻攻防技术预研、工具孵化,为产品输出安全能力。

  • 文章
  • 21
  • 粉丝
  • 42

热门推荐

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66