一文詳解基於指令碼的攻擊

安芯網盾發表於2020-09-04

攻擊者總是在尋找新的方法來逃避檢測。由於大多數端點安全產品能夠較好地處理基於檔案的攻擊,而對無檔案攻擊的處理能力較弱。目前在無檔案攻擊的案例裡,基於指令碼的樣本比例比較高,基於指令碼、避免檔案落地的攻擊方式成為了攻擊者繞過大多數傳統安全產品的絕佳方法。

指令碼可提供初始訪問許可權,實現逃避檢測並促進感染後的橫向移動。攻擊者將直接在計算機上使用指令碼,或者將其嵌入到傳送給受害者的電子郵件附件如Office文件和PDF中。本文概述了當前的指令碼威脅情況以及最常見的指令碼攻擊方法。


基於指令碼的攻擊的興起


基於指令碼的攻擊從2017年開始變得越來越流行,Ponemon Institute釋出的2020端點安全報告顯示:現在基於指令碼的攻擊已佔所有攻擊的40%。值得注意的是,在橫向移動和感染中濫用合法應用程式和諸如PowerShell之類的本地工具的現象激增。

許多惡意威脅都在使用指令碼。例如,下載PE檔案的指令碼可以將其儲存到磁碟中,也可以在記憶體中執行,這取決於其複雜程度。該指令碼還可以執行其他惡意操作,例如收集有關受害者的資訊,包括計算機名稱甚至儲存的密碼。

指令碼可以是一系列簡單的系統命令,也可以是用指令碼語言編寫的程式。常見的指令碼語言有VBScript,JavaScript和PowerShell。與應用程式不同,指令碼不需要編譯為機器碼,而是直接由計算機解釋執行。用Perl指令碼語言的建立者Larry Wall的話來說:“指令碼是給演員的東西,而程式是給觀眾的東西。”


攻擊者如何利用指令碼?


提到基於指令碼的攻擊,就不得不介紹他們常常利用的工具PowerShell。PowerShell是用於命令列管理和指令碼語言的配置管理和任務自動化的框架。它提供對Microsoft Windows Management Instrumentation(WMI)和Component Object Model(COM)的訪問,利用這一工具,系統管理員可以將IT管理流程自動化。而與此同時,它也成為了攻擊者在系統中立足的有效且通用的工具。

在許多情況下,PowerShell允許攻擊者侵入受害者的系統,因為使用PowerShell可使攻擊者獲得他們需要的許可權,在系統中執行橫向移動,以及與其他Windows應用程式進行互動。

攻擊者在攻擊中使用PowerShell將惡意程式碼直接載入到記憶體中,而無需寫入磁碟,從而繞過了許多端點安全產品。攻擊者還可以使用PowerShell透過Metasploit或PowerSploit等框架自動執行資料竊取和感染。

與其他型別的攻擊一樣,在基於指令碼的攻擊中,攻擊者通常使用網路釣魚攻擊來入侵受害者的主機,這種網路釣魚攻擊包含一個dropper ,例如PDF,RTF,Office檔案或存檔。在大多數情況下, 這個dropper 將執行一個指令碼,該指令碼可以是VBA宏,也可以是其他型別的指令碼,例如PowerShell,JavaScript或HTA。

在某些情況下,這些指令碼充當下載程式,要麼將PE檔案下載到磁碟之後刪除,要麼將PE檔案注入到另一個程式,要麼下載另一個指令碼來執行下一階段的攻擊。極少數情況下,指令碼包含整個惡意邏輯。另外,攻擊者可以利用類似Adobe Acrobat等的文件閱讀器中的漏洞來進行下一階段的攻擊。無論是基於指令碼的惡意軟體,還是基於檔案的惡意軟體攻擊(包括著名的勒索軟體和金融惡意軟體活動),都在廣泛使用droppers。

一組攻擊樣本顯示,有75%的無檔案活動使用指令碼,其中大多數是PowerShell,HTA,JavaScript,VBA中的一個或多個。

例如,總部位於伊朗的OilRig組織使用的Helminth Trojan使用指令碼編寫惡意程式碼。他們在攻擊過程中,利用了Microsoft Word文件檔案中編號為CVE-2017-0199的漏洞  。該指令碼由Windows程式執行。這一指令碼會執行HTML可執行檔案mshta.exe。一旦執行,指令碼將啟動攻擊,就會將Helminth Trojan以PowerShell和VBS指令碼的形式下載到本地並執行。


指令碼的使用為攻擊者帶來了哪些好處?


1、指令碼易於編寫和執行,難以理解且極其多型。此外,攻擊者可以利用多種型別的指令碼檔案來進行攻擊,其中最受歡迎的是PowerShell,JavaScript,HTA,VBA,VBS和批處理指令碼。

2、由於基於指令碼的無檔案攻擊發生在記憶體中,因此傳統的靜態檔案檢測變得無效。另外,指令碼使事後溯源分析變得複雜,因為許多與攻擊有關的惡意指令碼僅存在於計算機的記憶體中,並且可能透過重啟系統而被覆蓋或刪除。

3、基於指令碼的攻擊幾乎可以在所有Windows系統上執行,從而增加了潛在的攻擊面和感染機會。

基於指令碼的攻擊的一個主要缺點是,除非透過漏洞利用進行部署,否則執行指令碼必須進行使用者互動。例如,在大多數情況下,指令碼要麼作為指令碼檔案包含在需要使用者操作的電子郵件中,要麼作為VBA宏包含在要求使用者啟用宏的文件中。


其他基於指令碼的威脅


HTML應用程式(HTA)是一個Microsoft Windows檔案,用於在Internet Explorer上執行,該檔案將HTML程式碼與Internet Explorer支援的指令碼(例如VBScript或JScript)結合在一起。HTA檔案透過Microsoft HTA引擎mshta.exe執行,該引擎具有本地使用者的特權而不是Internet Explorer的受限特權,並且可以訪問檔案系統和登錄檔。

惡意的HTA檔案允許指令碼使用本地使用者特權執行計算機,從而實現下載和執行可執行檔案或其他指令碼。儘管這被認為是一種舊的攻擊手段,但許多基於指令碼的攻擊仍在繼續使用HTA檔案,因為這些檔案可以作為附件傳送,由其他指令碼下載或從惡意網站重定向。

VBScript是Microsoft Visual Basic的指令碼版,它是一種基於VBA(Visual Basic for Applications)的Microsoft指令碼語言。VBS代替了VBA提供的完整應用程式開發,提供了更直接的用法,實現系統管理員的任務自動化。與用於類似用途的PowerShell十分相似,VBScript經常出現在基於指令碼的攻擊中。


如何防禦基於指令碼的攻擊?


基於指令碼的攻擊很多沒有落地到磁碟,屬於無檔案攻擊。透過使用啟發式分析和行為分析( the use of heuristics and behavioral analysis),從而進行記憶體檢測和相關行為的收集分析,可以達到檢測、防禦指令碼攻擊的目的。我們之前也寫過如何防護無檔案攻擊的文章,感興趣的同學歡迎來學習~


相關閱讀:


揭秘安芯神甲智慧記憶體保護系統為何能輕鬆防護無檔案攻擊


參考連結:

https://www.helpnetsecurity.com/2020/07/31/what-are-script-based-attacks/


相關文章