揭秘無文件惡意軟體的前生今世

一聽到無文件惡意軟體,很多企業和個人用戶都感覺無所適從。因為目前的很過防禦檢測技術還足以對這些攻擊產生有效的攔截。無文件惡意真有這麼厲害嗎?今天我們就來詳細的回顧一下它的歷史,並結合一些目前已經查明的惡意軟體樣本進行具體分析。

根據Google Trends監測,無文件惡意軟體這個詞出現在2012年到2014年之間。不過隨著惡意軟體的開發者開始在攻擊中頻繁的使用這一技術,網路安全人員對這一術語的集中大規模討論卻發生在2015年,直至2017年隨著網路安全的概念深入人心,這個詞也被大眾所熟知。

不過,無文件惡意軟體很容易讓不明就裡的人誤以為,攻擊者在使用該技術進行攻擊時真的不需要使用任何文件,這種理解是非常錯誤的。下面我們就來探究一下無文件惡意軟體攻擊的演變歷程,以及它究竟是如何實現的。

我們一般會把惡意軟體定義為在操作系統上執行的代碼,按著這個思路,無文件惡意軟體確實就是沒有文件的。比如,開始於惡意腳本或文件系統上的可執行文件的攻擊,無論攻擊發生的方式如何,無論是漏洞利用,社會工程技巧,還是某些功能的濫用。

不過最初無文件惡意軟體是指沒有持久注入在內存中的惡意代碼,不過隨著時間的變化,該術語演變為包含依賴文件系統的某些方面來激活或運行的惡意軟體。我們來回顧一下影這個術語的演變歷史。

無文件惡意軟體的演變歷史

2001-2004:Code Red和SQL Slammer的出現

惡意代碼的概念肯定是出現在21世紀之前,不過從2001年爆發的Code Red蠕蟲、Nimda蠕蟲,SQL殺手病毒(SQL SLAMMER蠕蟲),到2004年肆掠的 「衝擊波」 蠕蟲病毒,無不有蠕蟲的影子,並且開始與病毒相結合了。蠕蟲病毒通常會感染Windows 2000/ XP/Server 2003系統。這就是無文件惡意軟體一詞最初的那種文件式的思路的來源。我們找到了卡巴斯基實驗室在2001年夏天發表了一個公告:

我們預測,在不久的將來,像Code Red這樣的無文件蠕蟲將成為最廣泛的惡意程序之一,而且我們對其難以防範。

Code Red利用了Microsoft IIS Web伺服器中的一個漏洞,將其藏身於受感染主機的內存中。

緊接著一年半後,另一個蠕蟲SQL Slammer通過利用Microsoft SQL伺服器中的漏洞迅速傳播。 網路安全與詐騙的調查分析師Robert Vamosi在2003年曾為ZDNet撰寫相關的研究文章,將此惡意軟體描述為無文件攻擊,並提到它僅駐留在內存中,就像Code Red一樣。

當時還在賽門鐵克工作的Peter Szor在2003年「標題籤名提取系統和方法」的專利技術申請也就提到了這個術語。在這份專利申請中,該專利將無文件惡意軟體定義為:

不是基於文件的惡意代碼,但僅存在於內存中……更具體地說,無文件惡意代碼就是將自身附加到內存正常的活動進程中。

總而言之,無文件惡意軟體的最原始定義是這樣的「在不保留任何文件的情況下,還會進行惡意軟體的活動」。

2012:Lurk木馬的出現

在Code Red和SQL Slammer蠕蟲病毒近十年之後。 2012年,卡巴斯基實驗室的Sergey Golovanov有報告了一個新的木馬攻擊類型,該木馬沒有將任何文件保存到硬碟驅動器,用報告里的話解釋就是這樣的:

我們正在處理一種非常罕見的惡意軟體,就是所謂的無文件惡意程序,它根本不作為硬碟驅動器上的文件存在,Lurk木馬是一種複雜的、通用的、多模塊的多功能惡意軟體,能夠獲取受害者計算機的訪問許可權。Lurk木馬非常獨特,它的惡意代碼不會存儲在受害者的計算機中,而是在隨機訪問存儲器(RAM)中。

未命名的標籤利用了客戶端Java漏洞,並僅在受影響的javaw.exe進程的內存中進行操作。 Sergey提到Lurk木馬就是一個銀行木馬。

隨後,SecurityXploded的Amit Malik發表了一份對該類型木馬的研究性文章,說明了如何從Windows下載文件之後,將Windows程序的「內存或無文件執行」保存到磁碟上。

2014:Powerliks、Angler、Phase Bot等各種漏洞攻擊工具的出現

第二階段的惡意程序仍然停留在純粹的內存注入,而不會在文件系統上留下任何直接的痕迹。所以一旦系統重啟,這些文件就都消失了。相比之下,Powelliks惡意軟體(實際上應該叫做Kovter)是一款著名的點擊欺詐軟體,它於2014年首次被曝光,由於它使用了一種特殊的潛伏技術而迅速蜚聲天下,它並非隱身於磁碟文件中,而是藏身於讓人意想不到的Windows註冊表內。實際上,該軟體不僅首次面世就一鳴驚人,而且,此後它也一直處於不斷進化之中。

G Data 軟體公司將其描述為「持久的且無文件的惡意軟體」,Powelliks通過利用Microsoft Word漏洞進入系統,然後使用PowerShell和JavaScript以及shellcode來啟動存在於內存中的惡意進程。Symantec的Kevin Gossett對其持久性的隱藏機製做了以下描述:

通常,惡意軟體會在運行子項中放置一個指向惡意可執行文件的條目,然後執行該條目。 Poweliks通過運行子鍵調用rundll32.exe,rundll32.exe是一個用於載入DLL的合法Windows可執行文件,並傳入幾個參數。這些參數包括了JavaScript代碼,最終導致Poweliks被載入到內存中並執行。

一個月後,安全研究員Kafeine記錄了一個利用無文件屬性的Angler漏洞攻擊工具包。Angler漏洞攻擊針對客戶端Java漏洞,並僅在受影響的javaw.exe進程的內存中進行操作。沒過多久,也就是在2016年,Angler工具包會下載BEDEP變種,然後釋放惡意軟體(經檢測為TROJ_AVRECON),根據Palo Alto的Brad Duncan的說法:

Angler在安裝時不會創建任何文件,因為它可以通過漏洞利用shellcode直接載入到內存中。

在2014年底,安全研究員MalwareTech報告了一個名為Phase 木馬的無文件Rootkit類病毒,根據監控,該樣本通過安裝在Windows系統上可以實現完全隱身,而且不會在自己的進程中的磁碟中留下任何文件。 Phase hids是可以重新定位的代碼,在註冊表中加密,並使用powershell讀取並執行內存中重新定位後的獨立代碼。像Powerliks一樣,Phase惡意軟體通過從autorun註冊表項啟動rundll32.exe來維護隱藏的持久性,並找機會執行惡意JavaScript。

2014-2015:Duqu 2.0、Kovter的出現

2015年中期,卡巴斯基實驗室發布了有關2014-2015年運行的高級漏洞工具的詳細信息,其中Duqu2.0是現今為止最為複雜的蠕蟲,廣泛應用於各種APT攻擊事件中。該攻擊利用Windows漏洞來安裝隱藏的惡意軟體,這些惡意軟體完全是存在於感染主機內存中的,它不像原來的那些無文件攻擊一樣具有持久性隱藏機制。研究人員解釋說,攻擊者會針對伺服器的正常運行時間,對重新啟動的系統進行重新感染。

在2015年,Kovter是另一個被發現的無文件惡意軟體。Kovter的感染技術與Powerlike非常相似,即開始使用惡意的Windows可執行文件感染,然後對註冊表中的存儲對象模糊化或刪除。Kovter的變體目前已經通過使用執行JavaScript的快捷方式文件來維護其持久的隱藏性。如Airbus的Andrew Dove所述,Kovter的腳本啟動了執行shellcode的PowerShell,它在將惡意代碼注入其中之後啟動了一個非惡意應用程序來作為掩護。

2016:PowerSniff、PowerWare、August的出現

在2016年年中,Palo Alto Networks的Josh Grunzweig和Brandon Levene報告了被他們被稱為PowerSniff的惡意程序。PowerSniff的攻擊開始於包含惡意宏的Microsoft Word文檔,它的內存中的機制類似於Kovter,並涉及執行shellcode的PowerShell腳本,它會解碼並執行額外的惡意有效負載,並僅在內存中運行。 PowerSniff有能力將惡意DLL暫時保存到文件系統。

幾個星期後,Carbon Black的Mike Sconzo和Rico Valdez報告了PowerWare這個惡意軟體。像PowerSniff一樣,PowerWare也是一開始感染一個包含惡意宏的Microsoft Office文檔,並最終啟動了PowerShell,直到整個感染過程的完成,整個過程中,PowerWare不會在文件系統上留下任何的惡意可執行文件。

Proofpoint也在2016年末發現了使用Microsoft Word宏和PowerShell的另一個無文件惡意軟體——August。根據研究人員的分析,August會從遠程站點下載了一部分有效載荷作為PowerShell位元組數組,在內存中執行過程中,不會其保存到文件系統。

2017年:POSHSPY等的出現

在2017年初,卡巴斯基實驗室描發現了一個未知的攻擊事件,攻擊者僅將基於Meterpreter的惡意代碼存儲在內存中,而唯一的文件系統還是合法的Windows實用程序,例如sc(安裝運行PowerShell的惡意服務)和netsh(用於傳播惡意網路流量)。

幾個月後,Mandiant的Matthew Dunwoody也發現了另一個涉及無文件惡意代碼的複雜攻擊。該攻擊最後被命名為POSHSPY,POSHSPY使用了操作系統的Windows Management Instrumentation(WMI)功能來維護隱藏的持久性,並依賴於PowerShell的有效載荷,POSHSPY有能力下載可保存到文件系統的可執行文件。根據Matthew的分析,

POSHSPY的開發者實施了一個非常獨立的後門,他們一方面可以與傳統的後門進行聯合攻擊,另一方面又可以和更複雜的後門進行混合,以便在傳統後門失效後還保留目對標的控制。

這些演變讓我們充分認識到了無文件惡意軟體的強大攻擊功能,它們完全依賴內置的良性程序來在受感染的系統上執行惡意的有效載荷。

無病毒惡意軟體的概念之爭

雖然2012有文章最初使用了無文件惡意軟體的這個辭彙,但現在使用人們已經開始傾向於用無形惡意軟體(bodiless malware)這個辭彙了。卡巴斯基實驗室在2016年之前用的都是無形惡意軟體這個叫法。

而Carbon Black在其2016年的威脅報告中引入了無惡意軟體攻擊(non-malware attack)這個叫法。對於無惡意軟體攻擊這個叫法,Carbon Black公司是這樣解釋的:

「無惡意軟體攻擊是攻擊者使用現有軟體,利用允許的應用程序和授權的協議來進行的一種惡意攻擊。無惡意軟體攻擊能夠獲得對計算機的控制,無需下載任何惡意文件。」

Gartner在2017年的報告中也使用了無惡意軟體攻擊一詞,不過,一個月後,在Gartner發表的另外一篇報告中則改為使用無文件攻擊(fileless attack)這個字眼。

總之,這些叫法的背後的思想都是一致的,即攻擊者希望惡意軟體儘可能保持隱身來減少它們被檢測到的概率,所以就要對受感染系統進行最少次數的干擾,以及在系統中留下最少的痕迹。惡意軟體保持不被發現的時間越長,它們就越有可能實現其攻擊目標。為此,無文件惡意軟體就要刪除它在受感染系統磁碟中保存的所有文件,在註冊表中保存加密數據,注入代碼到正在運行的進程,並使用PowerShell、Windows Management Instrumentation和其他技術使其難以被檢測到。

本文翻譯自The History of Fileless Malware - Looking Beyond the Buzzword,如若轉載,請註明原文地址:t揭秘無文件惡意軟體的前生今世 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

TAG:信息安全 | 恶意软件 |