白名单程序+注册表,实现UAC提权绕过

admin 2026-03-12 22:47:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了一种利用白名单程序与注册表键值劫持绕过UAC提权的技术,核心在于利用具有autoElevate属性的受信任程序读取Shell\Open\command键值的特性,将其指向恶意程序以实现静默提权。文章以ComputerDefaults.exe为例演示了具体操作流程,并提供了相关工具,但同时指出该方法因涉及注册表修改易被杀软拦截,仅适用于无杀软环境,实战中需注意场景限制。 综合评分: 80 文章分类: 实战经验,内网渗透,漏洞分析,安全工具,红队


cover_image

白名单程序+注册表,实现UAC提权绕过

原创

晨星安全团队 晨星安全团队

晨星安全团队

2026年3月12日 11:16 湖南

白名单程序注册表bypass UAC提权

针对大型的攻防演练,往往通过 Web 获取权限是非常艰难的。钓鱼变成了一个不错的获取权限的手段

通过 Web 打点获得权限往往是 service 权限,而钓鱼获得的权限一般是用户权限,目标系统一般是 Win7 或者 Win10,Win11 这样的个人 PC 非 Windows Server

在个人 PC 上,初始的用户默认都是本地管理员组,但是不是 administrator 用户,虽然在管理员组但是权限依旧是受限的 ( 比如无法抓取 hash ) ,那我们可以通过 bypassUAC 进行提权

当一个被白名单/受信任的二进制(或系统组件)本身具备更高权限或能被系统以更高权限调用时,攻击者可以通过诱导该程序修改或添加某些注册表项(或更广义的配置)来改变系统行为或触发高权限代码路径,从而在不触发 UAC 提示的情况下获得更高权限。关键在于「受信任程序=被系统信任的载体」,利用它来把本地低权限动作转化为高权限执行

什么是 UAC

UAC(用户控制)是微软自 Win7 以及后续 Windows 系统中引入的一种访问控制功能(之后几乎所有的Windows 版本都含有了UAC)

UAC 的主要目的是确保应用程序只限于标准用户用户权限,当需要其他权限时,会弹出提示询问“是否允许以下程序对计算机进行更改?”

取个例子:一些软件的安装,都会弹出一个对话框,询问我们是否允许此程序对计算机进行更改

搜索 UAC

进行如下操作时需要经过 UAC 认证

  • 配置 Windows update,增删用户,改变用户类型
  • 改变 UAC 设置
  • 安装 ActiveX,查看其他用户文件夹
  • 安装或移除程序,安装设备驱动,设置家长控制
  • 更改注册表,更改系统保护或者高级系统设置

UAC 触发流程

  1. 触发 UAC 时,系统会创建一个 consent.exe 进程,该进程通过白名单和用户选择来判断是否创建管理员权限进程。
  2. 请求进程将要请求的进程 cmdline 和进程路径通过 LPC 接口传递给 appinfo 和RAiLuanchAdminProcess函数。
  3. 该函数首先验证路径是否在白名单中,并将结果传递给 consent.exe 进程,该进程验证请求进程的签名以及发起者的权限是否符合要求后,决定是否弹出 UAC 窗口让用户确认,这个 UAC 窗口会创建新的安全桌面,屏蔽之前的界面,同时这个 UAC 窗口进程是系统权限进程,其他普通进程无法和其进行通信交互。
  4. 用户确认之后,会调用 CreateProcessAsUser 函数以管理员身份启动请求的进程。

核心原理

针对 bypassUAC 的两种方式, 目前主流的有两种,一种是基于白名单 bypassUAC, 一种是基于 com 接口 bypassUAC

白名单程序操作注册表 bypassUAC

白名单程序是指有一些系统程序是会直接获取管理员权限同时不弹出 UAC 弹窗。

这类程序会在启动时就静默提升权限,例如 slui.exe、wusa.exe、 taskmgr.exe、 eudcedit.exe、 eyentvwr.exe, CompMgmtLauncher,exe, rundll32.exe, explorer.exe 等

需要满足以下条件

  1. 程序的 manifest 标识的配置属性 autoElevate 为 true
  2. 程序不弹出 UAC 弹窗
  3. 从注册表里查询 Shell\Open\command 键值对(用来执行指定的应用)

关于 Shell\open\command 键值对,以它命名的键值对存储的是可执行文件的路径

如果 exe 程序运行的候找到该键值对,就会运行该键值对指向的程序,因为白名单中的 exe 运行的时候是默认 提升了权限,那么该键值对指向的程序就过了 UAC,如果把恶意的 exe 写入该键值对,那么当运行白名单中exe 的时候,就能绕过 UAC 执行恶意程序

实操

whoami /priv

ComputerDefaults.exe ( 设置中的默认应用 ) 就是满足条件的白名单

win + r , 输入 ComputerDefaults.exe 回车

下载工具https://pan.baidu.com/s/1B8LptECX1Lcv8C9Qf5Y_eg?pwd=6666

通过 bypassUAC_ComputerDefaults.exe

bypassUAC_ComputerDefaults.exe "cmd.exe"
bypassUAC_ComputerDefaults.exe "c:\windows\system32\cmd.exe"
bypassUAC_ComputerDefaults.exe "c:\\windows\\system32\\cmd.exe"

查看权限,提权成功

因为该方法需要动注册表 , 如果目标环境存在杀软, 基本上都会被拦截, 所以此方法只适用于无杀软的环境 ,实战一般不采用

-END-


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:晨星安全团队 晨星安全团队 晨星安全团队《白名单程序+注册表,实现UAC提权绕过》

评论:0   参与:  0