导语:Cobalt Strike 红队 老手都知道,横向到 SYSTEM 容易,但想持久化还不留痕迹,那才是真功夫。最近安全研究员 GiorgioneH(@0xaled)放出了一个叫 Vipere 的 BOF(Beacon Object File),专门对 Visual Studio 安装程序的提升服务下手——不需要替换任何二进制文件,beacon 直接寄生在微软签名进程中,ETW 直接熄火,EDR 几乎瞎了。
一、工具简介
Vipere 是一个针对 Cobalt Strike 和 Adaptix 的 BOF 模块,核心能力就一个字:稳。
通过劫持 Visual Studio Installer Elevation Service(VSInstallerElevationService),实现两项关键操作:
- SYSTEM 本地权限提升(LPE):任意普通用户触发,服务即以 SYSTEM 身份运行
- 持久化:beacon 寄宿在签名进程内部,重启/注销后依然可通过计划任务重新触发
GitHub 地址:https://github.com/0xaled/Vipere
二、攻击链解剖——三处弱点串成一条线
这个工具本身没有高危 0day,但巧妙之处在于把三个“不算漏洞的弱点”串成了一条完整的攻击链。
2.1 弱点一:宽松的 SDDL 权限配置
Visual Studio Installer Elevation Service 的服务启动权限配置极为宽松——所有经过身份验证的用户(Authenticated Users)都有权启动它。这意味着:
任意普通用户 → sc start VSInstallerElevationService → 服务以 SYSTEM 启动
不需要任何管理员权限,只要服务还在注册表里(卸载VS后也会残留),就能触发。
2.2 弱点二:.NET CLR 配置完整性无校验
这是最关键的一环。.NET CLR 在加载 AppDomainManager 时,不验证 appDomainManagerAssembly 的签名。
攻击者只需要修改服务的配置文件(.config),在 <appDomainManagerAssembly> 节点指向自己编译的恶意 DLL,CLR 就会无条件加载它——微软的签名?不需要。
2.3 弱点三:卸载后服务残留(孤儿注册)
即使 Visual Studio 已被卸载,HKLM 注册表中的服务条目依然存在。这就是为什么即使目标从未安装过 VS,只要服务在,注册表键在,攻击就能成功。
三、利用过程:全程不离“签名白”
整个攻击链路干净利落,攻击者全程不需要替换任何微软签名二进制文件。
部署阶段
红队操作员在目标机器上部署三样东西:
| 文件 |
位置 |
说明 |
VSInstallerElevationService.exe.config |
安装目录 |
注入 ETW 关闭 + AppDomainManager 指向 |
Microsoft.VS.ConfigurationManager.dll |
安装目录 |
恶意 AppDomainManager,通过目标机 csc.exe 编译 |
Microsoft.VS.ConfigurationHost.dll |
安装目录 |
你的 beacon DLL |
原签名的 VSInstallerElevationService.exe 纹丝不动,文件大小、时间戳完全不碰。
触发阶段
当任意用户执行 sc start VSInstallerElevationService 时:
- 服务管理器(SCM)以 SYSTEM 身份启动签名的
VSInstallerElevationService.exe
- .NET CLR 读取被篡改的
.config,发现 <etwEnable>false</etwEnable>,原生关闭 ETW
- CLR 加载恶意 AppDomainManager,跳过强名称校验
- AppDomainManager 在
InitializeNewDomain() 中调用 LoadLibrary("beacon.dll")
- beacon 在进程内部直接运行,没有子进程,没有父子关系
- AppDomainManager 调用
StartServiceCtrlDispatcherW,报告 SERVICE_RUNNING,服务保持存活
整个过程 EDR 看到的是一个由微软签名的进程在正常运行,没有任何异常行为告警。
四、持久化机制
除了通过 sc start 手动触发,Vipere 还会在首次执行时部署计划任务,实现开机自启:
schtasks /create /sc onlogon /ru SYSTEM /tn "Vipere" /tr "sc start VSInstallerElevationService"
重启或登录时,计划任务以 SYSTEM 身份触发服务,重新走完攻击链——beacon 再次在签名的微软进程内部复活。
五、检测与防御建议
从防御角度,这条攻击链的每个环节都有应对之法:
针对弱点一(SDDL 权限):审核服务的 ACL 配置,确保 SERVICE_START 权限不低于 INTERACTIVE,必要时移除 AU 的启动权限。
针对弱点二(配置完整性):部署文件完整性监控,对 C:\Program Files (x86)\Microsoft Visual Studio\Installer\ 目录下的 .config 和 .dll 文件做哈希基线,任何变更立即告警。
针对弱点三(孤儿服务):卸载 Visual Studio 后,确认 SCM 中的 VSInstallerElevationService 条目已被正确清除。
通用检测:
- 关注
csc.exe(C# 编译器)在非开发环境中的执行
- 关注
VSInstallerElevationService.exe 进程加载的非 Microsoft 模块
- 监控注册表
HKLM\SYSTEM\CurrentControlSet\Services\VSInstallerElevation 的访问
下载地址
GitHub:https://github.com/0xaled/Vipere