VBS 腳本病毒橫行曾讓人談之色變,但 VBS 本身是強大的系統管理工具。透過 Windows Script Host (WSH),VBS 可操作登錄、檔案系統、ActiveX 物件、甚至 AD 服務。本文分享 8 個 VBS 在系統安全管理中的實用技巧,附完整原始碼,雙擊即用。
Dim WSH : Set WSH = WScript.CreateObject("WScript.Shell")
WSH.Popup "解鎖登錄編輯器!"
WSH.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools", 0, "REG_DWORD"
WSH.Popup "登錄解鎖成功!"
存為 UnlockReg.vbs,雙擊執行。適用於被惡意程式鎖定 regedit 時的緊急解鎖。
Dim WSHShell : Set WSHShell = CreateObject("WScript.Shell")
Dim fso, dc : Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d In dc
WSHShell.Run "net share " & d.DriveLetter & "$ /delete", 0, True
Next
WSHShell.Run "net share admin$ /delete", 0, True
WSHShell.Run "net share ipc$ /delete", 0, True
存為 StopShare.vbs,執行後用 net share 驗證共享已清空。適合登入腳本自動化部署。
Dim WS : Set WS = CreateObject("MSWinsock.Winsock")
IPAddress = WS.LocalIP
MsgBox "Local IP = " & IPAddress
存為 ShowIP.vbs,無需開啟命令列即可快速查看 IP。
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Backup)}!\\" & strComputer & "\root\cimv2")
Dim myLogs(3)
myLogs(1) = "Application"
myLogs(2) = "System"
myLogs(3) = "Security"
For Each log In myLogs
Set colLogFiles = objWMIService.ExecQuery("Select * from Win32_NTEventLogFile Where LogFileName='" & log & "'")
For Each objLogFile In colLogFiles
objLogFile.ClearEventLog()
Next
Next
存為 ClearEvent.vbs。利用 WMI ClearEventLog() 方法,繞過命令列 net stop eventlog 無法停止服務的限制。警示: 惡意清除日誌是入侵後隱藏蹤跡常用手法,正常管理請謹慎使用並保留備份。
Set ws = WScript.CreateObject("WScript.Shell")
ws.LogEvent 0, "Write log success" ' 0=成功, 1=錯誤, 2=警告, 4=資訊, 8=成功稽核, 16=失敗稽核
存為 CreateLog.vbs。僅能寫入 Application 日誌,來源固定為 WSH,隱蔽性有限,僅供了解原理。
Dim ChangeStartMenu : Set ChangeStartMenu = WScript.CreateObject("WScript.Shell")
RegPath = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\"
Type_Name = "REG_DWORD" : Key_Data = 1
Sub Change(Argument)
ChangeStartMenu.RegWrite RegPath & Argument, Key_Data, Type_Name
MsgBox "Success!"
End Sub
Call Change("NoRun") ' 禁用「執行」
Call Change("NoFind") ' 禁用「搜尋」
Call Change("NoClose") ' 禁用「關機」
存為 DisableStartMenu.vbs。適用於共用電腦/網咖限制用戶操作。
Dim objShell : Set objShell = WScript.CreateObject("WScript.Shell")
iReturn = objShell.Run("cmd.exe /C set var=world", 1, True)
可將 cmd.exe /C set var=world 替換為任意命令。%ComSpec% 可替代 cmd.exe。第三參數 True 表示同步等待執行完成。
Const ADS_SERVICE_STOPPED = 1
Set objComputer = GetObject("WinNT://MYCOMPUTER,computer")
Set objService = objComputer.GetObject("Service", "MYSERVICE")
If objService.Status = ADS_SERVICE_STOPPED Then objService.Start
End If
存為 C:\StartSvc.vbs,以 cscript c:\StartSvc.vbs 執行。需將 MYCOMPUTER 替換為實際電腦名,MYSERVICE 為 IIS 服務名稱 (如 W3SVC)。
VBS、VBE、JS、JSE、WSF、WSH 的關聯。VBS 是把雙面刃,善用它能大幅提升管理效率;防範它則需從「最小權限、最小功能」原則出發。視環境需求選擇保留或移除 WSH。