RBCD深度利用之“烂番茄”

2022-07-27
403

1.RBCD简介

本篇文章是在基于资源的约束委派的基础上的一个利用,篇幅会比较短,但个人认为利用面还是挺广泛的。于是就写一下。

首先,需要了解的是RBCD的基础知识:

可以参考我的这本篇文章,如果你还不了解Kerberos,可以看一下这篇

简单回顾一下:
image
基于资源的约束委派(RBCD)只支持2012及2012以上,它与非约束委派约束委派有个一个很大的区别,就是不需要管理员去单独配置。RBCD把设置的权限给了计算机本身,那么,既计算机本身可以决定‘我’可以委派谁来控制我,换句话说就是计算机自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfOfOtherIdentity属性来设置RBCD。

2.S4U2Self和S4U2Proxy

既然是RBCD,就一定绕不开两个协议,S4U2Self和S4U2Proxy,这两个协议的作用,主要是解决计算机以自己身份申请票据已达到完成认证的目的。

2.1.S4U2Self

  • S4U2Self
    通过此扩展可以拿到一张标识任意用户身份的ST,使用S4U2Self的原因,是因为,如果用户非Kerberos协议登录网站,那么就涉及到协议转换的问题,因此需要使用S4USelf。如果用户是使用Kerberos协议进行认证并登录该服务器的,那么,在该服务器上会有该用户的ST,就不需要使用S4USelf去申请ST,直接使用该的ST。这个协议的本质,其实是解决协议转换问题。当该用户user使用非Kerberos协议请求Server A的时候,Server A是没有user用户的ST的,但是Server A要去获取Server B的访问权限需要user用户的ST,因此S4U2Self解决了这个问题,Server A服务器可以使用它去向KDC请求一张user身份的ST,Server A服务器再用这张ST去发起S4U2proxy请求。

  • S4U2proxy
    该拓展作用是使用一张user用户身份的ST去向KDC请求一张用于访问Server B的ST,这张ST的身份还是user用户,这样Server A就可以利用uesr用户的权限去访问Server B上的文件了。

3.msDS-AllowedToActOnBehalfOfOtherIdentity

默认情况下,属性在ldap中是查不到的,需要单独配置才可以。谁配置了msDS-AllowedToActOnBehalfOfOtherIdentity属性,就说明谁配置了RBCD。

image
msDS-AllowedToActOnBehalfOfOtherIdentity的values是这样的:

O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;serverA的sid)

其中O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO未固定写法,;;;后面为被委派的用户的SID

如上图,values:D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-5199876-230042057-2391242617-1113)

说明:CN=SR,CN=Computers,DC=test,DC=org配置了S-1-5-21-5199876-230042057-2391242617-1113的委派

针对这,可以根据rabbit大佬的思路来理解:配置了msDS-AllowedToActOnBehalfOfOtherIdentity,values指向域内某个用户,就可以理解为,该计算机将鉴定权能力交出去,相当于,该计算机完全信任委派的用户。

按照上图就是:

CN=SR,CN=Computers,DC=test,DC=org配置了S-1-5-21-5199876-230042057-2391242617-1113的委派,就相当于CN=SR,CN=Computers,DC=test,DC=org信任S-1-5-21-5199876-230042057-2391242617-1113

3.1.谁可以配置?

既然知道了配置了RBCD的具体表现以及含义,那么问题来了,谁能修改msDS-AllowedToActOnBehalfOfOtherIdentity的values,准确的来讲,应该是:谁可以添加msDS-AllowedToActOnBehalfOfOtherIdentity的values并修改values

这里直接抛结论:

  • 机器用户

  • mS-DS-CreatorSID 账号(mS-DS-CreatorSID的valuse的值对应的objectSid)

4.攻击利用

这里复盘一下攻击步骤:

  • 第一步,连接域控ldap创建计算机账户xiaolongxia

  • 第二步,通过ldap协议在域控上设置sr的msds-allowedtoactonbehalfofotheridentity的值为O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;xiaolongxia的sid)

  • 第三步,使用xiaolongxia凭据拿到一张TGT

image
该工具集成上面的前三步,唯一不同的是,该工具将所有计算机的msds-allowedtoactonbehalfofotheridentity的值都设置成了新建的机器用户xiaolongxia

PS:这里感谢rabbit师傅提供的工具

  • 第四步,使用s4u2self代表administrator拿到一张ST

  • 第五步,拿从s4u2self那里获取到的ST作为验证信息再去请求一张用于访问sr机器CIFS spn的ST票据。

image

  • 第六步,提升权限

image

5.数据包分析

这里只简单看一下几个数据包
image
这个数据包,表示第三步:使用xiaolongxia凭据拿到一张TGT
image
image
image
这里表示,通过s4u2self代表administrator拿到一张ST,对自己进行请求。其中,从s4u2self申请ST所需要的TGT,它放在了TGQ-REQ -> padata -> PA-DATA PA-TGS-REQ ->padata-value->ap-req 结构体中
image
拿到的ST是由xiaolongxia的hash加密,s4u2self这个步骤作用是xiaolongxia拿自己的tgt票据请求一张访问xiaolongxia的ST,且该ST的身份是administrator,而这张ST是用xiaolongxia的hash加密的
image
最后一步,我们拿从s4u2self那里获取到的ST作为验证信息再去请求一张用于访问sr机器CIFS spn的ST票据,也就是s4u2proxy这一步。

6.攻击面

  • 企业可能会有一个专门的账号,用来拉新用户加入域,该账号通常只有普通域用户权限,如果我们控制了这个账户呢?

  • 当我们渗透进入一个域环境,发现并没有足够的权限扩,行动有限,那么我们可以查看,当前机器是谁拉进来的,如果我们能控制该用户呢?

  • 一个域用户X可能会在域中创建多台机器(比如笔记本和台式机都需要加入域),当我们有了改用户的权限时,可以利用RBCD继续攻击其他mS-DS-CreatorSID是该域用户的机器。

转载时必须以链接形式注明原始出处及本声明