### UAC 怎么绕过 大多数 UAC 绕过技术都利用了 Windows 设计中的一个安全机制:**自动提升** Windows 允许一些特定的、微软签名的、位于安全目录(如 `C:\Windows\System32`)下的可执行文件在启动时 **自动提升** 到高完整性级别,而**不触发 UAC 提示框** UAC Bypass 的核心思想就是 **劫持(Hijack)** 这些被信任的自动提升程序的执行流程,让它们在启动时去执行攻击者控制的恶意代码或命令。常见的劫持方法包括: **1. 自动提升程序的执行劫持** 攻击者通过修改系统配置,使自动提升程序在执行过程中“无意中”调用攻击者的代码: - **注册表劫持(Registry Key Manipulation)** 这是最常见和有效的技术之一。许多自动提升的程序在启动时会检查特定的**注册表路径**来加载其配置或执行的命令。如果这些注册表项位于 **`HKCU` (HKEY_CURRENT_USER)** 下,而该键值在用户登录后才会被加载,那么中等完整性级别的用户就可以修改它 - **经典案例:`FodHelper.exe` 和 `EventVwr.exe`** 攻击者修改特定 `HKCU` 注册表键值,将命令注入到 **`ms-settings`** 或 **`mscfile`** 协议的处理程序中。当 `FodHelper.exe`(Windows 10 的功能)或 `EventVwr.exe`(事件查看器)自动提升执行时,它会读取这些被修改的键值,从而以高完整性级别执行攻击者的命令 - **DLL 劫持(DLL Hijacking)** 一个自动提升的程序在启动时会尝试加载其依赖的 **DLL 文件**。如果攻击者发现: 1. 该程序在搜索 DLL 时,会先检查一个**中等完整性用户可写入**的目录(例如 `AppData` 或其他非 System32 路径) 2. 或者,该程序尝试加载一个**不存在(Missing DLL)**的 DLL。 攻击者就可以将恶意 DLL 放到该程序首先搜索的路径,程序在自动提升后加载这个恶意 DLL,从而执行高权限代码 - **COM 接口劫持(COM Handler Hijack)** 一些自动提升的程序会调用特定的 **COM 接口** 来完成其功能。攻击者可以修改与这些 COM 对象相关的注册表键值,将 **InProcServer32**(即 COM 对象的实现 DLL)指向攻击者自己的恶意 DLL。当高权限进程调用该 COM 接口时,就会加载并执行恶意 DLL **2. 白名单程序或配置文件滥用** - **`sdclt.exe` (备份和还原)** 这个程序在 Windows 7/8/10 上可以自动提升。它在执行时会检查用户配置文件中一个特定的 XML 配置文件,攻击者可以通过修改这个配置文件来插入并执行任意命令