設(shè)置PowerShell腳本塊日志以加強安全
譯文譯者 | 布加迪
審校 | 重樓
51CTO讀者成長計劃社群招募,咨詢小助手(微信號:TTalkxiaozhuli)
PowerShell是一種非常全面且易于使用的語言。但是管理員需要保護組織遠離不法分子,以免他們利用PowerShell搞破壞活動。
作為Windows中的一路原生工具,PowerShell的廣泛功能使得攻擊者很容易利用該語言做文章。越來越多的惡意軟件和不法分子使用PowerShell將不同的攻擊方法結(jié)合起來,或者完全通過PowerShell運行漏洞利用代碼。這種攻擊常常逃避檢測,是由于攻擊者利用了操作系統(tǒng)的原生組件。
有許多方法和最佳實踐可用于保護PowerShell。其中最有價值的是PowerShell腳本塊日志記錄。腳本塊是作為一個整體使用的一組語句或表達式。腳本塊是使用花括號{}定義一個代碼塊。
從Windows PowerShell版本4.0開始,腳本塊日志記錄會生成已執(zhí)行代碼的審計跟蹤,但在Windows PowerShell版本5.0中得到了顯著改進。Windows PowerShell版本5.0引入了一個日志引擎,可以自動解密使用XOR、Base64和ROT13等方法混淆處理的代碼。PowerShell包含原始的加密代碼,以供比較。
PowerShell腳本塊日志有助于在安全泄密后分析事件,以便提供額外的洞察力。它還可以幫助IT人員更主動地監(jiān)視惡意事件。比如說,如果您在Windows中設(shè)置了事件訂閱,可以將感興趣的事件發(fā)送到集中服務(wù)器,進行更仔細的觀察。
一、設(shè)置Windows系統(tǒng)以實現(xiàn)日志功能
在Windows系統(tǒng)上配置腳本塊日志的兩種主要方法是直接設(shè)置注冊表值,或在組策略對象中指定適當(dāng)?shù)脑O(shè)置。
要通過注冊表配置腳本塊日志記錄,請在以管理員的身份登錄時使用以下代碼。
您可以在組策略中設(shè)置PowerShell日志記錄設(shè)置,這可以在本地機器上設(shè)置,也可以通過面向全組織的策略來設(shè)置。
打開本地組策略編輯器,進入到“計算機配置>管理模板> Windows組件> Windows PowerShell >打開PowerShell腳本塊日志記錄”。
圖1. 從Windows中的本地組策略編輯器設(shè)置PowerShell腳本塊日志記錄
當(dāng)您啟用腳本塊日志記錄時,編輯器會開啟一個額外的選項:當(dāng)命令、腳本塊、函數(shù)或腳本啟動和停止時,通過“日志腳本塊調(diào)用啟動/停止事件”來記錄事件。這有助于跟蹤事件發(fā)生的時間,尤其是針對長時間運行的后臺腳本。這個選項在日志中生成大量的額外數(shù)據(jù)。
圖2. PowerShell腳本塊日志記錄跟蹤已執(zhí)行的腳本和命令行上運行的命令
二、如何在非Windows系統(tǒng)上配置腳本塊日志記錄?
PowerShell Core是PowerShell的跨平臺版本,適用于Windows、Linux和macOS。要在PowerShell Core上使用腳本塊日志,您就需要在$PSHome目錄下的PowerShell .config.json文件中定義配置,該文件對于安裝的每個PowerShell都是唯一的。
從PowerShell會話進入到$PSHome,使用Get-ChildItem命令查看PowerShell.config.json文件是否存在。如果不存在,您需要創(chuàng)建該文件。這么做的方法因操作系統(tǒng)而異。雖然可以使用文本編輯器,但也可以從命令行創(chuàng)建所需的文件。比如在Linux機器上,您可以使用這個命令。
使用Nano文本編輯器等工具修改文件,并粘貼以下配置。
三、測試PowerShell腳本塊日志記錄
測試配置很容易。從命令行運行以下命令。
四、查看Windows操作系統(tǒng)上的日志
您如何知道要留意哪些條目?需要留意的主要事件ID是4104。這是ScriptBlockLogging條目,對應(yīng)含有用戶和域、記錄的日期和時間、計算機主機以及腳本塊文本的信息。
打開事件查看器,進入到以下日志位置:“Applications and Services Logs > Microsoft > Windows > PowerShell > Operational”。
點擊事件,直到從測試中找到標為事件ID 4104的條目。針對該事件過濾日志,以加快搜索速度。
圖3. Windows事件查看器中的事件4104詳細說明了Windows計算機上的PowerShell活動
在Windows操作系統(tǒng)上的PowerShell Core中,日志位置是:Applications and Services Logs > PowerShellCore > Operational。
五、非Windows系統(tǒng)上的日志位置
在Linux上,PowerShell腳本塊日志將記錄到syslog。其位置將因發(fā)行版而異。在本教程中,我們使用Ubuntu,其syslog在/var/log/syslog目錄下。
運行以下命令顯示日志條目。值得注意的是,該命令需要提升的權(quán)限,因此您將需要使用sudo命令。
在Linux上設(shè)置集中式服務(wù)器不一樣,因為您默認使用syslog。您可以使用許多不同的工具將日志發(fā)送到日志聚合服務(wù),以便從中心位置跟蹤PowerShell活動。Rsyslog是一種流行的選擇,但其他選項包括Dynatrace、New Relic和Datadog。
原文鏈接:https://www.techtarget.com/searchwindowsserver/tutorial/Set-up-PowerShell-script-block-logging-for-added-security