新聞中心
無文件攻擊事件這幾年呈現(xiàn)了高速發(fā)展?fàn)顟B(tài),成為了網(wǎng)絡(luò)攻擊中的一個重要力量。不過,很多人對“無文件攻擊”的概念,還不是很了解。雖然此前關(guān)于“無文件攻擊”的攻擊事件和案例,我們也介紹過不少,但有些東西還是沒有講透,今天我們就來講講無文件攻擊的4種基本技術(shù)。

“無文件攻擊”這一術(shù)語往往會讓人產(chǎn)生歧義,比如無文件攻擊就代表真的沒有攻擊文件嗎?沒有文件又如何實施攻擊?如何檢測?如何防御……,其實“無文件攻擊”只是一種攻擊策略,其出發(fā)點就是避免將惡意文件放在磁盤上,以逃避安全檢測。有一點需要明確,就是無文件惡意軟件也要使用文件。
最初,“無文件攻擊”是指沒有持久駐留在內(nèi)存中的惡意代碼的攻擊,不過隨著攻擊技術(shù)的迭代,該術(shù)語的指代面越來越廣了,現(xiàn)在安全行業(yè)已將那些依賴文件系統(tǒng),以實現(xiàn)惡意代碼激活和駐留的惡意軟件也成為“無文件惡意軟件”。由于在無文件惡意軟件攻擊中,系統(tǒng)變得相對干凈,傳統(tǒng)的殺毒軟件很難或根本無法識別這種感染并及時通知技術(shù)人員進(jìn)行防御,所以這種攻擊越來越普遍。
其實,“無文件”這一術(shù)語也在不同的時間點是有不同含義的,早在2012年,有文章最初就使用了“無文件惡意軟件”這一詞匯。但是,為了應(yīng)對無文件攻擊的挑戰(zhàn),就需要消除這一術(shù)語的歧義,以了解它涵蓋的各種技術(shù)。因此識別它如何影響特定的環(huán)境和防御策略就變得非常重要。
據(jù)GoogleTrends的監(jiān)測結(jié)果顯示,“無文件惡意軟件”此前有過很多不同的稱呼,比如: “無形惡意軟件”、“零足跡攻擊”或“無/宏惡意軟件攻擊”。這些詞早在2012年到2014年之間就零星的出現(xiàn)過。不過隨著這一技術(shù)的使用頻率增加,網(wǎng)絡(luò)安全人員對這一術(shù)語的集中討論卻發(fā)生在2015年,直至2017年隨著網(wǎng)絡(luò)安全的概念深入人心,無文件惡意軟件”這個詞也被定了下來并被大眾所熟知。
盡管存在殺毒軟件和應(yīng)用程序白名單等反惡意軟件的控制措施,但無文件攻擊也包含各種應(yīng)對策略,允許攻擊者進(jìn)行有針對性的攻擊。下面概述了無文件攻擊所涉及的方法,旨在為無文件攻擊的防御提供明確的概念和理論指導(dǎo)?,F(xiàn)在,就讓我們來看看無文件攻擊所包含的具體技術(shù),以及它們?yōu)槭裁闯3D芾眠@些技術(shù)逃避現(xiàn)有的檢測。
技術(shù)1:惡意文件所發(fā)揮的作用
許多專業(yè)安全分析人員通過長期的跟蹤分析,確認(rèn)無文件的攻擊其實是包含各種文件的。在這種情況下,攻擊者提供惡意文件通常會作為電子郵件附件,用于以下其中一種目的:
- 惡意文件可以充當(dāng)其他文件的靈活容器:例如,攻擊者可以在Microsoft Office文件中嵌入JavaScript文件,并對收件人進(jìn)行社交工程攻擊,當(dāng)受害者打開嵌入的文件時,惡意文件就開始執(zhí)行所帶的腳本了。另外,可以攜帶惡意文件的其他文件類型包括PDF和RTF。由于此功能是特定應(yīng)用程序才包含的一項功能,因此殺毒軟件的技術(shù)通常不會干擾這些文件的使用。
- 惡意文件可以攜帶執(zhí)行惡意代碼的漏洞:如今的文件功能越來越復(fù)雜,不過功能多的同時所包含的攻擊面也就增大,比如攻擊者可以利用諸如解析漏洞之類的漏洞。在這種情況下,攻擊者就可以在受損應(yīng)用程序的內(nèi)存中觸發(fā)捆綁的shellcode,執(zhí)行攻擊,即使不將代碼保存到文件系統(tǒng),攻擊者也可以在發(fā)起攻擊。
- 文件可以執(zhí)行傳播過程中的惡意邏輯,如今的文件都支持強(qiáng)大的腳本功能,例如Microsoft Office執(zhí)行VBA宏的功能。這些功能允許攻擊者在沒有編譯可執(zhí)行文件的情況下實現(xiàn)惡意邏輯,這就是利用了許多殺毒工具在區(qū)分惡意腳本和良性腳本方面的弱點。文件腳本功能包括啟動程序和下載惡意代碼。
雖然文件駐留在攻擊端的文件系統(tǒng)上,但攻擊者可以不將這些傳統(tǒng)惡意可執(zhí)行文件放置在磁盤上。在許多情況下,這些文件會直接在攻擊目標(biāo)的內(nèi)存中執(zhí)行惡意代碼,這也是無文件攻擊的重要組成環(huán)節(jié)。有關(guān)攻擊者如何使用這些文件發(fā)起攻擊的詳細(xì)案例,請參閱Omri Moyal關(guān)于濫用Microsoft Office支持DDE的文章。還有一篇文章是關(guān)于“攻擊者如何將自己插入對話以傳播惡意軟件”,請點此查看。
技術(shù)2:惡意腳本所發(fā)揮的作用
為了避免將惡意代碼編譯成傳統(tǒng)可執(zhí)行文件的目標(biāo),無文件攻擊的開發(fā)者需要在利用無文件屬性進(jìn)行攻擊時依賴惡意腳本。除了文件原來就支持的腳本之外,如上所述,攻擊者可以直接在Microsoft Windows上運行的腳本提供了以下攻擊優(yōu)勢:
- 這些惡意腳本可以與操作系統(tǒng)進(jìn)行交互,而不受某些應(yīng)用程序(如Web瀏覽器)可能對腳本施加的限制。
- 與經(jīng)過編譯的惡意可執(zhí)行文件相比,殺毒軟件更難檢測和控制這些惡意腳本。
- 這些腳步提供了許多靈活的攻擊機(jī)會,可以將惡意邏輯分散到多個進(jìn)程中,以逃避檢測。
- 這些腳步在被混淆處理后,減緩安全分析師的分析速度,為進(jìn)一步逃避檢測提供時間。Microsoft Windows包括PowerShell,VBScript,批處理文件和JavaScript的腳本解釋器,攻擊者調(diào)用并運行這些腳本的工具包括powershell.exe,cscript.exe,cmd.exe和mshta.exe。通過添加適用于Linux的Windows子系統(tǒng),Microsoft可以在攻擊端上提供更多腳本技術(shù)。有關(guān)企業(yè)在限制這些工具的濫用方面所面臨的挑戰(zhàn)的一個案例,請參閱Gal Bitensky在討論Invoke-NoShell實用程序的文章。
攻擊者可以使用現(xiàn)成的混淆腳本的框架,而不必自己來實現(xiàn)這種復(fù)雜的逃避策略。這些措施包括Daniel Bohannon開發(fā)的適用于PowerShell和Invoke-DOSfuscation框架的Invoke-Obfuscation。具體案例,請參考Minerva對Emotet的腳本混淆的分析。
技術(shù)3:與本地程序交互
關(guān)于無文件攻擊的討論通常包括濫用Microsoft Windows中內(nèi)置的眾多實用程序,這些工具允許對手從攻擊的一個階段轉(zhuǎn)移到另一個階段,而無需依賴編譯的惡意可執(zhí)行文件。這種經(jīng)營方式有時被稱戲稱為“靠土地為生(living off the land)”。
一旦攻擊者的惡意代碼可以與本地程序交互,那么文件感染程序就開始啟動,此時攻擊者就可以開始濫用操作系統(tǒng)內(nèi)置的實用程序來下載其他惡意控件,啟動程序和腳本,進(jìn)而竊取數(shù)據(jù),大肆感染,保持持久性攻擊等。攻擊者為了與本地程序交互,調(diào)用了許多工具,其中包括regsvr32.exe,rundll32.exe,certutil.exe和schtasks.exe。關(guān)于攻擊者如何以這種方式濫用內(nèi)置二進(jìn)制文件、庫和腳本描述,請參閱Oddvar Moe的LOLBAS項目。
內(nèi)置于操作系統(tǒng)中的Windows Management Instrumentation(WMI)為攻擊者提供了更多與本地程序交互的機(jī)會。WMI允許攻擊者在wmic.exe可執(zhí)行文件(以及其他一些文件)的幫助下使用腳本(例如PowerShell)并與攻擊端的大多數(shù)程序功能進(jìn)行交互。由于這些操作僅涉及受信任的內(nèi)置Windows功能,因此殺毒軟件技術(shù)難以進(jìn)行檢測和限制。有關(guān)WMI如何協(xié)助無文件攻擊的解釋,請參閱Matt Graeber撰寫的濫用WMI構(gòu)建持久、異步和無文件后門的文章。
攻擊者通過利用這種良性和可信賴的實用程序,大大增加了逃避檢測的概率。有關(guān)此類技術(shù)的其他示例,請參閱Matthew Dunwoody對APT29使用WMI和PowerShell構(gòu)建無文件后門的概述。
技術(shù)4:內(nèi)存中的惡意代碼
雖然檢查磁盤上的文件是許多殺毒軟件產(chǎn)品的優(yōu)勢,但它們經(jīng)常會被僅駐留在內(nèi)存中的惡意代碼所難道,由于內(nèi)存是不穩(wěn)定的和動態(tài)變化的,這就使惡意軟件有機(jī)會改變其攻擊方式或以其他方式逃避殺毒檢測。
一旦攻擊者開始在攻擊端上執(zhí)行惡意代碼,那攻擊者就可以將惡意軟件解壓縮到內(nèi)存中,而不會將惡意控件保存到文件系統(tǒng)中,這可能涉及到將代碼提取到進(jìn)程本身的內(nèi)存空間中的技術(shù)。在其他情況下,惡意軟件會將代碼注入受信任的流程和其他良性流程中。
內(nèi)存攻擊技術(shù)的案例包括:
- 內(nèi)存注入利用Microsoft Windows的功能與操作系統(tǒng)進(jìn)行交互,而不會利用漏洞。例如,經(jīng)常被注入惡意軟件進(jìn)行濫用的API調(diào)用包括VirtualAllocEx和WriteProcessMemory,它們允許用一個進(jìn)程將代碼寫入另一個進(jìn)程。要了解這些技術(shù)的實際應(yīng)用,請閱讀Gal Bitensky對AZORult攻擊的概述,AZORult是一個功能強(qiáng)大的信息竊取程序和下載程序。
- 攻擊者可以將已編譯的可執(zhí)行文件包裝成腳本,以便在運行時將惡意載荷提取到內(nèi)存中,PowerSploit就是這樣的工具包的一個例子,你可以通過閱讀Asaf Aprozper和Gal Bitensky的GhostMiner分析來看到它的運行,而Chris Truncer的Veil框架又是另一個案例,感興趣可以讀一下。
- Process Doppelg?nging是一種繞過殺軟檢測的新技術(shù),這種新的攻擊方式對所有windows平臺都有效,并且能夠攻擊目前可見的大部分安全產(chǎn)品。Doppelg?nging利用兩種特性來掩蓋加載修改版可執(zhí)行文件的過程。通過使用NTFS,攻擊者可以在不寫入磁盤的情況下修改可執(zhí)行文件。這意味著,攻擊可以為修改版的可執(zhí)行文件建立進(jìn)程,而殺毒軟件的安全機(jī)制檢測不到。這種方法很像進(jìn)程中空技術(shù),但是更加高級。攻擊者可以在沒有可以進(jìn)程和內(nèi)存操作(如SuspendProcess和NtUnmapViewOfSection)的情況下,讓惡意軟件在正常軟件的進(jìn)程中執(zhí)行任意代碼。SynAck惡意軟件就使用了這種逃避技術(shù),以試圖終止與虛擬機(jī)、辦公應(yīng)用程序、腳本解釋器、數(shù)據(jù)庫應(yīng)用程序、備份系統(tǒng)以及游戲應(yīng)用程序等相關(guān)的程序。研究人員認(rèn)為,SynAc這樣做的目的在于授予自身能夠訪問這些進(jìn)程所使用的有價值文件的權(quán)限。如同其他勒索軟件一樣,SynAck也會收集一些關(guān)于受感染主機(jī)的基本信息,如計算機(jī)和用戶名、操作系統(tǒng)版本信息等,然后使用隨機(jī)生成的256位AES密鑰對目標(biāo)文件進(jìn)行加密。在文件被加密后,將會被附加一個隨機(jī)生產(chǎn)的擴(kuò)展名。除此之外,SynAck還會清除系統(tǒng)存儲的事件日志,并且可以通過修改注冊表中的LegalNoticeCaption和LegalNoticeText鍵將自定義文本添加到Windows登錄屏幕。
內(nèi)存攻擊技術(shù)允許攻擊者繞過許多殺毒檢測技術(shù),包括應(yīng)用程序白名單。雖許多殺毒工具試圖捕獲內(nèi)存注入,但攻擊者的攻擊技術(shù)明顯技高一籌,Asaf Aprozper的CoffeeShot工具通過在Java中實現(xiàn)注入方法來演示這種檢測嘗試的脆弱性。
總結(jié)
如今,無文件攻擊已經(jīng)常態(tài)化了。雖然一些攻擊和惡意軟件家族在其攻擊的各個方面都企圖實現(xiàn)無文件化,但只有一些功能才能實現(xiàn)無文件化。對于攻擊者來說,無文件化只是試圖繞過攻擊的一種手段,至于是否有文件,都只是表象。往后攻擊者可能會將所有攻擊技術(shù)進(jìn)行組合,包括使用惡意文件、惡意腳本、與本地程序交互和內(nèi)存注入。具有無文件屬性的攻擊是基于應(yīng)用程序和操作系統(tǒng)功能的,利用了殺毒工具在嘗試檢測和防止各種濫用時的盲點。
本文翻譯自:https://blog.minerva-labs.com/deconstructing-fileless-attacks-into-4-underlying-techniques
當(dāng)前名稱:無文件攻擊的4種基本技術(shù)介紹
當(dāng)前路徑:http://m.5511xx.com/article/cdsdcsh.html


咨詢
建站咨詢
