Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Windows 服務器組件安全加固策略:禁用高危 COM 組件與腳本防護

編輯:關於伺服器

Windows 服務器默認註冊的多個 COM 組件(如 WScript.Shell、Shell.Application、FileSystemObject)常被惡意腳本利用執行系統命令、讀寫文件、提升權限。本文提供系統級組件加固方案,結合註冊表修改、ACL 控制、服務禁用等多層防護,大幅提升虛擬主機腳本安全性。

方案一:註銷/刪除高危組件文件(按系統版本)

Windows 2000

regsvr32 /u C:\WINNT\System32\wshom.ocx
del C:\WINNT\System32\wshom.ocx
regsvr32 /u C:\WINNT\system32\shell32.dll
del C:\WINNT\system32\shell32.dll

Windows 2003

regsvr32 /u C:\WINDOWS\System32\wshom.ocx
del C:\WINDOWS\System32\wshom.ocx
regsvr32 /u C:\WINDOWS\system32\shell32.dll
del C:\WINDOWS\system32\shell32.dll
警告:刪除 shell32.dll 可能導致系統功能異常(如資源管理器、控制面板)。生產環境建議採用方案二(註冊表重命名)而非物理刪除。

方案二:註冊表重命名組件 ProgID 與 CLSID(推薦)

核心思路:導出註冊表項 → 修改 ProgID 與 CLSID 名稱 → 導入新項 → 刪除舊項。使惡意腳本無法通過標準 ProgID 調用組件,而管理員知曉新名稱仍可正常調用。

操作步驟

  1. 打開註冊表編輯器(regedit)
  2. 搜索 Shell.Application,定位兩個關鍵項:
    • HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540000}
    • HKEY_CLASSES_ROOT\Shell.Application
  3. 導出這兩個項備份(如 shell_backup.reg)
  4. 修改備份文件中的名稱映射:
    • CLSID:{13709620-C279-11CE-A49E-444553540000} → {13709620-C279-11CE-A49E-444553540001}(僅允許 0-9、A-F)
    • ProgID:Shell.Application → Shell.Application_nohack
    • 同步修改所有引用該 CLSID/ProgID 的子項
  5. 導入修改後的 .reg 文件
  6. 刪除原有的兩個舊註冊表項

修改後註冊表結構示例

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]
@="C:\\WINNT\\system32\\shell32.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]
@="Shell.Application_nohack.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]
@="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version]
@="1.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]
@="Shell.Application_nohack"

[HKEY_CLASSES_ROOT\Shell.Application_nohack]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\Shell.Application_nohack\CLSID]
@="{13709620-C279-11CE-A49E-444553540001}"
[HKEY_CLASSES_ROOT\Shell.Application_nohack\CurVer]
@="Shell.Application_nohack.1"

方案三:針對性禁用三大高危組件(通用方法)

組件ProgID 路徑CLSID 路徑ACL 禁用命令
FileSystemObject HKEY_CLASSES_ROOT\Scripting.FileSystemObject\ HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\ 2000: cacls C:\WINNT\system32\scrrun.dll /e /d guests
2003: cacls C:\WINDOWS\system32\scrrun.dll /e /d guests
WScript.Shell HKEY_CLASSES_ROOT\WScript.Shell\
HKEY_CLASSES_ROOT\WScript.Shell.1\
對應 CLSID 子項 同 Shell.Application(針對 wshom.ocx)
Shell.Application HKEY_CLASSES_ROOT\Shell.Application\
HKEY_CLASSES_ROOT\Shell.Application.1\
對應 CLSID 子項 2000: cacls C:\WINNT\system32\shell32.dll /e /d guests
2003: cacls C:\WINDOWS\system32\shell32.dll /e /d guests

操作統一模式:將 ProgID 重命名為 _ChangeName 後綴,同步修改 CLSID 值;或直接刪除註冊表項。管理員調用時使用新 ProgID 即可。

方案四:禁用 Guest 組調用 Cmd.exe

# Windows 2000
cacls C:\WINNT\system32\Cmd.exe /e /d guests

# Windows 2003
cacls C:\WINDOWS\system32\Cmd.exe /e /d guests

補充:Serv-U 權限提升防範(適用 6.0 之前版本)

  1. 停止 Serv-U 服務
  2. 用 UltraEdit 打開 ServUDaemon.exe 與 ServUAdmin.exe
  3. 搜索 ASCII 字符串:LocalAdministrator 和 #l@$ak#.lk;0@P
  4. 修改為等長度的任意字符
  5. 關鍵:設置 Serv-U 安裝目錄權限,拒絕 IIS 匿名用戶讀取權限,防止攻擊者下載分析修改後的文件

效果評估

註銷/重命名 WScript.Shell 與 Shell.Application 可徹底阻斷 ASP/PHP 腳本通過 COM 組件提權的路徑。結合系統服務精簡、硬盤 ACL、端口過濾、本地安全策略,虛擬主機腳本入侵風險可降至極低。需注意:Perl 等其他腳本語言可能擁有獨立 Shell 能力,建議同步加固。

所有註冊表/ACL 修改需重啟 IIS 服務(iisreset)後生效。
Copyright © Windows教程網 All Rights Reserved