美國NSA發布:保留PowerShell使用和接受的安全措施
來自美國,新西蘭和英國的網絡安全當局建議正確配置和監控PowerShell,而不是完全刪除或禁用PowerShell。這將從PowerShell可以啟用的安全功能中受益,同時降低惡意行為者在訪問受害者網絡后未被發現使用它的可能性。以下建議將幫助防御者檢測和防止惡意網絡行為者的濫用,同時使管理員和防御者能夠合法使用。
本來自國家安全局(NSA)、網絡安全和基礎設施安全局(CISA)、新西蘭國家網絡安全中心(NZNCSC)和英國國家網絡安全中心(NCSC-UK)的網絡安全信息表提供了有關使用PowerShell?及其安全措施的詳細信息。
PowerShell?是MicrosoftWindows?中包含的腳本語言和命令行工具。與開源操作系統(例如Linux?)的Bash類似,PowerShell將用戶體驗作為界面擴展到操作系統中。PowerShell是在WindowsVista中引入的,?并且隨著每個Windows版本的發展而發展。PowerShell可以幫助防御者管理Windows操作系統,通過以下方式:
- 實現取證工作,
- 改進事件響應,以及
- 允許常見或重復性任務的自動化。
在微軟的云平臺Azure中?,PowerShell可以幫助管理Azure資源,允許管理員和防御者構建自動化工具和安全措施。但是,PowerShell的可擴展性,易用性和可用性也為惡意網絡行為者提供了機會。許多公開承認的網絡入侵,包括勒索軟件參與者的網絡入侵,已經使用PowerShell作為利用后工具。這種技術并不新鮮,因為惡意行為者經常會找到針對或使用合法系統軟件的方法。
PowerShell的當前防御環境?
PowerShell 7.2是最新版本,但早期版本5.1包含在Windows10中。版本7.2由Microsoft進行管理和開源。在配置正確的Windows10+中,PowerShell7.2可以與為版本5.1創建的所有組件完全集成和訪問,從而允許繼續使用現有腳本、模塊和命令。在5.0版之前的惡意PowerShell使用促使公眾努力檢測這些有針對性的PowerShell操作。最近的PowerShell版本(請參閱表1)包括增強的安全措施,例如以下各節中詳細介紹的預防、檢測和身份驗證功能。作者建議在Windows10+上明確禁用并卸載已棄用的PowerShell第二版(即版本2),以防止繞過下面描述的防御措施。
減少濫用的PowerShell方法?
PowerShell中提供的內置Windows安全功能可以減少網絡攻擊者的濫用。作者建議在可行的情況下使用這些功能。
PowerShell遠程處理期間的憑據保護?
PowerShell遠程處理是一項Windows功能,它使管理員、網絡安全分析師和用戶能夠在Windows主機上遠程執行命令。WindowsRemoteManagement(WinRM)是PowerShell遠程處理使用的基礎協議,并使用Kerberos或NewTechnologyLANManager(NTLM)作為默認身份驗證協議。這些身份驗證協議不會將實際憑據發送到遠程主機,從而避免了憑據的直接暴露和通過泄露的憑據被盜的風險。
PowerShell遠程處理的網絡保護?
遠程連接可用于強大的遠程管理功能,因此應適當配置終結點上的Windows防火墻規則以控制允許的連接。Windows的客戶端和服務器版本包括PowerShell遠程處理,默認情況下,此功能在Windows服務器上以Windows 2012 R2開頭啟用。默認情況下,使用PowerShell遠程處理訪問終結點要求請求用戶帳戶在目標位置具有管理權限。在專用網絡上啟用PowerShell遠程處理將引入Windows防火墻規則以接受所有連接。權限要求和Windows防火墻規則是可自定義的,用于將連接限制為僅受信任的終結點和網絡,以減少橫向移動的機會。組織可以在可行的情況下實施這些規則來加強網絡安全。
反惡意軟件掃描接口(AMSI)集成?
反惡意軟件掃描界面功能首先在Windows 10上可用,已集成到不同的Windows組件中。它支持使用在Windows注冊的防病毒產品掃描內存中和動態文件內容,并公開一個接口,供應用程序掃描潛在的惡意內容。內置腳本語言(例如,PowerShell、VBScript和JScript?)使用AMSI,以便通過注冊和支持的防病毒軟件掃描腳本。此功能需要AMSI感知防病毒產品,如WindowsDefender、McAfee和Symantec。
具有應用程序控制的受約束的PowerShell?
將AppLocker或Windows Defender應用程序控制(WDAC)配置為阻止Windows主機上的操作將導致PowerShell在受限語言模式(CLM)下運行,從而限制PowerShell操作,除非管理員定義的策略允許。此功能糾正了AppLocker腳本強制的缺點,該缺陷阻止腳本中的PowerShell命令,但允許以交互方式將相同的命令輸入到PowerShell命令控制臺中。在Windows10+上正確配置WDAC或AppLocker有助于防止惡意執行組件獲得對PowerShell會話和主機的完全控制。通過控制腳本和模塊的來源和執行,可以提高組織內的安全要求和代碼簽名管道。簽名要求也可以通過PowerShell的安全功能(稱為執行策略)強制執行。但是,執行策略不會限制所有PowerShell內容的執行。
用于檢測濫用的PowerShell方法?
PowerShell活動的日志記錄可以記錄網絡威脅何時利用PowerShell,并且持續監視PowerShell日志可以檢測潛在的濫用行為并發出警報。默認情況下,深度腳本塊日志記錄、模塊日志記錄和肩過傳聽處于禁用狀態。作者建議在可行的情況下啟用這些功能。
深度腳本塊日志記錄(DSBL)和模塊日志記錄?
深度腳本塊日志記錄在Windows事件日志中記錄每個PowerShell命令,從而在集中式存儲和分析平臺上啟用其他分析。DSBL甚至記錄隱藏的惡意PowerShell活動和執行的命令,如命令調用和部分腳本。同樣,模塊日志記錄捕獲PowerShell的管道執行詳細信息,目標是記錄PowerShell操作。雖然可能不會記錄完整的詳細信息和輸出,但這些模塊日志和事件日志可防止PowerShell命令被防御者遮蓋(例如,混淆或加密)。
肩過肩(OTS)轉錄
記錄在PowerShell5中執行的所有活動的功能可以應用于Windows7及更高版本,以實現即時記錄保存和受限安全跟蹤。OTS記錄每個PowerShell輸入和輸出,無論是否有效,以使防御者能夠破譯預期的行動。PowerShell 5.0擴展了轉錄范圍,可通過組策略進行企業范圍的配置。
提供身份驗證的PowerShell過程?
PowerShell中的多種身份驗證方法允許在非Windows設備上使用。
通過SSH進行遠程處理?
PowerShell 7除了支持WinRM連接外,還允許通過安全外殼(SSH)進行遠程連接。這允許公鑰身份驗證,并通過PowerShell對計算機進行遠程管理,方便且安全。PowerShell中新的SSH遠程處理功能可以建立遠程連接,而無需使用超文本傳輸協議安全(HTTPS)和安全套接字層/傳輸層安全性(SSL/TLS)證書。PowerShell over SSH不需要受信任的主機,因為在域外部通過Win RM進行遠程處理時。這允許通過SSH進行安全的遠程管理,而無需所有命令和連接的密碼,并啟用Windows和Linux主機之間的PowerShell遠程處理。
PowerShell版本和安全功能可用性
下表列出了使用特定版本的PowerShell時可用的功能:
表1:每個版本和操作系統的可用PowerShell功能
PowerShellVersion(v) | OperatingSystem | AMSI | CLM | CLMwithAppLocker andWDAC | DSBL | Over-the-Shoulder Transcription | ModuleLogging | SSH Remoting |
v3 | Windows 8 | ? | ? | |||||
v4 | Windows 8.1 | ? | ? | ? | ||||
v5 | Windows 10 | ? | ? | ? | ? | ? | ? | |
v5 | Windows 11 | ? | ? | ? | ? | ? | ? | |
v7 | Windows 10 | ? | ? | ? | ? | ? | ? | ? |
v7 | Windows 11 | ? | ? | ? | ? | ? | ? | ? |
v7 | Linux | ? | ? | ? | ? | ? |
結論?
PowerShell對于保護Windows操作系統至關重要,特別是因為較新的版本通過更新和增強功能解決了以前的限制和問題。刪除或不當限制PowerShell將阻止管理員和防御者利用PowerShell來協助系統維護、取證、自動化和安全性。PowerShell及其管理能力和安全措施應該得到妥善管理和采用。