一文搞懂windows UAC机制逻辑及提权原理
字数 2381 2025-08-19 12:41:20
Windows UAC机制原理与Bypass提权技术深入分析
0x01 UAC机制概述
用户账户控制(UAC)是Windows的安全机制,用于限制应用程序的权限级别,防止未经授权的系统更改。
UAC判断流程
-
ActiveX安装检查:现代Windows系统已弃用,默认返回"No"
-
UAC滑块设置检查:
- 始终通知(最高级别):任何更改都会通知并冻结其他任务
- 仅当程序尝试更改时通知(中高级别):不更改Windows设置时通知
- 仅当程序尝试更改时通知(不调暗桌面)(中低级别):不冻结其他任务
- 从不通知(最低级别):完全禁用UAC提示
-
安全桌面检查:决定UAC弹窗是否在灰色安全桌面显示
0x02 UAC流程逆向分析
进程创建流程
- 进程创建者:实际创建提权进程的是Appinfo服务(通过svchost启动),而非explorer.exe
- 关键函数调用链:
windows_storage!CinvokeCreateProcessVerb::CallCreateProcessAicLaunchAdminProcess(通过RPC与Appinfo服务通信)RAiLaunchAdminProcess(Appinfo.dll中)
关键验证逻辑
-
路径检查:
- 检查文件路径是否匹配内置列表(
g_Dirs,g_ExcludeWinDir,g_IncludedWinDir等) - System32和SysWow64目录下的文件会设置特殊标志(r15d的第21位)
- 检查文件路径是否匹配内置列表(
-
自动审批检查(AiIsEXESafeToAutoApprove):
- 检查manifest中
autoElevate标志 - 检查白名单(
g_lpAutoApproveEXEList)和签名验证 - 检查注册表设置:
EnableRestrictedAutoApprove(是否开启受限自动审批)ValidateAdminCodeSignatures(是否要求管理员权限代码签名)
- 检查manifest中
-
consent.exe交互:
- 由Appinfo服务以挂起状态创建
- 传递参数包含目标进程路径等信息
- 用户确认后创建提权进程
0x03 UAC提权技术(Bypass UAC)
主要Bypass思路
-
DLL劫持白名单进程
- 利用IFileOperation向高权限目录写入DLL
- 劫持白名单进程(如pkgmgr.exe)实现提权
- 示例:UACME #23
-
篡改PE执行逻辑通过注册表
- 修改低权限注册表键值
- 利用特定程序(如fodhelper.exe)读取注册表执行命令
- 示例:UACME #33
-
高权限COM组件利用
- 利用存在任意命令执行接口的COM组件
- 绕过COM组件调用者验证(修改PEB路径信息)
- 示例:UACME #41 (CMSTPLUA组件)
COM组件调用验证
Windows通过以下信息验证COM调用者:
- PEB中的
_RTL_USER_PROCESS_PARAMETERS的ImagePathName - PEB中的
_LDR_DATA_TABLE_ENTRY的FullDllName和BaseDllName
0x04 检测与防御
检测思路
-
进程创建监控:
- 关注explorer.exe创建高权限进程的异常情况
- 监控Appinfo服务创建的consent.exe进程
-
文件操作监控:
- 监控对System32/SysWow64目录的写入
- 特别关注IFileOperation相关操作
-
注册表修改监控:
- 监控HKCU下shell\open\command等关键路径的修改
-
COM组件调用监控:
- 监控非常规进程对高权限COM组件的调用
攻击场景
- 边界突破钓鱼:绕过UAC弹窗避免用户警觉
- 权限维持:获取管理员权限创建计划任务/服务
- AV对抗:关闭防火墙或杀毒软件需要管理员权限
0x05 技术验证与疑问
自动提权测试
- 修改manifest添加
autoElevate标志 - 将程序放入System32目录
- 结果:仍会触发UAC弹窗(原因可能在于consent.exe中的额外验证)
附录:关键数据结构与函数
关键函数
CheckElevationEnabled- 检查UAC是否启用AiIsEXESafeToAutoApprove- 检查程序是否可自动提权AiLaunchConsentUI- 启动UAC确认界面AipVerifyConsent- 验证consent.exe完整性
关键路径列表
g_Dirs- 基础路径匹配列表g_ExcludeWinDir- 排除目录列表g_IncludedWinDir- 包含目录列表g_IncludedXmtExe- 特殊可执行文件列表g_IncludedSysDir- 系统目录列表
注册表键值
HKLM\...\Policies\EnableRestrictedAutoApprove- 受限自动审批开关HKLM\...\Policies\System\ValidateAdminCodeSignatures- 管理员代码签名验证要求
参考资源
- UACME项目: https://github.com/hfiref0x/UACME
- Microsoft UAC文档: https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/user-account-control/how-it-works
- COM组件利用分析: https://3gstudent.github.io/通过COM组件IFileOperation越权复制文件