1

微软提供 VBScript 检测与禁用指南,以帮助企业迁移至现代脚本

随着 VBScript 即将在未来 Windows 版本中默认禁用,微软已启动其分阶段弃用计划,微软已经在 Windows 11 24H2 中将 VBScript 转为按需功能(FOD)。

为帮助组织提前识别风险、减少中断、确保顺利迁移,微软发布了四套涵盖检测、审计与替代策略的企业级 VBScript 使用识别与禁用指南。以下是四种检测策略以及禁用方案:

微软提供 VBScript 检测与禁用指南

策略一:使用 Sysmon 检测 VBScript 加载行为

Sysmon(System Monitor) 是 Sysinternals 提供的监控工具,支持对 .dll 加载行为进行细致跟踪。借助其 Event ID 7(Image Load)功能,管理员可以捕捉 vbscript.dll 何时、由哪个进程被加载。

配置 Sysmon 以追踪 vbscript.dll

建议使用最小化规则集聚焦 .dll 加载,配置示例如下:

<Sysmon schemaversion=”4.50″>
<EventFiltering>
<ImageLoad onmatch=”include”>
<ImageLoaded condition=”contains”>vbscript.dll</ImageLoaded>
</ImageLoad>
</EventFiltering>
</Sysmon>

部署步骤包括编辑配置文件、使用 Sysmon64.exe -c 命令加载、验证当前配置。

注意: 在大规模部署前,请在测试环境中评估其性能影响。

Sysmon 可通过 Intune、组策略、Microsoft Configuration Manager 或脚本批量推送。

日志收集与分析技巧

部署后,事件查看器中可通过以下路径查看日志:

应用程序和服务日志 > Microsoft > Windows > Sysmon > Operational

筛选 Event ID 为 7 的事件,并结合 Power BI、Excel 或 SIEM 工具分析其来源。例如:

  • 追踪触发进程来源: 结合 Event ID 1(进程创建)还原完整调用链;
  • 减少 Web 应用噪声: 对运行经典 ASP 的 IIS,可将 Sysmon 日志与 IIS 日志关联分析。详细说明可参考:IIS 日志筛选文档。

策略二:审查企业中存在的 VBScript 依赖路径

VBScript 通常隐藏在组织的集中式管理流程中,如:

  • 组策略(GPO)配置的登录/注销、启动/关机脚本;
  • 含 VBScript 的计划任务;
  • Intune 部署的 PowerShell 脚本中间接调用的 .vbs 文件。

审核组策略(GPO)

检查以下路径中是否存在 .vbs 文件:

php-template

\\<domain>\SYSVOL

并分析内容是否调用 wscript.exe、cscript.exe 或直接执行 .vbs 文件。更多细节可参考 GPO 脚本指南。

分析计划任务与 Intune 脚本

使用 PowerShell 枚举计划任务,重点关注路径如 \Microsoft\Windows\ 和自定义组织命名空间。对 Intune 脚本,检查是否存在 PowerShell 中调用 cscript.exe 的情形。

策略三:扫描终端系统上的 .vbs 文件

除了集中管理路径,企业中仍可能存在被遗忘或局部部署的 .vbs 脚本文件。

建议扫描以下常见目录:

  • C:\Users\
  • C:\ProgramData\
  • C:\Program Files\
  • C:\Scripts\
  • C:\Windows\(可选,注意噪声)

示例 PowerShell 脚本

$pathsToScan = @(“C:\Users”, “C:\ProgramData”, “C:\Scripts”)
$logPath = “C:\VBSScriptScan\VbsFiles_$(hostname).csv”
$results = foreach ($path in $pathsToScan) {
if (Test-Path $path) {
Get-ChildItem -Path $path -Filter *.vbs -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName, LastWriteTime, Length
}
}
$results | Export-Csv -Path $logPath -NoTypeInformation

部署渠道可包括 Intune、GPO 启动脚本、Remote PowerShell、Configuration Manager 等。

策略四:分析 MSI 安装包中的嵌入 VBScript

某些企业内部应用仍通过 .msi 安装包的自定义操作嵌入 VBScript,在安装或卸载过程中触发执行。

检测 MSI 中的 VBScript 自定义操作

以下 PowerShell 脚本可分析 CustomAction 表中类型为 6、38、50 的条目:

Get-ChildItem -Path “C:\MSIRepo” -Recurse -Filter *.msi | ForEach-Object {
$msiPath = $_.FullName
$sql = “SELECT * FROM CustomAction”
$installer = New-Object -ComObject WindowsInstaller.Installer
$database = $installer.GetType().InvokeMember(“OpenDatabase”, “InvokeMethod”, $null, $installer, @($msiPath, 0))
$view = $database.OpenView($sql)
$view.Execute()
$record = $view.Fetch()
while ($record -ne $null) {
$actionName = $record.StringData(1)
$actionType = [int]$record.StringData(2)
if ($actionType -eq 6 -or $actionType -eq 38 -or $actionType -eq 50) {
Write-Output “⚠ VBScript 自定义操作: $actionName in $msiPath”
}
$record = $view.Fetch()
}
}

可扩展策略包括:

  • 集中收集 MSI 文件(如从 Intune、ConfigMgr 源);
  • 自动化定期扫描任务;
  • 报告汇总分析结果;
  • 避免使用 Win32_Product,以免触发应用修复。

可辅助查看注册表安装信息:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, InstallDate, Publisher

下一步:识别依赖后实施迁移与禁用

完成检测后,应尽快规划 VBScript 替代方案,例如:

  • 使用 PowerShell 重写现有脚本;
  • 使用 Task Scheduler、ConfigMgr 或 Intune 替代任务逻辑;

迁移至现代 API 或 WMI 替代调用方式。

提前禁用 VBScript(可选)

确认所有依赖清除后,可执行以下命令从系统中移除 VBScript 功能:

cmd 命令

Dism /Online /Remove-Capability /CapabilityName:VBSCRIPT~~~~

建议通过 Intune、组策略或 Configuration Manager 批量部署。

提醒: 禁用 VBScript 后,相关脚本将全部失效,请先在测试环境中验证兼容性。

VBScript 的正式弃用是 Windows 安全性与现代化的重要一步。通过 Sysmon 跟踪、集中审查、系统扫描及 MSI 分析,企业可全面识别潜在风险并主动迁移。推荐 IT 管理员立即行动,以减少未来系统升级带来的兼容性问题。

 

via Microsoft

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
己已斋
27 天 前

好用的工具又要少一批了。

订阅
X

您正在使用 IE 6 浏览器访问本博客。简单几步,您就可以升级:Internet Explorer

X
1
0
希望看到您的想法,请您发表评论x