專利名稱:用于檢測復(fù)雜惡意軟件的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,尤其涉及用于計(jì)算機(jī)保護(hù)以抵御具有復(fù)雜感染模式的惡意軟件的系統(tǒng)和方法。
背景技術(shù):
諸如病毒、蠕蟲和木馬的計(jì)算機(jī)惡意軟件,對于計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)有顯著的安全威脅。為了對抗計(jì)算機(jī)惡意軟件的不斷増加的傳播,開發(fā)了大量的反病毒檢測技木。然而,在保護(hù)計(jì)算機(jī)抵抗惡意軟件方面,并不是所有惡意軟件檢測方法都是有效的;尤其當(dāng)惡意 軟件是為避開這些檢測方法而專門設(shè)計(jì)吋。在最簡單的情形下,惡意軟件可以為單個(gè)的組件或?qū)ο螅缛绻麊?dòng)就會(huì)執(zhí)行可導(dǎo)致計(jì)算機(jī)損壞的操作的可執(zhí)行文件。諸如簽名或啟發(fā)式(heuristic)分析的常見的惡意軟件檢測技術(shù),通常會(huì)檢測出單ー組件的惡意軟件。然而,更復(fù)雜的惡意軟件由多個(gè)組件組成,每個(gè)組件執(zhí)行特定的操作;例如,一個(gè)組件可以隨文件執(zhí)行操作,第二個(gè)組件可以修改系統(tǒng)注冊表,而第三個(gè)組件可以執(zhí)行網(wǎng)絡(luò)功能。此外,每個(gè)組件本身可能都并不會(huì)執(zhí)行惡意操作,但是如果將它們的操作相結(jié)合,其可以導(dǎo)致對計(jì)算機(jī)的損壞。常見的惡意軟件檢測方法在檢測這種具有復(fù)雜感染模式的多組件惡意軟件方面可能不是有效的。因此,需要用于檢測具有復(fù)雜感染模式的惡意軟件的新技木。
發(fā)明內(nèi)容
本發(fā)明公開了用于檢測計(jì)算機(jī)惡意軟件的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在ー個(gè)示例性實(shí)施例中,該方法包括由惡意軟件檢測系統(tǒng)監(jiān)視計(jì)算機(jī)上的一個(gè)或多個(gè)軟件對象的進(jìn)程或線程的執(zhí)行。然后,該系統(tǒng)通過計(jì)算該對象的數(shù)字簽名和檢查該數(shù)字簽名是否與被信任對象相關(guān)聯(lián)而確定該一個(gè)或多個(gè)對象是否為被信任対象。如果該對象是被信任的,則系統(tǒng)停止對該被信任對象的一個(gè)或多個(gè)進(jìn)程或線程的監(jiān)視。如果該ー個(gè)或多個(gè)對象是不被信任的,則系統(tǒng)在多個(gè)單獨(dú)的對象情境(context)中存儲(chǔ)被監(jiān)視的每個(gè)不被信任對象的進(jìn)程或線程的執(zhí)行的事件。然后,該系統(tǒng)使用惡意軟件行為規(guī)則來分別分析存儲(chǔ)在每個(gè)對象情境中的該被監(jiān)視的進(jìn)程或線程的執(zhí)行的事件,以識別惡意對象。如果在單獨(dú)的對象情境中的被監(jiān)視的進(jìn)程或線程的執(zhí)行的事件不是惡意的,則系統(tǒng)確定是否該被監(jiān)視的進(jìn)程或線程是彼此相關(guān)的,并將相關(guān)的進(jìn)程或線程的情境合并至公共情境。然后,該系統(tǒng)使用惡意軟件行為規(guī)則來分析存儲(chǔ)在公共情境中的事件,以識別具有復(fù)雜行為的惡意對象。以上對于本發(fā)明的示例性實(shí)施例的簡要概括用于提供對這種實(shí)施例的基本理解。此概括并非對本發(fā)明的所有涉及方面的廣泛概述,并且既非意圖確定所有實(shí)施例的重要或關(guān)鍵元素,也非意圖劃定任何或所有實(shí)施例的范圍。其唯一的目的是以簡化的形式提供一個(gè)或多個(gè)方面的ー些概念,作為以下的更詳細(xì)描述的前序。為了前述和相關(guān)目標(biāo)的實(shí)現(xiàn),該一個(gè)或多個(gè)實(shí)施例包括在下文中所充分描述并在權(quán)利要求書特別指出的特征。下面的描述和附圖詳細(xì)地闡述了ー個(gè)或多個(gè)實(shí)施例的特定示范性特征。然而,這些特征僅表示其中可以采用該發(fā)明的各個(gè)方面的原理的各種方式中的ー些,并且此說明意圖包括該發(fā)明的所有這樣的方面及其等同物。
并入說明書中并構(gòu)成說明書的一部分的附圖示出了本發(fā)明的一個(gè)或多個(gè)示范性實(shí)施例,并與詳細(xì)描述一起用于解釋本申請實(shí)施例的原理和實(shí)施方式。附圖中圖I圖示了根據(jù)ー個(gè)示例性實(shí)施例的惡意軟件檢測系統(tǒng)的示意圖。圖2圖示了根據(jù)ー個(gè)示例性實(shí)施例的由惡意軟件檢測系統(tǒng)實(shí)施的對相關(guān)進(jìn)程的情境合并的示例。圖3A-B圖示了根據(jù)ー個(gè)示例性實(shí)施例的惡意軟件檢測系統(tǒng)的操作的算法。 圖4圖示了根據(jù)ー個(gè)示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的示意圖。
具體實(shí)施例方式在此圍繞用于計(jì)算機(jī)惡意軟件的檢測的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品來描述本發(fā)明的示例性實(shí)施例。本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)了解,以下的描述僅僅是示例性的而并非意圖以任何方式進(jìn)行限定。受益于本發(fā)明的本領(lǐng)域技術(shù)人員會(huì)很容易地想到其他實(shí)施例?,F(xiàn)將詳細(xì)參考在附圖中圖示的本發(fā)明的示例性實(shí)施例的實(shí)施方式。貫穿附圖和以下的描述會(huì)盡可能使用相同的附圖標(biāo)記來指代相同或相似的項(xiàng)。圖I圖示了惡意軟件檢測系統(tǒng)的ー個(gè)示例性實(shí)施例。該系統(tǒng)可以在需要保護(hù)以抵御計(jì)算機(jī)惡意軟件的個(gè)人計(jì)算機(jī)、服務(wù)器、網(wǎng)絡(luò)路由器、移動(dòng)電話或其他電子設(shè)備(本文中常見以計(jì)算機(jī)來指代)上實(shí)施。一般而言,系統(tǒng)100監(jiān)視由諸如程序、文件、腳本、動(dòng)態(tài)鏈接數(shù)據(jù)庫等的各種軟件對象101在計(jì)算機(jī)上所啟動(dòng)的進(jìn)程和線程的執(zhí)行,以檢測惡意對象。在一個(gè)示例性實(shí)施例中,被監(jiān)視的對象101可以包括位于計(jì)算機(jī)存儲(chǔ)空間中的含有命令代碼的可執(zhí)行文件,所述計(jì)算機(jī)存儲(chǔ)空間諸如計(jì)算機(jī)的硬盤驅(qū)動(dòng)器或隨機(jī)存取存儲(chǔ)器。當(dāng)對象101啟動(dòng)時(shí),其在系統(tǒng)存儲(chǔ)器中創(chuàng)建進(jìn)程。進(jìn)程是容器(container),在該容器中執(zhí)行對象101(例如可執(zhí)行文件)的命令代碼。該進(jìn)程具有虛擬地址空間,在該虛擬地址空間中存儲(chǔ)該進(jìn)程的運(yùn)行時(shí)間數(shù)據(jù)并映射相關(guān)的動(dòng)態(tài)數(shù)據(jù)庫DLL(動(dòng)態(tài)鏈接數(shù)據(jù)庫)。進(jìn)程可以具有多個(gè)執(zhí)行線程。對象的代碼在進(jìn)程線程中執(zhí)行。每個(gè)進(jìn)程可以與ー個(gè)或多個(gè)對象101關(guān)聯(lián)。這意味著如果進(jìn)程或線程在計(jì)算機(jī)上執(zhí)行惡意的操作,則該啟動(dòng)進(jìn)程的對象101也是惡意的。在一個(gè)示例性實(shí)施例中,惡意軟件檢測系統(tǒng)100包括分析工具102,當(dāng)新的進(jìn)程在計(jì)算機(jī)上啟動(dòng)時(shí),該分析工具102通過使用可用的操作系統(tǒng)工具和/或該啟動(dòng)進(jìn)程的對象101的數(shù)字簽名來檢查啟動(dòng)該給定進(jìn)程的對象101的參數(shù)??梢圆捎美缭搯?dòng)進(jìn)程的對象101的校驗(yàn)和或虛擬存儲(chǔ)器中的可執(zhí)行文件的代碼校驗(yàn)和作為對象101的參數(shù)。在第一階段,分析工具102將被檢查的對象101的參數(shù)與位于被信任對象的本地存儲(chǔ)器109中的被信任對象的參數(shù)進(jìn)行比較。此外,該分析工具102可以檢查對象101的數(shù)字簽名。數(shù)字簽名是由認(rèn)證機(jī)構(gòu)提供并加入至文件的電子安全標(biāo)記。由此,當(dāng)進(jìn)程啟動(dòng)時(shí),分析工具102通過使用包括存儲(chǔ)在本地存儲(chǔ)器109中經(jīng)數(shù)字簽名的對象的參數(shù)在內(nèi)的被信任對象參數(shù)而建立啟動(dòng)進(jìn)程的對象101的可信度。在一個(gè)示例性實(shí)施例中,本地存儲(chǔ)器109可以僅含有最常見的對象的參數(shù)。在此情形下,如果分析工具102不能在存儲(chǔ)器109中找到對象參數(shù),其可以經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)110發(fā)送詢問至遠(yuǎn)程反病毒服務(wù)器(未示出)。該反病毒服務(wù)器可以維持全套的已知的惡意的和被信任的對象的參數(shù),并且可以將其信息提供至分析工具102。在一個(gè)示例性實(shí)施例中,被信任對象是已知對計(jì)算機(jī)無害的對象,因此,不必要在被信任對象上,以及從該對象 啟動(dòng)的進(jìn)程和線程上執(zhí)行任何附加的惡意軟件檢測操作。然而,如果對象是不被信任的,也就是分析工具102在被信任對象的列表中沒有找到被檢查的對象101,則可能該對象和其啟動(dòng)的進(jìn)程均為有害的或惡意的。因此,不被信任的對象101 (本文中還以可疑或潛在惡意對象指代)繼續(xù)由系統(tǒng)100監(jiān)視,以防止從這些對象啟動(dòng)的進(jìn)程的惡意行為。特別地,如果被檢查的對象101不被信任,則分析工具102將被檢查的對象數(shù)據(jù)101發(fā)送至情境編譯工具103,該情境編譯工具103為該對象編譯情境。在ー個(gè)示例性實(shí)施例中,該情境是由被檢查的對象101所啟動(dòng)的進(jìn)程(或線程)所初始化的事件的日志(log)。特別地,該情境編譯工具103可以為每個(gè)被監(jiān)視的不被信任的對象101生成単獨(dú)的情境。該情境編譯工具103可以將生成的情境存儲(chǔ)在情境存儲(chǔ)器104中,該情境存儲(chǔ)器104可以在計(jì)算機(jī)的隨機(jī)存取存儲(chǔ)器或永久性存儲(chǔ)器中實(shí)施。由情境編譯工具103加入至對象情境的事件可以包括但并不限定于新的對象創(chuàng)建事件、對已存在對象的修改事件、進(jìn)程啟動(dòng)事件、系統(tǒng)注冊表參數(shù)更改事件、網(wǎng)絡(luò)連接建立事件以及其他類型的事件。在一個(gè)示例性實(shí)施例中,在檢測到潛在有害事件的情形下,分析工具102可以向情境編譯工具103發(fā)送通知,所述潛在有害事件諸如對系統(tǒng)注冊表的修改和嘗試創(chuàng)建或修改諸如exe文件、腳本、批處理文件等的可執(zhí)行文件。此通知至少含有該啟動(dòng)進(jìn)程的對象的標(biāo)識,如對象的校驗(yàn)和。其還含有事件類型以及事件所涉及的對象的標(biāo)識,所述事件類型諸如對象修改,所述對象的標(biāo)識諸如被修改的對象的校驗(yàn)和。當(dāng)接收到進(jìn)程事件的通知吋,該情境編譯工具103可以將此信息保存在情境存儲(chǔ)器104中被分析的對象101的情境中。所收集的信息進(jìn)ー步用于檢測計(jì)算機(jī)上的惡意對象。在一個(gè)示例性實(shí)施例中,該情境編譯工具103在其操作中使用圖2中所圖示的情境合并機(jī)制。在幾個(gè)對象或其進(jìn)程之間的關(guān)系在其執(zhí)行的進(jìn)程中被識別的情形下使用該情境合并機(jī)制,也就是為個(gè)體行為未顯示出惡意的多個(gè)不被信任的對象創(chuàng)建公共情境的機(jī)制。為了分析在此情形下對于計(jì)算機(jī)的一般安全威脅,可能需要分析從不同但相關(guān)的不被信任的對象所啟動(dòng)的進(jìn)程的累積操作。例如,在一個(gè)進(jìn)程初始化自另ー個(gè)(也就是父子關(guān)系)的情形下,會(huì)在多個(gè)從不同對象所啟動(dòng)的多個(gè)進(jìn)程之間產(chǎn)生關(guān)系,該關(guān)系創(chuàng)建新的對象,從該新的對象初始化新的進(jìn)程,或者該關(guān)系將線程嵌入至初始化的進(jìn)程中。在這種狀況下,進(jìn)程是相關(guān)的,并且不僅分析在特定進(jìn)程的執(zhí)行時(shí)發(fā)生的操作,還分析從不同對象所啟動(dòng)的相關(guān)進(jìn)程的累積操作。類似的狀況發(fā)生在例如多組件惡意軟件或具有復(fù)雜感染模式的其他惡意軟件感染計(jì)算機(jī)吋。作為示例,啟動(dòng)進(jìn)程的對象101可以創(chuàng)建和啟動(dòng)另ー個(gè)對象。在此情形下,當(dāng)與被信任對象不相關(guān)的第一進(jìn)程201在系統(tǒng)中出現(xiàn)時(shí),情境編譯工具103在情境存儲(chǔ)器104中生成情境203。此情境203含有與在進(jìn)程201的執(zhí)行中所初始化的事件(事件I. I-事件
I.3)有關(guān)的數(shù)據(jù)。在進(jìn)程201的執(zhí)行中的某ー時(shí)刻,可能生成創(chuàng)建和啟動(dòng)新的對象的事件,并且此事件初始化新的進(jìn)程202。當(dāng)新的進(jìn)程202啟動(dòng)時(shí),情境編譯工具103為記錄由進(jìn)程202所生成的事件而生成単獨(dú)的情境204。在一個(gè)示例性實(shí)施例中,情境編譯工具103可以確定是否新的進(jìn)程202與諸如進(jìn)程201的任何其它被監(jiān)視的進(jìn)程相關(guān)。在進(jìn)程201和202彼此相關(guān)的情形下,情境編譯工具103可以生成新的単獨(dú)的公共情境205,該公共情境205會(huì)含有發(fā)生在第一進(jìn)程201和第二進(jìn)程202的執(zhí)行過程中的所有事件。因此,當(dāng)潛在有害事件出現(xiàn)時(shí),它們會(huì)涉及公共情境205以及涉及啟動(dòng)進(jìn)程的對象101的単獨(dú)的情境203或204,所述啟動(dòng)進(jìn)程的對象101在其執(zhí)行過程中已導(dǎo)致潛在有害事件。如上文所指出,對象/迸程之間可以有很多不同的關(guān)系,并且當(dāng)檢測到新的相關(guān)對象時(shí),情境編譯工具103以在從新的對象所啟動(dòng)的進(jìn)程的執(zhí)行過程中所生成的事件來更新該新的對象的情境和公共情境205。特別地,當(dāng)檢測到新的事件時(shí),將其記錄在情境存儲(chǔ)器104中的ー個(gè)(在單ー對象的情形下)或幾個(gè)(在相關(guān)對象的情形下)情境中。在此方式下,情境編譯工具103可以為各種相關(guān)對象創(chuàng)建大量不同的情境并將這些情境存儲(chǔ)在情境存儲(chǔ)器104中。在一個(gè)示例性實(shí)施例中,配置情境分析工具105以獨(dú)立地分析情境存儲(chǔ)器104中的每個(gè)情境是否存在惡意軟件。特別地,情境分析工具105基于對象在其進(jìn)程的執(zhí)行過程中的行為來分析對象是否是有害的,這些進(jìn)程作為事件被記錄在存儲(chǔ)器104中的對象情境中。更具體地,基于存儲(chǔ)在規(guī)則存儲(chǔ)器107中的行為規(guī)則來執(zhí)行該分析。這些行為規(guī)則識別諸如病毒、蠕蟲、木馬、垃圾郵件、BOTs、誘騙聯(lián)絡(luò)(spoofer)等的各種已知類型的惡意軟件的行為。對象行為意味著在從被檢查的對象101所啟動(dòng)的進(jìn)程的執(zhí)行過程中所采用的操作的集合。作為其操作的結(jié)果,情境分析工具105基于被檢查對象的情境得到關(guān)于其有害度的結(jié)論。在一個(gè)示例性實(shí)施例中,每當(dāng)情境中出現(xiàn)新的事件或在當(dāng)新的事件出現(xiàn)后情境分析工具105檢測該對象的有害度時(shí)的情形下,重復(fù)對對象情境的分析;然后情境分析工具發(fā)送關(guān)于此對象的信息至反病毒工具106。該反病毒工具106可以采取合適的補(bǔ)救操作,諸如終止從惡意對象初始化的進(jìn)程,以及隔離或刪除已啟動(dòng)惡意進(jìn)程的對象。因?yàn)槊總€(gè)情境的事件本身可能表現(xiàn)為無害的或非惡意的,所以對情境203和情境204的獨(dú)立分析有可能無法識別惡意對象;然而,對合并的情境205的分析則會(huì)揭露這些進(jìn)程的惡意行為,所述合并的情境205包括由相關(guān)進(jìn)程201和202所生成的事件的組合集。這意味著惡意軟件使用復(fù)雜感染模式,也就是其通過使用幾個(gè)進(jìn)程而進(jìn)行操作,并且每個(gè)進(jìn)程本身是不具威脅性的或非惡意的,但是它們累積的活動(dòng)可能是對計(jì)算機(jī)有害的。在此情形下,反病毒工具106可以使被檢測的進(jìn)程不能執(zhí)行,并刪除與被檢測的進(jìn)程相關(guān)的所有對象。 在另ー個(gè)示例中,一個(gè)進(jìn)程203可以執(zhí)行一系列操作,所述一系列操作通過例如向已存在的進(jìn)程202中嵌入線程而初始化新的進(jìn)程或激活已存在的進(jìn)程;之后,進(jìn)程201可以終止,但進(jìn)程202會(huì)繼續(xù)執(zhí)行。雖然進(jìn)程201終止并且其單獨(dú)的情境203可能已從存儲(chǔ)器104刪除,但是含有被終止進(jìn)程201的事件和正運(yùn)行進(jìn)程202的事件的組合情境205保持在存儲(chǔ)器104中,并且受到情境分析工具105的分析。這意味著可在對相關(guān)進(jìn)程202的分析中使用所保存的被終止進(jìn)程201的一系列操作,從而即使在所有有害對象的進(jìn)程終止后也能確定相關(guān)進(jìn)程202的有害性并且識別所有惡意對象。由于系統(tǒng)進(jìn)程通常被認(rèn)為是可信的,其不會(huì)被反病毒應(yīng)用程序所檢查,因此惡意軟件通常在系統(tǒng)進(jìn)程中初始化線程以隱藏其活動(dòng)。系統(tǒng)進(jìn)程可以是在系統(tǒng)操作過程中從系統(tǒng)文件所啟動(dòng)的進(jìn)程。系統(tǒng)進(jìn)程的示例有Svchost. exe(負(fù)責(zé)動(dòng)態(tài)鏈接庫的使用)、ffinlogon. exe (控制用戶登入和登出系統(tǒng))、Services. exe (負(fù)責(zé)開始和停止系統(tǒng)服務(wù)以及負(fù)責(zé)其交互)等。然而,如果線程是在系統(tǒng)進(jìn)程中初始化的,則情境編譯工具103可以注冊此事件;此外,由情境編譯工具103生成含有系統(tǒng)進(jìn)程操作數(shù)據(jù)的單獨(dú)的情境和用于相關(guān)進(jìn)程的公共情境。自此,情境分析工具105可以監(jiān)視系統(tǒng)進(jìn)程的活動(dòng)。在惡意活動(dòng)的情形下,情境分析工具105可以容易地檢測在系統(tǒng)進(jìn)程中的惡意線程初始化的方式并將執(zhí)行該活動(dòng)的惡意對象刪除。
在一個(gè)示例性實(shí)施例中,情境分析工具105經(jīng)由網(wǎng)絡(luò)110連接至遠(yuǎn)程反病毒服務(wù)器(未示出)。該工具105向反病毒服務(wù)器發(fā)送所識別的惡意軟件的情境和在分析對象101的過程中所發(fā)現(xiàn)的相關(guān)的情境。此外,該反病毒服務(wù)器本身可以向情境分析工具105發(fā)送詢問,所述詢問含有用于請求該情境的對象的校驗(yàn)和。在此情形下,該情境分析工具尋找具有所接收的校驗(yàn)和的對象并將此情境與所有相關(guān)的情境一起轉(zhuǎn)發(fā)至反病毒服務(wù)器。與反病毒服務(wù)器進(jìn)行交互的能力是有用的,因?yàn)檫@允許反病毒服務(wù)器對從不同的系統(tǒng)100獲得的不同對象的情境執(zhí)行綜合分析,以分析新種類的惡意軟件的行為,并生成由分析工具105使用的新的惡意軟件行為規(guī)則。在一個(gè)示例性實(shí)施例中,系統(tǒng)100包括對存儲(chǔ)器107中的規(guī)則和存儲(chǔ)器109中的被信任對象列表進(jìn)行更新的更新工具108。該更新工具108使用計(jì)算機(jī)網(wǎng)絡(luò)110以從反病毒服務(wù)器(未示出)獲得更新。在各種不同的實(shí)施例中,系統(tǒng)100實(shí)施改善其惡意軟件檢測效果的附加機(jī)制。例如,在一些情況下,系統(tǒng)100不能基于存儲(chǔ)在存儲(chǔ)器107中的現(xiàn)有版本的惡意軟件行為規(guī)則最終確定不被信任的對象101是否是惡意的,在此情形下,對象101可能被反病毒工具106隔離一段時(shí)間,諸如一周或ー個(gè)月,或直到反病毒服務(wù)器提供了將能夠最終確定所隔離的對象是否惡意的新的規(guī)則。此外,系統(tǒng)100可以將被隔離的對象的情境存儲(chǔ)在情境存儲(chǔ)器104中。有可能在一段時(shí)間后,反病毒服務(wù)器可以創(chuàng)建會(huì)得出被隔離的對象是否是惡意的最終識別的新的規(guī)則。由此,在規(guī)則存儲(chǔ)器107由更新工具108更新后,該工具108可以發(fā)送更新后的規(guī)則信息至情境分析工具105。該情境分析工具105轉(zhuǎn)而可以分析之前在情境存儲(chǔ)器104中保存的情境。這種通過使用新的行為規(guī)則的重復(fù)檢查有可能檢測到之前使用舊的行為規(guī)則無法檢測到的新的惡意對象。如果基于新的行為規(guī)則將被隔離的對象101的情境識別為惡意的,則情境分析根據(jù)105可以通知反病毒工具106隔離的對象是惡意的,從而可以對那個(gè)對象采用合適的補(bǔ)救操作。圖3A和B圖示了惡意軟件檢測的示例性算法。在步驟301,系統(tǒng)100可以更新存儲(chǔ)器109中的被信任對象的簽名的列表。在步驟302,更新工具108檢查是否有任何可用的規(guī)則更新,并在步驟303以新的惡意軟件行為規(guī)則更新存儲(chǔ)器107。一旦規(guī)則更新,該更新工具108通知情境分析工具105關(guān)于新規(guī)則的可用性。在步驟304,情境分析工具105使用更新后的規(guī)則分析之前編譯并存儲(chǔ)在存儲(chǔ)器104中的情境。如果該情境存儲(chǔ)器104不具有任何之前保存的要檢查的情境,則不執(zhí)行分析。如果在步驟305情境分析工具105檢測到所存儲(chǔ)情境的惡意行為模式,則工具105發(fā)送關(guān)于此惡意情境的信息至反病毒工具106,該反病毒工具106將可疑對象保持隔離。在步驟306該反病毒工具106會(huì)執(zhí)行合適的補(bǔ)救操作。此外,在步驟307,情境分析工具105可以向反病毒服務(wù)器發(fā)送所識別的惡意對象的參數(shù),諸如對象的校驗(yàn)和。一旦在步驟301-307已經(jīng)更新了被信任對象列表和規(guī)則數(shù)據(jù)庫,在步驟308分析工具102可開始監(jiān)視計(jì)算機(jī)上的各種進(jìn)程的執(zhí)行。新的進(jìn)程ー開始,在步驟309分析工具102就通過例如將對象的簽名與存儲(chǔ)器109中含有的被信任對象的簽名的列表進(jìn)行比較來檢查啟動(dòng)進(jìn)程的對象101的可信度。如果 在步驟310確定對象是可信的,則系統(tǒng)100不收集關(guān)于該對象的進(jìn)ー步信息,并允許由該給定對象所初始化的進(jìn)程在計(jì)算機(jī)上運(yùn)行而無需進(jìn)ー步的檢查。在此情形下,系統(tǒng)停止關(guān)于此對象和其進(jìn)程的操作。然而,如果在被信任對象的列表109中沒有找到對象101,這意味著被檢查的對象101可能是惡意的。然后,在步驟311分析工具102收集對象參數(shù)并將其發(fā)送至情境編譯エ具103,在步驟313該情境編譯工具103為此對象編譯情境。所編譯的情境保存在情境存儲(chǔ)器104中。這之后,情境編譯工具103監(jiān)視從被檢查的對象101所啟動(dòng)的進(jìn)程中的可疑事件的出現(xiàn);例如,這種事件可與對象的創(chuàng)建和刪除或系統(tǒng)注冊表的修改等相關(guān),并且如果其被最終確定為惡意的,可以終止進(jìn)程。然而,如果在步驟314不能將進(jìn)程識別為惡意的,則該系統(tǒng)通過例如識別顯示出被監(jiān)視的進(jìn)程和另ー個(gè)被執(zhí)行的進(jìn)程或線程之間的關(guān)系的事件,來確定是否被監(jiān)視的進(jìn)程具有任何相關(guān)的進(jìn)程的線程。然后,在步驟315,情境編譯工具103將相關(guān)的對象的情境合井。新的公共情境含有幾個(gè)相關(guān)進(jìn)程的事件,其存儲(chǔ)在情境存儲(chǔ)器104中。當(dāng)將新的事件加入至情境中時(shí),在步驟316情境分析工具105使用來自存儲(chǔ)器107的惡意軟件行為規(guī)則分析該情境。如果在步驟317該情境分析工具105沒有檢測到進(jìn)程的惡意活動(dòng),則允許此進(jìn)程繼續(xù)在計(jì)算機(jī)上運(yùn)行,并且對此進(jìn)程的事件的收集和分析也在步驟314中繼續(xù)。如果在步驟317檢測到惡意活動(dòng),則在步驟318反病毒系統(tǒng)106終止該進(jìn)程和與其相關(guān)的所有進(jìn)程。然后,在步驟319,刪除、修復(fù)或隔離相關(guān)惡意軟件。此外,在步驟320,情境分析工具105發(fā)送惡意對象參數(shù)至反病毒服務(wù)器。圖4描繪了在其上可以實(shí)施惡意軟件檢測系統(tǒng)100的計(jì)算機(jī)5的示例性實(shí)施例。計(jì)算機(jī)5可以包括通過系統(tǒng)總線10連接的一個(gè)或多個(gè)處理器15、存儲(chǔ)器20、ー個(gè)或多個(gè)硬盤驅(qū)動(dòng)器30、光驅(qū)35、串行端ロ 40、圖形卡45、聲卡50和網(wǎng)卡55。系統(tǒng)總線10可以為幾種類型的總線結(jié)構(gòu)中的任何ー個(gè),包括使用各種已知總線架構(gòu)中的任何ー種的存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和局部總線。處理器15可以包括ー個(gè)或多個(gè)Intel C0re2QUad
2.33GHz處理器或其他類型的微處理器。系統(tǒng)存儲(chǔ)器20可以包括只讀存儲(chǔ)器(ROM) 21和隨機(jī)存取存儲(chǔ)器(RAM) 23。存儲(chǔ)器20可以實(shí)施為DRAM (動(dòng)態(tài)RAM)、EPROM、EEPR0M、閃存或其他類型的存儲(chǔ)器架構(gòu)。ROM 21存儲(chǔ)基本輸入/輸出系統(tǒng)22 (BIOS),該基本輸入/輸出系統(tǒng)22含有幫助諸如在啟動(dòng)過程中在計(jì)算機(jī)系統(tǒng)5的組件之間傳輸信息的基本例程。RAM 23存儲(chǔ)諸如Windows XPProfessional或其他類型的操作系統(tǒng)的操作系統(tǒng)24 (OS),該操作系統(tǒng)24負(fù)責(zé)在計(jì)算機(jī)系統(tǒng)5中管理和協(xié)調(diào)進(jìn)程,以及分配和共享硬件資源。系統(tǒng)存儲(chǔ)器20還存儲(chǔ)諸如服務(wù)306的應(yīng)用程序和程序25。系統(tǒng)存儲(chǔ)器20還存儲(chǔ)由程序25使用的各種運(yùn)行時(shí)間數(shù)據(jù)26。計(jì)算機(jī)系統(tǒng)5可以進(jìn)一歩包括諸如SATA磁性硬盤驅(qū)動(dòng)器(HDD)的硬盤驅(qū)動(dòng)器30以及用于讀或?qū)懼T如CD-ROM、DVD-ROM或其他光學(xué)介質(zhì)的可移動(dòng)光盤的光盤驅(qū)動(dòng)器35。驅(qū)動(dòng)器30和35及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供了對實(shí)施本文所公開的算法和方法的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、應(yīng)用程序以及程序模塊/子例程的非易失性存儲(chǔ)。盡管示例性的計(jì)算機(jī)系統(tǒng)5采用磁盤和光盤,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在計(jì)算機(jī)系統(tǒng)的替代實(shí)施例中,還可以使用可存儲(chǔ)計(jì)算機(jī)系統(tǒng)5可訪問數(shù)據(jù)的其他類型的計(jì)算機(jī)可讀介質(zhì),諸如磁帶盒、閃存卡、數(shù)字視頻盤、RAM、ROM、EPROM以及其他類型的存儲(chǔ)器。計(jì)算機(jī)系統(tǒng)5進(jìn)ー步包括諸如通用串行總線(USB)的多個(gè)串行端ロ 40,用于連接諸如鍵盤、鼠標(biāo)、觸控板及其它類型的數(shù)據(jù)輸入設(shè)備75。串行端ロ 40還可以用來連接諸如打印機(jī)、掃描儀及其它類型的數(shù)據(jù)輸出沒備80以及諸如外部數(shù)據(jù)存儲(chǔ)設(shè)備等的其它外圍設(shè)備85。系統(tǒng)5還可以包括諸如nVidia GeForce GT 240M或其他視頻卡的圖形卡45,用干與監(jiān)視器60或其他視頻再現(xiàn)設(shè)備接合。系統(tǒng)5還可以包括聲卡50,用于經(jīng)由內(nèi)部或外 部揚(yáng)聲器65再現(xiàn)聲音。此外,系統(tǒng)5可以包括網(wǎng)卡55,諸如以太網(wǎng)、WiFi、GSM、藍(lán)牙或其他有線、無線或蜂窩網(wǎng)絡(luò)接ロ,用于將計(jì)算機(jī)系統(tǒng)5連接至諸如因特網(wǎng)的網(wǎng)絡(luò)70。在各種實(shí)施例中,本文描述的算法和方法可以實(shí)現(xiàn)于硬件、軟件、固件或者其任意組合中。如果在軟件中實(shí)現(xiàn),這些功能可以作為ー個(gè)或者多個(gè)指令或者代碼在非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)。計(jì)算機(jī)可讀介質(zhì)既包括計(jì)算機(jī)存儲(chǔ)介質(zhì)也包括通信介質(zhì),所述通信介質(zhì)有利于從ー個(gè)地方向另ー個(gè)地方傳送計(jì)算機(jī)程序。存儲(chǔ)介質(zhì)可以是能夠被計(jì)算機(jī)訪問的任何可用的介質(zhì)。作為示例而非限制,這種計(jì)算機(jī)可讀介質(zhì)可包括RAM、ROM、EEPR0M、CD-ROM或其它光盤存儲(chǔ)器、磁盤存儲(chǔ)器或其它磁性存儲(chǔ)設(shè)備、或者任何能夠用于以指令或者數(shù)據(jù)結(jié)構(gòu)的形式承載或者存儲(chǔ)所需的程序代碼并且可被計(jì)算機(jī)訪問的其它介質(zhì)。而且,任何連接都可以被稱為計(jì)算機(jī)可讀介質(zhì)。例如,如果使用同軸電纜、光纜、雙絞線、數(shù)字用戶線(DSL)或者諸如紅外、射頻和微波這類無線技術(shù)從網(wǎng)站、服務(wù)器或者其它遠(yuǎn)程信源發(fā)送軟件,那么介質(zhì)的定義包括該同軸電纜、光纜、雙絞線、數(shù)字用戶線(DSL)、或者諸如紅外、射頻和微波這類無線技木。為了清楚起見,本文沒有示出并描述實(shí)施例的所有常規(guī)特征。應(yīng)該理解的是,在任何這種實(shí)際的實(shí)施方式的開發(fā)中,為了達(dá)到開發(fā)者的特定目標(biāo),必須做出大量特定于實(shí)施方式的決定,而且,這些特定目標(biāo)會(huì)因?qū)嵤┓绞降牟煌烷_發(fā)者的不同而變化。應(yīng)該理解的是,這種開發(fā)工作可能是復(fù)雜且費(fèi)時(shí)的,但不論如何,對于受益于本申請的普通技術(shù)人員而H,都將是常規(guī)的工程任務(wù)。而且,可以理解的是,本文使用的措辭和術(shù)語用于描述而非限制的目的,以使本說明書的術(shù)語或者措辭可由本領(lǐng)域技術(shù)人員在本文提出的教導(dǎo)和指導(dǎo)下結(jié)合相關(guān)領(lǐng)域技術(shù)人員的知識做出解釋。而且,除非像這樣明確地予以闡述,否則說明書中或者權(quán)利要求中的任何術(shù)語都并非意圖表示不常見的或者特殊的意思。本文公開的各種實(shí)施例包括本文通過圖示方式提到的已知組件的現(xiàn)在和將來已知的等同物。而且,盡管已經(jīng)示出和說明了實(shí)施例和應(yīng)用程序,但對受益于本文公開的內(nèi)容的本領(lǐng)域技術(shù)人員來說顯而易見的是,在不脫離本文公開的發(fā)明構(gòu)思的情況下,比上述提及到的更多的修改例都是可能的。
權(quán)利要求
1.一種用于檢測計(jì)算機(jī)惡意軟件的方法,所述方法包括 監(jiān)視ー個(gè)或多個(gè)軟件對象的進(jìn)程或線程的執(zhí)行; 確定所述ー個(gè)或多個(gè)對象是否為被信任對象或不被信任對象; 在多個(gè)單獨(dú)的對象情境中存儲(chǔ)所述被監(jiān)視的每個(gè)不被信任對象的進(jìn)程或線程的執(zhí)行的事件; 確定存儲(chǔ)在單獨(dú)的對象情境中的所述被監(jiān)視的進(jìn)程或線程是否彼此相關(guān); 將存儲(chǔ)在所述相關(guān)進(jìn)程或線程的對象情境中的事件合并至公共情境中;以及使用惡意軟件行為規(guī)則來分析存儲(chǔ)在所述公共情境中以及存儲(chǔ)在單獨(dú)的對象情境中的所述被監(jiān)視的進(jìn)程或線程的事件,以識別惡意對象。
2.如權(quán)利要求I所述的方法,進(jìn)ー步包括 終止與惡意對象相關(guān)聯(lián)的所有進(jìn)程和線程的執(zhí)行;以及 刪除、隔離或修復(fù)所述惡意對象。
3.如權(quán)利要求I所述的方法,進(jìn)ー步包括 通過計(jì)算所述對象的數(shù)字簽名和檢查所述數(shù)字簽名是否與被信任對象相關(guān)聯(lián)而確定所述ー個(gè)或多個(gè)對象是否為被信任對象;以及 停止對被信任對象的一個(gè)或多個(gè)進(jìn)程或線程的監(jiān)視。
4.如權(quán)利要求I所述的方法,其中確定對象是否為被信任的包括 將所述對象的數(shù)字簽名與本地被信任對象存儲(chǔ)器進(jìn)行比較;以及 如果在所述本地被信任對象存儲(chǔ)器中沒有找到所述對象的所述數(shù)字簽名,則向含有已知惡意和被信任對象的簽名的綜合數(shù)據(jù)庫的遠(yuǎn)程反病毒服務(wù)器發(fā)送詢問。
5.如權(quán)利要求I所述的方法,其中確定所述對象是否為被信任的包括 計(jì)算所述對象的校驗(yàn)和;以及 詢問遠(yuǎn)程反病毒服務(wù)器以確定所述校驗(yàn)和是否與惡意或被信任對象相關(guān)聯(lián)。
6.如權(quán)利要求I所述的方法,進(jìn)ー步包括 將對象的情境傳送給遠(yuǎn)程反病毒服務(wù)器;以及 基于所述被傳送的情境從所述服務(wù)器接收新的惡意軟件行為規(guī)則。
7.如權(quán)利要求I所述的方法,進(jìn)ー步包括 如果被信任對象的進(jìn)程在系統(tǒng)進(jìn)程中嵌入線程,則繼續(xù)監(jiān)視所述被信任對象;以及 在単獨(dú)的對象情境中存儲(chǔ)所述系統(tǒng)進(jìn)程的執(zhí)行的事件。
8.一種用于檢測計(jì)算機(jī)惡意軟件的系統(tǒng),包括 存儲(chǔ)器,經(jīng)配置以存儲(chǔ)被信任軟件對象的列表和惡意軟件行為規(guī)則; 處理器,耦合至所述存儲(chǔ)器,所述處理器經(jīng)配置以 監(jiān)視ー個(gè)或多個(gè)軟件對象的進(jìn)程或線程的執(zhí)行; 確定所述ー個(gè)或多個(gè)對象是否為被信任對象或不被信任對象; 在多個(gè)單獨(dú)的對象情境中存儲(chǔ)所述被監(jiān)視的每個(gè)不被信任對象的進(jìn)程或線程的執(zhí)行的事件; 確定存儲(chǔ)在單獨(dú)的對象情境中的所述被監(jiān)視的進(jìn)程或線程是否彼此相關(guān); 將存儲(chǔ)在所述相關(guān)進(jìn)程或線程的對象情境中的事件合并至公共情境中;以及 使用惡意軟件行為規(guī)則來分析存儲(chǔ)在所述公共情境中以及存儲(chǔ)在單獨(dú)的對象情境中的所述被監(jiān)視的進(jìn)程或線程的事件,以識別惡意對象。
9.如權(quán)利要求8所述的系統(tǒng),其中所述處理器經(jīng)進(jìn)一步配置以 終止與惡意對象相關(guān)聯(lián)的所有進(jìn)程和線程的執(zhí)行;以及 刪除、隔離或修復(fù)所述惡意對象。
10.如權(quán)利要求8所述的系統(tǒng),其中所述處理器經(jīng)進(jìn)一步配置以 通過計(jì)算所述對象的數(shù)字簽名和將所述數(shù)字簽名與存儲(chǔ)在所述存儲(chǔ)器中的所述被信任軟件對象的列表進(jìn)行比較而確定所述一個(gè)或多個(gè)對象是否為被信任對象;以及停止對被信任對象的一個(gè)或多個(gè)進(jìn)程或線程的監(jiān)視。
11.如權(quán)利要求8所述的系統(tǒng),其中如果在所述被信任軟件對象的列表中沒有找到所述對象的所述數(shù)字簽名,則所述處理器經(jīng)進(jìn)一步配置以 向含有已知惡意和被信任對象的簽名的綜合數(shù)據(jù)庫的遠(yuǎn)程反病毒服務(wù)器發(fā)送詢問。
12.如權(quán)利要求8所述的系統(tǒng),其中為確定所述對象是否為被信任的,所述計(jì)算機(jī)經(jīng)進(jìn)一步配置以 計(jì)算所述對象的校驗(yàn)和;以及 詢問遠(yuǎn)程反病毒服務(wù)器以確定所述校驗(yàn)和是否與惡意或被信任對象相關(guān)聯(lián)。
13.如權(quán)利要求8所述的系統(tǒng),其中所述處理器經(jīng)進(jìn)一步配置以 將對象的情境傳送給遠(yuǎn)程反病毒服務(wù)器;以及 基于所述被傳送的情境從所述服務(wù)器接收新的惡意軟件行為規(guī)則。
14.如權(quán)利要求8所述的系統(tǒng),其中所述處理器經(jīng)進(jìn)一步配置以 如果被信任對象的進(jìn)程在系統(tǒng)進(jìn)程中嵌入線程,則繼續(xù)監(jiān)視所述被信任對象;以及 在單獨(dú)的對象情境中存儲(chǔ)所述系統(tǒng)進(jìn)程的執(zhí)行的事件。
全文摘要
本發(fā)明公開了用于檢測具有復(fù)雜感染模式的惡意軟件的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。該系統(tǒng)通過識別潛在的有害軟件對象、監(jiān)視潛在有害對象的各進(jìn)程和線程的執(zhí)行、編譯被監(jiān)視進(jìn)程和線程的執(zhí)行的事件的情境、以及將相關(guān)的進(jìn)程和線程的情境進(jìn)行合并而提供對抗惡意軟件的增強(qiáng)的保護(hù)?;谑褂脨阂廛浖袨橐?guī)則而對單獨(dú)的和合并的對象情境的分析,該系統(tǒng)能檢測到具有簡單的和復(fù)雜的行為模式的惡意對象。
文檔編號G06F21/55GK102651061SQ201210100140
公開日2012年8月29日 申請日期2012年4月6日 優(yōu)先權(quán)日2011年4月19日
發(fā)明者丹尼斯·A·納扎羅夫, 尤里·G·斯洛博迪亞努克, 弗拉季斯拉夫·V·馬蒂嫩科, 米哈伊爾·A·帕夫柳席奇卡, 阿列克謝·A·波利亞科夫 申請人:卡巴斯基實(shí)驗(yàn)室封閉式股份公司