使用者每天面臨數十個「執行還是不執行」的決策:郵件附件、下載安裝檔、USB 自動執行、網頁驅動下載。傳統防毒依賴特徵碼,對零時差惡意碼無力。Software Restriction Policies (SRP) 讓管理者以「白名單/黑名單」機制,在執行前就決定程式能否跑,是企業端點防禦的關鍵一環。本文系統拆解 SRP 規則類型、安全等級、實戰部署策略與進階技巧。
| 規則類型 | 識別依據 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|---|
| 路徑規則 | 檔案完整路徑(支援環境變數、萬用字元 * ?) | 設定簡單、直觀、可覆蓋整個資料夾 | 檔案移動/重命名即失效、惡意碼可偽裝同名檔 | 允許特定資料夾(如 D:\Apps\)、封鎖 Temp、Downloads |
| 雜湊規則 | 檔案 SHA-1/MD5 雜湊值 | 檔案改名/移動不影響、精準鎖定特定版本 | 檔案任何修改(簽名、補丁)雜湊即變、需逐檔計算 | 封鎖特定惡意樣本、鎖定核心系統檔案版本 |
| 憑證規則 | 發行者憑證(Authenticode 簽章) | 同一廠商所有簽章檔案一律信任/封鎖、不受路徑/版本影響 | 僅適用 .msi/.msp/.bat/.cmd/.vbs/.js 等可簽章類型、.exe/.dll 不支援 | 允許 Microsoft/Adobe/內部簽章軟體、封鎖未簽章腳本 |
| 網際網路區域規則 | IE 區域:Intranet/Trusted/Internet/Restricted | 針對 .msi 套件來源管控 | 僅限 Windows Installer 套件、依賴 IE 區域設定 | 僅允許內部網路部署的 MSI 安裝 |
| 等級 | 說明 | 實際權限 |
|---|---|---|
| 不受限制 | 預設等級,繼承父進程權限 | 受限於使用者 Token,不提權 |
| 基本使用者 | 僅擁有「略過遍歷檢查」特權,移除 Administrators 群組 SID | 無法寫入系統資料夾、註冊表機器鍵、載入驅動 |
| 受限 | 比基本使用者更嚴格,移除更多特權 | 極度受限,僅能讀取使用者資料 |
| 不信任 | 拒絕存取所有系統/使用者資源 | 程式無法啟動(建立進程即失敗) |
| 不允許 | 無條件阻擋執行 | 直接回傳 ERROR_ACCESS_DENIED |
啟用隱藏三級(基本使用者/受限/不信任):
登錄表 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers 新建 DWORD Levels = 0x4131000,重開 gpedit.msc 即可見。
gpedit.msc → 電腦設定 → Windows 設定 → 安全性設定 → 軟體限制原則.lnk、.bat、.cmd(避免捷徑/批次檔誤攔)%ProgramFiles%、%SystemRoot%、%AppData%\Microsoft\Windows\Start Menu\ProgramsApplication 日誌來源 Software Restriction Policies,收集被阻擋清單%ProgramFiles%\* 不受限制%ProgramFiles(x86)%\* 不受限制%SystemRoot%\* 不受限制%SystemRoot%\System32\* 不受限制\\FileServer\Apps\* 不受限制(網路部署資料夾)D:\Dev\*%、%LocalAppData%\Microsoft\VisualStudio\*%safer 命令列或 PowerShell New-SrpRule 動態加入規則,設定到期自動移除SRP 僅檢查 進程建立時的主執行檔,不檢查後續 LoadLibrary 載入的 DLL。惡意碼可簽署合法 EXE(或竊取簽章),再載入惡意 DLL。
補強: 啟用 AppLocker(Win7+/Server 2008 R2+)的「DLL 規則」,或部署 Windows Defender Application Control (WDAC) 全路徑簽章強制。
路徑規則 %AppData%\*% 在系統語境下展開為 C:\Windows\System32\config\systemprofile\AppData\*,非使用者語境。
建議: 使用具體路徑 C:\Users\*\AppData\Roaming\*% 或改用 AppLocker 的「發佈者規則」。
%SystemRoot%\system32\wbem\WmiPrvSE.exe
%SystemRoot%\system32\svchost.exe
%SystemRoot%\system32\taskhostw.exe
%SystemRoot%\system32\DllHost.exe
%SystemRoot%\system32\rundll32.exe(僅限系統簽章)
%SystemRoot%\system32\msiexec.exe
%SystemRoot%\system32\wbem\unsecapp.exe
| 特性 | SRP | AppLocker | WDAC |
|---|---|---|---|
| 支援版本 | XP/2003+ | Win7/2008 R2+ (Enterprise+) | Win10 1703+/Server 2016+ |
| 規則類型 | 路徑/雜湊/憑證/區域 | 路徑/雜湊/發佈者/檔案屬性 | 簽章/路徑/雜湊/檔案屬性 |
| DLL 控制 | 無 | 有 | 有 |
| 模式 | 使用者模式 | 使用者模式 | 核心模式(早期啟動) |
| 管理工具 | gpedit.msc / secpol.msc | gpedit.msc / PowerShell | PowerShell / CSP / Intune |
建議演進路徑: 現有 SRP 環境 → 引入 AppLocker 發佈者規則替代路徑規則 → 逐步啟用 WDAC 審計模式 → 正式用 WDAC 強制模式,實現「未簽署不得跑」的零信任執行環境。
軟體限制原則雖屬「上一代」技術,但在無法升級舊系統、無 Enterprise 授權的環境中,仍是極具性價比的應用程式管控手段。掌握「四大規則、五級等級、三階段部署、兩大盲區」,即可打造出「預設拒絕、例外精準、可審計、可演進」的端點防禦基線。下一步,請開啟 gpedit.msc,開始你的第一條路徑規則吧!