萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

VBScript 在系統安全中的 8 大妙用:從解鎖登錄到偽造事件日誌

VBS 腳本病毒橫行曾讓人談之色變,但 VBS 本身是強大的系統管理工具。透過 Windows Script Host (WSH),VBS 可操作登錄、檔案系統、ActiveX 物件、甚至 AD 服務。本文分享 8 個 VBS 在系統安全管理中的實用技巧,附完整原始碼,雙擊即用。

1. 解鎖登錄編輯器

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 時的緊急解鎖。

2. 關閉 NT/2000/XP 預設隱藏共享

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 驗證共享已清空。適合登入腳本自動化部署。

3. 顯示本機 IP 位址

Dim WS : Set WS = CreateObject("MSWinsock.Winsock")
IPAddress = WS.LocalIP
MsgBox "Local IP = " & IPAddress

存為 ShowIP.vbs,無需開啟命令列即可快速查看 IP。

4. 利用 WMI 清除事件日誌 (Application、System、Security)

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 無法停止服務的限制。警示: 惡意清除日誌是入侵後隱藏蹤跡常用手法,正常管理請謹慎使用並保留備份。

5. 偽造事件日誌混淆視聽

Set ws = WScript.CreateObject("WScript.Shell")
ws.LogEvent 0, "Write log success"  ' 0=成功, 1=錯誤, 2=警告, 4=資訊, 8=成功稽核, 16=失敗稽核

存為 CreateLog.vbs。僅能寫入 Application 日誌,來源固定為 WSH,隱蔽性有限,僅供了解原理。

6. 禁用「開始」選單功能 (執行、搜尋、關機)

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。適用於共用電腦/網咖限制用戶操作。

7. 執行外部程式/命令 (含環境變數設定)

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 表示同步等待執行完成。

8. 重新啟動指定 IIS 服務

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 病毒防範:卸載 WSH 或解除腳本關聯

  • 卸載 WSH: 控制台 → 新增/移除程式 → Windows 元件 → 附件 → 取消勾選「Windows Scripting Host」。
  • 解除副檔名關聯: 我的電腦 → 檢視 → 資料夾選項 → 檔案類型 → 刪除 VBS、VBE、JS、JSE、WSF、WSH 的關聯。

VBS 是把雙面刃,善用它能大幅提升管理效率;防範它則需從「最小權限、最小功能」原則出發。視環境需求選擇保留或移除 WSH。

copyright © 萬盛學電腦網 all rights reserved