不管攻擊者是從 RDP、漏洞利用,還是釣魚進來,
入侵成功後會需要進一步執行指令、下載工具、操作系統。
在 Windows 環境裡,PowerShell 是攻擊者常使用的選項
因為它本就是 Windows 的系統管理工具,合法、功能完整,而且很多企業每天都在使用。
也正因如此,對攻擊者來說它很方便。
今天來看 PowerShell 被濫用,以及怎麼紀錄它的行為。
攻擊者如果帶進一支陌生執行檔:evil.exe
很可能直接碰到:
所以常見做法是使用系統本來就存在的工具。
這類思路被稱為:Living off the Land
也就是「就地取材」。

這些被被攻擊者濫用的合法系統工具 LOLBins(Living Off the Land Binaries)如:
它們本身都能直接當作 IOC,因為管理員、安裝程式、系統服務,本來就可能使用。
所以藍隊不能寫一條:
只要 powershell.exe 執行 → Critical Alert
需要參考:
也就是不能只看工具名稱,要看行為。
因為 LoLBins 的程式很多,這裡專注討論 Powershell
PowerShell 幾乎無所不能:
Windows 預設不太紀錄 Powershell 執行內容,需要自己在 Windows 裡面開啟設定
如果是去幫客戶做鑑識,預設很常不會開啟紀錄 Powershell 內容

實務調查裡,最常關注的通常是:
4104 — Script Block Logging
因為它能讓分析師看到 PowerShell 實際處理的 Script Block
設定 Powershell 教學: https://www.youtube.com/watch?v=hO4qBUadMe4
過去發生 Powershell 日誌被攻擊: https://nsfocusglobal.com/attack-and-defense-around-powershell-event-logging/
補充:就算某公司「沒有」主動開啟 4103/4104,有時日誌裡仍會零星出現這些事件(微軟內建的一些偵測機制會觸發)。所以分析第三方環境時,永遠去翻一下,可能有意外收穫。
4104 告訴我們:「它執行了什麼 Script。」
4103 則可以補充:「它呼叫了哪些 PowerShell 元件與命令。」
例如:
這些資訊在建立 PowerShell 活動時間軸時很有價值。
尤其如果想知道:這個 Session 到底碰了哪些 Cmdlet?
4103 可以是很好的補充來源。
實務上很常處理客戶電腦,任何進階日誌都沒有開啟
最後救命稻草就是 PSReadLine

底下圖為自己電腦上看 PSReadLine 紀錄

參考微軟資料:https://learn.microsoft.com/en-us/powershell/module/psreadline/about/about_psreadline?view=powershell-7.6&viewFallbackFrom=powershell-7.2#command-history
底下列出常見高風險特徵

Day 11
我們探討當攻擊者入侵機器後,會嘗試關閉系統的:防禦。比如:
我們會來探討這些「卸甲」動作會留下什麼痕跡。