深入瞭解 PowerShell 腳本安全性
適用於:Configuration Manager (目前的分支)
系統管理員必須負責驗證其環境中建議的 PowerShell 和 PowerShell 參數使用方式。 以下是一些實用的資源,可協助系統管理員瞭解 PowerShell 的威力和潛在風險表面。 本指引可協助您降低潛在風險面,並允許使用安全的腳本。
PowerShell 腳本安全性
Configuration Manager 文稿功能可讓您以可視化方式檢閱和核准腳本。 另一個系統管理員可以要求允許其腳本。 系統管理員應該知道PowerShell腳本可以有模糊化的腳本。 模糊化的腳本可能是惡意的,而且在腳本核准程式期間難以透過視覺檢查進行偵測。 以可視化方式檢閱PowerShell腳本,並使用檢查工具來協助偵測可疑的腳本問題。 這些工具不一定能判斷 PowerShell 作者的意圖,因此可以將注意力放在可疑的腳本上。 不過,這些工具會要求系統管理員判斷其為惡意或刻意的腳本語法。
建議
- 使用下列各種連結,熟悉PowerShell安全性指引。
- 簽署您的腳本:另一個保護腳本安全的方法,是在匯入腳本以供使用之前先經過審查並簽署。
- 請勿在PowerShell腳本中儲存密碼 (例如密碼) ,並深入瞭解如何處理秘密。
PowerShell 安全性的一般資訊
選擇此連結集合,可讓 Configuration Manager 系統管理員開始瞭解PowerShell腳本安全性建議。
PowerShell - 藍色小組,討論深度腳本區塊記錄、受保護的事件記錄、反惡意代碼掃描介面,以及安全程式代碼產生 API
PowerShell 參數安全性
傳遞參數是一種彈性地使用腳本並延遲決策的方式,直到運行時間為止。 它也會開啟另一個風險介面。
下列清單包含防止惡意參數或腳本插入的建議:
- 只允許使用預先定義的參數。
- 使用正則表達式功能來驗證允許的參數。
- 範例:如果只允許特定範圍的值,請使用正則表達式只檢查可構成該範圍的字元或值。
- 驗證參數有助於防止用戶嘗試使用可以逸出的特定字元,例如引號。 可以有多種類型的引號,因此使用正則表達式來驗證您認為允許的字元通常比嘗試定義所有不允許的輸入更容易。
- 在 PowerShell 資源庫 中使用PowerShell模組「插入式搜捕」。
- 可能會有誤判,因此當某個項目標示為可疑時,請尋找意圖,以判斷其是否為實際問題。
- Microsoft Visual Studio 具有可協助檢查 PowerShell 語法的腳本分析器。
下列標題為:「DEF CON 25 - Lee Lee - 取得$pwnd:強化攻擊 Windows Server」的影片提供您可以針對 (保護的問題類型概觀,特別是第 12:20 到 17:50) :
環境建議
下列清單包含 PowerShell 系統管理員的一般建議:
- 部署最新版的 PowerShell,例如第 5 版或更新版本,其內建於 Windows 10 或更新版本。 您也可以部署 Windows Management Framework。
- 啟用並收集PowerShell記錄,並選擇性地包含受保護的事件記錄。 將這些記錄納入您的簽章、搜捕和事件回應工作流程中。
- 在高價值系統上實作 Just Enough Administration,以消除或減少這些系統不受限制的系統管理存取權。
- 部署 Windows Defender 應用程控原則,以允許預先核准的系統管理工作使用 PowerShell 語言的完整功能,同時將互動式和未經核准的使用限制在 PowerShell 語言的有限子集。
- 部署 Windows 10 或更新版本,讓防病毒軟體提供者完整存取所有內容 (包括在運行時間產生或解除模糊化的內容,) 包含PowerShell的 Windows 腳本主機所處理。