
UAC-BOF-Bonanza核心原理PEB伪装加ICMLuaUtil COM接口实现任意文件执行【免费下载链接】UAC-BOF-BonanzaCollection of UAC Bypass Techniques Weaponized as BOFs项目地址: https://gitcode.com/gh_mirrors/ua/UAC-BOF-Bonanza UAC-BOF-Bonanza 是一个把公开UAC 绕过UAC Bypass技术武器化为BOFBeacon Object File的开源项目。它的核心原理是PEB 伪装ICMLuaUtil 提权 COM 接口让普通权限进程伪装成explorer.exe从而通过 COM 以管理员权限执行磁盘上的任意文件。项目一次make即可同时构建 7 种绕过技术的 BOF 与独立可执行文件并集成进 Havoc C2 框架。 什么是 UAC 绕过为什么要做成 BOFWindows 的用户账户控制UAC把管理员权限拆成普通令牌和提升令牌即使你是管理员账户日常进程也默认以低权限运行。UAC 绕过就是想办法拿到提升权限的代码执行而BOF是 C2如 Cobalt Strike / Havoc / Sliver中一种无需落盘 PE 文件的可执行模块体积小、隐蔽性强。UAC-BOF-Bonanza 把 7 种公开 UAC 绕过技术统一封装技术一句话原理CmstpElevatedCOMPEB 伪装 ICMLuaUtil COM 的ShellExec直接执行文件ColorDataProxyPEB 伪装 写注册表 IColorDataProxy 的LaunchDccw间接触发EditionUpgradeManager篡改windir注册表 IEditionUpgradeManager 提权 COM 执行SilentCleanupWinDir篡改windir注册表 启动 SilentCleanup 计划任务RegistryShellCommand改写ms-settings\Shell\Open\command 触发自动提权 EXETrustedPathDLLHijack伪造C:\Windows \目录 DLL 劫持自动提权 EXESspiUacBypassSSPI 数据报上下文伪造令牌 创建 SYSTEM 服务所有技术均在Windows 10 (22H2)与Windows 11 (23H2)上实测有效。 PEB 伪装原理把进程化妆成 explorer.exe这是整个项目最核心的技巧代码见CmstpElevatedCOM/src/standalone/CmstpElevatedCOM.cpp中的SpoofExplorer()函数。为什么 COM 提权会检查 PEBWindows 有一类提权 COM 对象通过特殊 Moniker如Elevation:Administrator!new:{CLSID}创建。这类对象在激活时会做身份校验如果调用者是受信任的系统进程如explorer.exe、consent.exe就静默放行不弹 UAC 提示框。而它判断你是谁依赖的就是进程环境块PEBProcess Environment Block中记录的镜像路径和命令行。伪装三步骤写入假内存分配一块内存写入字符串c:\Windows\explorer.exe和explorer.exe篡改 PEB 字段把这些字符串的地址塞进PEB-ProcessParameters的ImagePathName和CommandLine字段同步模块表通过LdrEnumerateLoadedModules回调把主模块的FullDllName/BaseDllName一并改掉关键回调逻辑在LdrEnumModulesCallback见CmstpElevatedCOM/src/standalone/CmstpElevatedCOM.cpp#L145-L159找到主模块后直接覆盖其名称让进程自报家门为 explorer.exe。这样COM 子系统在检查调用者身份时就会被骗认为请求来自可信进程于是把提权对象交给你全程不触发 UAC 弹窗。 这套 PEB 伪装代码同样被复用在ColorDataProxy/src/standalone/ColorDataProxy.cpp和EditionUpgradeManager/src/standalone/EditionUpgradeManager.c中——所有提权 COM类绕过都依赖它。⚡ ICMLuaUtil一个接口直接执行任意文件ICMLuaUtil是cmstp.dllCOM 属性页服务器中一个未公开文档的 COM 接口CLSID 为{3E5FC7F9-9A51-4367-9063-A120244FBEC7}。它原本服务于颜色配置工具Cmstp的管理员功能。它的关键能力在方法表CmstpElevatedCOM/src/standalone/CmstpElevatedCOM.cpp#L20-L108中手工还原的 VTableShellExec以管理员权限执行指定文件——这就是任意文件执行的落点SetRegistryStringValue/DeleteRegistryStringValue以管理员权限读写 HKLM 注册表完整攻击链只有 3 步PEB 伪装为explorer.exe见上一节通过CoCreateInstanceAsAdminCmstpElevatedCOM/src/standalone/CmstpElevatedCOM.cpp#L116-L139构造 MonikerElevation:Administrator!new:{3E5FC7F9-...}调用CoGetObject拿到提权的 ICMLuaUtil 对象调用ShellExec(lpFile, ...)传入磁盘上任意 EXE 的路径立即以管理员权限执行由于校验已被 PEB 伪装绕过整个过程无任何 UAC 弹窗。️ ColorDataProxy不直接执行而是借刀杀人ColorDataProxy是更曲折的变体源码在ColorDataProxy/src/standalone/ColorDataProxy.cpp。它不直接调ShellExec而是利用系统自身的颜色校准器机制第 1 步ICMLuaUtil 写注册表调用提权 ICMLuaUtil 的SetRegistryStringValue把目标文件路径写入HKLM\Software\Microsoft\Windows NT\CurrentVersion\ICM\Calibration DisplayCalibrator 你的目标 EXE 路径第 2 步ICMLuaUtil 启动校准器再创建一个提权的IColorDataProxyCOM 对象CLSID 见ColorDataProxy/src/IColorDataProxy.h调用其LaunchDccw方法。系统会以管理员权限启动颜色校准组件DCCW而组件启动时会自动读取刚才写入的DisplayCalibrator值并执行其中的文件。第 3 步清理现场执行完成后调用DeleteRegistryStringValue删除注册表项降低被发现的痕迹。这种注册表 间接触发的链路比直接ShellExec多一层跳转行为上更接近正常系统操作。️ 其他 5 种绕过技术速览除了两个 COM 技术项目还包含 5 种不同思路的 UAC 绕过1. EditionUpgradeManager —— 篡改 windir 提权 COMEditionUpgradeManager/src/standalone/EditionUpgradeManager.c的实现思路在C:\Users\用户名\Downloads\下伪造System32目录把目标 EXE 复制为Clipup.exe把HKCU\Environment\windir改成这个用户目录让提权进程以为系统根在别处PEB 伪装 创建提权IEditionUpgradeManagerCOM 对象调用AcquireModernLicenseWithPreviousId系统会去%windir%\System32找Clipup.exe执行完成后还原 windir、删除伪造文件2. SilentCleanupWinDir —— windir 计划任务SilentCleanupWinDir/src/SilentCleanupWinDirBOF.c同样篡改windir注册表然后调用schtasks启动系统自带的SilentCleanup计划任务该任务会去已被篡改的windir 下执行被替换的系统文件。3. RegistryShellCommand —— 注册表命令劫持RegistryShellCommand/src/standalone/RegistryShellCommand.c的思路把目标 EXE 写入HKCU\Software\Classes\ms-settings\Shell\Open\command然后把DelegateExecute置空再执行自带自动提权的ComputerDefaults.exe。它特意Sleep(10秒)再触发以规避 Defender 的UACBypassExp.T行为检测。4. TrustedPathDLLHijack —— 空格目录 DLL 劫持TrustedPathDLLHijack/src/standalone/TrustedPathDLLHijack.c利用 Windows 路径解析缺陷创建带尾随空格的目录C:\Windows \把ComputerDefaults.exe和你的恶意Secur32.dll复制进去。自动提权的 EXE 按 DLL 搜索顺序会优先加载同目录的假 Secur32.dll从而以管理员权限加载你的载荷。5. SspiUacBypass —— 令牌伪造 SYSTEM 服务SspiUacBypass/src/standalone/SspiUacBypass.cpp走的是完全不同路线通过SSPI 数据报上下文伪造一个网络认证令牌冒充该令牌后调用CreateSvcRpc.cpp中的 RPC 逻辑创建一个SYSTEM 服务直接拿到系统最高权限。️ 一键编译与 C2 加载步骤编译需要 MinGW 交叉编译器在仓库根目录执行make构建脚本见根目录 [Makefile]。一次构建会生成两类产物各技术目录下的bin/*.o—— BOF 目标文件供 C2 内联执行各技术目录下的bin/standalone/*.exe—— 独立可执行文件可单独测试Havoc C2 加载根目录的 [Havoc-UACBypass.py] 是集成模块通过脚本管理器加载后使用uac-bypass [子命令] (参数)触发uac-bypass elevatedcom 目标EXE路径 # ICMLuaUtil COM 绕过 uac-bypass colordataproxy 目标EXE路径 # ColorDataProxy 间接执行 uac-bypass editionupgrade 目标EXE路径 # EditionUpgradeManager 绕过 uac-bypass trustedpath 目标DLL路径 # DLL 劫持绕过 uac-bypass sspidatagram 参数 # SSPI 令牌伪造绕过 uac-bypass registrycommand 目标EXE路径 # 注册表命令劫持 uac-bypass silentcleanup 目标EXE路径 # windir 计划任务Sliver C2 加载每种技术目录都附带extension.json如CmstpElevatedCOM/extension.json参数为file_to_execute把技术文件夹拷入 Sliver 扩展目录、执行make后用extensions load加载即可。⚠️ 检测风险与合规提示项目作者在 OpSec 注意事项中明确提醒这 7 种技术全部是公开技术主流 EDR / SOC 均能检测。例如 Elastic 安全实验室曾发布博客逐一演示了这些绕过手法及其检测策略RegistryShellCommand内置的 10 秒延时就是为了躲开 Defender 行为规则但这类时间差技巧同样会被高级检测覆盖使用前请先阅读源码确认符合你的使用场景请务必仅在合法授权的测试环境如 CTF、红蓝对抗演练、自有安全研究中使用未经授权对他人系统实施 UAC 绕过属于违法行为。 关键源码文件速查文件路径作用CmstpElevatedCOM/src/standalone/CmstpElevatedCOM.cppPEB 伪装 ICMLuaUtil ShellExec 完整实现CmstpElevatedCOM/src/CmstpElevatedCOMBOF.cpp同上技术的 BOF 版本ColorDataProxy/src/standalone/ColorDataProxy.cpp注册表 LaunchDccw 间接执行实现ColorDataProxy/src/ICMLuaUtil.hICMLuaUtil 接口定义ColorDataProxy/src/IColorDataProxy.hIColorDataProxy 接口定义EditionUpgradeManager/src/standalone/EditionUpgradeManager.cwindir 篡改 提权 COM 实现RegistryShellCommand/src/standalone/RegistryShellCommand.cms-settings 注册表劫持实现TrustedPathDLLHijack/src/standalone/TrustedPathDLLHijack.c空格目录 DLL 劫持实现SspiUacBypass/src/standalone/SspiUacBypass.cppSSPI 令牌伪造实现SspiUacBypass/src/standalone/CreateSvcRpc.cppSYSTEM 服务创建 RPC 逻辑Havoc-UACBypass.pyHavoc C2 集成模块7 种技术统一入口MakefileBOF 与独立 EXE 的一键构建脚本 总结UAC-BOF-Bonanza 用一套统一的工程模板把当前主流 UAC 绕过技术收敛成一个 make 一个 C2 模块就能使用的 BOF 集合。理解它的核心只需抓住两条主线PEB 伪装——通过篡改 PEB 的镜像名与模块表骗过提权 COM 对象的调用者身份校验这是CmstpElevatedCOM、ColorDataProxy、EditionUpgradeManager三种 COM 绕过的共同地基提权 COM 执行原语——ICMLuaUtil 的ShellExec直接执行任意文件SetRegistryStringValueLaunchDccw间接执行AcquireModernLicenseWithPreviousId借版本升级流程执行殊途同归掌握这两点你就能读懂项目里 7 种绕过技术的每一行关键代码也能理解为什么 EDR 厂商把PEB 不一致和提权 Moniker 使用当作高置信度告警信号。【免费下载链接】UAC-BOF-BonanzaCollection of UAC Bypass Techniques Weaponized as BOFs项目地址: https://gitcode.com/gh_mirrors/ua/UAC-BOF-Bonanza创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考