絕大多數木馬、病毒要實現開機自啟動,無非三條路徑:
HKLM\SYSTEM\CurrentControlSet\Services)Windows 2000/XP/2003 的註冊表支援 ACL(存取控制清單)。若將上述關鍵鍵值的「Everyone」群組權限設為「唯讀」,惡意程式碼即無法寫入,從源頭斷絕其持久化能力。
| 類別 | 註冊表路徑 |
|---|---|
| 機器級自啟動 (HKLM) | SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx | |
| 用戶級自啟動 (HKCU) | SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx | |
SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce | |
| 系統服務 | SYSTEM\CurrentControlSet\Services |
| 檔案關聯 (HKCR) | exefile\shell\open\command |
inifile\shell\open\command | |
batfile\shell\open\command | |
comfile\shell\open\command | |
txtfile\shell\open\command | |
inffile\shell\open\command |
透過「電腦設定 → Windows 設定 → 安全性設定 → 登錄」為上述鍵值設定權限,再透過 GPO 下發。
單機環境可使用 secedit /configure 套用匯出的安全模板(.inf),或直接在 regedt32/regedit 的「安全性」頁籤手動編輯 ACL。
SetACL 是命令列 ACL 管理神器,支援遞迴設定、備份/還原。下列批次碼整合安裝/移除/查看三種模式,自動偵測作業系統版本(2000/XP/2003)並調用相應的群組策略刷新指令(secedit /refreshpolicy 或 gpupdate /force)。
@echo off
setlocal
chcp 936 >nul
:: 偵測 OS 版本,設定對應的群組策略刷新命令
ver | find "2000" >nul && set UpdatePolicy=secedit /refreshpolicy machine_policy >nul 2>nul && goto SELECT
ver | find "XP" >nul && set UpdatePolicy=gpupdate /force >nul 2>nul && goto SELECT
ver | find "2003" >nul && set UpdatePolicy=gpupdate /force >nul 2>nul && goto SELECT
echo 不支援的作業系統 & goto QUIT
:SELECT
echo 1. 安裝防木馬保護(設為唯讀)
echo 2. 移除保護(還原預設權限)
echo 3. 查看技術說明
echo 4. 退出
set /p choice=請輸入選項 (1-4):
if "%choice%"=="1" set OP=/grant everyone /read /p:no_dont_copy & goto DOIT
if "%choice%"=="2" set OP=/revoke everyone /read /p:yes & goto DOIT
if "%choice%"=="3" goto INFO
if "%choice%"=="4" goto QUIT
goto SELECT
:DOIT
echo 正在套用權限變更...
:: HKLM 自啟動項
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -ot reg %OP%
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" -ot reg %OP%
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices" -ot reg %OP%
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx" -ot reg %OP%
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce" -ot reg %OP%
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx" -ot reg %OP%
:: HKCU 自啟動項
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx" -ot reg %OP%
setacl -on "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce" -ot reg %OP%
:: 系統服務
setacl -on "HKLM\SYSTEM\CurrentControlSet\Services" -ot reg %OP%
:: 常見檔案關聯
setacl -on "HKCR\exefile\shell\open\command" -ot reg %OP%
setacl -on "HKCR\inifile\shell\open\command" -ot reg %OP%
setacl -on "HKCR\batfile\shell\open\command" -ot reg %OP%
setacl -on "HKCR\comfile\shell\open\command" -ot reg %OP%
setacl -on "HKCR\txtfile\shell\open\command" -ot reg %OP%
setacl -on "HKCR\inffile\shell\open\command" -ot reg %OP%
:: 刷新群組策略使生效
%UpdatePolicy%
echo 完成。請重新登入或重啟以生效。
goto QUIT
:INFO
echo 本腳本透過設定註冊表 ACL 為「Everyone: Read Only」
echo 防止木馬/病毒寫入自啟動項、劫持檔案關聯、註冊服務。
echo 注意:安裝新軟體、打補丁前請先執行選項 2 移除保護,
echo 安裝完成後再執行選項 1 重新啟用保護。
pause
goto SELECT
:QUIT
endlocal
作者在文中提到因公司推行 ISO 9001,特意將防禦邏輯寫成標準化文檔與腳本。這提醒我們:安全防禦不僅是技術動作,更是可重複、可審計的流程。將「鎖定自啟動區」納入基線配置,配合變更管理(安裝軟體前解鎖、事後復原),才能在企業環境落地生根。
註冊表 ACL 鎖定是一種「被動免疫」手段:成本低、無執行期開銷、對抗腳本小子級木馬極為有效。但面對 APT 級別的持久化技術,仍需搭配 HIPS、EDR、應用程式白名單等主動防禦層。對個人用戶而言,「不濫用管理員權限、保持系統修補、使用現代殺毒軟體」 依然是性價比最高的組合拳。