SetupHijack - 利用Windows安装程序的竞争条件与文件处理漏洞

2025-09-26 13:33:26 0 261

SetupHijack 通过劫持Windows的安装器植入载荷实现权限提升,首先通过轮询扫盘查找全局可写目录下的安装器(.exe\.msi\.bat)。在创建安装器与执行安装器的时间窗口下,替换目标安装器,在安装器得到提升权限执行时,攻击载荷也会得到执行从而获得管理员权限

开源研究工具,SetupHijack 逐渐成为一个红队对抗及安全研究中针对Windows 安装及更新进程进程中的竞争条件与松散文件处理机制漏洞的有效方法。通过轮询检查全局可写目录,例如 %TEMP%、%APPDATA% 和 %USERPROFILE%\Downloads。该工具会在安装器以提升权限启动之前放置进载荷,从而实现提权。

SetupHijack 会持续扫描特定的目录查看是否有新/新修改的安装器文件(扩展为.exe/.msi/.bat)。当目标文件出现时,该工具会迅速用自定义载荷替换它,同时保留原始文件作为备份,从而制造出创建时间与使用时间(TOCTOU)的竞态条件窗口。源文件将可选的保留为.bak文件。

如若以提升权限执行了这个被替换的载荷程序,且没有执行任何完整性检查。攻击者的代码便会以提升权限执行,从而绕过常规的用户授权控制。相比于使用基于系统提示的方法(如APIReadDirectoryChangesW),SetupHijack 依赖于轻量级轮询检查,需要的较少的依赖项。

SetupHijack 利用竞态条件

黑客之家(Hacker House)声明该框架可以利用SignToolEx.exe & SignToolExHook.dll集成篡改签名程序,使得恶意载荷可以携带有效证书及Authenticode时间戳,来破坏Authenticode代码签名及安装程序信任模型。通过该方式,有效提升绕过数字签名(被大部分安装器与系统防护取用的验证方法)验证的机会

默认执行会扫描常见的文件存放位置,即 SetupHijack.exe。通过标志参数可精细调整扫描目标:

SetupHijack.exe -notemp       # Disable %TEMP% csannin
SetupHijack.exe -notappdata   # Disable ...
SetupHijack.exe -notdownloads # Disable ...

其他的模式有clean,verbose 分别是恢复.bak备份文件,及日志记录所有操作,包括成功的载荷替换。该工具还维护了一个跳过列表以避免多次替换。也可以声明所使用的默认载荷,直接使用微软的构建工具编译该工具非常简单:

nmake PAYLOAD="C:\Path\to\your\payload.exe"

Demo

在实际测试中,攻击者成功感染了 Zoom 在 %APPDATA% 环境下的安装程序二进制文件,实现了横向进程欺骗并可能窃取凭证。 在演示中,SetupHijack 展示了替换的细节事件

缓解措施与防御建议

为防止利用安装程序的 TOCTOU漏洞(TOCTOU installer abuses),组织应采取以下措施:

  1. 将安装程序操作限制在安全且不可写入的位置。
  2. 在执行前立即执行完整性检查,包括哈希或签名验证。
  3. 监控从安装程序上下文产生的异常子进程的进程创建事件。
  4. 采用应用程序白名单机制,通过加密哈希值和发布者验证可执行文件。

通过将这些措施与最小权限原则及定期审核安装程序行为相结合,防御者可以消除 SetupHijack 利用的主要攻击途径。尽管如此,该工具凸显了安装程序竞态条件的持续风险,以及软件交付管道中建立弹性信任模型的必要性。

关于作者

酒瓶椰子15篇文章37篇回复

评论0次

要评论?请先  登录  或  注册