IT 之家 5 月 18 日消息,當地時間 5 月 17 日,微軟發布技術公告,旨在幫助企業在 VBScript 全面棄用之前檢測并遷移現有環境中的 VBScript 依賴。
Sysmon(System Monitor)是 Sysinternals 提供的監控工具,支持對 .dll 加載行為進行細致跟蹤。借助其 Event ID 7(Image Load)功能,管理員可以捕捉 vbscript.dll 何時、由哪個進程被加載。
配置 Sysmon 以追蹤 vbscript.dll,配置示例如下:
vbscript.dll
要應用此配置,首先需要編輯您的 Sysmon 配置文件(通常是 sysmon-config.xml)。
使用 Sysinternals Sysmon 實用程序重新加載。
以管理員權限打開命令提示符并運行:Sysmon64.exe -c sysmon-config.xml
通過運行以下命令驗證當前配置:Sysmon64.exe -c
策略二:審查 VBScript 依賴項
檢查以下集中管理位置中的腳本文件:
組策略腳本:掃描 \SYSVOL 中的 .vbs 文件及對 wscript.exe、cscript.exe 的調用。
計劃任務:檢查任務命令行的 .vbs 執行痕跡。
Intune 部署的 PowerShell 腳本:排查間接調用 VBScript 的情況。
策略三:全系統掃描 .vbs 文件
通過 PowerScript 腳本掃描用戶及腳本相關目錄:
C:Users
C:ProgramData
C:Program Files
C:Scripts
C:Windows(可選,可能包含干擾文件)
示例 PowerShell 腳本:
$pathsToScan = @ ( "C:Users", "C:ProgramData", "C:Scripts" ) $logPath = "C:VBSScriptScanVbsFiles_$ ( 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 } } $pathsToScan = @ ( "C:Users", "C:ProgramData", "C:Scripts" ) $logPath = "C:VBSScriptScanVbsFiles_$ ( 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 } }
策略四:掃描自定義 MSI 安裝包
例如以下 PowerShell 腳本可分析 MSI 包中嵌入的 VBScript 自定義動作(Action Type 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 Custom Action: $actionName in $msiPath" } $record = $view.Fetch ( ) } }
后續行動建議
遷移替代方案:參考微軟官方文檔《VBScript 棄用:時間線與后續步驟》選擇現代技術。
主動禁用 VBScript:在確認無依賴后,通過命令禁用:
Dism /Online /Remove-Capability /CapabilityName:VBSCRIPT~~~~
影響:禁用后,依賴 VBScript 的進程(如 cscript.exe)將靜默失敗或報錯。
微軟強調,當前階段企業應盡快完成檢測與遷移,避免未來操作系統默認禁用導致業務中斷。
參考資料: