本公開主題總體上涉及檢測惡意的軟件(惡意軟件)的領(lǐng)域,更具體地涉及用于基于行為的惡意軟件檢測的方法和系統(tǒng)。
背景技術(shù):
隨著計算機技術(shù)和廣泛的因特網(wǎng)接入的快速增長,惡意軟件威脅在近幾十年持續(xù)顯著增長,并因此對系統(tǒng)造成嚴(yán)重破壞如硬件故障和關(guān)鍵數(shù)據(jù)丟失等。
目前正在使用各種反病毒技術(shù),包括基于簽名和基于行為的分析,其旨在識別和防止惡意軟件在網(wǎng)絡(luò)中進(jìn)一步傳播?;诤灻姆治錾婕霸诳蓤?zhí)行代碼內(nèi)搜索已知模式的惡意代碼。然而,惡意軟件經(jīng)常被修改(例如通過對內(nèi)容進(jìn)行模糊化和隨機化)以便改變其簽名而不影響功能,這使得基于簽名的分析機制越來越無效。由于惡意軟件變體(例如具有相同行為但簽名不同的惡意軟件變體)的增加,基于行為的分析可以用于識別具有類似效果的惡意軟件變體,因此可以用類似的安全措施來處理。
基于行為的分析通過監(jiān)視惡意活動的行為而不是靜態(tài)簽名來檢測惡意軟件?,F(xiàn)有的行為監(jiān)視系統(tǒng)包括被列入黑名單并指示惡意的動作的數(shù)據(jù)庫。如果給定的進(jìn)程或程序執(zhí)行在數(shù)據(jù)庫中列出的任何動作,則動作被阻止,并且該進(jìn)程可以被監(jiān)視系統(tǒng)識別為惡意的,并且因此被終止。
在本領(lǐng)域中需要一種用于惡意軟件檢測的新方法和系統(tǒng)。
被視為與本公開主題的背景相關(guān)的參考文獻(xiàn)如下列出。本文中對參考文獻(xiàn)的確認(rèn)不應(yīng)被推斷為意味著這些參考文獻(xiàn)以任何方式與本公開主題的可專利性相關(guān)。
題為“techniquesforbehaviorbasedmalwareanalysis”的美國專利第8,555,385號(bhatkar等人)公開了基于行為的惡意軟件分析的技術(shù)。在一個特定實施方式中,該技術(shù)可以實現(xiàn)為用于基于行為的分析的方法,所述方法包括:接收跟蹤數(shù)據(jù);使用至少一個計算機處理器來分析可觀察事件以識別低級動作;分析多個低級動作以識別至少一個高級行為;以及提供所述至少一個高級行為的輸出。
題為“systemandmethodforsecurityratingofcomputerprocesses”的美國專利第7,530,106號(zaitsev等人)公開了用于惡意軟件存在的可執(zhí)行文件中的進(jìn)程的安全評級的系統(tǒng)、方法和計算機程序產(chǎn)品,包括:(a)檢測在計算機上執(zhí)行文件的嘗試;(b)執(zhí)行所述文件的初始風(fēng)險評估;(c)從文件中的代碼開始進(jìn)程;(d)分析與所述進(jìn)程相關(guān)的初始風(fēng)險,并向所述進(jìn)程分配初始安全評級;(e)監(jiān)測可疑活動的進(jìn)程;(f)當(dāng)所述進(jìn)程嘗試執(zhí)行所述可疑活動時更新所述進(jìn)程的安全評級;(g)如果更新的安全評級超過第一閾值,則通知用戶并繼續(xù)執(zhí)行所述進(jìn)程;以及(h)如果更新的安全評級超過第二閾值,則阻止所述動作并終止所述進(jìn)程。
題為“hostintrusionpreventionsystemusingsoftwareanduserbehavioranalysis”的美國專利第8,607,340號(wright)公開了使用基于行為的主機入侵防止方法的用于威脅檢測的改進(jìn)的能力,以及用于監(jiān)視用戶與計算機、軟件應(yīng)用程序、操作系統(tǒng)、圖形用戶界面或計算機網(wǎng)絡(luò)的一些其他組件或客戶端的交互,并且至少部分地基于用戶交互和在執(zhí)行期間執(zhí)行的且與計算機使用情況相關(guān)聯(lián)的計算機代碼進(jìn)程來執(zhí)行動作以保護(hù)計算機網(wǎng)絡(luò)。
題為“methodandsystemforautomaticdetectionandanalysisofmalware”的美國專利申請第2012/079,596號(thomas等人)公開了一種檢測惡意的軟件(惡意軟件)的方法,所述方法包括接收文件并存儲系統(tǒng)的存儲器基線。所述方法還包括:將文件復(fù)制到系統(tǒng);在系統(tǒng)上執(zhí)行文件;終止系統(tǒng)的操作;以及存儲執(zhí)行后的存儲器映射。所述方法還包括分析存儲器基線和執(zhí)行后存儲器映射,并確定該文件包括惡意軟件。
技術(shù)實現(xiàn)要素:
根據(jù)本公開公開主題的一方面,提供了一種在現(xiàn)場環(huán)境中實時檢測惡意軟件的計算機實現(xiàn)的方法,所述方法包括:監(jiān)視在現(xiàn)場環(huán)境中并行運行的至少一個程序的一個或更多個操作;根據(jù)所述一個或更多個操作構(gòu)建至少一個有狀態(tài)模型;分析所述至少一個有狀態(tài)模型以識別一個或更多個行為;以及基于所識別的一個或更多個行為來確定惡意軟件的存在。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述監(jiān)視還包括:生成表征一個或更多個事件的事件數(shù)據(jù),所述事件中的每一個指示所述一個或更多個操作的對應(yīng)的被監(jiān)視操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,監(jiān)視所述一個或更多個操作還包括:從所述一個或更多個操作中選擇至少一個感興趣的操作,并且監(jiān)視所選擇的至少一個感興趣的操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個感興趣的操作包括一個或更多個進(jìn)程內(nèi)操作和/或一個或更多個內(nèi)核相關(guān)操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,內(nèi)核相關(guān)操作包括文件系統(tǒng)操作、進(jìn)程和存儲器操作、注冊操作以及網(wǎng)絡(luò)操作中的一個或更多個。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,通過截取表示進(jìn)程內(nèi)操作的一個或更多個庫調(diào)用來監(jiān)視進(jìn)程內(nèi)操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,通過截取表示內(nèi)核相關(guān)操作的一個或更多個系統(tǒng)調(diào)用來監(jiān)視內(nèi)核相關(guān)操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,通過經(jīng)由一個或更多個回調(diào)函數(shù)注冊用于內(nèi)核相關(guān)操作的一個或更多個內(nèi)核過濾驅(qū)動程序來監(jiān)視內(nèi)核相關(guān)操作。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,還包括:對于所述一個或更多個事件中的每個事件生成表征事件的相應(yīng)的事件數(shù)據(jù),其中,事件數(shù)據(jù)包括事件的至少以下屬性:操作類型和事件源。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個有狀態(tài)模型包括從所述一個或更多個操作導(dǎo)出的一個或更多個對象以及根據(jù)所述操作在對象之間識別的一個或更多個關(guān)系。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,對象中的每一個表示操作中涉及的實體,并且具有選自包括進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象和窗口對象的組中的類型。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個有狀態(tài)模型中的每一個是表示與所述至少一個程序中的給定程序相關(guān)的鏈接操作的序列的程序級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個有狀態(tài)模型是表示與在現(xiàn)場環(huán)境中并行運行的所有程序相關(guān)的操作的系統(tǒng)級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,系統(tǒng)級有狀態(tài)模型包括均表示與所有程序中的給定程序相關(guān)的鏈接操作的序列的一個或更多個程序級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,還包括:監(jiān)視所述至少一個程序的一個或更多個內(nèi)核相關(guān)操作;基于被監(jiān)視的內(nèi)核相關(guān)操作來構(gòu)建至少一個有狀態(tài)模型;分析所述至少一個有狀態(tài)模型以識別一個或更多個行為;以及基于有狀態(tài)模型的行為得分來確定惡意軟件的存在。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個有狀態(tài)模型包括從所述一個或更多個操作導(dǎo)出的一個或更多個對象以及根據(jù)所述操作在對象之間識別的一個或更多個關(guān)系。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,構(gòu)建所述至少一個有狀態(tài)模型包括針對與事件相關(guān)聯(lián)的每個事件數(shù)據(jù):對事件數(shù)據(jù)進(jìn)行歸一化從而產(chǎn)生抽象事件;從抽象事件檢索一個或更多個對象,每個對象表示在對應(yīng)操作中涉及的實體,并且具有選自包括進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象和窗口對象的組的類型,至少一個對象表示事件源;根據(jù)抽象事件識別對象之間的一個或更多個關(guān)系,并且在與所識別的關(guān)系對應(yīng)的對象之中生成相應(yīng)的關(guān)聯(lián),從而產(chǎn)生包括所述一個或更多個對象及其中的關(guān)聯(lián)的事件上下文;在事件是有狀態(tài)模型的第一事件的情況下,生成包括事件上下文的有狀態(tài)模型;否則基于事件上下文來更新先前的有狀態(tài)模型,從而產(chǎn)生更新的有狀態(tài)模型,先前的有狀態(tài)模型對應(yīng)于事件之前的至少一個先前事件。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述更新進(jìn)一步包括:在先前的有狀態(tài)模型包括所述一個或更多個對象的情況下,將事件上下文的關(guān)聯(lián)添加到先前的有狀態(tài)模型,產(chǎn)生更新的有狀態(tài)模型;否則在對象中的至少一個對象是未包括在先前的有狀態(tài)模型中的新對象的情況下,將新對象以及事件上下文的關(guān)聯(lián)添加到先前的有狀態(tài)模型,從而產(chǎn)生更新的有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,還包括:基于一個或更多個預(yù)定義的過濾規(guī)則來從事件數(shù)據(jù)中選擇與感興趣事件相關(guān)聯(lián)的所選事件數(shù)據(jù),并且相對于所選事件數(shù)據(jù)對事件數(shù)據(jù)進(jìn)行歸一化。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述一個或更多個預(yù)定義過濾規(guī)則包括過濾掉與未完成事件、目標(biāo)進(jìn)程不是遠(yuǎn)程進(jìn)程的存儲器相關(guān)事件以及不存在目標(biāo)進(jìn)程的事件相關(guān)聯(lián)的事件數(shù)據(jù)。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,對事件數(shù)據(jù)進(jìn)行歸一化包括:格式化事件數(shù)據(jù);以及解析格式化的事件數(shù)據(jù),從而產(chǎn)生抽象事件。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,分析至少一個有狀態(tài)模型包括:根據(jù)一個或更多個預(yù)定義的行為邏輯,鑒于有狀態(tài)模型或更新的有狀態(tài)模型來分析事件上下文;以及當(dāng)滿足任何預(yù)定義的行為邏輯時,確定所述一個或更多個行為的至少一個行為的存在,所述至少一個行為與至少包括事件的有狀態(tài)模型的事件序列相關(guān)。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,預(yù)定義行為邏輯包括:當(dāng)滿足事件的目標(biāo)是包括在有狀態(tài)模型中的對象的條件時確定自執(zhí)行的行為。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述至少一個行為中的每一個被分配相應(yīng)的行為得分。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,確定惡意軟件的存在還包括在所述至少一個行為被確定的情況下:搜索是否存在與先前的有狀態(tài)模型相關(guān)聯(lián)的先前的有狀態(tài)模型得分,先前的有狀態(tài)模型得分是分配給相應(yīng)的先前確定行為的所有先前行為得分的總計行為得分,先前確定行為與先前的有狀態(tài)模型的至少一個先前事件相關(guān);如果不存在與先前的有狀態(tài)模型相關(guān)聯(lián)的先前的有狀態(tài)模型得分,則確定針對所述至少一個行為中的每一個分配的相應(yīng)的行為得分之和作為與有狀態(tài)模型相關(guān)聯(lián)的有狀態(tài)模型得分;否則用和來增加先前的有狀態(tài)模型得分,產(chǎn)生有狀態(tài)模型得分;將有狀態(tài)模型得分與預(yù)定義閾值進(jìn)行比較;以及如果有狀態(tài)模型得分超過預(yù)定義閾值,則確定惡意軟件的存在。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,如果滿足條件,則向相應(yīng)的行為得分分配對應(yīng)的權(quán)重因子,并且所述增加包括將對應(yīng)的權(quán)重因子應(yīng)用于相應(yīng)的行為得分,從而產(chǎn)生相應(yīng)的加權(quán)行為得分,以及用為所述至少一個行為中的每一個分配的相應(yīng)的加權(quán)行為得分之和來增加先前的有狀態(tài)模型得分。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述條件包括:事件源是遠(yuǎn)程進(jìn)程,并且事件的目標(biāo)是系統(tǒng)進(jìn)程。
根據(jù)本公開主題的實施方式,還提供了一種計算機實現(xiàn)的方法,其中,所述方法還包括:通過修復(fù)由有狀態(tài)模型指示的一個或更多個操作來消除所確定的惡意軟件。
根據(jù)本公開主題的一個方面,還提供了一種用于在現(xiàn)場環(huán)境中實時檢測惡意軟件的系統(tǒng),所述系統(tǒng)包括處理器,處理器被配置成至少執(zhí)行以下操作:監(jiān)視在現(xiàn)場環(huán)境中并行運行的至少一個程序的一個或更多個操作;根據(jù)所述一個或更多個操作構(gòu)建至少一個有狀態(tài)模型;分析所述至少一個有狀態(tài)模型以識別一個或更多個行為;以及基于所識別的一個或更多個行為來確定惡意軟件的存在。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,所述至少一個有狀態(tài)模型包括:從所述一個或更多個操作導(dǎo)出的一個或更多個對象;以及根據(jù)所述操作在對象之中所識別的一個或更多個關(guān)系。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,對象中的每一個表示操作中涉及的實體,并且具有選自包括進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象和窗口對象的組中的類型。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,所述至少一個有狀態(tài)模型中的每一個是表示與所述至少一個程序中的給定程序相關(guān)的鏈接操作的序列的程序級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,所述至少一個有狀態(tài)模型是表示與在現(xiàn)場環(huán)境中并行運行的所有程序相關(guān)的操作的系統(tǒng)級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,系統(tǒng)級有狀態(tài)模型包括均表示與所有程序中的給定程序相關(guān)的鏈接操作的序列的一個或更多個程序級有狀態(tài)模型。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,處理器還被配置成執(zhí)行以下操作:監(jiān)視所述至少一個程序的一個或更多個內(nèi)核相關(guān)操作;基于被監(jiān)視的內(nèi)核相關(guān)操作來構(gòu)建至少一個有狀態(tài)模型;分析所述至少一個有狀態(tài)模型以識別一個或更多個行為;以及基于有狀態(tài)模型的行為得分來確定惡意軟件的存在。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,內(nèi)核相關(guān)操作包括文件系統(tǒng)操作、進(jìn)程和存儲器操作、注冊操作以及網(wǎng)絡(luò)操作中的一個或更多個。
根據(jù)本公開主題的實施方式,還提供了一種系統(tǒng),其中,處理器還被配置成:通過經(jīng)由一個或更多個回調(diào)函數(shù)注冊用于內(nèi)核相關(guān)操作的一個或更多個內(nèi)核過濾驅(qū)動程序,來監(jiān)視所述一個或更多個內(nèi)核相關(guān)操作。
根據(jù)本公開主題的一個方面,還提供了一種機器可讀的非暫態(tài)程序存儲設(shè)備,其有形地包括能夠由機器執(zhí)行的指令程序,以執(zhí)行用于在現(xiàn)場環(huán)境中實時檢測惡意軟件的方法步驟,所述方法包括:監(jiān)視在現(xiàn)場環(huán)境中并行運行的至少一個程序的一個或更多個操作;根據(jù)所述一個或更多個操作構(gòu)建至少一個有狀態(tài)模型;分析所述至少一個有狀態(tài)模型以識別一個或更多個行為;以及基于所識別的一個或更多個行為來確定惡意軟件的存在。
附圖說明
為了理解本公開主題并且了解如何在實踐中執(zhí)行它,現(xiàn)在將僅通過非限制性示例參考附圖來描述主題,在附圖中:
圖1是示意性地示出根據(jù)本公開主題的某些實施方式的惡意軟件檢測系統(tǒng)的功能框圖;
圖2是根據(jù)本公開主題的某些實施方式的檢測惡意軟件的一般化流程圖;
圖3是根據(jù)本公開主題的某些實施方式的構(gòu)建有狀態(tài)模型的一般化流程圖;
圖4a和圖4b是根據(jù)本公開主題的某些實施方式的示例性有狀態(tài)模型和示例性更新的有狀態(tài)模型的示意圖;以及
圖5是根據(jù)本公開主題的某些實施方式的示例性的被監(jiān)視和處理的操作序列的一般化流程圖。
具體實施方式
在下面的詳細(xì)描述中,闡述了許多具體細(xì)節(jié)以便提供對所公開主題的透徹理解。然而,本領(lǐng)域技術(shù)人員將理解,可以在沒有這些具體細(xì)節(jié)的情況下實踐本公開主題。在其他情況下,沒有詳細(xì)描述公知的方法、進(jìn)程和組件以免模糊本公開主題。
在所闡述的附圖和描述中,相同的附圖標(biāo)記表示不同實施方式或配置共同的那些部件。
除非另有具體說明,否則從下面的討論中明顯的是,應(yīng)當(dāng)理解,在整個說明書中,利用諸如“監(jiān)視”、“構(gòu)建”、“分析”、“確定”、“產(chǎn)生”、“選擇”、“歸一化”、“比較”、“格式化”、“解析”、“搜索”、“增加”、“消除”“終止”、“提供”等術(shù)語包括操作和/或?qū)?shù)據(jù)變換為其他數(shù)據(jù)的計算機的動作和/或進(jìn)程,所述數(shù)據(jù)表示為物理量,例如,電子數(shù)量和/或表示物理對象的數(shù)據(jù)。術(shù)語“計算機”、“處理器”、“處理單元”、“主機”和“終端用戶站”應(yīng)當(dāng)被廣泛地解釋為包括具有數(shù)據(jù)處理能力的任何種類的電子設(shè)備,作為非限制性的示例包括個人計算機、服務(wù)器、計算系統(tǒng)、通信設(shè)備、處理器(例如數(shù)字信號處理器(dsp)、微控制器、現(xiàn)場可編程門陣列(fpga)、專用集成電路(asic)等等)、任何其他電子計算設(shè)備、和/或其任何組合。
根據(jù)本文的教導(dǎo)的操作可以由通過存儲在非暫態(tài)計算機可讀存儲介質(zhì)中的計算機程序?qū)iT為所需目的而構(gòu)造的計算機或者專門配置用于期望目的的計算機來執(zhí)行。
在本文中使用的術(shù)語“非暫態(tài)”用于排除暫態(tài)的傳播信號,但是另外地包括適合于本公開主題的任何易失性或非易失性計算機存儲技術(shù)。
如本文所使用的,短語“例如”、“諸如”、“如”及其變體描述了本公開主題的非限制性實施方式。在本說明書中對“一種情況”、“一些情況”、“其他情況”或其變體的引用意味著結(jié)合實施方式描述的特定特征、結(jié)構(gòu)或特性包括在本公開主題至少一個實施方式中。因此,短語“一種情況”、“一些情況”、“其他情況”或其變型的出現(xiàn)不一定指相同的實施方式。
應(yīng)當(dāng)理解,除非另有特別說明,否則在單獨實施方式的上下文中描述的本公開主題的某些特征也可以在單個實施方式中組合提供。相反,在單個實施方式的上下文中描述的本公開主題的各種特征也可以單獨地或以任何合適的子組合提供。
在本公開主題的實施方式中,可以執(zhí)行與圖2和圖3中示出的相比更少、更多和/或不同于圖1和圖2所示的階段。在本公開主題的實施方式中,圖2和圖3所示的一個或更多個階段可以以不同的次序執(zhí)行,以及/或者一個或更多個階段的組可以同時執(zhí)行。圖1示出了根據(jù)本公開主題的實施方式的系統(tǒng)架構(gòu)的一般示意圖。圖1中的每個模塊可以由執(zhí)行如本文所定義和解釋的功能的軟件、硬件和/或固件的任何組合構(gòu)成。圖1中的模塊可以集中在一個位置或分散在多于一個位置。在本公開主題的其他實施方式中,系統(tǒng)可以包括與圖1所示的模塊相比更少、更多和/或不同的模塊。
如上所述,基于行為的分析通過監(jiān)視惡意活動的行為而不是靜態(tài)簽名來檢測惡意軟件。當(dāng)前基于行為的技術(shù)中存在很多問題。例如,由于惡意程序的頻繁變化的行為,惡意軟件的新實例可能由于缺乏關(guān)于它們的行為和功能的信息而不能被立即檢測到。當(dāng)前基于行為的技術(shù)也可能無法追蹤每個事件獨立地不被識別為惡意的事件的序列,但是當(dāng)在序列上下文中被考慮時,實際上正在執(zhí)行惡意動作。此外,當(dāng)前基于行為的技術(shù)通常通過在安全環(huán)境(例如沙盒虛擬機)中執(zhí)行仿真和運行可疑惡意軟件以顯示其他模糊的邏輯和行為來實現(xiàn)。這種仿真通常是非常有限的,并且可疑的惡意軟件受到監(jiān)視從來沒有真正在現(xiàn)場環(huán)境中運行。因此,不可能實際觀察到可疑惡意軟件與未在安全環(huán)境中仿真的其他進(jìn)程和文件的完全執(zhí)行和交互。因此,通過執(zhí)行這種仿真不可以檢測到所有可疑惡意軟件的潛在惡意行為。此外,收集和分析可疑惡意軟件包含的大量操作信息以識別潛在行為通常是資源密集的,特別是對于具有有限資源的主機,如終端用戶站。詳細(xì)描述的某些實施方式能夠解決這些問題。
考慮到這一點,注意圖1,圖1示意性地示出了根據(jù)本公開主題的某些實施方式的惡意軟件檢測系統(tǒng)的功能框圖。
在本說明書中使用的術(shù)語“惡意軟件”應(yīng)該被廣泛地解釋為包括任何種類的計算機病毒、勒索軟件、蠕蟲、木馬、惡意軟體、鍵記錄器、撥號器、間諜軟件、廣告軟件、惡意瀏覽器助手對象(bho)、流氓軟件或任何其他惡意或不良程序。
圖1中所示的惡意軟件檢測系統(tǒng)100實現(xiàn)了基于計算機的惡意軟件檢測機制,其使得終端用戶能夠在現(xiàn)場環(huán)境中實時檢測惡意軟件。在本說明書中使用的術(shù)語“現(xiàn)場環(huán)境”應(yīng)當(dāng)被廣泛地解釋為包括任何類型的主機配置,其中,計算機程序和產(chǎn)品實際上為了終端用戶的預(yù)期使用而操作,如終端用戶站與在安全環(huán)境如仿真環(huán)境或沙盒虛擬機環(huán)境中相對的在產(chǎn)品環(huán)境中并行運行的程序。
如所示的,惡意軟件檢測系統(tǒng)100包括至少一個處理單元101,所述處理單元101包括以下功能模塊:監(jiān)視模塊104;事件解析模塊106;行為分析模塊110和決策模塊114??商娲?,處理單元101可以操作地耦合到功能模塊,并且被配置成從其接收指令并且根據(jù)所述指令執(zhí)行操作。
監(jiān)視模塊104可以被配置成實時監(jiān)視在現(xiàn)場環(huán)境中并行運行的至少一個計算機程序的一個或更多個操作102。應(yīng)當(dāng)注意,在本說明書中使用的術(shù)語“操作”應(yīng)當(dāng)被廣義地解釋為包括由任何操作系統(tǒng)中的一個或更多個進(jìn)程、線程、應(yīng)用程序、文件或任何其他適當(dāng)實體執(zhí)行的任何類型的動作。通過非限制性示例,在windows操作系統(tǒng)中,操作可以由計算機程序的一個或更多個進(jìn)程執(zhí)行。僅為了說明的目的,關(guān)于由一個或更多個進(jìn)行執(zhí)行的操作部分地參考以下描述。實施方式同樣可應(yīng)用于由如上所述的任何操作系統(tǒng)中的任何其他合適的實體執(zhí)行的操作。
進(jìn)程是正在執(zhí)行的計算機程序的實例。進(jìn)程可以進(jìn)一步創(chuàng)建子進(jìn)程,并且計算機程序可以與一個或更多個進(jìn)程相關(guān)聯(lián)。應(yīng)當(dāng)注意,在本說明書中使用的術(shù)語“程序”應(yīng)該被廣泛地解釋為包括任何類型的系統(tǒng)軟件(例如操作系統(tǒng)、設(shè)備驅(qū)動程序等)和使用計算機執(zhí)行指定的任務(wù)的應(yīng)用軟件(例如辦公軟件、媒體播放器等)。
如上所述,監(jiān)視模塊104可以監(jiān)視在現(xiàn)場系統(tǒng)環(huán)境中發(fā)生的所有操作(例如由進(jìn)程或其他實體執(zhí)行的操作)。根據(jù)某些實施方式,監(jiān)視模塊104還可以包括兩個子組件:進(jìn)程內(nèi)監(jiān)視模塊107和內(nèi)核監(jiān)視模塊109。進(jìn)程內(nèi)監(jiān)視模塊可以監(jiān)視以進(jìn)程級執(zhí)行的所有進(jìn)程內(nèi)操作,并且不一定涉及操作系統(tǒng)的內(nèi)核。內(nèi)核監(jiān)視模塊可以監(jiān)視從操作系統(tǒng)的內(nèi)核請求服務(wù)的所有操作,如文件系統(tǒng)操作、進(jìn)程和存儲器操作、注冊操作以及網(wǎng)絡(luò)操作,如關(guān)于圖2進(jìn)一步詳細(xì)描述的。
還要注意,在不以任何方式限制本公開的范圍的情況下,在一些情況下,一個操作可以被解釋為包括單個動作,如“文件讀取”。在一些其他情況下,一個操作也可以被解釋為包括一系列動作,例如,“文件復(fù)制”可以被認(rèn)為是包括三個順序動作“文件創(chuàng)建”、“文件讀取”以及“文件寫入”的序列的一個操作。
事件解析模塊106可以被配置成根據(jù)由監(jiān)視模塊104監(jiān)視的一個或更多個操作來構(gòu)建至少一個有狀態(tài)模型108。根據(jù)某些實施方式,有狀態(tài)模型是具有分層結(jié)構(gòu)的數(shù)據(jù)模型,其包含指示從在現(xiàn)場環(huán)境中執(zhí)行的操作序列得到的實時更新的系統(tǒng)狀態(tài)的信息。操作序列可以通過上下文鏈接在一起。因此,有狀態(tài)模型可以是鏈接操作序列的邏輯表示(例如樹結(jié)構(gòu)等)。例如,有狀態(tài)模型108可以包括從實時操作102導(dǎo)出的一個或更多個對象以及根據(jù)操作在對象之中所識別的一個或更多個關(guān)系。根據(jù)某些實施方式,有狀態(tài)模型108的每個對象可以表示在操作中相關(guān)的實體,并且可以是具有選自包括進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象和窗口對象的組的類型。有狀態(tài)模型還可以包括表征對象及其中所識別的關(guān)系的屬性,如關(guān)于圖3和圖4進(jìn)一步詳細(xì)描述的。
行為分析模塊110可以被配置成分析由事件解析模塊106構(gòu)造的有狀態(tài)模型108以識別一個或更多個行為。應(yīng)當(dāng)注意,在本說明書中使用的術(shù)語“行為”應(yīng)當(dāng)被擴(kuò)展地解釋為包括由滿足一個或更多個預(yù)定義的行為邏輯(以下也稱為“行為簽名”)的一個或更多個進(jìn)程執(zhí)行的任何操作序列。
根據(jù)某些實施方式,惡意軟件檢測系統(tǒng)100還可以包括存儲模塊105,存儲模塊105包括非暫態(tài)計算機可讀存儲介質(zhì)。存儲模塊105可以包括行為簽名數(shù)據(jù)庫112,行為簽名數(shù)據(jù)庫112操作地耦合到行為分析模塊110并且存儲一個或更多個預(yù)定義的行為邏輯。根據(jù)某些實施方式,預(yù)定義的行為邏輯是指示特定行為模式的行為簽名。在一些情況下,可以基于某些惡意軟件行為的先前認(rèn)識來預(yù)定義行為邏輯自刪除、自執(zhí)行和代碼注入等??蛇x地,預(yù)定義的行為邏輯還可以包括指示良性行為的一個或更多個邏輯,如關(guān)于圖2進(jìn)一步詳細(xì)描述的。由事件解析模塊106構(gòu)建的有狀態(tài)模型108也可以存儲在存儲模塊105中。
決策模塊114可以被配置成基于由行為分析模塊110識別出的一個或更多個行為來確定惡意軟件的存在,如關(guān)于圖2進(jìn)一步詳細(xì)描述的。
根據(jù)某些實施方式,處理單元101還可以包括緩解模塊116,緩解模塊116被配置成通過補救由有狀態(tài)模型指示的一個或更多個操作來消除所確定的惡意軟件。
根據(jù)另外的實施方式,惡意軟件檢測系統(tǒng)100還可以包括通信地耦合到處理單元101的i/o接口103。i/o接口103可以被配置成執(zhí)行以下動作:從終端用戶和/或從一個或更多個功能模塊接收指令,并且向終端用戶提供從功能模塊獲得的經(jīng)處理的信息的輸出例如所確定的惡意軟件的說明。
根據(jù)某些實施方式,處理單元101還被配置成實時地執(zhí)行惡意軟件檢測系統(tǒng)100的功能組件的上述操作中的至少一個操作。
惡意軟件檢測系統(tǒng)100及其各種組件的操作將參考圖2進(jìn)一步詳細(xì)描述。
雖然不一定如此,但是惡意軟件檢測系統(tǒng)100的操作進(jìn)程可以對應(yīng)于關(guān)于圖2所描述的方法的一些或所有階段。同樣地,關(guān)于圖2描述的方法,圖2中所示的方法及其可能的實現(xiàn)可以由惡意軟件檢測系統(tǒng)100來實現(xiàn)。因此,注意到,關(guān)于參照圖2描述的方法所討論的實施方式加以必要的變更也可以作為惡意軟件檢測系統(tǒng)100的各種實施方式,反之亦然。
還應(yīng)當(dāng)注意,惡意軟件檢測系統(tǒng)100的上述功能組件可以在獨立計算機如終端用戶站中實現(xiàn)。或者可替代地,一個或更多個功能組件可以分布在不同位置的若干計算機上。此外,在一些情況下,上面提及的模塊可以是基于云的。
本領(lǐng)域的技術(shù)人員將容易地理解本公開主題的教導(dǎo)不受圖1所示的系統(tǒng)約束。對于圖1所示的示例可替代地,惡意軟件檢測系統(tǒng)100在一些情況下可以包括與圖1所示的相比更少、更多和/或不同的模塊??梢砸粤硪环N方式合并或劃分等同和/或修改的功能,并且可以以軟件、固件和硬件的任何適當(dāng)組合來實現(xiàn)。
現(xiàn)在轉(zhuǎn)到圖2,示出了根據(jù)本公開主題的某些實施方式的檢測惡意軟件的一般化流程圖。
如圖2所示,可以例如通過惡意軟件檢測系統(tǒng)100的監(jiān)視模塊104實時監(jiān)視(202)在現(xiàn)場環(huán)境中運行的至少一個程序的一個或更多個操作。如上所述,與安全環(huán)境相對,現(xiàn)場環(huán)境應(yīng)包括為其預(yù)期用途投入運行的一個或更多個計算機程序。計算機程序在活動環(huán)境中并行并且交互地(例如與其他程序和/或終端用戶)一起運行。根據(jù)某些實施方式,一個或更多個程序可以啟動一個或更多個進(jìn)程。每個進(jìn)程可以執(zhí)行一個或更多個操作,以與操作系統(tǒng)通信和/或請求來自操作系統(tǒng)的服務(wù)。因此,監(jiān)視模塊104可以被配置成監(jiān)視由每個進(jìn)程執(zhí)行的一個或更多個操作。
由于在現(xiàn)場環(huán)境中大量并行運行的程序及其操作,所以所監(jiān)視的操作中包含的信息量可能是巨大的。根據(jù)某些實施方式,監(jiān)測模塊104可以被配置成從一個或更多個中選擇至少一個感興趣的操作,并且監(jiān)視所選擇的至少一個感興趣的操作。
根據(jù)某些實施方式,感興趣的至少一個操作包括一個或更多個進(jìn)程內(nèi)操作和/或一個或更多個內(nèi)核相關(guān)操作。進(jìn)程內(nèi)操作可以包括在用戶空間(即應(yīng)用軟件執(zhí)行的存儲器區(qū)域)中執(zhí)行的任何操作,并且不一定涉及操作系統(tǒng)的內(nèi)核,如通過非限制性示例為本地進(jìn)程存儲器分配、來自導(dǎo)入庫的映射函數(shù)以及讀/寫進(jìn)程存儲器。在一些情況下,可以通過截取表示對應(yīng)操作的一個或更多個庫調(diào)用(例如api調(diào)用)來監(jiān)視進(jìn)程內(nèi)操作(例如通過進(jìn)程內(nèi)監(jiān)視模塊)。通過為非限制性示例,進(jìn)程內(nèi)監(jiān)視模塊可以將監(jiān)視鉤子(monitoringhook)附接到用戶空間中的庫調(diào)用以監(jiān)視這些調(diào)用。
另一方面,內(nèi)核相關(guān)操作可以包括在內(nèi)核空間(即為運行特權(quán)內(nèi)核、內(nèi)核擴(kuò)展和大多數(shù)設(shè)備驅(qū)動程序而保留的存儲器區(qū)域)中執(zhí)行的以下操作中的一個或更多個:文件系統(tǒng)操作;進(jìn)程和存儲器操作;注冊操作以及網(wǎng)絡(luò)操作。具體地,通過非限制性示例,文件系統(tǒng)操作可以包括與主機的存儲介質(zhì)的任何操作和交互。進(jìn)程和存儲器操作可以包括創(chuàng)建、終止、修改、查詢、掛起和恢復(fù)進(jìn)程的任何操作以及存儲器管理(例如分配存儲器、創(chuàng)建存儲器部分、映射/取消映射存儲器部分、寫入/讀取存儲器等)。注冊操作可以包括與注冊操作相關(guān)的任何操作。并且網(wǎng)絡(luò)操作可以包括通過網(wǎng)絡(luò)和網(wǎng)絡(luò)連接管理發(fā)送或接收數(shù)據(jù)的任何操作。
內(nèi)核相關(guān)操作可以由內(nèi)核監(jiān)視模塊例如根據(jù)不同的操作系統(tǒng)平臺通過不同的機制來監(jiān)視。例如,對于macosx操作系統(tǒng),通過非限制性示例,可以通過截取表示對應(yīng)操作的一個或更多個系統(tǒng)調(diào)用(在內(nèi)核空間中)來監(jiān)視內(nèi)核相關(guān)操作。對于windows操作系統(tǒng),通過非限制性示例,可以通過經(jīng)由一個或更多個回調(diào)函數(shù)注冊用于內(nèi)核相關(guān)操作的一個或更多個內(nèi)核過濾驅(qū)動程序來監(jiān)視內(nèi)核相關(guān)操作。windows操作系統(tǒng)允許新驅(qū)動程序被注冊為現(xiàn)有內(nèi)核堆棧的一部分,因此關(guān)于特定類型的操作的信息可以由對應(yīng)的內(nèi)核過濾驅(qū)動程序來過濾,并通過回調(diào)函數(shù)傳遞到內(nèi)核監(jiān)視模塊。
根據(jù)某些實施方式,oob(帶外(out-of-band))監(jiān)視方法可以適用于監(jiān)視進(jìn)程(例如由內(nèi)核監(jiān)視模塊)。oob使得監(jiān)視模塊能夠在不對這些操作/事件進(jìn)行控制的同時獲得所選擇的操作/事件的通知,這允許監(jiān)視模塊利用不同的監(jiān)視機制(例如內(nèi)核回調(diào)函數(shù))以優(yōu)化的方式來完成全系統(tǒng)監(jiān)視。oob還允許在事件發(fā)生時實時地處理事件并將事件分析為有狀態(tài)模型,如下面進(jìn)一步描述的。
根據(jù)某些實施方式,oob還可以實現(xiàn)參考圖2描述的操作序列,例如在諸如終端用戶站的同一機器中執(zhí)行的監(jiān)視操作、構(gòu)建有狀態(tài)模型、分析行為、確定惡意軟件和消除所確定的惡意軟件。
應(yīng)當(dāng)注意,提供分別由不同監(jiān)視模塊監(jiān)視的上述分類操作僅用于示例性目的,而不應(yīng)理解為限制。例如,在一些情況下,由進(jìn)程內(nèi)監(jiān)視模塊監(jiān)視的一個或更多個操作也可以由內(nèi)核監(jiān)視模塊監(jiān)視,反之亦然。根據(jù)一個實施方式,內(nèi)核相關(guān)操作中的至少一個可以僅由內(nèi)核監(jiān)視模塊監(jiān)視。
應(yīng)當(dāng)注意,上面提到的監(jiān)視機制的操作和實現(xiàn)的示例僅出于示例性目的被示出。除了上述之外或者代替上述,還可以應(yīng)用附加種類的操作和實現(xiàn)。
還要注意的是,內(nèi)核監(jiān)視模塊的實現(xiàn)機制可以加速系統(tǒng)處理并且使得能夠在現(xiàn)場環(huán)境中以實時方式執(zhí)行監(jiān)視操作。
根據(jù)某些實施方式,一個或更多個操作中的每個被監(jiān)視的操作構(gòu)成事件。監(jiān)視模塊104還可以還被配置成生成表征一個或更多個事件的事件數(shù)據(jù)??蛇x地,可以生成事件數(shù)據(jù)以表征相應(yīng)的事件。根據(jù)某些實施方式,事件數(shù)據(jù)可以至少包括相應(yīng)事件的以下屬性:操作類型和事件源。
具體地,操作類型是指示構(gòu)成事件的被監(jiān)視操作的類型的標(biāo)識符。事件源是執(zhí)行操作的源實體??蛇x地,事件數(shù)據(jù)可以包括一個或更多個附加屬性。例如,在一些情況下,事件數(shù)據(jù)可以包括事件的目標(biāo),諸如目標(biāo)進(jìn)程、目標(biāo)文件或由事件源在其上執(zhí)行操作的任何其他實體。在一些其他情況下,事件數(shù)據(jù)還可以包括根據(jù)不同類型的操作的附加屬性。例如,表征文件系統(tǒng)操作的事件數(shù)據(jù)可以包括諸如文件許可、文件的完整路徑、文件的大小等附加屬性,而表征進(jìn)程和存儲器操作的事件數(shù)據(jù)可以包括附加屬性,如在其上執(zhí)行操作的存儲器地址、寫入或讀取的數(shù)據(jù)的大小、存儲器許可等。
在步驟202之后,可以例如通過惡意軟件檢測系統(tǒng)100的事件解析模塊106根據(jù)一個或更多個操作來構(gòu)建(204)至少一個有狀態(tài)模型,如下面關(guān)于圖3進(jìn)一步描述的。
現(xiàn)在注意圖3,圖3示出了根據(jù)本公開主題的某些實施方式構(gòu)建有狀態(tài)模型的一般化流程圖。根據(jù)某些實施方式,由監(jiān)視模塊104生成的事件數(shù)據(jù)基于通過不同路線例如低級系統(tǒng)調(diào)用和內(nèi)核驅(qū)動程序回調(diào)等收集的大量原始數(shù)據(jù)來創(chuàng)建,因此以各種形式生成事件數(shù)據(jù)。根據(jù)某些實施方式,事件數(shù)據(jù)的該原始形式可以由事件解析模塊106歸一化(302)為邏輯數(shù)據(jù)結(jié)構(gòu),從而產(chǎn)生抽象事件,這允許在事件數(shù)據(jù)中編碼的屬性的每個段能夠被訪問并且分析。具體地,事件解析模塊106可以格式化事件數(shù)據(jù)并解析格式化的事件數(shù)據(jù),以生成抽象事件。通過事件數(shù)據(jù)歸一化,指示類似操作而以各種形式生成的事件數(shù)據(jù)也可以被歸一化為單個格式并被分類為相同的事件類型。例如,為分配存儲器而生成的各種系統(tǒng)api調(diào)用將被分類為單個類型的抽象事件例如存儲器分配事件。
根據(jù)某些實施方式,事件解析模塊106可以基于一個或更多個預(yù)定義的過濾規(guī)則從監(jiān)視模塊104接收的所有事件數(shù)據(jù)中選擇與感興趣的事件相關(guān)聯(lián)的事件數(shù)據(jù),并且相對于所選擇的事件數(shù)據(jù)進(jìn)行歸一化。通過非限制性示例,所述一個或更多個預(yù)定義過濾規(guī)則可以包括過濾掉與以下事件相關(guān)聯(lián)的事件數(shù)據(jù):未完成事件;目標(biāo)進(jìn)程不是遠(yuǎn)程進(jìn)程的存儲器相關(guān)事件;以及目標(biāo)進(jìn)程不存在的事件。
基于生成的抽象事件,可以創(chuàng)建或更新有狀態(tài)模型。如上所述,有狀態(tài)模型可以是在現(xiàn)場環(huán)境中執(zhí)行的鏈接操作的序列的邏輯結(jié)構(gòu)表示。
根據(jù)某些實施方式,對于被歸一化為抽象事件的每個事件數(shù)據(jù),可以從抽象事件檢索(304)一個或更多個對象。如上所述,每個檢索到的對象表示在對應(yīng)事件中相關(guān)的實體,并且每個對象可以具有選自包括進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象和窗口對象的組的類型。至少一個對象表示執(zhí)行對應(yīng)操作的事件源。通過非限制性示例,事件源可以由指示源進(jìn)程的進(jìn)程對象表示,其執(zhí)行操作。例如,進(jìn)程p1執(zhí)行“系統(tǒng)關(guān)閉”操作。這種情況下,將從對應(yīng)的抽象事件中檢索進(jìn)程對象,以將p1表示為事件源。
在一些情況下,由事件源對目標(biāo)實體(即事件的目標(biāo))執(zhí)行操作。例如,進(jìn)程p1打開文件f1。將從對應(yīng)的抽象事件中檢索進(jìn)程對象,以將p1表示為操作“文件打開”的事件源,并且將檢索文件對象以將f1表示為事件的目標(biāo)。
應(yīng)當(dāng)注意,操作通常由進(jìn)程啟動。因此,事件源通常由進(jìn)程對象表示。然而,事件的目標(biāo)可以是在操作中被操縱的各種類型的對象如進(jìn)程對象、文件對象、網(wǎng)絡(luò)對象、注冊對象等。
根據(jù)另外的實施方式,進(jìn)程可以擁有資源諸如從其啟動進(jìn)程的源文件。源文件可以具有各種類型,例如通過非限制性示例,文檔文件、包含該進(jìn)程從其被啟動的可執(zhí)行程序的圖像文件或任何其他相關(guān)類型的文件。如果與操作相關(guān),則源文件也可以由文件對象表示。
應(yīng)當(dāng)注意,上述對象類型僅是為了示例性目的而示出的,并且不應(yīng)被解釋為以任何方式限制本公開。操作中可能發(fā)生的另外類型的對象,可以作為上述的補充或替代而被包括。
在步驟304中從抽象事件檢索對象之后,事件解析模塊106可以根據(jù)抽象事件識別對象之中的一個或更多個關(guān)系(306),并且在對應(yīng)于所識別的關(guān)系的對象之中生成相應(yīng)的關(guān)聯(lián),從而產(chǎn)生對應(yīng)于抽象事件的事件上下文。事件上下文包含對應(yīng)事件的上下文信息,并且包括事件的一個或更多個對象及其中的關(guān)聯(lián)。
在步驟306之后,事件解析模塊106可以進(jìn)一步確定當(dāng)前事件是否是有狀態(tài)模型的第一事件(308),如下面參照圖4a詳細(xì)描述的。在滿足上述條件的情況下,可以生成(310)新的有狀態(tài)模型并且該新的有狀態(tài)模型包括事件上下文即一個或更多個對象和一個或更多個關(guān)聯(lián)。然后進(jìn)程返回到可以處理下一事件數(shù)據(jù)的步驟302。
現(xiàn)在參考圖4a,圖4a示出了根據(jù)本公開主題的某些實施方式的基于抽象事件401創(chuàng)建的示例性有狀態(tài)模型400。抽象事件401從表征創(chuàng)建子進(jìn)程p2的進(jìn)程p1的事件e1的事件數(shù)據(jù)被歸一化。抽象事件401包括事件的以下屬性:操作類型-進(jìn)程創(chuàng)建;事件源-p1(作為事件的源進(jìn)程);p1-f1的源文件;事件的目標(biāo)-p2(作為事件的目標(biāo)進(jìn)程);和tp2-f2的源文件?;诔橄笫录?01,可以檢索四個對象:指示事件源p1的進(jìn)程對象402;指示事件的目標(biāo)p2的進(jìn)程對象404;指示p1的源文件f1的文件對象406;和指示p2的源文件f2的文件對象408。根據(jù)某些實施方式,文件對象406和408可以隸屬于如所示的其相應(yīng)的進(jìn)程對象402和404,或者與進(jìn)程對象402和404相關(guān)。抽象數(shù)據(jù)401還可以包括:附加屬性,其包含操作的更多信息,如果適用。
根據(jù)抽象事件,可以在進(jìn)程對象402和404之間識別指示進(jìn)程創(chuàng)建的關(guān)系??梢曰谒R別的關(guān)系相應(yīng)地生成402與404之間的對應(yīng)關(guān)聯(lián),從而產(chǎn)生包括進(jìn)程對象402和404(以及它們的相關(guān)文件對象406和408)的事件上下文以及它們之間的關(guān)聯(lián)。所述關(guān)聯(lián)可以表示為例如如圖4a所示的兩個相關(guān)對象402和404之間的直接鏈接。
根據(jù)某些實施方式,可以為每個對象創(chuàng)建一個或更多個字段,存儲表征相應(yīng)對象和與其相關(guān)的關(guān)聯(lián)的一個或更多個參數(shù)。通過非限制性示例,進(jìn)程對象402可以具有選自包括進(jìn)程標(biāo)識符(例如由操作系統(tǒng)為每個進(jìn)程分配的唯一標(biāo)識符)、一個或更多個源文件標(biāo)識符(例如指向文件對象406的指針)以及一個或更多個操作和與其相關(guān)的對應(yīng)關(guān)聯(lián)(例如進(jìn)程創(chuàng)建的操作和到p2的對應(yīng)鏈接)的組的一個或更多個字段。文件對象406可以具有選自包括文件標(biāo)識符(例如文件的完整路徑)、進(jìn)程標(biāo)識符以及一個或更多個操作和與其相關(guān)的對應(yīng)的關(guān)聯(lián)的組的一個或更多個字段。假設(shè)e1是有狀態(tài)模型中的第一事件,則可以生成有狀態(tài)模型400并且有狀態(tài)模型400包括e1的事件上下文。
應(yīng)當(dāng)注意,術(shù)語“有狀態(tài)模型”應(yīng)當(dāng)廣義地解釋為包括以下任何情況:
1)有狀態(tài)模型可以是程序級有狀態(tài)模型,其表示與給定程序相關(guān)的鏈接操作的序列(并且在一些情況下,還表示與由于操作而鏈接到給定程序的一個或更多個其他程序相關(guān)的操作)。在這種情況下,有狀態(tài)模型表示通過上下文反映與給定程序相關(guān)的所有操作的程序上下文。
程序級有狀態(tài)模型的第一事件可以被確定為與給定程序與系統(tǒng)的第一交互相關(guān)的任何事件。例如,第一事件可以被確定為創(chuàng)建給定程序的啟動進(jìn)程(initiatingprocess)的“進(jìn)程創(chuàng)建”的事件。啟動進(jìn)程是在正執(zhí)行的給定程序上創(chuàng)建的進(jìn)程,其也可以是執(zhí)行其他操作的有狀態(tài)模型的根進(jìn)程。還可以確定第一事件為由啟動進(jìn)程對其他對象執(zhí)行的事件。
在圖4a所示的上述示例中,如果源進(jìn)程p1是某個程序的啟動進(jìn)程,則p1的創(chuàng)建可以被確定為有狀態(tài)模型中的第一事件。由于啟動進(jìn)程可以由系統(tǒng)進(jìn)程p0創(chuàng)建,因此在一些情況下,有狀態(tài)模型可以包括p0、p1以及p0與p1之間的進(jìn)程創(chuàng)建的關(guān)聯(lián)。在一些其他情況下,有狀態(tài)模型可以僅包括對象p1以及指示p0是p1的父對象的參考。在一些其他情況下,第一事件還可以被確定為對其他對象執(zhí)行p1的事件,例如由p1執(zhí)行的“進(jìn)程創(chuàng)建”的事件以創(chuàng)建子進(jìn)程p2。
在一些情況下,由于意外的系統(tǒng)處理問題,事件可能會被事件解析模塊106延遲處理。因此,有狀態(tài)模型的第一事件也可以是在時間上不首先發(fā)生,但是為首先由事件解析模塊106處理的事件。因此,根據(jù)上述如圖4a所示的示例,如果打開文件f1的p2的另一事件e2是由事件解析模塊106首先處理的,則事件e2可以被確定為有狀態(tài)模型的第一事件,并且在其之前發(fā)生的任何事件(例如創(chuàng)建p2的p1的事件e1)可以追溯地處理并且在有狀態(tài)模型中反映。
因此,取決于在現(xiàn)場環(huán)境中并行運行的程序的數(shù)目和它們之中的操作關(guān)系,可以存在一個或更多個共存的程序有狀態(tài)模型,它們中每個表示給定程序的相應(yīng)程序上下文;
2)有狀態(tài)模型可以是系統(tǒng)級有狀態(tài)模型,其表示與在現(xiàn)場環(huán)境中并行運行的所有程序相關(guān)的操作。在這種情況下,有狀態(tài)模型的第一事件可以被確定為當(dāng)操作系統(tǒng)最初啟動時啟動的“系統(tǒng)啟動”的事件。因此,在代表整個環(huán)境的系統(tǒng)上下文的系統(tǒng)中在任何給定時間僅存在一個有狀態(tài)模型。根據(jù)一些實施方式,可以在操作系統(tǒng)的初始化時創(chuàng)建系統(tǒng)級有狀態(tài)模型,并且可以在操作系統(tǒng)和程序處理繼續(xù)進(jìn)行時保持更新。根據(jù)另外的實施方式,可以通過包括一個或更多個程序級有狀態(tài)模型來創(chuàng)建系統(tǒng)級有狀態(tài)模型,每個程序級有狀態(tài)模型與如上所述在現(xiàn)場環(huán)境中運行的所有程序的一個程序相關(guān)。
應(yīng)該注意,上述有狀態(tài)模型結(jié)構(gòu)的定義和實現(xiàn)僅出于示例性目的而示出,并且不應(yīng)被解釋為以任何方式限制本公開??商娲臄?shù)據(jù)結(jié)構(gòu)可以應(yīng)用于實現(xiàn)有狀態(tài)模型的等效功能,作為上述的補充或替代。
參考圖3,根據(jù)某些實施方式,如果當(dāng)前事件不是有狀態(tài)模型的第一事件(308),則存在與當(dāng)前事件之前的至少一個先前事件相對應(yīng)的先前的有狀態(tài)模型。事件解析模塊106可以基于當(dāng)前事件的事件上下文更新(312)先前的有狀態(tài)模型,從而產(chǎn)生被更新的更新的有狀態(tài)模型。
根據(jù)某些實施方式,可以按照以下場景更新先前的有狀態(tài)模型:
1)如果當(dāng)前事件的所有對象已經(jīng)包括在先前的有狀態(tài)模型中,則事件上下文的一個或更多個關(guān)聯(lián)可以被添加到先前的有狀態(tài)模型,從而產(chǎn)生更新的有狀態(tài)模型;
2)否則,一個或更多個對象中的至少一個對象應(yīng)該是在先前的有狀態(tài)模型中不存在新對象。因此,新對象以及一個或更多個關(guān)聯(lián)可以被添加到先前的有狀態(tài)模型,從而產(chǎn)生更新的有狀態(tài)模型。
繼續(xù)圖4a所示的示例,假定所示的有狀態(tài)模型400(包括進(jìn)程對象p1、p2以及p1與p2之間的關(guān)聯(lián),p2表示創(chuàng)建p2的p1的事件e1)是存在的先前的有狀態(tài)模型,并且當(dāng)前事件e2到達(dá),其中,相同的進(jìn)程p1在相同的子進(jìn)程p2中分配存儲器。遵循圖3中的處理,表征當(dāng)前事件e2的事件數(shù)據(jù)被歸一化為抽象事件?;诔橄笫录頇z索對象p1和p2??梢曰诔橄笫录碓趐1與p2之間標(biāo)識指示存儲器分配的關(guān)系,并且可以基于所識別的關(guān)系來生成p1與p2之間的關(guān)聯(lián)。因此,當(dāng)前事件e2的事件上下文包括對象p1和p2以及它們之間的關(guān)聯(lián)。由于當(dāng)前事件e2不是先前的有狀態(tài)模型400中的第一事件,所以有狀態(tài)模型400將基于當(dāng)前事件上下文來更新。在這種情況下,由于當(dāng)前事件的所有對象即p1和p2已經(jīng)包括在先前的有狀態(tài)模型400中,所以當(dāng)前生成的表示存儲器分配操作的p1與p2之間的關(guān)聯(lián)將被添加為有狀態(tài)模型400中的除了表示進(jìn)程創(chuàng)建操作的p1與p2之間先前關(guān)聯(lián)之外的p1與p2之間的新關(guān)聯(lián),從而產(chǎn)生更新的有狀態(tài)模型。通過非限制性示例,可以通過添加用于p1和/或p2的相應(yīng)字段以指示其間的存儲器分配的操作,來在有狀態(tài)模型中添加新關(guān)聯(lián)。由于僅關(guān)聯(lián)被更新,所以具有新添加的關(guān)聯(lián)的更新的有狀態(tài)模型的分級結(jié)構(gòu)可以看起來類似于圖4a所示。
繼續(xù)同一示例,假設(shè)另一事件e3在e2之后到達(dá),其中,進(jìn)程p2創(chuàng)建子進(jìn)程p3。遵循圖3中的相同進(jìn)程,表征當(dāng)前事件e3的事件數(shù)據(jù)被歸一化為抽象事件?;诔橄笫录頇z索對象p2和p3??梢曰诔橄笫录趐2與p3之間識別指示進(jìn)程創(chuàng)建的關(guān)系,并且可以基于所識別的關(guān)系來生成p2與p3之間的關(guān)聯(lián)。因此,當(dāng)前事件e3的事件上下文包括對象p2和p3以及它們之間的關(guān)聯(lián)。由于當(dāng)前事件e3不是有狀態(tài)模型400中的第一事件,所以有狀態(tài)模型400基于當(dāng)前事件上下文來更新。在這種情況下,由于p3是在先前的有狀態(tài)模型中不存在的新對象,所以可以將新對象p3添加到有狀態(tài)模型400作為進(jìn)程對象410。可選地,與p3相關(guān)的文件對象f3也可以被添加為文件對象412。通過非限制性示例,通過添加用于p2和/或p3的相應(yīng)字段以指示p2與p3之間進(jìn)程創(chuàng)建的操作,可以在有狀態(tài)模型中添加p2與新對象p3之間的關(guān)聯(lián),從而產(chǎn)生更新的有狀態(tài)模型,如圖4b所示。
應(yīng)該注意,提供構(gòu)建和更新如上所示的有狀態(tài)模型的具體示例僅為示例性目的,并且不應(yīng)被解釋為限制。因此,構(gòu)建和更新有狀態(tài)模型的其他實施方式可以被用作補充或替代上述。
還應(yīng)當(dāng)注意,本公開不受參考圖3描述的操作步驟的特定順序的約束。
已經(jīng)描述了根據(jù)某些實施方式的有狀態(tài)模型的結(jié)構(gòu)和構(gòu)建/更新有狀態(tài)模型的進(jìn)程,現(xiàn)在回顧圖2,在圖2中,現(xiàn)在參考步驟206來描述分析至少一個有狀態(tài)模型以識別一個或更多個行為。
根據(jù)某些實施方式,行為分析模塊110還可以被配置成鑒于有狀態(tài)模型(當(dāng)基于當(dāng)前事件新創(chuàng)建有狀態(tài)模型時)或者更新的有狀態(tài)模型(例如當(dāng)有狀態(tài)模型基于當(dāng)前事件被更新時)根據(jù)一個或更多個預(yù)定義的行為邏輯來分析當(dāng)前事件的事件上下文。
行為分析模塊110還可以在滿足一個或更多個預(yù)定義的行為邏輯中的任一個時確定至少一個行為的存在。所確定的行為涉及包括至少當(dāng)前事件的有狀態(tài)模型的事件序列。在一些情況下,事件序列中的每一個獨立地可以不被識別為惡意的,但是當(dāng)在序列上下文中被考慮時,實際上正在執(zhí)行惡意行為。通過分析鑒于有狀態(tài)模型的事件上下文,行為分析模塊可以在觀看整個畫面的同時檢查特定事件,從而避免遺漏未檢測到的惡意軟件。
根據(jù)某些實施方式,預(yù)定義的行為邏輯是指示特定行為模式的行為簽名。可以基于某些惡意軟件行為的先前認(rèn)識來預(yù)定行為邏輯,自刪除、自執(zhí)行和代碼注入等。行為邏輯可以存儲在行為簽名數(shù)據(jù)庫112中,如上關(guān)于圖1所描述的。通過非限制性示例,預(yù)定義行為邏輯中的一個可以是當(dāng)滿足以下條件時確定自執(zhí)行的行為:事件的目標(biāo)是已經(jīng)包括在有狀態(tài)模型中的對象,其指示該操作是對該家庭的自身成員之一執(zhí)行的。例如,事件的目標(biāo)進(jìn)程與以下之一相同:源進(jìn)程、源進(jìn)程的子進(jìn)程和源進(jìn)程的父進(jìn)程。另一類似的示例性行為邏輯可以是例如當(dāng)滿足以下條件時確定自刪除的行為:刪除的目標(biāo)事件是包括在有狀態(tài)模型中的對象。例如,事件的目標(biāo)進(jìn)程的源文件的與以下之一相同:源進(jìn)程的源文件和源進(jìn)程的父進(jìn)程的源文件。
可選地,預(yù)定義的行為邏輯還可以包括指示良性行為模式的一個或更多個邏輯如與桌面或用戶的交互、在系統(tǒng)程序儲存庫中注冊等。根據(jù)某些實施方式,數(shù)據(jù)庫中的每個行為簽名可以與指示對應(yīng)行為的惡意級別的預(yù)定義行為得分相關(guān)聯(lián)。因此,所確定的至少一個行為中的每一個可以基于與其相關(guān)聯(lián)的預(yù)定義行為得分來分配相應(yīng)的行為得分。參考圖5進(jìn)一步例示分析有狀態(tài)模型并且確定至少一個行為的進(jìn)程。
應(yīng)當(dāng)注意,如上所述的有狀態(tài)模型的分層結(jié)構(gòu)被設(shè)計為快速可訪問的數(shù)據(jù)結(jié)構(gòu),其可以繼而使得能夠在監(jiān)視操作之后創(chuàng)建有狀態(tài)模型并且分析所創(chuàng)建的有狀態(tài)模型,以在現(xiàn)場環(huán)境中以實時方式執(zhí)行。
在確定了至少一個行為時,決策模塊114可以被配置成基于所確定的行為來確定惡意軟件的存在(208)。根據(jù)某些實施方式,每個有狀態(tài)模型可以與有狀態(tài)模型得分相關(guān)聯(lián)。有狀態(tài)模型得分是為在有狀態(tài)模型中確定的相應(yīng)行為分配的所有行為得分的總計行為得分。在有狀態(tài)模型中確定至少一個當(dāng)前行為時,決策模塊114可以搜索是否存在與先前的有狀態(tài)模型相關(guān)聯(lián)的先前的有狀態(tài)模型得分。因此,先前的有狀態(tài)模型得分是為相應(yīng)先前確定的行為分配的所有先前行為得分的總計行為得分,先前確定的行為與先前的有狀態(tài)模型的至少一個先前事件相關(guān)。如果不存在先前的有狀態(tài)模型得分,則可以將至少一個行為中的每一個的相應(yīng)的行為得分之和確定為與當(dāng)前有狀態(tài)模型相關(guān)聯(lián)的有狀態(tài)模型得分。否則,如果找到先前的有狀態(tài)模型得分,則可以用和增加先前的有狀態(tài)模型得分,從而產(chǎn)生基于當(dāng)前事件已被更新的有狀態(tài)模型。決策模塊114還可以被配置成比較具有預(yù)定義閾值的有狀態(tài)模型得分。預(yù)定義閾值可以是指示惡意軟件存在的分?jǐn)?shù),并且可以基于惡意軟件檢測的先前認(rèn)識來預(yù)先確定。如果有狀態(tài)模型得分超過預(yù)定閾值,則可以確定惡意軟件的存在。例如,對應(yīng)的有狀態(tài)模型以及與有狀態(tài)模型相關(guān)的一個或更多個程序可以被確定為惡意的。進(jìn)一步參考圖5例示確定惡意軟件的存在的進(jìn)程。
根據(jù)某些實施方式,如果滿足條件,則可以用對應(yīng)的權(quán)重因子來分配當(dāng)前確定的行為的相應(yīng)的行為得分。通過非限制性示例,該條件可以是事件源是遠(yuǎn)程進(jìn)程,并且事件的目標(biāo)是指示遠(yuǎn)程進(jìn)程正在對系統(tǒng)進(jìn)程執(zhí)行操作的系統(tǒng)進(jìn)程。在這種情況下,可以將權(quán)重因子(例如大于1的數(shù)值)分配給與該行為相關(guān)聯(lián)的原始行為得分,從而指示惡意軟件存在的可能性增加。所分配的權(quán)重因子可以應(yīng)用于原始行為得分(例如通過將原始行為得分與權(quán)重因子相乘),從而產(chǎn)生加權(quán)行為得分。因此,可以用為至少一個行為中的每一個分配的加權(quán)行為得分之和來增加先前的有狀態(tài)模型得分。
應(yīng)當(dāng)注意,本公開不受具體評分和上述加權(quán)范例的限制。評分和加權(quán)功能可以以合并的方式或單獨地實現(xiàn)??梢詰?yīng)用其他種類的實施方式來補充或替代上述實施方式。
根據(jù)某些實施方式,可以通過修復(fù)有狀態(tài)模型中指示的操作來消除所確定的惡意軟件,例如通過非限制性示例,通過終止有狀態(tài)模型內(nèi)的進(jìn)程對象、移除與進(jìn)程對象相關(guān)的或者通過進(jìn)程對象創(chuàng)建的文件對象(或其他類型的對象)、以及如果可能,撤銷在對象之中執(zhí)行的操作,以在有狀態(tài)模型中的操作執(zhí)行之前將系統(tǒng)恢復(fù)到盡可能接近系統(tǒng)狀態(tài)的狀態(tài)執(zhí)行。根據(jù)另外的實施方式,如上所述的,可以通過i/o接口103向終端用戶提供所確定的惡意軟件的輸出。
根據(jù)某些實施方式,參考圖2描述的操作序列,例如,可以實時地并行執(zhí)行監(jiān)視操作、構(gòu)建有狀態(tài)模型、分析行為、確定惡意軟件和消除所確定的惡意軟件。例如,響應(yīng)于監(jiān)視在實況環(huán)境中并行運行的至少一個程序的一個或更多個操作,可以實時地執(zhí)行根據(jù)一個或更多個操作來構(gòu)建至少一個有狀態(tài)模型。附加地或可替代地,響應(yīng)于監(jiān)視一個或更多個操作并且構(gòu)建至少一個有狀態(tài)模型可以實時地執(zhí)行分析所述至少一個有狀態(tài)模型以識別一個或更多個行為。附加地或可替代地,響應(yīng)于分析所述至少一個有狀態(tài)模型,可以基于所識別的一個或更多個行為來實時地執(zhí)行確定惡意軟件的存在。附加地或可替代地,響應(yīng)于確定惡意軟件的存在,可以實時地執(zhí)行消除所確定的惡意軟件。
應(yīng)當(dāng)注意,本公開不受參考圖2所描述的具體操作步驟的序列的約束。
現(xiàn)在轉(zhuǎn)到圖5,圖5示出了根據(jù)本公開主題的某些實施方式被監(jiān)視和處理的示例性操作序列的一般化流程圖。
如所示出的,在執(zhí)行給定程序時創(chuàng)建(501)進(jìn)程p1。因此,p1是給定程序的啟動過程。例如通過內(nèi)核監(jiān)視模塊來監(jiān)視進(jìn)程創(chuàng)建的操作。相應(yīng)地生成相應(yīng)的事件e1及其事件數(shù)據(jù)。e1被確定為有狀態(tài)模型的第一事件,并且基于e1生成有狀態(tài)模型。有狀態(tài)模型現(xiàn)在包括e1的事件上下文即p1(可選地還包括創(chuàng)建p1的系統(tǒng)進(jìn)程p0和/或p1的源文件f1)以及p1的進(jìn)程創(chuàng)建的關(guān)聯(lián)。在該階段根據(jù)預(yù)定義的行為邏輯確定沒有行為(502),因此沒有分配得分。
進(jìn)行向系統(tǒng)進(jìn)程p2分配存儲器的p1(503)的第二操作。例如通過進(jìn)程內(nèi)監(jiān)視模塊來監(jiān)視存儲器分配的操作。相應(yīng)地生成對應(yīng)的事件e2及其事件數(shù)據(jù)。因為e2不是有狀態(tài)模型的第一事件,所以包括事件上下文e1的先前的有狀態(tài)模型基于e2而被更新?,F(xiàn)在,有狀態(tài)模型包括p1、p2(可選地還有它們的源文件f1和f2)以及p1與p2之間的存儲器分配的關(guān)聯(lián)。根據(jù)預(yù)定義的行為邏輯之一確定遠(yuǎn)程存儲器分配的行為(504),并且因此分配行為得分s1。由于沒有先前的有狀態(tài)模型得分,所以行為得分s1也是有狀態(tài)模型得分。
在第二操作之后,進(jìn)行p1在所分配的存儲器中在p2中注入代碼(505)的第三操作。根據(jù)某些實施方式,代碼注入的操作可以包括三個動作:存儲器寫;存儲器執(zhí)行許可;和代碼執(zhí)行,所有這些都被監(jiān)視。相應(yīng)地生成對應(yīng)的事件e310及其事件數(shù)據(jù)。由于e3不是有狀態(tài)模型的第一事件,所以基于當(dāng)前事件e3來進(jìn)一步更新基于e1和e2的事件上下文的先前的有狀態(tài)模型。有狀態(tài)模型現(xiàn)在包括p1、p2(可選地還包括其源文件f1和f2),p1與p2之間的存儲器分配的先前關(guān)聯(lián)以及p1與p2之間的代碼注入的新關(guān)聯(lián)。根據(jù)預(yù)定義的行為邏輯之一來確定(506)代碼注入的行為,并且因此分配行為分?jǐn)?shù)s2。有狀態(tài)模型得分被更新為s1與s2的和。
刪除p1的文件f1的p2(507)的第四操作在第三操作之后。監(jiān)視文件刪除的操作。相應(yīng)地生成對應(yīng)的事件e4及其事件數(shù)據(jù)20。由于e4不是有狀態(tài)模型的第一事件,所以現(xiàn)在基于e4來更新基于先前事件e1、e2和e3的先前的有狀態(tài)模型。當(dāng)前有狀態(tài)模型包括p1、p2、f1(可選地還包括源文件f2)、p1與p2之間的兩個關(guān)聯(lián)(即存儲器分配和代碼注入)以及p2與f1之間的文件刪除的新關(guān)聯(lián)?;诜治鲇袪顟B(tài)模型,注意到p1實際上是p2的父代。根據(jù)預(yù)定義的行為邏輯之一來確定自刪除的行為(508),并且分配行為得分s3。現(xiàn)在,有狀態(tài)模型得分被更新為s1、s2和s3之和。如果有狀態(tài)模型得分超過預(yù)定閾值,則確定惡意軟件的存在。例如,有狀態(tài)模型特別是與p1相關(guān)的給定程序被確定為惡意的,并且將被消除(509)。例如,進(jìn)程對象p1和p2被終止,文件對象f1和f2被移除,并且p1和p2之間的相關(guān)操作,諸如存儲器分配、代碼注入、文件刪除等,如果可能的話可以補救。
應(yīng)當(dāng)注意,提供上面參照圖5所示的具體示例僅為示例性目的,并且不應(yīng)被解釋為以任何方式限制本公開。
應(yīng)當(dāng)理解,本公開主題的應(yīng)用不限于在此包含的或附圖中示出的描述中闡述的細(xì)節(jié)。本公開的主題能夠具有其他實施方式并且能夠以各種方式實踐和執(zhí)行。因此,應(yīng)當(dāng)理解,本文采用的措辭和術(shù)語是為了描述的目的,而不應(yīng)被認(rèn)為是限制性的。因此,本領(lǐng)域技術(shù)人員將理解,本公開所基于的概念可以容易地用作設(shè)計用于實現(xiàn)本公開主題的若干目的的其他結(jié)構(gòu)、方法和系統(tǒng)的基礎(chǔ)。
還將理解,根據(jù)本公開主題的系統(tǒng)可以至少部分地實現(xiàn)為適當(dāng)編程的計算機。同樣,當(dāng)前公開的主題設(shè)想了可由計算機讀取的用于執(zhí)行所公開的方法的計算機程序。本公開主題還設(shè)想一種機器可讀存儲器,其有形地包含可由機器執(zhí)行以執(zhí)行所公開的方法的指令程序。