本篇文章是在基于资源的约束委派的基础上的一个利用,篇幅会比较短,但个人认为利用面还是挺广泛的。于是就写一下。
首先,需要了解的是RBCD的基础知识:
可以参考我的这本篇文章,如果你还不了解Kerberos,可以看一下这篇
简单回顾一下:既然是RBCD,就一定绕不开两个协议,S4U2Self和S4U2Proxy,这两个协议的作用,主要是解决计算机以自己身份申请票据已达到完成认证的目的。
• 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上的文件了。
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
既然知道了配置了RBCD的具体表现以及含义,那么问题来了,谁能修改msDS-AllowedToActOnBehalfOfOtherIdentity的values
,准确的来讲,应该是:谁可以添加msDS-AllowedToActOnBehalfOfOtherIdentity的values
并修改values
这里直接抛结论:
• 机器用户
• mS-DS-CreatorSID 账号(mS-DS-CreatorSID的valuse的值对应的objectSid)
这里复盘一下攻击步骤:
• 第一步,连接域控ldap创建计算机账户xiaolongxia
• 第二步,通过ldap协议在域控上设置sr
的msds-allowedtoactonbehalfofotheridentity的值为O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;xiaolongxia的sid)
• 第三步,使用xiaolongxia
凭据拿到一张TGT
xiaolongxia
PS:这里感谢rabbit师傅提供的工具
• 第四步,使用s4u2self代表administrator拿到一张ST
• 第五步,拿从s4u2self那里获取到的ST作为验证信息再去请求一张用于访问sr
机器CIFS spn的ST票据。
• 第六步,提升权限
xiaolongxia
xiaolongxia
的hash加密,s4u2self这个步骤作用是xiaolongxia
拿自己的tgt票据请求一张访问xiaolongxia
的ST,且该ST的身份是administrator,而这张ST是用xiaolongxia
sr
机器CIFS spn的ST票据,也就是s4u2proxy这一步。• 企业可能会有一个专门的账号,用来拉新用户加入域,该账号通常只有普通域用户权限,如果我们控制了这个账户呢?
• 当我们渗透进入一个域环境,发现并没有足够的权限扩,行动有限,那么我们可以查看,当前机器是谁拉进来的,如果我们能控制该用户呢?
• 一个域用户X可能会在域中创建多台机器(比如笔记本和台式机都需要加入域),当我们有了改用户的权限时,可以利用RBCD继续攻击其他mS-DS-CreatorSID是该域用户的机器。
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。