天天看點

防病毒技術:無檔案攻擊

如今,無檔案攻擊已經常态化了。雖然一些攻擊和惡意軟體家族在其攻擊的各個方面都企圖實作無檔案化,但隻有一些功能才能實作無檔案化。對于攻擊者來說,無檔案化隻是試圖繞過攻擊的一種手段,至于是否有檔案,都隻是表象。

無檔案攻擊簡介

“無檔案攻擊”這一術語往往會讓人産生歧義,比如無檔案攻擊就代表真的沒有攻擊檔案嗎?沒有檔案又如何實施攻擊?如何檢測?如何防禦……,其實“無檔案攻擊”隻是一種攻擊政策,其出發點就是避免将惡意檔案放在磁盤上,以逃避安全檢測。有一點需要明确,就是無檔案惡意軟體也要使用檔案。

最初,“無檔案攻擊”是指沒有持久駐留在記憶體中的惡意代碼的攻擊,不過随着攻擊技術的疊代,該術語的指代面越來越廣了,現在安全行業已将那些依賴檔案系統,以實作惡意代碼激活和駐留的惡意軟體也成為“無檔案惡意軟體”。由于在無檔案惡意軟體攻擊中,系統變得相對幹淨,傳統的防毒軟體很難或根本無法識别這種感染并及時通知技術人員進行防禦,是以這種攻擊越來越普遍。

其實,“無檔案”這一術語也在不同的時間點是有不同含義的,早在2012年,有文章最初就使用了“無檔案惡意軟體”這一詞彙。但是,為了應對無檔案攻擊的挑戰,就需要消除這一術語的歧義,以了解它涵蓋的各種技術。是以識别它如何影響特定的環境和防禦政策就變得非常重要。

據GoogleTrends的監測結果顯示,“無檔案惡意軟體”此前有過很多不同的稱呼,比如: “無形惡意軟體”、“零足迹攻擊”或“無/宏惡意軟體攻擊”。這些詞早在2012年到2014年之間就零星的出現過。不過随着這一技術的使用頻率增加,網絡安全人員對這一術語的集中讨論卻發生在2015年,直至2017年随着網絡安全的概念深入人心,無檔案惡意軟體”這個詞也被定了下來并被大衆所熟知。

盡管存在防毒軟體和應用程式白名單等反惡意軟體的控制措施,但無檔案攻擊也包含各種應對政策,允許攻擊者進行有針對性的攻擊。下面概述了無檔案攻擊所涉及的方法,旨在為無檔案攻擊的防禦提供明确的概念和理論指導。現在,就讓我們來看看無檔案攻擊所包含的具體技術,以及它們為什麼常常能利用這些技術逃避現有的檢測。

技術1:惡意檔案所發揮的作用

許多專業安全分析人員通過長期的跟蹤分析,确認無檔案的攻擊其實是包含各種檔案的。在這種情況下,攻擊者提供惡意檔案通常會作為電子郵件附件,用于以下其中一種目的:

  • 惡意檔案可以充當其他檔案的靈活容器:例如,攻擊者可以在Microsoft Office檔案中嵌入JavaScript檔案,并對收件人進行社交工程攻擊,當受害者打開嵌入的檔案時,惡意檔案就開始執行所帶的腳本了。另外,可以攜帶惡意檔案的其他檔案類型包括PDF和RTF。由于此功能是特定應用程式才包含的一項功能,是以防毒軟體的技術通常不會幹擾這些檔案的使用。
  • 惡意檔案可以攜帶執行惡意代碼的漏洞:如今的檔案功能越來越複雜,不過功能多的同時所包含的攻擊面也就增大,比如攻擊者可以利用諸如解析漏洞之類的漏洞。在這種情況下,攻擊者就可以在受損應用程式的記憶體中觸發捆綁的shellcode,執行攻擊,即使不将代碼儲存到檔案系統,攻擊者也可以在發起攻擊。
  • 檔案可以執行傳播過程中的惡意邏輯,如今的檔案都支援強大的腳本功能,例如Microsoft Office執行VBA宏的功能。這些功能允許攻擊者在沒有編譯可執行檔案的情況下實作惡意邏輯,這就是利用了許多殺毒工具在區分惡意腳本和良性腳本方面的弱點。檔案腳本功能包括啟動程式和下載下傳惡意代碼。

雖然檔案駐留在攻擊端的檔案系統上,但攻擊者可以不将這些傳統惡意可執行檔案放置在磁盤上。在許多情況下,這些檔案會直接在攻擊目标的記憶體中執行惡意代碼,這也是無檔案攻擊的重要組成環節。有關攻擊者如何使用這些檔案發起攻擊的詳細案例,請參閱Omri Moyal關于濫用Microsoft Office支援DDE的文章。還有一篇文章是關于“攻擊者如何将自己插入對話以傳播惡意軟體”,請點此檢視。

技術2:惡意腳本所發揮的作用

為了避免将惡意代碼編譯成傳統可執行檔案的目标,無檔案攻擊的開發者需要在利用無檔案屬性進行攻擊時依賴惡意腳本。除了檔案原來就支援的腳本之外,如上所述,攻擊者可以直接在Microsoft Windows上運作的腳本提供了以下攻擊優勢:

  • 這些惡意腳本可以與作業系統進行互動,而不受某些應用程式(如Web浏覽器)可能對腳本施加的限制。
  • 與經過編譯的惡意可執行檔案相比,防毒軟體更難檢測和控制這些惡意腳本。
  • 這些腳步提供了許多靈活的攻擊機會,可以将惡意邏輯分散到多個程序中,以逃避檢測。
  • 這些腳步在被混淆處理後,減緩安全分析師的分析速度,為進一步逃避檢測提供時間。Microsoft Windows包括PowerShell,VBScript,批處理檔案和JavaScript的腳本解釋器,攻擊者調用并運作這些腳本的工具包括powershell.exe,cscript.exe,cmd.exe和mshta.exe。通過添加适用于Linux的Windows子系統,Microsoft可以在攻擊端上提供更多腳本技術。有關企業在限制這些工具的濫用方面所面臨的挑戰的一個案例,請參閱Gal Bitensky在讨論Invoke-NoShell實用程式的文章。

攻擊者可以使用現成的混淆腳本的架構,而不必自己來實作這種複雜的逃避政策。這些措施包括Daniel Bohannon開發的适用于PowerShell和Invoke-DOSfuscation架構的Invoke-Obfuscation。具體案例,請參考Minerva對Emotet的腳本混淆的分析。

技術3:與本地程式互動

關于無檔案攻擊的讨論通常包括濫用Microsoft Windows中内置的衆多實用程式,這些工具允許對手從攻擊的一個階段轉移到另一個階段,而無需依賴編譯的惡意可執行檔案。這種經營方式有時被稱戲稱為“靠土地為生(living off the land)”。

一旦攻擊者的惡意代碼可以與本地程式互動,那麼檔案感染程式就開始啟動,此時攻擊者就可以開始濫用作業系統内置的實用程式來下載下傳其他惡意控件,啟動程式和腳本,進而竊取資料,大肆感染,保持持久性攻擊等。攻擊者為了與本地程式互動,調用了許多工具,其中包括regsvr32.exe,rundll32.exe,certutil.exe和schtasks.exe。關于攻擊者如何以這種方式濫用内置二進制檔案、庫和腳本描述,請參閱Oddvar Moe的LOLBAS項目。

内置于作業系統中的Windows Management Instrumentation(WMI)為攻擊者提供了更多與本地程式互動的機會。WMI允許攻擊者在wmic.exe可執行檔案(以及其他一些檔案)的幫助下使用腳本(例如PowerShell)并與攻擊端的大多數程式功能進行互動。由于這些操作僅涉及受信任的内置Windows功能,是以防毒軟體技術難以進行檢測和限制。有關WMI如何協助無檔案攻擊的解釋,請參閱Matt Graeber撰寫的濫用WMI建構持久、異步和無檔案後門的文章。

攻擊者通過利用這種良性和可信賴的實用程式,大大增加了逃避檢測的機率。有關此類技術的其他示例,請參閱Matthew Dunwoody對APT29使用WMI和PowerShell建構無檔案後門的概述。

技術4:記憶體中的惡意代碼

雖然檢查磁盤上的檔案是許多防毒軟體産品的優勢,但它們經常會被僅駐留在記憶體中的惡意代碼所難道,由于記憶體是不穩定的和動态變化的,這就使惡意軟體有機會改變其攻擊方式或以其他方式逃避殺毒檢測。

一旦攻擊者開始在攻擊端上執行惡意代碼,那攻擊者就可以将惡意軟體解壓縮到記憶體中,而不會将惡意控件儲存到檔案系統中,這可能涉及到将代碼提取到程序本身的記憶體空間中的技術。在其他情況下,惡意軟體會将代碼注入受信任的流程和其他良性流程中。

記憶體攻擊技術的案例包括:

  • 記憶體注入利用Microsoft Windows的功能與作業系統進行互動,而不會利用漏洞。例如,經常被注入惡意軟體進行濫用的API調用包括VirtualAllocEx和WriteProcessMemory,它們允許用一個程序将代碼寫入另一個程序。要了解這些技術的實際應用,請閱讀Gal Bitensky對AZORult攻擊的概述,AZORult是一個功能強大的資訊竊取程式和下載下傳程式。
  • 攻擊者可以将已編譯的可執行檔案包裝成腳本,以便在運作時将惡意載荷提取到記憶體中,PowerSploit就是這樣的工具包的一個例子,你可以通過閱讀Asaf Aprozper和Gal Bitensky的GhostMiner分析來看到它的運作,而Chris Truncer的Veil架構又是另一個案例,感興趣可以讀一下。
  • Process Doppelgänging是一種繞過殺軟檢測的新技術,這種新的攻擊方式對所有windows平台都有效,并且能夠攻擊目前可見的大部分安全産品。Doppelgänging利用兩種特性來掩蓋加載修改版可執行檔案的過程。通過使用NTFS,攻擊者可以在不寫入磁盤的情況下修改可執行檔案。這意味着,攻擊可以為修改版的可執行檔案建立程序,而防毒軟體的安全機制檢測不到。這種方法很像程序中空技術,但是更加進階。攻擊者可以在沒有可以程序和記憶體操作(如SuspendProcess和NtUnmapViewOfSection)的情況下,讓惡意軟體在正常軟體的程序中執行任意代碼。SynAck惡意軟體就使用了這種逃避技術,以試圖終止與虛拟機、辦公應用程式、腳本解釋器、資料庫應用程式、備份系統以及遊戲應用程式等相關的程式。研究人員認為,SynAc這樣做的目的在于授予自身能夠通路這些程序所使用的有價值檔案的權限。如同其他勒索軟體一樣,SynAck也會收集一些關于受感染主機的基本資訊,如計算機和使用者名、作業系統版本資訊等,然後使用随機生成的256位AES密鑰對目标檔案進行加密。在檔案被加密後,将會被附加一個随機生産的擴充名。除此之外,SynAck還會清除系統存儲的事件日志,并且可以通過修改系統資料庫中的LegalNoticeCaption和LegalNoticeText鍵将自定義文本添加到Windows登入螢幕。

記憶體攻擊技術允許攻擊者繞過許多殺毒檢測技術,包括應用程式白名單。雖許多殺毒工具試圖捕獲記憶體注入,但攻擊者的攻擊技術明顯技高一籌,Asaf Aprozper的CoffeeShot工具通過在Java中實作注入方法來示範這種檢測嘗試的脆弱性。

總結

如今,無檔案攻擊已經常态化了。雖然一些攻擊和惡意軟體家族在其攻擊的各個方面都企圖實作無檔案化,但隻有一些功能才能實作無檔案化。對于攻擊者來說,無檔案化隻是試圖繞過攻擊的一種手段,至于是否有檔案,都隻是表象。往後攻擊者可能會将所有攻擊技術進行組合,包括使用惡意檔案、惡意腳本、與本地程式互動和記憶體注入。具有無檔案屬性的攻擊是基于應用程式和作業系統功能的,利用了殺毒工具在嘗試檢測和防止各種濫用時的盲點。

作者:luochicun   本文翻譯自:https://blog.minerva-labs.com/deconstructing-fileless-attacks-into-4-underlying-techniques

繼續閱讀