Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 軟體限制原則深度解析:從入門到實戰防禦

編輯:Windows XP 系統介紹

前言:為什麼需要「軟體限制原則」?

使用者每天面臨數十個「執行還是不執行」的決策:郵件附件、下載安裝檔、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 即可見。

實戰部署策略:企業端點標準化流程

階段 1:審計模式——先看不攔

  1. gpedit.msc → 電腦設定 → Windows 設定 → 安全性設定 → 軟體限制原則
  2. 右鍵「新增軟體限制原則」→ 「強制執行」選「所有使用者除本機管理員外」
  3. 「指定的檔案類型」移除 .lnk、.bat、.cmd(避免捷徑/批次檔誤攔)
  4. 預設安全等級設「不受限制」→ 建立「路徑規則」允許 %ProgramFiles%、%SystemRoot%、%AppData%\Microsoft\Windows\Start Menu\Programs
  5. 觀察 1~2 週事件檢視器 Application 日誌來源 Software Restriction Policies,收集被阻擋清單

階段 2:白名單鎖定——預設拒絕

  1. 預設安全等級改「不允許」
  2. 補充路徑規則允許:
    %ProgramFiles%\* 不受限制
    %ProgramFiles(x86)%\* 不受限制
    %SystemRoot%\* 不受限制
    %SystemRoot%\System32\* 不受限制
    \\FileServer\Apps\* 不受限制(網路部署資料夾)
  3. 對簽章軟體加入憑證規則:Microsoft Corporation、Adobe Systems、內部代碼簽章憑證 → 「不受限制」
  4. 對已知惡意樣本(如 mimikatz.exe、特定勒索軟體雜湊)加入雜湊規則 → 「不允許」

階段 3:例外管理與使用者體驗優化

  • 開發/測試機: 建立「開發者」OU,連結獨立 GPO,預設等級「基本使用者」,允許 D:\Dev\*%、%LocalAppData%\Microsoft\VisualStudio\*%
  • 臨時需求: 使用 safer 命令列或 PowerShell New-SrpRule 動態加入規則,設定到期自動移除
  • 使用者通知: 部署腳本在封鎖時彈出提示:「此程式受公司安全原則限制,如需使用請聯繫 IT(單號:SRP-2024-XXX)」

進階技巧與避坑指南

1. DLL 載入順序與 SRP 盲區

SRP 僅檢查 進程建立時的主執行檔,不檢查後續 LoadLibrary 載入的 DLL。惡意碼可簽署合法 EXE(或竊取簽章),再載入惡意 DLL。
補強: 啟用 AppLocker(Win7+/Server 2008 R2+)的「DLL 規則」,或部署 Windows Defender Application Control (WDAC) 全路徑簽章強制。

2. 環境變數展開陷阱

路徑規則 %AppData%\*% 在系統語境下展開為 C:\Windows\System32\config\systemprofile\AppData\*,非使用者語境。
建議: 使用具體路徑 C:\Users\*\AppData\Roaming\*% 或改用 AppLocker 的「發佈者規則」。

3. 繼承與優先順序

  • 同一原則內:雜湊 > 憑證 > 路徑 > 預設等級
  • 多 GPO 套用:OU 層級 > 網域 > 站台 > 本機,後套用者勝出(同層級按連結順序)
  • 「不允許」為絕對否決,無法被較低層級「不受限制」覆蓋

4. 關鍵系統路徑必允清單(避免系統掛掉)

%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

特性SRPAppLockerWDAC
支援版本XP/2003+Win7/2008 R2+ (Enterprise+)Win10 1703+/Server 2016+
規則類型路徑/雜湊/憑證/區域路徑/雜湊/發佈者/檔案屬性簽章/路徑/雜湊/檔案屬性
DLL 控制無有有
模式使用者模式使用者模式核心模式(早期啟動)
管理工具gpedit.msc / secpol.mscgpedit.msc / PowerShellPowerShell / CSP / Intune

建議演進路徑: 現有 SRP 環境 → 引入 AppLocker 發佈者規則替代路徑規則 → 逐步啟用 WDAC 審計模式 → 正式用 WDAC 強制模式,實現「未簽署不得跑」的零信任執行環境。

結語

軟體限制原則雖屬「上一代」技術,但在無法升級舊系統、無 Enterprise 授權的環境中,仍是極具性價比的應用程式管控手段。掌握「四大規則、五級等級、三階段部署、兩大盲區」,即可打造出「預設拒絕、例外精準、可審計、可演進」的端點防禦基線。下一步,請開啟 gpedit.msc,開始你的第一條路徑規則吧!

Copyright © Windows教程網 All Rights Reserved