防病毒技術:無文件攻擊

現在,無文件攻擊已常常態化了。雖然一些攻擊和惡意軟件家族在其攻擊的各個方面都企圖實現無文件化,但只有一些功能才能實現無文件化。對於攻擊者來講,無文件化只是試圖繞過攻擊的一種手段,至因而否有文件,都只是表象。

無文件攻擊簡介html

「無文件攻擊」這一術語每每會讓人產生歧義,好比無文件攻擊就表明真的沒有攻擊文件嗎?沒有文件又如何實施攻擊?如何檢測?如何防護……,其實「無文件攻擊」只是一種攻擊策略,其出發點就是避免將惡意文件放在磁盤上,以逃避安全檢測。有一點須要明確,就是無文件惡意軟件也要使用文件。

最初,「無文件攻擊」是指沒有持久駐留在內存中的惡意代碼的攻擊,不過隨着攻擊技術的迭代,該術語的指代面愈來愈廣了,如今安全行業已將那些依賴文件系統,以實現惡意代碼激活和駐留的惡意軟件也成爲「無文件惡意軟件」。因爲在無文件惡意軟件攻擊中,系統變得相對乾淨,傳統的殺毒軟件很難或根本沒法識別這種感染並及時通知技術人員進行防護,因此這種攻擊愈來愈廣泛。git

其實,「無文件」這一術語也在不一樣的時間點是有不一樣含義的,早在2012年,有文章最初就使用了「無文件惡意軟件」這一詞彙。可是,爲了應對無文件攻擊的挑戰,就須要消除這一術語的歧義,以瞭解它涵蓋的各類技術。所以識別它如何影響特定的環境和防護策略就變得很是重要。github

據GoogleTrends的監測結果顯示,「無文件惡意軟件」此前有過不少不一樣的稱呼,好比: 「無形惡意軟件」、「零足跡攻擊」或「無/宏惡意軟件攻擊」。這些詞早在2012年到2014年之間就零星的出現過。不過隨着這一技術的使用頻率增長,網絡安全人員對這一術語的集中討論卻發生在2015年,直至2017年隨着網絡安全的概念深刻人心,無文件惡意軟件」這個詞也被定了下來並被大衆所熟知。shell

無文件攻擊

儘管存在殺毒軟件和應用程序白名單等反惡意軟件的控制措施,但無文件攻擊也包含各類應對策略,容許攻擊者進行有針對性的攻擊。下面概述了無文件攻擊所涉及的方法,旨在爲無文件攻擊的防護提供明確的概念和理論指導。如今,就讓咱們來看看無文件攻擊所包含的具體技術,以及它們爲何經常能利用這些技術逃避現有的檢測。數據庫

技術1:惡意文件所發揮的做用windows

許多專業安全分析人員經過長期的跟蹤分析,確認無文件的攻擊實際上是包含各類文件的。在這種狀況下,攻擊者提供惡意文件一般會做爲電子郵件附件,用於如下其中一種目的:api

  • 惡意文件能夠充當其餘文件的靈活容器:例如,攻擊者能夠在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

相關文章
相關標籤/搜索