只允許可信任的程式
只有清單上明確信任的程式能執行,其餘一律阻擋。攻擊者帶進來的新工具因為不在清單上,一開始就無法啟動。
白名單只需列出有限的「好程式」,不必窮舉所有壞東西,因此能防到未知的新手法。
AppLocker 是強大的應用程式控管機制。要發揮它完整的防護力,只需再處理一批 Windows 內建、被預設信任、卻可被用來繞過的元件——這些破口都是已知且可控的。以下整理 Microsoft 官方建議封鎖的清單,可直接搜尋查詢,補上即可。
JetCore 共享防繞過封鎖清單(擋下可被濫用的系統元件),協助政府機關、金融企業與所有資訊同業一起提升臺灣資安韌性。
網路上關於「AppLocker 繞過」「AppLocker 破解」的手法,多半是利用這些 Windows 內建、被預設信任、卻可執行未經核准內容的元件。以下整理 Microsoft App Control(WDAC/AppLocker)官方建議封鎖的清單,把這些破口補起來,就能大幅降低被繞過的風險。可輸入元件名稱或關鍵字查詢,或依分類篩選。
| 元件 | 分類 | 為什麼建議封鎖 | 來源 |
|---|---|---|---|
| cscript.exe | 指令碼引擎 | Windows Script Host,可執行 VBScript/JScript,被用來繞過允許原則。 | Microsoft |
| wscript.exe | 指令碼引擎 | Windows Script Host 的視窗版本,同樣可執行指令碼繞過控制。 | Microsoft |
| mshta.exe | 指令碼引擎 | 執行 HTA 應用程式的舊元件,常被拿來執行未經核准的內容。 | Microsoft |
| csi.exe | 指令碼引擎 | C# 互動式編譯器,可直接執行程式碼繞過允許原則。 | Microsoft |
| rcsi.exe | 指令碼引擎 | C# 指令碼執行工具,可執行未簽署的程式碼。 | Microsoft |
| fsi.exe | 指令碼引擎 | F# 互動式直譯器,可執行程式碼繞過控制。 | Microsoft |
| fsiAnyCpu.exe | 指令碼引擎 | F# 互動式直譯器(AnyCPU 版本),同上。 | Microsoft |
| powershellcustomhost.exe | 指令碼引擎 | 自訂 PowerShell 主機,可載入並執行指令碼繞過控制。 | Microsoft |
| runscripthelper.exe | 指令碼引擎 | 遙測用的指令碼執行輔助程式,可被濫用執行內容。 | Microsoft |
| system.management.automation.dll | 指令碼引擎 | PowerShell 核心模組,特定舊版本可繞過控制,Microsoft 以雜湊撤銷。 | Microsoft |
| msbuild.exe | 開發與建置 | .NET 建置工具,可透過專案檔執行程式碼;僅開發情境才需允許。 | Microsoft |
| msbuild.dll | 開發與建置 | MSBuild 的 DLL 形式,同樣可被用來繞過允許原則。 | Microsoft |
| Microsoft.Build.dll | 開發與建置 | MSBuild 引擎組件,可載入執行建置邏輯繞過控制。 | Microsoft |
| Microsoft.Workflow.Compiler.exe | 開發與建置 | 工作流程編譯器,可執行 XOML 內含的程式碼。 | Microsoft |
| wfc.exe | 開發與建置 | Workflow 命令列編譯器,可被用來執行程式碼。 | Microsoft |
| aspnet_compiler.exe | 開發與建置 | ASP.NET 預先編譯工具,可被用來執行未經核准的程式碼。 | Microsoft |
| dnx.exe | 開發與建置 | .NET Execution Environment,可執行程式碼繞過控制。 | Microsoft |
| dotnet.exe | 開發與建置 | .NET CLI,可執行受管理的組件繞過允許原則。 | Microsoft |
| texttransform.exe | 開發與建置 | T4 文字範本轉換工具,可執行範本內含的程式碼。 | Microsoft |
| addinprocess.exe | 開發與建置 | .NET 增益集主機,可被用來載入並執行程式碼。 | Microsoft |
| addinprocess32.exe | 開發與建置 | .NET 增益集主機(32 位元),同上。 | Microsoft |
| addinutil.exe | 開發與建置 | .NET 增益集工具,可被濫用執行內容。 | Microsoft |
| infdefaultinstall.exe | 開發與建置 | 處理 INF 安裝檔的工具,可被用來執行未經核准的動作。 | Microsoft |
| visualuiaverifynative.exe | 開發與建置 | UI 自動化驗證工具,可被用來繞過允許原則。 | Microsoft |
| windbg.exe | 除錯工具 | Windows 偵錯工具,可載入並執行任意內容,一般端點不需要。 | Microsoft |
| cdb.exe | 除錯工具 | 主控台偵錯工具,可執行程式碼繞過控制。 | Microsoft |
| kd.exe | 除錯工具 | 核心偵錯工具,可被用來繞過允許原則。 | Microsoft |
| ntsd.exe | 除錯工具 | NT 符號偵錯工具,可執行任意內容。 | Microsoft |
| ntkd.exe | 除錯工具 | 核心符號偵錯工具,同上。 | Microsoft |
| dbghost.exe | 除錯工具 | 偵錯主機程式,可被用來繞過控制。 | Microsoft |
| dbgsvc.exe | 除錯工具 | 偵錯服務程式,同上。 | Microsoft |
| dbgsrv.exe | 除錯工具 | 遠端偵錯伺服器,可被用來執行內容。 | Microsoft |
| wsl.exe | WSL 子系統 | Windows Subsystem for Linux 啟動程式,可執行 Linux 程式繞過控制。 | Microsoft |
| bash.exe | WSL 子系統 | WSL 的 Bash 進入點,可執行未受控管的內容。 | Microsoft |
| wslconfig.exe | WSL 子系統 | WSL 設定工具,配合子系統被用來繞過控制。 | Microsoft |
| wslhost.exe | WSL 子系統 | WSL 主機程式,同上。 | Microsoft |
| lxrun.exe | WSL 子系統 | 舊版 WSL 安裝/管理工具,可被用來執行內容。 | Microsoft |
| lxssmanager.dll | WSL 子系統 | WSL 管理服務 DLL,配合子系統可繞過控制。 | Microsoft |
| wmic.exe | 系統工具 | WMI 命令列工具,可被用來執行程式與指令碼繞過控制。 | Microsoft |
| kill.exe | 系統工具 | 程序終止工具,可被用來停止防護相關程序。 | Microsoft |
| bginfo.exe | 系統工具 | Sysinternals 桌面資訊工具,4.22 前版本存在可繞過控制的弱點。 | Microsoft |
| webclnt.dll / davsvc.dll | 系統工具 | WebDAV 相關 DLL,可被用來繞過控制;建議停用 WebClient 服務。 | Microsoft |
清單整理自 Microsoft App Control 官方文件。部分元件在特定開發或維運情境仍會用到,實際是否封鎖請依自身環境驗證。完整規則(含多版本 PowerShell 模組的雜湊封鎖規則)請參閱 Microsoft 官方文件 ↗。
只有清單上明確信任的程式能執行,其餘一律阻擋。攻擊者帶進來的新工具因為不在清單上,一開始就無法啟動。
白名單只需列出有限的「好程式」,不必窮舉所有壞東西,因此能防到未知的新手法。
Windows 預設信任的部分系統元件,本身能被拿來執行其他內容,成為繞過白名單的破口。封鎖清單針對這些元件加上拒絕規則。
封鎖優先於允許,即使元件落在白名單範圍內,只要有對應的封鎖規則就會被擋下。
完整設定 = 白名單(只准這些跑)+ 封鎖清單(挖掉可被濫用的信任元件)。