真有惡意 PowerShell 指令這麼一回事

有惡意企圖的駭客團體也看上 PowerShell 的強大特性,除了可以在端點上執行攻擊,也可以在駭客取得系統權限後,不需要下載或執行惡意程式,就可以進行入侵攻擊。結果就造成駭客可以躲過傳統防毒軟體的偵測,因為防毒軟體只會分析執行檔的安全性。

翻譯自 https://www.crowdstrike.com/blog/is-there-such-a-thing-as-a-malicious-powershell-command/

PowerShell 是一種指令碼 (Scripting) 語言,原本設計是要用於 Windows 的自動化管理工作。除了可以執行自帶的原生命令,也可以用於呼叫 DLL 函式、存取 .NET Framework 的 Type 或是 Class,或是其他類型工作。如果 Type 或是 Class 不存在,也可以在 Nutshell 當中建立,PowerShell 對於 IT 來說是非常有幫助的 IT 自動化管理工具。

不幸的是,有惡意企圖的駭客團體也看上 PowerShell 的強大特性,除了可以在端點上執行攻擊,也可以在駭客取得系統權限後,不需要下載或執行惡意程式,就可以進行入侵攻擊。結果就造成駭客可以躲過傳統防毒軟體的偵測,因為防毒軟體只會分析執行檔的安全性。

從上面最簡單的應用中可以理解,越來越多的企業加強對 PowerShell 的控管,以避免使用者執行惡意的 PowerShell 指令碼與指令。某些企業會完全封鎖 PowerShell 的使用,以避免這樣的風險。但是駭客還是有其他方法可以繞過這樣的控制,其中一個著名的方式就是利用 InstallUtil.exe 呼叫一個重新編譯的 Shell。這個方法在 GitHub 網站上有完整的詳細說明。

其他比較有彈性的作法是封鎖大部分的執行,僅允許在特定的資料夾執行 PowerShell 指令碼,或是僅允許特定的使用者帳戶才可以執行。這些方法其實還是有漏洞可以讓駭客提升權限就可以執行 Script,或是讓駭客找到可以執行 Script 的資料夾。後者這個方法更是特別簡單,只要找到端點中存放 .ps1 的資料夾,就可以讓駭客認定在相同的資料夾可以執行惡意的 .ps1 指令碼。

某些比較防衛性的作法是企圖分析 PowerShell 指令碼的內容,因為既然是檔案 (*.ps1) 內容就會是明碼文字可以輕鬆解碼,就可以判讀與分析。但是這個方式並不可靠。指令碼或是指令的本身並不帶有所謂的好與壞,而是在執行的時機背後所具備的企圖是好與壞。

看以下的說明來理解這個論點;


Wipe_Hard_Drive.ps1

New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter C|
Format-Volume -DriveLetter C -FileSystemLabel “New”-FileSystem NTFS -Full -Force -Confirm:$false |


這是一個惡意指令碼嗎? 單純只看內容我們真沒辦法確定。如果這是系統管理員正在進行系統重新安裝,那這個指令碼絕對是正常授權的。如果這是攻擊者企圖要摧毀資料以掩飾自身蹤跡,那當然這是惡意指令碼。但是這還是同一個指令碼啊!! 只是簡單看檔案內容絕對沒有辦法告訴你這背後的企圖。

雖然說某些知名的惡意 PowerShell 指令碼可以透過偵測發現。但是這個狀況僅限 Mimikatz,這個惡名昭彰的身分認證竊取 PowerShell 指令碼。但是對於大多數的 PowerShell 指令碼就不是這麼回事。例如,如果攻擊者使用命令列介面 (Command Line Interface, CLI) 來直接執行指令,在其所控制的電腦中逐行執行,這樣根本沒有任何的指令碼可以分析。

這也是為什麼需要上下文才能精準判斷PowerShell 指令碼或是一連串 PowerShell 命令的意圖。要做這樣的判斷,必須要知道指令碼或是指令啟動的方式,啟動的位置,啟動前後的環境與結果。進一步,還必須要知道指令彼此之間的關聯,簡單來說就是要知道完整的行為過程。這也說明為什麼行為分析是最有效的分析 PowerShell 意圖的方式。這不僅適用於 PowerShell,對於其他有可能在內部環境,被駭客拿來執行惡意攻擊的系統工具也一樣適用這個分析方式。

行為分析是主要關鍵

CrowdStrike 使用行為 IOA (Indicators of attack) 來判讀一系列動作行為的背後所隱藏的意圖,無論這些行為是 PowerShell 或其他方式所產生。這個分析方式提供獨特且主動的方式防護利用 PowerShell 所產生的攻擊。IOA 尋找攻擊所隱藏的跡象,而不是在研究攻擊步驟所發起的方式。與其他資安產品比較,例如病毒碼或是應用程式白名單,IOA會觀察 PowerShell 指令的執行序列,而不會理會這一連串動作是在哪個資料夾發生、哪個使用者執行、透過 CLI 或是指令碼呼叫。

IOA 著重在所執行的動作、彼此之間的關聯性、動作的時序以及相依性,判讀在這一連串指令的背後所具備的真實意圖與目標。IOA 並不是只看攻擊者所使用的工具,這會造成使用 PowerShell 或其他合規工具進行的惡意攻擊將被忽略。

四百年前,莎士比亞曾經說:「事無好壞,端視其義」。相同的狀況也適用於 PowerShell。一個具有正常用途的指令碼,若帶著惡意也是可以有非常大的傷害,反之亦然。如同 Mimikatz 工具,原本用來傾印密碼的 PowerShell指令碼也是可以合法正常使用在回復遺失的密碼。這也是為什麼必須監視指令碼的行為,以及執行時前後關係的重要原因,這樣才能達到善用這些正常工具但卻進行惡意攻擊的最大保護。

如果您對於本公司所代理的Crowdstrike端點威脅防禦解決方案有興趣,請立即與我們聯絡!

 

Posted in 教育訓練, 新聞, 產品新知 and tagged , , , , , , , , , , .