freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

AdminSDHolder
2021-10-27 16:47:14

本次安全科普为大家介绍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日志来监控

# 系统安全 # 数据安全
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录