Windows Script Host 是什么
Windows Script Host 让 .vbs 与 .js 文件双击就能执行,wscript 走图形界面、cscript 走控制台,两者共用同一套脚本引擎。钓鱼邮件里的脚本附件、压缩包里的 .vbs 几乎都靠它落地,所以业务不依赖 WSH 的环境把它关掉,等于抽掉社工链上最省事的一环。
基本信息
| 加固项 | 脚本宿主收敛 |
|---|---|
| 适用平台 | Windows Server / Windows 10 及以上 |
| 基线取值 | WSH\Settings 下 Enabled = 0 |
| 影响面 | .vbs、.js 文件的执行入口 |
| 域环境 | GPO:计算机配置 → 管理模板 → 系统 → 关闭 Windows 脚本宿主 |
| 风险等级 | 中 |
典型使用场景
- 办公终端:绝大多数业务不需要 VBS,禁用可显著减少钓鱼落地
- 服务器:运维与登录脚本应走 PowerShell 或配置管理,不该依赖 VBS
- 事件处置:攻击者已用 WSH 执行载荷时,先收敛执行面再排查
- 基础镜像制作:把禁用写进基线,避免逐台手工处理
- 域环境统一治理:用 GPO 下发并防止本地被改回
设置与核查
设置与核查
# 关闭 Windows 脚本宿主(对机器上所有用户生效)
$k='HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings'
New-Item -Path $k -Force | Out-Null
Set-ItemProperty $k -Name Enabled -Value 0 -Type DWord
# 核查当前值
Get-ItemProperty $k -Name Enabled依赖方与禁用影响
| 依赖方 | 典型用途 | 禁用后的影响 |
|---|---|---|
| 登录脚本 | 老环境用 VBS 映射盘符或写注册表 | 用户登录时报错或部分设置失效,需先迁移到组策略首选项 |
| 运维脚本 | 批量改名、清理、调用业务接口 | 计划任务里的 VBS 静默失败,上线前先盘点 |
| 安装程序 | 老安装包的引导脚本 | 安装中断,需准备新版安装包或走临时放行 |
| 钓鱼脚本 | 邮件附件中的 .vbs 与 .js | 攻击链在这一步被切断,这是禁用的主要收益 |
禁用 WSH 不影响 PowerShell:脚本执行面要配合约束语言模式、脚本块日志与应用控制一起治理。
老安装程序内嵌 VBS 时会安装失败,提前准备替代安装包,或保留一条有审批记录的临时放行流程。
域环境用 GPO 统一推送比逐台改可靠,也能防止本地设置被工具或用户改回去。