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