惡意軟件沙盒規避技術與原理詳解
隨著黑客正在實施最新技術來繞過防護,網絡攻擊正變得越來越復雜。勒索軟件和0 day供擊是過去幾年中最普遍的威脅,如今逃避沙盒的惡意軟件將成為網絡攻擊者未來的主要武器。
沙盒技術被廣泛用于惡意軟件的檢測和預防,因此,黑客一直尋找方法讓他們的惡意軟件在沙盒中保持不活動狀態。這樣,逃避沙箱的惡意軟件可以繞過保護并執行惡意代碼,而不會被現代網絡安全解決方案檢測到。
在本文中,我們描述了惡意軟件用來避免沙箱分析的技術,并說明了用于檢測逃避沙箱的惡意軟件的現有方法。本文對于正在開發網絡安全解決方案的開發人員很有用。
在討論逃避沙箱的惡意軟件之前,讓我們定義什么是沙箱。沙箱是一種用于惡意軟件檢測的自動化技術,已被傳統的防病毒程序和其他安全應用程序廣泛使用。通過將潛在危險的程序放置在不會造成任何危害的受控虛擬環境中,安全軟件可以分析惡意軟件的行為并開發針對該惡意軟件的保護措施。
雖然沙箱技術被認為是有效的,但網絡罪犯現在正在應用新技術,讓惡意軟件逃避沙箱。據估計,近98%的現代惡意軟件至少使用一種逃避技術。此外,超過32%的惡意軟件配備了六種或更多的方法來避免在防病毒沙盒中被檢測到。例如,Cerber勒索軟件運行28個進程來確定它是否已到達目標環境。一些網絡安全專家甚至預測,到2020年,可能會出現第一個使用AI算法逃避虛擬環境的惡意軟件。
什么是逃避沙箱的惡意軟件?
逃避沙箱的惡意軟件是一種新型惡意軟件,可以識別出它自身是否在沙箱或虛擬機環境中。這些惡意軟件只有在被控環境之外才會執行其惡意代碼。
第一個繞過沙盒保護的惡意軟件出現在1980年代。該惡意軟件使用逃避技術,該技術允許病毒加密自己的代碼,因此安全專家無法讀取它。自那時以來,網絡犯罪分子已經開發了500多種逃避技術,并基于這些技術開發了多個當代惡意軟件家族。
如今,加密的惡意軟件可以隱藏更復雜的威脅,旨在長時間攻擊受害者的系統。此外,還有全新類型的具有沙盒逃避技術的惡意軟件,它們甚至可以繞過那些使用機器學習算法的防護技術。
逃避沙箱的惡意軟件的真實示例
近年來,通過逃避沙盒的惡意軟件進行的攻擊越來越多。盡管他們以不同的方式攻擊計算機,但他們都使用了允許惡意軟件感知其環境的技術。以下是一些逃避沙箱的惡意軟件的示例:
· 2016年發布的Locky勒索軟件是逃避沙箱的經典示例。Locky是通過感染了加密DLL文件的JavaScript代碼傳播的。該惡意軟件要求使用run32dll.exe來執行DLL。但是,run32dll.exe在沙盒環境中不可用,所以,這使得惡意軟件無法被檢測到。另一個來自Locky家族的惡意軟件KeRanger,是在下載到系統三天后才開始起作用。
· 在2018年中,在中東發現了新版本的RogueRobin木馬。這種面向政府的惡意軟件是通過電子郵件在附加的RAR存檔中傳播的。一旦啟動,該惡意軟件使用一個虛擬機映像來驗證它運行的系統的BIOS版本、CPU內核和物理內存,并且不會在沙盒中運行。
· 在2019年,黑客利用HAWKBALL后門攻擊中亞的政府部門。該惡意軟件利用Microsoft Office漏洞傳遞有效負載并收集系統信息。它能夠執行本機Microsoft命令,調查主機,甚至可以驗證其使用的進程是否已調試。
· 2019年3月,檢測到一個使用改進的沙盒規避技術的macOS惡意軟件的新樣本。與以前的版本相比,OSX_OCEANLOTUS.D具有帶有UPX字符串的Mach-O簽名,這使得它在虛擬環境中的靜態分析過程中不會被察覺。此外,該后門可執行文件還會檢查它是否已連接到調試器,并收集了有關主機的數據。
如您所見,逃避沙箱的惡意軟件會使用不同的技術來混淆沙箱。讓我們更深入地了解惡意軟件是如何逃避反惡意軟件程序的,以及在沙盒分析過程中我們如何檢測惡意的惡意軟件。
最常見的沙盒規避技術
為了避免檢測,惡意軟件使用特殊的沙盒規避技術,這些技術主要基于檢測用戶或系統的交互或獲得環境意識。
檢測用戶交互
用戶以不同的方式與計算機系統交互,但是在沙盒環境中沒有類似于人類的交互。因此,黑客可以讓惡意軟件等待用戶的特定動作,然后才展示惡意行為。以下是一些用戶操作可以激活逃避沙箱的惡意軟件的示例:
· 滾動文檔。現代惡意軟件可以編程為只有在滾動到文檔中的特定位置后才能執行。例如,只有在用戶將RTF文檔滾動到第二頁后,才會激活惡意軟件。為了檢測到這一點,該惡意軟件包含Microsoft Word文檔中使用的段落代碼。盡管RTF文件還包含段落標記(./par),但惡意軟件代碼包含一系列段落,在執行利用代碼之前,需要滾動這些段落。而沙盒環境不包含任何滾動動作,從而使惡意軟件保持休眠狀態。
· 移動并單擊鼠標。對某些惡意軟件進行了編程,以檢查鼠標移動和單擊的速度,如果速度可疑,則保持不活動狀態。例如,Trojan.APT.BaneChan僅在用戶單擊一定數量的鼠標后激活。
檢測系統特征
可以對逃避沙箱的惡意軟件進行編程,以查找真實系統的某些功能,這些功能在沙箱或虛擬環境中不可用。
· 核心計數技術允許惡意軟件發現虛擬系統和物理系統之間的差異,例如CPU核心的數量。這就是為什么許多沙盒供應商隱藏他們的實際配置,這樣黑客就無法檢測沙盒規范。
· 數字系統簽名。一些惡意軟件被設計用來查找系統的數字簽名,其中包含有關計算機配置的信息。
· 安裝程序。該技術允許惡意軟件通過在操作系統中查找活動進程來檢查防病毒程序的可用性。Client Maximus惡意軟件就是逃避沙箱的惡意軟件的一個示例,該應用程序使用隱形驅動程序來應用此技術。
· 操作系統重新啟動。惡意軟件可能會被設計為僅在系統重新啟動時激活。之所以使用此技術,是因為某些沙箱無法在重新啟動后繼續保持運作狀態。雖然虛擬環境可能會嘗試通過登錄和注銷用戶來模擬重新啟動,但惡意軟件可以檢測到這一點,因為并非所有重新啟動觸發器都會執行。
環保意識
開發出可感知環境的惡意軟件的網絡犯罪分子通常都知道沙盒的工作原理。因此,他們可以輕松地對病毒進行編程,以檢測它們是否在裸機環境中運行。
為了檢查其環境,可以對惡意軟件進行編程以檢測安裝在受感染系統上的設備,或者查找僅屬于虛擬環境的指示器,例如虛擬機監控程序調用,某些文件名和沙盒的典型進程。
此外,這種惡意軟件可以在將沙箱命名為“樣本”或“惡意軟件”時對其進行檢測。此外,病毒在發現諸如vmusrvc.exe,boxservice.exe或vmtoolsd.exe之類的進程時,可以檢測到它處于虛擬環境中。
例如,旨在挖掘Monero加密貨幣的BlackSquid惡意軟件使用了多種方法來感知其環境。特別是,此惡意軟件檢查了常見的沙箱用戶名和寄存器斷點以獲取硬件斷點。它還驗證了磁盤驅動器模型,設備驅動程序和動態鏈接庫。
其他規避技術
規避沙盒的其他流行技術包括計時和數據混淆。
基于計時的技術
在某些情況下,惡意軟件會使用基于計時的技術來逃避沙箱。沙盒通常僅在有限的時間段內分析惡意軟件,基于計時的技術很樂意濫用此功能。
以下是三種常見的基于時間的沙盒規避技術:
· 睡眠。當惡意軟件使用長時間睡眠調用時,它可以在執行前成功離開沙盒。
· 定時。在某些情況下,惡意軟件可以編程為在特定日期和特定時間執行。
· 暫停代碼。惡意軟件可能包含惡意代碼,這些惡意代碼執行無用的CPU周期以延遲實際代碼,直到沙盒完成測試為止。
混淆內部數據
有一些沙盒規避技術可讓惡意軟件更改或加密其代碼和通訊,以使沙盒無法對其進行分析。
· 快速通量。這項技術是基于改變DNS名稱和IP地址,并被那些想要隱藏網絡釣魚和惡意軟件發送地址的僵尸網絡廣泛使用。它允許惡意軟件繞過安全解決方案創建的惡意網站黑名單。例如,Necurs僵尸網絡通過使用域名生成算法來更改網站地址,該算法每四天創建一個新的域名。
· 數據加密。某些惡意軟件(例如Trojan Dridex)也可以加密API調用,以使傳統的惡意軟件沙箱無法讀取它們。Andromeda僵尸網絡使用多個密鑰來加密與服務器的通信。
如何檢測逃避沙箱的惡意軟件
我們描述的規避技術可以讓開發人員更深入地了解如何檢測規避沙盒的惡意軟件。以下是一些原則,您可以在您的安全解決方案中實現,以防止沙盒規避惡意軟件。
· 動態改變睡眠時間。沙盒通常會分析惡意軟件幾秒鐘,而長時間的分析會大大增加檢測睡眠時間的惡意軟件的機會。然而,這種方法可能不會有效,因為它需要更多的時間。相反,您可以讓沙盒動態更改其時間設置,以欺騙惡意軟件并刺激其執行。
· 模擬人機交互。沙盒環境默認情況下不會模擬互動,但是您可以添加一些類似于用戶的互動,以更好地分析惡意軟件。但是,請記住,現代惡意軟件技術可能很狡猾,可以檢測到虛假的鼠標單擊或移動。
· 添加真實的環境和硬件工件。在沙箱中檢索硬件信息將幫助您檢測惡意軟件,以檢查硬盤大小,最近使用的組件,CPU編號,操作系統版本,內存容量以及其他系統和硬件特性。
· 除了動態分析外,還要進行靜態分析。沙盒技術是動態惡意軟件分析的一種形式,它可以在安全的環境中檢查惡意軟件的行為。雖然逃避沙箱的惡意軟件會不執行任何操作,但您可以對其進行完全靜態的代碼分析。靜態分析將檢查文件中是否存在逃避技術或加密的代碼段。
· 使用指紋分析。指紋技術允許您分析惡意軟件文件并找到惡意代碼的指標。指紋也可以用來檢測惡意軟件的規避特征。
· 使用基于行為的分析?;谛袨榈姆治鎏峁┝酥荚跈z測和打擊規避技術的功能。在此分析過程中,沙箱與惡意軟件本身進行交互以查找可能的執行路徑。而且,它模擬過程交互看起來很像主機。一旦檢測到沙盒規避技術,沙盒便會抵消其惡意代碼。
· 自定義您的沙箱。通過將其他用于惡意軟件檢測的創新功能添加到沙箱中,可以顯著提高其檢測惡意軟件的效率。例如,您可以使用包含多種環境和迭代分析的多沙盒陣列。檢查計算機系統API以外的惡意軟件通信也很有效。您還可以在沙盒中添加一項功能,該功能可以在運行時搜索和驗證惡意代碼的痕跡。
· 添加內核分析。盡管大多數沙箱解決方案都在用戶模式下運行,但某些類型的惡意軟件旨在將惡意代碼注入內核空間(rootkit或驅動程序),從而逃避沙箱攻擊。例如,早期版本的Turla惡意軟件已加載并利用了易受攻擊的VirtualBox驅動程序,并禁用了對簽名驅動程序加載的檢查。因此,通過在解決方案中添加內核分析,可以防止惡意軟件進入內核。
· 實施機器學習?;跈C器學習算法的惡意軟件分析可以在惡意代碼執行之前有效地檢測沙盒逃避技術。機器學習算法可以分析惡意軟件不活動或睡眠的每種行為,以此作為逃避技術的信號。此外,它還可以收集數以百萬計的其他信號,以共同檢測惡意代碼。
· 將內容解除防護和重建(CDR)視為一種額外的安全措施層。CDR通常被認為是沙盒的對立面,但它可以作為其他安全解決方案的附加組件。此技術從文件中刪除所有活動內容,并為用戶提供經過清理的文檔。它允許您立即防止隱藏在文檔中的惡意軟件,但也有可能導致包含腳本(如用JavaScript編寫的Office宏)的損壞文件,即使它們不是惡意的。
結論
規避沙盒的惡意軟件旨在避免被基于沙盒技術的保護程序檢測到。這意味著傳統的惡意軟件檢測方法對這些惡意軟件無效。
本文翻譯自:https://www.apriorit.com/dev-blog/545-sandbox-evading-malware如若轉載,請注明原文地址