攻防演練中無文件攻擊PowerShell的破解之道
在近兩年的網絡安全攻防演練中,無文件PowerShell被攻擊者越來越多的利用到攻防實戰中。攻擊者可以利用PowerShell在內存中執行命令,從而繞過傳統防護工具對惡意軟件的哈希分析和檢測,而且通過這種方法,惡意攻擊者可以降低被發現的風險、增加成功實現目標的機會。
1. 為什么攻擊者選用PowerShell?
攻擊者使用PowerShell更容易將系統暴露于勒索軟件、無文件惡意軟件和惡意代碼注入內存的威脅中,使得安全風險大大提高。此外,PowerShell還有以下特點:
(1) 規模和范圍
PowerShell是Windows XP及更高版本Windows操作系統的內置功能。同時,它還是可以在Linux上運行的開源、跨平臺框架。
(2) 合法使用性
PowerShell本身并不是惡意的,它實際上是一個合法的工具。但它的使用和濫用會模糊被用來惡意攻擊或感染系統、或用來完成IT/系統管理任務之間的界限。
(3) 編寫、運行容易
對于許多IT/系統管理員、信息安全專業人員、滲透測試人員和黑帽黑客來說,編寫和運行PowerShell腳本相對容易。
(4) 簡單混淆
PowerShell腳本不僅易于編寫,PowerShell的靈活性以及第三方模塊的可用性使得混淆它們相對簡單。
(5) 功能特性
PowerShell可以虛擬地訪問大量的應用程序接口(api)來執行重要的功能,如VirtualAlloc、VirtualProtect和CreateThread,所有這些都可能被攻擊者濫用。
圖 PowerShell攻擊鏈路
通常情況下,PowerShell在默認情況下受到限制,以減少其濫用。但我們仍然可以看到一些攜帶PowerShell腳本的惡意軟件使用技術繞過PowerShell的默認執行策略,例如將惡意代碼作為命令行參數運行。正是由于以上的特性,攻擊者越來越喜歡使用PowerShell進行無文件攻擊,以完成威脅目的。
2. 無文件攻擊注入形式
一般來講,注入攻擊不僅可以用于在不知道用戶名和密碼的情況下登錄應用程序,還可以暴露私人、機密或敏感信息,甚至可以劫持整個服務器。而無文件攻擊的注入是在內存層進行的,包括如下四種形式:
(1) 反射性自我注入
反射加載是指從內存而不是從磁盤加載可移植的可執行文件(PE)。一個精心制作的函數/腳本可以反射地加載可移植的可執行文件,而無需在流程中注冊為已加載的模塊,因此可以執行操作而不會留下痕跡。PowerShell是用于執行這些精心編寫的腳本的最廣泛使用的應用程序之一。此事件表示一種無文件攻擊,其中PowerShell腳本試圖將PE注入到PowerShell進程本身。
(2) 反射EXE自我注入
反射加載是指從內存而不是磁盤加載PE。一個精心制作的函數/腳本可以反射式地加載可執行文件(EXE),而無需在進程中注冊為已加載的模塊,因此可以執行操作而不留下痕跡。PowerShell是用于執行這些精心編寫的腳本的最廣泛使用的應用程序之一。此事件表示一種無文件攻擊,其中PowerShell腳本試圖將一個EXE注入到PowerShell進程本身。
(3) 反射DLL遠程注入
反射加載是指從內存而不是磁盤加載PE。一個精心制作的函數/腳本可以反射地加載一個DLL,而無需在進程中注冊為已加載的模塊,因此可以執行操作而不留下痕跡。PowerShell是用于執行這些精心編寫的腳本的最廣泛使用的應用程序之一。此事件表示PowerShell腳本試圖向遠程進程注入DLL的無文件攻擊。
(4) 使用DotNetToJScript技術的惡意代碼執行
此事件表示嘗試使用DotNetToJScript技術執行惡意Shellcode,該技術被流行的無文件攻擊使用,如CACTUSTORCH。DotNetToJScript攻擊向量允許加載和執行惡意的。net程序集(DLL,EXE等)直接從內存通過COM暴露net庫的幫助。就像任何其他典型的無文件攻擊技術一樣,DotNetToJScript不會在計算機的硬盤驅動器中編寫惡意的。net DLL或EXE的任何部分。
3. 無文件攻擊的危害
無文件攻擊這類新型威脅攻擊很多時候在磁盤上不會存放文件,基于文件的檢測、監測和防御自然就失去了作用,但這些攻擊在攻擊期間會有一些危險動作,這是可以被行為分析模塊檢測識別的。
另外傳統的病毒木馬威脅數量也還在不斷的增長,基于行為分析的識別技術也是當前最重要的檢測識別技術(這種技術被稱為下一代殺毒技術NGAV),這種技術的實現除了依賴操作系統提供的接口外,還得在操作系統上掛大量的鉤子,這樣才能監控到足夠多的行為,有了足夠多樣的行為數據后,基于行為分析的檢測識別技術才能識別更多的威脅攻擊,而且誤報率才能足夠低,但是目前操作系統越來越封閉(比如64位的Windows操作系統)已經不允許掛鉤子了,這勢必會大大削弱這種方法的檢測效果,而這又是當前十分重要、主流的一種病毒木馬威脅檢測方法。
因此,無文件攻擊成功的概率會變大,對眾多企事業單位帶來的威脅也就會增多,后果難以估量。
4. 內存保護的破解之道
PowerShell框架提供的便利使系統管理任務更加容易,但是它也為網絡犯罪分子和黑客組織提供了較大的攻擊面。不過,盡管使用PowerShell進行的無文件威脅可能不如傳統的惡意軟件和攻擊那樣明顯,但并非無法阻止。基于內存保護技術研發設計的智能內容保護系統,目前被認為是一種有效的應對方式。
智能內存保護系統通過硬件虛擬化可以監控CPU執行的指令集,通過對部分敏感指令的監控,并結合操作系統上下文就可以知道操作系統中運行進程到底執行了什么動作,從而破解操作系統的一些限制,采集到更多的程序行為,這樣可以大大提升威脅識別率,并大幅降低誤報率。智能內存保護系統基于硬件虛擬化技術的端點安全技術可以很好的突破操作系統的限制,實現對程序行為的細粒度監控,并能很好的解決以往無法解決的大難題:對內存的讀、寫、執行行為的監控。
隨著新興技術的發展,諸如無文件攻擊之類的威脅和復雜威脅逐漸興起并被利用,應對瞬息萬變的環境并防范是眾多企業面臨的挑戰。針對性的選擇解決方案,可以很好的解決此類威脅問題。
【本文是51CTO專欄作者“安全牛”的原創文章,轉載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權】