### 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 配置文件，攻击者可以通过修改这个配置文件来插入并执行任意命令