这次主要是根据下面的流程6来进行学习
一、什么是委派和SPN
在微软官网得到的答案如下:
委派(delegation)身份验证
委派是允许服务模拟用户帐户或计算机帐户以访问整个网络中的资源的行为。当信任某项服务以进行委派时,该服务可以模拟用户使用其他网络服务。管理员可以指定一个帐户可以委派给的服务主体名称(SPN)。
委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,主要分为三种:
1.非约束性委派
2.约束性委派
3.基于资源的约束性委派
如何设置委派参考:https://shanfenglan.blog.csdn.net/article/details/108777247
二、委派(本文以设置非约束委派为例)
1.实验环境
嫌麻烦就直接用红日的靶机来做,搭建参考我的另一篇文章:红队实战(一)
Windows2008R2 | (域控)192.168.52.138 |
Win7 | (内)192.168.52.143 (外)192.168.147.133 |
2.建立非约束委派
查看域内账户
进入域控,打开AD用户和计算机,查看勾选高级功能
打开域,打开User,选择委派
域中只有服务账户才能进行委派
普通账户是无法进行委派的
3.PowerView查询域中的非约束委派
PowerView是powershell的一个脚本,请到github自行寻找下载
powershell怎么用参考我的另一篇文章:Powershell学习
powerview查询所在域:
Get-NetDomain
powerview查询配置非约束委派的账户:
Get-NetUser -Unconstrained -Domain 0day.org
尝试了多次,参考的很多文章中是这么写的,很明显这个命令的参数是不成立,不能一次性查找出非委派约束的账户
只能自己找
powerview查询配置的账户:
Get-NetUser(同Get-DomainUser)
查询配置非约束委派的主机(当服务账户或者主机被设置为非约束委派时候,userAccountControl属性将包含trusted_for_delegation,约束性委派
时,其userAccountControl
属性包含TRUSTED_TO_AUTH_FOR_DELEGATION
)
Get-domaincomputer -Unconstrained -Domain god.org
首先在建立非约束委派的机器上开启winrm服务
Enter-PSSession -ComputerName 计算机名(之前查询所见的samaccountname)进行连接
此时域控委派(非约束账户)自己对自己进行操作
使用管理员权限的shell打开mimikatz执行sekurlsa::tickets /export
命令即可导出所有凭据到本地
这里因为我的域成员账户都是普通账户(无法进行委派,百度了很久没有答案),没有实验成功
参考大佬文章:https://shanfenglan.blog.csdn.net/article/details/110633298
凭据TGT是下面这个样子的:
接着使用域管的凭据获得域管的权限
在mimikatz控制台中输入如下命令:
kerberos::ptt TGT凭据的全名(如上图所示,即[0;287142]开头的KIRBI文件)
之后如文章所示,得到权限拿账户hash,破解hash去登陆域中的其他主机等