專利名稱:惡意軟件保護(hù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件程序的惡意活動的方法。
背景技術(shù):
Malware是malicous software (惡意軟件)的縮寫,其用作一種術(shù)語,指示被設(shè)計(jì)為在未經(jīng)所有者同意的情況下潛入計(jì)算機(jī)系統(tǒng)或破壞計(jì)算機(jī)系統(tǒng)的任何軟件。惡意軟件可以包括計(jì)算機(jī)病毒、蠕蟲、特洛伊木馬、后門、廣告軟件、間諜軟件和任何其它惡意且討厭的軟件。當(dāng)設(shè)備被惡意軟件程序感染時(shí),因?yàn)楦腥究赡軇?chuàng)建討厭的處理器活動、存儲器使 用和網(wǎng)絡(luò)業(yè)務(wù),所以用戶經(jīng)常會注意到討厭行為和系統(tǒng)性能劣化。感染還可能會造成穩(wěn)定性問題,從而導(dǎo)致應(yīng)用程序或系統(tǒng)范圍上的崩潰。受感染設(shè)備的用戶可能錯誤地認(rèn)為低性能是由軟件缺陷或硬件問題導(dǎo)致的,從而采取不適當(dāng)?shù)难a(bǔ)救措施,但實(shí)際原因卻是用戶沒有意識到的惡意軟件感染。此外,即使惡意軟件感染不會在設(shè)備性能上造成可察覺的變化,其也可能會執(zhí)行其它惡意功能,比如潛在地監(jiān)視和竊取有價(jià)值的商業(yè)、個人和/或金融信息,或者劫持設(shè)備使得其用于一些非法目的。許多終端用戶使用防病毒軟件來檢測惡意軟件,可能地,去除惡意軟件。為了檢測惡意軟件文件,防病毒軟件必須具有從設(shè)備上存在的所有其它文件中識別出惡意軟件文件的方法。典型地,這需要防病毒軟件具有包括“簽名”或“指紋”的數(shù)據(jù)庫,這些“簽名”或“指紋”是各個惡意軟件程序文件的特性。當(dāng)防病毒軟件的供應(yīng)商識別到新的惡意軟件威脅時(shí),對威脅進(jìn)行分析且產(chǎn)生這種威脅的簽名。于是,惡意軟件“已知”,并且其簽名可以分發(fā)給終端用戶以更新其本地防病毒軟件數(shù)據(jù)庫。使用依靠簽名掃描來檢測惡意軟件的方法仍然使計(jì)算機(jī)易受到簽名還未被分析的“未知”惡意軟件程序的攻擊。為了解決這個問題,除了掃描惡意軟件簽名之外,大多數(shù)防病毒應(yīng)用程序附加地采用啟發(fā)式分析。這種方法包括一般規(guī)則的應(yīng)用,旨在將任意惡意軟件的行為與干凈/合法程序區(qū)分開來。例如,監(jiān)視PC上所有程序的行為,如果某程序試圖將數(shù)據(jù)寫入可執(zhí)行程序,則防病毒軟件可以將此行為標(biāo)記為可疑行為。啟發(fā)法可以基于諸如API調(diào)用、經(jīng)由互聯(lián)網(wǎng)發(fā)送數(shù)據(jù)的嘗試等行為。為了檢測和/或分析惡意軟件程序,通常有用的是在隔離的環(huán)境或測試系統(tǒng)(此外稱為虛擬機(jī)或仿真器)中運(yùn)行程序。虛擬機(jī)或仿真器包括模仿真實(shí)計(jì)算機(jī)系統(tǒng)的多種部件的功能的程序。例如,使用Linux 操作系統(tǒng)的計(jì)算機(jī)可以運(yùn)行模仿Windows 操作系統(tǒng)提供的環(huán)境的虛擬機(jī)。這可以包括CPU、存儲器、通信接口和任何關(guān)聯(lián)硬件的仿真。通過在仿真環(huán)境中運(yùn)行程序,任何惡意活動都可以被限制在虛擬環(huán)境中,而不會使底層計(jì)算機(jī)系統(tǒng)有風(fēng)險(xiǎn)。于是,可以觀察仿真環(huán)境內(nèi)的程序的行為,和用于將程序識別為惡意軟件的任何惡意軟件簽名或惡意行為。此外,對于已經(jīng)是惡意軟件的程序或者懷疑是惡意軟件的程序,防病毒工程師通常在仿真環(huán)境中運(yùn)行該程序,以分析或“調(diào)試”其行為。這允許防病毒工程師對惡意軟件程序進(jìn)行反向工程,從而確定檢測方法并為受程序感染的計(jì)算機(jī)殺毒。
因此,惡意軟件創(chuàng)建者試圖避免使用了仿真和/或調(diào)試技術(shù)的惡意軟件檢測和分析工具。為此,惡意軟件創(chuàng)建者設(shè)計(jì)了對何時(shí)在仿真環(huán)境中執(zhí)行和/或區(qū)域何時(shí)被調(diào)試進(jìn)行檢測的惡意軟件。如果這種惡意軟件程序確定其正在仿真環(huán)境中執(zhí)行和/或正被調(diào)試,就會盡快終止或者改變行為以不執(zhí)行任何惡意活動或可疑行為。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件程序的惡意活動的方法。根據(jù)本發(fā)明的第一方面,提供了一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件的方法,當(dāng)在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述惡意軟件時(shí),所述惡意軟件試圖阻止檢測或分析。所述方法包括確定可執(zhí)行文件是否應(yīng)該被識別為合法的,如果不是,則執(zhí)行所述可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示。優(yōu)選地,在非仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行該文件。 可以在計(jì)算機(jī)系統(tǒng)中執(zhí)行所述確定可執(zhí)行文件是否應(yīng)該被識別為合法的步驟。備選地,計(jì)算機(jī)系統(tǒng)向服務(wù)器發(fā)送可執(zhí)行文件或可執(zhí)行文件的標(biāo)識符,并從服務(wù)器接收對文件是否應(yīng)該被識別為合法的加以指示的響應(yīng)。所述確定可執(zhí)行文件是否應(yīng)該被識別為合法的步驟可以包括以下任一項(xiàng)確定標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果是,則將所述可執(zhí)行文件識別為合法的;確定標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果否,則將所述可執(zhí)行文件識別為合法的;以及確定關(guān)于可執(zhí)行文件的、包括對每個可執(zhí)行文件的合法性加以表示的值的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果是,確定與所述可執(zhí)行文件相關(guān)聯(lián)的值是否超過可執(zhí)行文件被認(rèn)為是合法時(shí)的閾值。所述向可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示的步驟可以包括在所述可執(zhí)行文件的執(zhí)行期間,攔截所述可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)之間的指定通信;以及利用對在仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。所述指定通信可以包括函數(shù)調(diào)用、消息和事件中的任一項(xiàng)。根據(jù)本發(fā)明的第二方面,提供了一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行第一方面的所有步驟。根據(jù)本發(fā)明的第三方面,提供了一種在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)的根據(jù)第二方面的計(jì)算機(jī)程序。根據(jù)本發(fā)明的第四方面,提供了一種計(jì)算機(jī)系統(tǒng)。所述計(jì)算機(jī)系統(tǒng)包括存儲器,存儲器存儲可執(zhí)行文件;以及處理器,用于確定所述可執(zhí)行文件是否應(yīng)該被識別為合法的;以及如果不是,則在計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示。處理器還可以被配置為產(chǎn)生包括所述可執(zhí)行文件或所述可執(zhí)行文件的標(biāo)識符的消息以發(fā)送至服務(wù)器,并處理從服務(wù)器接收的響應(yīng)以確定所述響應(yīng)是否指示文件應(yīng)該被識別為合法的。計(jì)算機(jī)系統(tǒng)還可以包括用于向服務(wù)器發(fā)送消息的發(fā)送機(jī)和用于從服務(wù)器接收響應(yīng)的接收機(jī)。存儲器還可以被配置為對標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫進(jìn)行存儲,以及處理器還可以被配置為確定所述標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫中是否包括可執(zhí)行文件的標(biāo)識符。備選地,存儲器還可以被配置為對標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫進(jìn)行存儲,以及處理器還可以被配置為確定所述標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫中是否包括可執(zhí)行文件的標(biāo)識符。作為另一備選,存儲器還可以被配置為存儲關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以及處理器還可以被配置為確定可執(zhí)行文件的數(shù)據(jù)庫中是否包括可執(zhí)行文件的標(biāo)識符。優(yōu)選地,處理器還可以被配置為,如果數(shù)據(jù)庫中包括可執(zhí)行文件的標(biāo)識符,則確定與可執(zhí)行文件相關(guān)聯(lián)的值是否超過了可執(zhí)行文件被認(rèn)為是合法時(shí)的閾值。處理器還可以被配置為在可執(zhí)行文件的執(zhí)行期間,攔截可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)之間的指定通信,并且利用對仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通 目。根據(jù)本發(fā)明的第五方面,提供了一種檢測潛在惡意軟件的方法。所述方法包括執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示,監(jiān)視所述可執(zhí)行文件的行為,以及確定所述行為是否與仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為相對應(yīng)。所述執(zhí)行可執(zhí)行文件同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示的步驟可以包括在非仿真計(jì)算機(jī)環(huán)境中執(zhí)行所述可執(zhí)行文件,在所述可執(zhí)行文件的執(zhí)行期間,攔截所述可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)之間的指定通信,以及利用對仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。備選地,所述執(zhí)行可執(zhí)行文件同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示的步驟可以包括在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件。仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為可以包括以下任一項(xiàng)試圖阻止執(zhí)行而不提供通知;試圖收集關(guān)于仿真計(jì)算機(jī)系統(tǒng)的信息;以及與非仿真計(jì)算機(jī)系統(tǒng)中可執(zhí)行文件的行為顯著不同。根據(jù)本發(fā)明的第六方面,提供了一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行第五方面的所有步驟。根據(jù)本發(fā)明的第七方面,提供了一種在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)的根據(jù)第六方面的計(jì)算機(jī)程序。根據(jù)本發(fā)明的第八方面,提供了一種計(jì)算機(jī)系統(tǒng)。所述計(jì)算機(jī)系統(tǒng)包括存儲器,存儲器存儲可執(zhí)行文件;以及處理器,用于執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示,監(jiān)視所述可執(zhí)行文件的行為,以及確定所述行為是否與仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為相對應(yīng)。處理器還可以被配置為在非仿真計(jì)算機(jī)環(huán)境中執(zhí)行所述可執(zhí)行文件,在所述可執(zhí)行文件的執(zhí)行期間,攔截所述可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)之間的指定通信,以及利用對仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。備選地,處理器還可以被配置為在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件。處理器還可以被配置為確定可執(zhí)行文件的行為是否包括以下任一項(xiàng)試圖阻止執(zhí)行而不提供通知;試圖收集關(guān)于仿真計(jì)算機(jī)系統(tǒng)的信息;以及與非仿真計(jì)算機(jī)系統(tǒng)中可執(zhí)行文件的行為顯著不同。根據(jù)本發(fā)明的第九方面,提供了一種維護(hù)關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫的方法,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以使多個計(jì)算機(jī)設(shè)備中的任一個能夠確定可執(zhí)行文件是否應(yīng)該被識別為合法的。所述方法包括,在基于網(wǎng)絡(luò)的服務(wù)偵U,從所述多個計(jì)算機(jī)設(shè)備中執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)設(shè)備接收關(guān)于可執(zhí)行文件的數(shù)據(jù),使用所述數(shù)據(jù)確定對可執(zhí)行文件的合法性加以表示的值,以及向所述多個計(jì)算機(jī)設(shè)備·中的任一個提供所述值。所述關(guān)于可執(zhí)行文件的數(shù)據(jù)可以包括以下任一項(xiàng)執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)的標(biāo)識符;與執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)觀察到的可執(zhí)行文件的任何可疑行為相關(guān)的/[目息;以及對執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)所確定的可執(zhí)行文件的合法性加以表示的值。所述使用數(shù)據(jù)確定對每個可執(zhí)行文件的合法性加以表示的值可以包括以下任一項(xiàng)確定執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)是否是可信的,并且基于執(zhí)行了可執(zhí)行文件的可信計(jì)算機(jī)系統(tǒng)的數(shù)目或比例來確定所述值;分析與執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)觀察到的可執(zhí)行文件的任何可疑行為相關(guān)的信息,并且基于所述可疑行為的數(shù)量、類型和程度來確定所述值;以及核對由執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)確定的值。根據(jù)本發(fā)明的第十方面,提供了一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行第九方面的所有步驟。根據(jù)本發(fā)明的第十一方面,提供了一種在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)的根據(jù)第十方面的計(jì)算機(jī)系統(tǒng)。根據(jù)本發(fā)明的第十二方面,提供了一種服務(wù)器,用于維護(hù)關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以使多個計(jì)算機(jī)設(shè)備中的任一個能夠確定可執(zhí)行文件是否應(yīng)該被識別為合法的。所述服務(wù)器包括接收機(jī),從所述多個計(jì)算機(jī)設(shè)備中執(zhí)行了可執(zhí)行文件的一個或多個計(jì)算機(jī)設(shè)備接收關(guān)于可執(zhí)行文件的數(shù)據(jù);處理器,使用信息確定對可執(zhí)行文件的合法性加以表示的值;以及發(fā)送機(jī),向所述多個計(jì)算機(jī)設(shè)備中的一個或多個計(jì)算機(jī)設(shè)備提供所述值。
圖I示意性示出了根據(jù)本發(fā)明實(shí)施例的惡意軟件保護(hù)系統(tǒng);圖2是示出了根據(jù)本發(fā)明實(shí)施例的一種保護(hù)計(jì)算機(jī)免于遭受惡意軟件的過程的流程圖3是示出了根據(jù)本發(fā)明實(shí)施例的一種執(zhí)行信譽(yù)檢查的過程的流程圖;圖4是示出了根據(jù)本發(fā)明實(shí)施例的一種執(zhí)行信譽(yù)檢查的過程的流程圖;圖5是示出了根據(jù)本發(fā)明實(shí)施例的一種保護(hù)計(jì)算機(jī)免于遭受惡意軟件的過程的流程圖;圖6是示出了根據(jù)本發(fā)明實(shí)施例的一種檢測潛在惡意軟件的過程的流程圖。
具體實(shí)施例方式已認(rèn)識到,可以通過使得看起來計(jì)算機(jī)上的所有程序在虛擬環(huán)境中運(yùn)行而不是在實(shí)際計(jì)算機(jī)系統(tǒng)上運(yùn)行,來提高計(jì)算機(jī)系統(tǒng)的安全性。這樣做的話,計(jì)算機(jī)系統(tǒng)上被設(shè)計(jì)為避免虛擬環(huán)境中的檢測的任何惡意軟件很可能不執(zhí)行會暴露其存在或允許其被分析的任何惡意活動。惡意軟件程序會被有效地失效。這可以通過“偽造”對程序正在虛擬環(huán)境中執(zhí)行加以指示的那些特性來完成。然而,作為一種版權(quán)保護(hù)方法,許多合法/可信任的程序也被設(shè)計(jì)為阻止自己在虛擬環(huán)境中執(zhí)行,以防止用戶使用仿真來繞開試用期結(jié)束或逃避支 付軟件許可費(fèi)。因此,不希望偽造針對計(jì)算機(jī)系統(tǒng)上運(yùn)行的所有程序的仿真,因?yàn)檫@對于運(yùn)行這些合法程序的計(jì)算機(jī)系統(tǒng)能力而言是有害的。為了至少部分地克服上述問題,本文提出了檢查可執(zhí)行文件的信譽(yù)(reputation),如果確定文件可能是或者很可能是惡意軟件(例如,如果不知道其是良性的/合法的),則執(zhí)行可執(zhí)行文件且將仿真模仿應(yīng)用于該可執(zhí)行文件。然而,如果確定可執(zhí)行文件是合法的或低風(fēng)險(xiǎn)的,則在計(jì)算機(jī)系統(tǒng)中執(zhí)行可執(zhí)行文件,而不將任何仿真模仿應(yīng)用于此可執(zhí)行文件。這樣做的話,本發(fā)明使得使用合法目的的仿真檢測的合法程序的執(zhí)行將不受影響,同時(shí)也使得具備仿真檢測的任何惡意軟件可執(zhí)行文件由于相信其需要逃避檢測、殺毒或分析而不大可能執(zhí)行它們惡意代碼。圖I示意性地示出了根據(jù)本發(fā)明實(shí)施例的惡意軟件保護(hù)系統(tǒng)。惡意軟件保護(hù)系統(tǒng)包括經(jīng)由諸如互聯(lián)網(wǎng)或LAN等網(wǎng)絡(luò)3與中央防病毒服務(wù)器2相連的至少一個計(jì)算機(jī)系統(tǒng)I。計(jì)算機(jī)系統(tǒng)I可以實(shí)現(xiàn)為計(jì)算機(jī)硬件和軟件的組合。計(jì)算機(jī)系統(tǒng)I包括存儲器4、處理器5和收發(fā)機(jī)6。存儲器4存儲處理器5實(shí)施的多種程序/可執(zhí)行文件。存儲器4還提供存儲單元7,用于任何需要數(shù)據(jù),比如可執(zhí)行文件信譽(yù)數(shù)據(jù)、惡意軟件定義數(shù)據(jù)、啟發(fā)式分析規(guī)貝U、白名單、黑名單等等。存儲器4中存儲的由處理器5實(shí)施的程序/可執(zhí)行文件包括信譽(yù)確定單元8、仿真模仿單元9,并可選地包括仿真器10,所有這些都可以是防病毒單元11的子單元。收發(fā)機(jī)6用于經(jīng)由網(wǎng)絡(luò)3與中央防病毒服務(wù)器2進(jìn)行通信。典型地,由計(jì)算機(jī)I上運(yùn)行的防病毒單元11的供應(yīng)商來操作中央防病毒服務(wù)器2。備選地,中央防病毒服務(wù)器2可以由網(wǎng)絡(luò)管理員或監(jiān)控員的服務(wù)器,計(jì)算機(jī)I是監(jiān)控員負(fù)責(zé)的網(wǎng)絡(luò)的一部分。中央防病毒服務(wù)器2可以實(shí)現(xiàn)為計(jì)算機(jī)硬件和軟件的組合。中央防病毒服務(wù)器2包括存儲器11、處理器12、收發(fā)機(jī)13和數(shù)據(jù)庫14。存儲器11存儲由處理器12實(shí)施的多種程序/可執(zhí)行文件。存儲器11中存儲的由處理器12實(shí)施的程序/可執(zhí)行文件包括信譽(yù)確定單元15、仿真模仿單元16,以及可選地,包括仿真器17,所有這些可以是防病毒單元18的子單元。這些程序/單元可以與計(jì)算機(jī)系統(tǒng)I中實(shí)現(xiàn)的那些程序相同,或者可以是可與計(jì)算機(jī)系統(tǒng)I中實(shí)現(xiàn)的程序進(jìn)行接口相連和合作的不同程序。收發(fā)機(jī)13用于經(jīng)由網(wǎng)絡(luò)3與計(jì)算機(jī)系統(tǒng)I進(jìn)行通信。數(shù)據(jù)庫14存儲最近的可執(zhí)行文件信譽(yù)數(shù)據(jù),惡意軟件定義數(shù)據(jù)、啟發(fā)式分析規(guī)則、白名單、黑名單等。圖2是示出了根據(jù)本發(fā)明實(shí)施例的一種保護(hù)計(jì)算機(jī)免于遭受惡意軟件的過程的流程圖。執(zhí)行步驟如下Al.計(jì)算機(jī)系統(tǒng)I發(fā)起可執(zhí)行文件的檢查。例如,可以由于可執(zhí)行文件的接收、可執(zhí)行文件的即將運(yùn)行/執(zhí)行而發(fā)起檢查,或者可以作為對計(jì)算機(jī)系統(tǒng)I上可執(zhí)行文件的要求掃描或計(jì)劃掃描的一部分來發(fā)起檢查。A2.計(jì)算機(jī)系統(tǒng)I的信譽(yù)確定單元8檢查可執(zhí)行文件的信譽(yù)。A3.如果信譽(yù)確定單元8確定文件可能是或很可能是惡意軟件,則計(jì)算機(jī)系統(tǒng)I執(zhí)行可執(zhí)行文件,同時(shí)仿真模仿單元9向可執(zhí)行文件提供所述可執(zhí)行文件正在仿真環(huán)境中運(yùn)行的指示。
A4.如果信譽(yù)確定單元8確定文件是或很可能是合法的/可信任的,則在計(jì)算機(jī)系統(tǒng)中執(zhí)行可執(zhí)行文件,而不將任何仿真模仿應(yīng)用于此可執(zhí)行文件。在本發(fā)明的一個可能實(shí)施例中,可以通過將文件的標(biāo)識符(即,文件名、文件自身或系統(tǒng)中的文件位置/路徑的散列)與被認(rèn)為是合法的可執(zhí)行文件的標(biāo)識符的列表(或稱為許可名單或白名單)相比較來檢查可執(zhí)行文件的信譽(yù)。如果文件被識別為在白名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I允許文件在真實(shí)(即,與虛擬相反的)環(huán)境中執(zhí)行,而無任何有效的仿真指示符。如果文件被識別為不在白名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I執(zhí)行文件且使任何仿真指示符有效,作為針對潛在惡意行為的預(yù)防措施。當(dāng)然,程序/可執(zhí)行文件包括任何類型的可執(zhí)行文件,比如二進(jìn)制文件、腳本文件、應(yīng)用文件、動態(tài)鏈接庫、宏、XML等。備選地,或者除了比照文件白名單來檢查文件之外,還可以比照不認(rèn)為是合法的或者認(rèn)為是高風(fēng)險(xiǎn)的可執(zhí)行文件的標(biāo)識符列表(也稱為阻止名單或黑名單)來比較文件標(biāo)識符。對于被識別為處于黑名單上的這些文件,可以配置或命令計(jì)算機(jī)系統(tǒng)I在真實(shí)計(jì)算機(jī)系統(tǒng)環(huán)境中執(zhí)行文件且使任何仿真指示符有效,作為針對潛在惡意行為的預(yù)防措施。換句話說,禁止文件在不受保護(hù)的系統(tǒng)中執(zhí)行。如果文件被識別為不在黑名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I執(zhí)行文件,而無任何有效的仿真指示符。備選地,如果文件被識別為既不在白名單上也不在黑名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I提示用戶選擇是否應(yīng)該執(zhí)行文件,或者提示用戶選擇是應(yīng)該在具有有效仿真指示符的情況下還是在沒有有效仿真指示符的情況下執(zhí)行文件。備選地,或者除了比照文件白名單來檢查文件之外,還可以比照不認(rèn)為是合法的或者認(rèn)為是高風(fēng)險(xiǎn)的可執(zhí)行文件的標(biāo)識符列表(也稱為阻止名單或黑名單)來比較文件標(biāo)識符。對于被識別為處于黑名單上的這些文件,可以配置或命令計(jì)算機(jī)系統(tǒng)I在真實(shí)計(jì)算機(jī)系統(tǒng)環(huán)境中執(zhí)行文件且使任何仿真指示符有效,作為針對潛在惡意行為的預(yù)防措施。換句話說,禁止文件在不受保護(hù)的系統(tǒng)中執(zhí)行。如果文件被識別為不在黑名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I執(zhí)行文件,而無任何有效的仿真指示符。備選地,如果文件被識別為既不在白名單上也不在黑名單上,則可以配置或命令計(jì)算機(jī)系統(tǒng)I提示用戶選擇是否應(yīng)該執(zhí)行文件,或者提示用戶選擇是應(yīng)該在具有有效仿真指示符的情況下還是在沒有有效仿真指示符的情況下執(zhí)行文件??梢愿鶕?jù)需要的安全級別來配置系統(tǒng)對待未知文件的方法。例如,圖3是示出了根據(jù)本發(fā)明實(shí)施例的一種執(zhí)行信譽(yù)檢查的過程的流程圖。執(zhí)行的步驟如下BI.計(jì)算機(jī)系統(tǒng)I發(fā)起可執(zhí)行文件的檢查。B2.信譽(yù)確定單元8 (例如,計(jì)算機(jī)系統(tǒng)I的或者服務(wù)器2的)在合法/可信可執(zhí)行文件的白名單中查找可執(zhí)行文件的標(biāo)識符。B3.如果文件被識別為位于白名單上,則確定此文件是合法的。B4.如果文件被識別為不在白名單上,則確定此文件可能是惡意軟件。B5.備選地,如果可執(zhí)行文件的黑名單也可用,則信譽(yù)確定單元8在違禁/可疑可執(zhí)行文件的黑名單中查找可執(zhí)行文件的標(biāo)識符。如果文件被識別為位于黑名單上,則確定此文件可能是惡意軟件(按照步驟B4)。
B6.如果文件被識別為既不在白名單上也不在黑名單上,則確定此文件未知。當(dāng)然,也可以對這些過程進(jìn)行任何其它改變。例如,被識別為處于黑名單上的任何文件可以被阻止執(zhí)行或者可以在虛擬環(huán)境中執(zhí)行,而可以在實(shí)際環(huán)境中執(zhí)行未知文件(例如,那些既不在白名單上也不在黑名單上的文件),同時(shí)將仿真模仿應(yīng)用于這些未知文件。備選地,最初可以在虛擬環(huán)境中執(zhí)行任意未知文件,并分析以通過檢查惡意軟件簽名或惡意行為來確定這些未知文件是否可以被信任的。如果這個分析確定未知文件不是可疑的或者未知文件是惡意軟件的風(fēng)險(xiǎn)低,則可以允許這個文件在實(shí)際環(huán)境中運(yùn)行,同時(shí)具有或不具有仿真模仿。然后,如果可應(yīng)用,可以將該文件的標(biāo)識符添加到白名單。相反,如果先前的未知文件的分析確定文件應(yīng)被認(rèn)為是可疑的,則可以阻止這個文件執(zhí)行,或者可以限制這個文件在仿真模仿有效的情況下在實(shí)際環(huán)境中執(zhí)行。還可以將可疑文件的標(biāo)識符添加到黑名單中。作為白名單和黑名單的備選方式,信譽(yù)檢查可以使用可執(zhí)行文件標(biāo)識符列表,其中,列表中的每個可執(zhí)行文件與對文件是惡意軟件的風(fēng)險(xiǎn)/概率加以表示的信譽(yù)分?jǐn)?shù)或等級相關(guān)聯(lián)??梢曰诳蓤?zhí)行文件的一些先前分析的結(jié)果來確定這個分?jǐn)?shù)或等級。例如,圖4是示出了根據(jù)本發(fā)明實(shí)施例的一種執(zhí)行信譽(yù)檢查的過程的流程圖。當(dāng)需要可執(zhí)行文件的信譽(yù)檢查時(shí),在可執(zhí)行文件數(shù)據(jù)庫中查找以確定文件是否在數(shù)據(jù)庫中具有條目(步驟C2)。如果文件不在數(shù)據(jù)庫中(即,文件先前未被計(jì)算機(jī)系統(tǒng)執(zhí)行過),則在計(jì)算機(jī)系統(tǒng)/服務(wù)器提供的實(shí)際環(huán)境內(nèi)或者在計(jì)算機(jī)系統(tǒng)/服務(wù)器實(shí)現(xiàn)的仿真環(huán)境內(nèi)執(zhí)行該文件,并且監(jiān)視程序的行為(步驟C3)。然后,對這個行為進(jìn)行針對可疑行為的分析,并根據(jù)任何可疑行為的數(shù)量、類型和程度來給予這個行為合法性/可信度分?jǐn)?shù)(步驟C4)。然后,將該分?jǐn)?shù)供給中央服務(wù)器,將該分?jǐn)?shù)與針對該相同可執(zhí)行文件計(jì)算的/接收的任何其它分?jǐn)?shù)相核對,并將核對的分?jǐn)?shù)分發(fā)給在網(wǎng)絡(luò)中的其它計(jì)算機(jī)系統(tǒng)(步驟C5)。一旦可執(zhí)行文件的條目已加入到數(shù)據(jù)庫中,數(shù)據(jù)庫的任何后續(xù)檢查都將識別出數(shù)據(jù)庫中該文件的條目,且可以獲取該可執(zhí)行文件的概率值(步驟C6)。然后,可以將這個獲取的值與閾值相比較(步驟C7)。如果獲取的值超過閾值,則應(yīng)該將可執(zhí)行文件當(dāng)作可疑惡意軟件來對待(步驟CS),并僅僅在仿真模仿有效的情況下執(zhí)行該可執(zhí)行文件。如果獲取的值沒有超出閾值,則應(yīng)該認(rèn)為可執(zhí)行文件是可信的(步驟C9),可以執(zhí)行該可執(zhí)行文件,而不使仿真模仿有效??梢酝ㄟ^核對其它計(jì)算機(jī)系統(tǒng)和/或服務(wù)器所執(zhí)行的行為分析結(jié)果,來持續(xù)更新特定文件的信譽(yù)分?jǐn)?shù)。此外,單獨(dú)計(jì)算機(jī)使用的閾值分?jǐn)?shù)可以取決于任何數(shù)目的因素(例如,取決于用戶期望的安全級別),并且可以隨各個單獨(dú)計(jì)算機(jī)而發(fā)生改變。可以根據(jù)已安裝和/或運(yùn)行可執(zhí)行文件且將此報(bào)告給了中央服務(wù)器的計(jì)算機(jī)系統(tǒng)的信譽(yù),來確定信譽(yù)分?jǐn)?shù),和/或信譽(yù)分?jǐn)?shù)可以隨這些計(jì)算機(jī)系統(tǒng)的信譽(yù)而改變。例如,如果中央服務(wù)器從已知是可信計(jì)算機(jī)系統(tǒng)(比如,這些計(jì)算機(jī)系統(tǒng)屬于可信軟件開發(fā)商或其它可信實(shí)體)接收到已安裝和/或運(yùn)行了特定可執(zhí)行文件的多個報(bào)告,則該可執(zhí)行文件的信譽(yù)分?jǐn)?shù)將提高。具體地,惡意軟件保護(hù)系統(tǒng)給予這種可執(zhí)行文件的信譽(yù)分?jǐn)?shù)將高于該系統(tǒng)僅僅剛知道的可執(zhí)行文件的信譽(yù)分?jǐn)?shù)??梢杂捎?jì)算機(jī)I在本地檢查可執(zhí)行文件信譽(yù),也可以由中央服務(wù)器2進(jìn)行遠(yuǎn)程檢查,或者可以是這二者的組合。當(dāng)在本地檢查時(shí),根據(jù)信譽(yù)檢查是如何執(zhí)行的,計(jì)算機(jī)系統(tǒng)I可以使用從中央服務(wù)器2接收的信譽(yù)信息且將其存儲在自己的存儲器內(nèi)。當(dāng)進(jìn)行遠(yuǎn)程檢查時(shí),計(jì)算機(jī)系統(tǒng)I可以向中央服務(wù)器2發(fā)送可執(zhí)行文件或關(guān)于該文件的信息,以使中央服務(wù)器2檢查文件信譽(yù)。例如,計(jì)算機(jī)系統(tǒng)I可以向服務(wù)器發(fā)送文件的標(biāo)識符,服務(wù)器將比照合法可執(zhí)行文件的數(shù)據(jù)庫來檢查此標(biāo)識符。然后,服務(wù)器2向計(jì)算機(jī)系統(tǒng)I作出響應(yīng),通知 檢查結(jié)果和/或提供關(guān)于應(yīng)該如何執(zhí)行該文件的指令??梢栽诮邮盏娇蓤?zhí)行文件時(shí)(即,當(dāng)從互聯(lián)網(wǎng)或電子郵件下載文件時(shí),或者當(dāng)從某一計(jì)算機(jī)可讀介質(zhì)向計(jì)算機(jī)系統(tǒng)傳送文件時(shí)),或響應(yīng)于對執(zhí)行/運(yùn)行該文件的請求,來執(zhí)行信譽(yù)檢查。也可以將檢查作為計(jì)算機(jī)系統(tǒng)I的計(jì)劃掃描的一部分來執(zhí)行,或者可以在用戶請求時(shí)執(zhí)行檢查。然而,優(yōu)選地,在文件的第一次執(zhí)行之前執(zhí)行檢查。存在惡意軟件創(chuàng)建者用來使惡意軟件程序能夠確定其在仿真環(huán)境中運(yùn)行的多種技術(shù),因此,這可以用來欺騙惡意軟件,使其確定自己正在仿真環(huán)境中運(yùn)行。盡管仿真器的行為應(yīng)該與實(shí)際計(jì)算機(jī)系統(tǒng)的行為基本相同,但是難以在仿真環(huán)境中實(shí)現(xiàn)所有真實(shí)功能性。例如,處理限制可以阻止仿真環(huán)境模仿操作系統(tǒng)提供的所有功能性。因此,在仿真器的響應(yīng)與實(shí)際計(jì)算機(jī)系統(tǒng)的響應(yīng)之間幾乎總是存在行為上的差異,因此,程序可以將這些差異用于確定自己何時(shí)在仿真環(huán)境中執(zhí)行。例如,惡意軟件程序可以被設(shè)計(jì)成調(diào)用不常見或很少使用的指令,因?yàn)檫@些指令幾乎從未被其它程序使用和/或太難被仿真,所以這些指令可能不被仿真器所支持。因此,調(diào)用這些功能將很有可能使仿真器拋出異常。于是,惡意軟件程序可以使用這個異常,作為其正被仿真的指示。惡意軟件程序還可以通過試圖訪問網(wǎng)頁從而確定其是否可以訪問互聯(lián)網(wǎng),來試圖對仿真進(jìn)行檢測。因?yàn)榇蠖鄶?shù)仿真器不允許訪問互聯(lián)網(wǎng),所以惡意軟件可以將此用作其正在仿真器中執(zhí)行的指示。此外,許多惡意軟件程序使用返回計(jì)算機(jī)系統(tǒng)IP地址的調(diào)用來確定其是否可以訪問互聯(lián)網(wǎng)。同樣,因?yàn)榇蠖鄶?shù)仿真器不允許訪問互聯(lián)網(wǎng),所以仿真器很可能無法成功地返回IP地址。因此,惡意軟件程序可以將此用作其正在仿真環(huán)境中執(zhí)行的指
/Jn ο檢測仿真器是否在運(yùn)行的備選方法是多于一次地調(diào)用函數(shù),函數(shù)應(yīng)該響應(yīng)于每次調(diào)用而返回不同值。例如,這可以包括,將提供某一時(shí)間相關(guān)響應(yīng)的函數(shù)調(diào)用兩次,并且驗(yàn)證兩個返回值之間是否存在差異。在Microsoft Windows 中,這可以通過使用QueryPerformanceCounter API 或 GetTickCount API 來實(shí)現(xiàn),或者通過使用 RDTSC (讀取時(shí)間戳計(jì)數(shù)器)指令查詢自機(jī)器啟動以來處理器執(zhí)行的周期的當(dāng)前數(shù)目來實(shí)現(xiàn)。例如,可以調(diào)用RDTSC兩次,并計(jì)算兩個返回值之差。然后,可以將這個差與閾值相比較,如果差比閾值大,則可以確定文件當(dāng)前正在仿真器中執(zhí)行??蓤?zhí)行文件可用來確定其是否正在仿真環(huán)境中執(zhí)行的其它方法有很多,這些方法不斷擴(kuò)展以包括新方法。例如,用于檢測仿真的一些其它方法包括 針對特定注冊表鍵值(例如,關(guān)于VMWare 工具等的注冊表鍵值等)的存在來檢查注冊表; 檢查安裝的特定應(yīng)用程序(例如,內(nèi)存轉(zhuǎn)儲工具、分析工具、調(diào)試器等)的存在; 檢查斷點(diǎn);以及 檢查中斷描述符表(IDTR)或其它軟件寄存器的位置。為了對通常指示仿真的特性進(jìn)行偽造,計(jì)算機(jī)系統(tǒng)可以鉤住由選定的可執(zhí)行文件·使用的API (應(yīng)用程序接口)(即,使可執(zhí)行文件能夠檢查文件系統(tǒng)、注冊表?xiàng)l目、互斥等,以及可執(zhí)行文件可以用于檢測仿真或其它惡意軟件分析工具的任何對象)。然后,計(jì)算機(jī)系統(tǒng)可以向選定可執(zhí)行文件的運(yùn)行時(shí)代碼提供信息,使得看起來就像文件正在仿真環(huán)境中執(zhí)行一樣。這允許計(jì)算機(jī)系統(tǒng)偽造選定文件的仿真,同時(shí)不影響向不認(rèn)為是風(fēng)險(xiǎn)的那些可執(zhí)行文件提供的信息。術(shù)語鉤住(hooking)涵蓋了一系列的技術(shù),用于通過攔截軟件組件之間傳遞的函數(shù)調(diào)用、消息或事件來改變或添加程序(操作系統(tǒng)或應(yīng)用程序)的行為。鉤住機(jī)制使得無論何時(shí)程序接收到特定消息或特定事件,都能夠指定代碼段來運(yùn)行。例如,在Microsoft Windows 中,SetWindowsHookEx()Win32API 調(diào)用使得目標(biāo)過程將指定的DLL加載到其存儲空間中并選擇指定的函數(shù),作為針對特定事件的鉤子。當(dāng)接收到適當(dāng)事件時(shí),目標(biāo)過程將執(zhí)行代碼。例如,如果對特定可執(zhí)行文件的信譽(yù)檢查確定應(yīng)該執(zhí)行此文件并將仿真模仿應(yīng)用于此文件,則計(jì)算機(jī)系統(tǒng)I可以鉤住可執(zhí)行文件運(yùn)行時(shí)代碼進(jìn)行的任何調(diào)用,以獲取計(jì)算機(jī)系統(tǒng)IP地址(例如,GetIpAddrTable API或GetHostByName API)并返回異常。這樣做的話,計(jì)算機(jī)系統(tǒng)I可以欺騙惡意軟件程序,使得惡意軟件程序確定自己正在仿真器中執(zhí)行。備選地,一些惡意軟件程序被設(shè)計(jì)為在特定國家中不執(zhí)行任何惡意功能。原因可能是特定國家的當(dāng)局可能更積極地識別和懲罰惡意軟件創(chuàng)作者。因此,這些惡意軟件程序可以請求計(jì)算機(jī)系統(tǒng)的IP地址,以確定計(jì)算機(jī)系統(tǒng)當(dāng)前所處的國家。因此,計(jì)算機(jī)系統(tǒng)I可以利用對計(jì)算機(jī)正處于這樣的一個國家加以指示的IP地址進(jìn)行響應(yīng),從而阻止惡意軟件執(zhí)行任何惡意功能。圖5是示出了根據(jù)本發(fā)明實(shí)施例的一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件的過程的流程圖。執(zhí)行的步驟如下Dl.信譽(yù)確定單元8對可執(zhí)行文件的信譽(yù)檢查確定,文件可能是惡意軟件。例如,文件不在白名單上或者出現(xiàn)在黑名單上。D2.因此,命令或配置計(jì)算機(jī)系統(tǒng)I應(yīng)用惡意軟件保護(hù)過程,且在實(shí)際/非仿真的計(jì)算機(jī)系統(tǒng)環(huán)境中執(zhí)行可執(zhí)行文件。D3.仿真模仿單元9在文件的執(zhí)行期間鉤住可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)I之間的某些指定通信。這些指定通信可以包括與惡意軟件的反仿真功能相關(guān)的任何函數(shù)調(diào)用、消息和事件。
D4.仿真模仿單元9實(shí)施的鉤住允許攔截其任何相關(guān)通信。D5.對于任何攔截的通信,仿真模仿單元9利用數(shù)據(jù)進(jìn)行響應(yīng),該數(shù)據(jù)向可執(zhí)行文件指示其正在仿真環(huán)境中運(yùn)行,盡管實(shí)際上可執(zhí)行文件正在非仿真的計(jì)算機(jī)系統(tǒng)環(huán)境中運(yùn)行。這些仿真指示符欺騙可執(zhí)行文件,使可執(zhí)行文件確定自己正在仿真環(huán)境中執(zhí)行,從而使得可執(zhí)行文件不執(zhí)行任何惡意功能。D6.終止可執(zhí)行文件的執(zhí)行。例如,可執(zhí)行文件可以響應(yīng)于確定自己正被仿真中而自己終止,可以在文件執(zhí)行結(jié)束時(shí)終止,或者可以由計(jì)算機(jī)系統(tǒng)終止。如上所述,保護(hù)計(jì)算機(jī)免于遭受惡意軟件的常規(guī)方法依賴于,通過使用惡意軟件簽名或通過對認(rèn)為是指示惡意功能的行為進(jìn)行識別,來檢測惡意軟件。然而,惡意軟件創(chuàng)作者使用多種技術(shù)來避免這些檢測方法。因此,這些惡意軟件檢測方法可能無法檢測惡意軟件程序,因而這些惡意軟件程序可以繼續(xù)運(yùn)行惡意功能。本文所述的方法使得計(jì)算機(jī)系統(tǒng) 即使還未檢測到惡意軟件程序的存在,也可以利用惡意軟件反仿真功能作為使惡意軟件程序的惡意功能失效或去激活的手段。此外,這些方法還使得不影響也實(shí)現(xiàn)反仿真功能的合法應(yīng)用程序。除了將惡意軟件的反仿真功能用作保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意行為的手段之夕卜,本文還提出將反仿真行為的檢測用作確定是否應(yīng)該將可執(zhí)行文件認(rèn)為是可疑的一種手段。盡管合法可執(zhí)行文件和惡意可執(zhí)行文件都可以實(shí)施反仿真功能,但是在檢測到仿真時(shí)它們的行為可能顯著不同。合法程序通常拒絕啟動,并顯示應(yīng)用程序不在仿真環(huán)境中運(yùn)行的通知。相反,惡意軟件程序通常保持安靜或顯著地改變其行為。因此,對于在仿真環(huán)境中或者在仿真模仿有效的真實(shí)環(huán)境中執(zhí)行的可執(zhí)行文件而言,這種反仿真行為的存在指示了文件可能是惡意軟件。例如,圖6是示出了根據(jù)本發(fā)明實(shí)施例的一種檢測潛在惡意軟件的過程的流程圖。執(zhí)行的步驟如下El.要由計(jì)算機(jī)系統(tǒng)I執(zhí)行的可執(zhí)行文件被確定是惡意軟件保護(hù)系統(tǒng)未知的。E2.在這種情況下,用戶或惡意軟件保護(hù)系統(tǒng)可以確定是在仿真環(huán)境內(nèi)執(zhí)行文件,或者在真實(shí)環(huán)境中執(zhí)行文件且將仿真模仿應(yīng)用于文件。這種執(zhí)行在中央服務(wù)器2或在計(jì)算機(jī)系統(tǒng)I處進(jìn)行。E3.惡意軟件保護(hù)系統(tǒng)監(jiān)視可執(zhí)行文件的執(zhí)行。E4.惡意軟件保護(hù)系統(tǒng)確定可執(zhí)行文件是否在執(zhí)行期間顯示出任何反仿真行為。E5.如果可執(zhí)行文件在執(zhí)行期間顯示出反仿真行為,則確定可執(zhí)行文件是可疑的,因而可執(zhí)行文件可能是惡意軟件。E6.如果可執(zhí)行文件在執(zhí)行期間沒有顯示出任何明顯的反仿真行為,則惡意軟件保護(hù)系統(tǒng)將確定是否需要進(jìn)一步的分析。例如,惡意軟件保護(hù)系統(tǒng)可以確定需要比較可執(zhí)行文件相信自己正在仿真環(huán)境中執(zhí)行時(shí)該可執(zhí)行文件的行為與該可執(zhí)行文件相信自己正在非仿真環(huán)境中執(zhí)行時(shí)該可執(zhí)行文件的行為。E7.如果確定需要進(jìn)一步的分析,則惡意軟件保護(hù)系統(tǒng)可以修改在可執(zhí)行文件先前的執(zhí)行期間已向可執(zhí)行文件提供的數(shù)據(jù)。例如,惡意軟件保護(hù)系統(tǒng)可以“關(guān)閉”一些或所有仿真指示,使得可執(zhí)行文件確定自己沒有被仿真。然后,這個過程返回步驟D2,執(zhí)行文件。ES.如果可執(zhí)行文件沒有顯示出任何顯著反仿真行為并且不需要進(jìn)一步的分析,則惡意軟件保護(hù)系統(tǒng)可以將文件識別為合法/可信任,或者至少識別為是惡意軟件的概率低。如果文件是合法的,則期望產(chǎn)生關(guān)于文件不在仿真環(huán)境中運(yùn)行的通知,或者期望顯示出一致的行為,不論文件是否具有其在仿真環(huán)境中運(yùn)行或在非仿真環(huán)境中運(yùn)行的指示。如果文件是惡意軟件,則期望不運(yùn)行且不提供任何通知,或者期望其顯示出的行為依據(jù)文件是否具有其在仿真環(huán)境中運(yùn)行或在非仿真環(huán)境中運(yùn)行的指示而不同。根據(jù)該行為分析的結(jié)果,如果適當(dāng),則可以將文件的標(biāo)識符添加到白名單或黑名單中,并將更新的名單從中央服務(wù)器分發(fā)至各個單獨(dú)計(jì)算機(jī)系統(tǒng)。備選地,如上所述,這種分析可以確定可執(zhí)行文件的信譽(yù)分?jǐn)?shù),然后可以以文件信譽(yù)列表或數(shù)據(jù)庫的形式向計(jì)算機(jī)系統(tǒng)提供這個信息。作為另一示例,一些惡意軟件程序還可能被設(shè)計(jì)為收集與防病毒軟件使用的仿真環(huán)境有關(guān)的信息。當(dāng)確定自己正在仿真環(huán)境中運(yùn)行時(shí),這種惡意軟件程序試圖從該仿真環(huán)境中收集盡可能多的信息,并且向惡意軟件創(chuàng)作者可訪問的位置(例如,創(chuàng)作者家庭服務(wù)器)發(fā)送這個信息。因此,惡意軟件保護(hù)系統(tǒng)可以監(jiān)視正在仿真環(huán)境中運(yùn)行的可執(zhí)行文件 的行為或者監(jiān)視正在真實(shí)環(huán)境中運(yùn)行的應(yīng)用了仿真模仿的可執(zhí)行文件的行為,以確定可執(zhí)行文件是否執(zhí)行了大量信息收集操作并試圖連接至遠(yuǎn)程位置。如果是,則可以認(rèn)為這個可執(zhí)行文件是可疑的,并且是惡意軟件的風(fēng)險(xiǎn)高。本文提出的惡意軟件檢測方法使計(jì)算機(jī)系統(tǒng)可以利用惡意軟件反仿真功能作為用于確定是否應(yīng)該認(rèn)為可執(zhí)行文件可疑的一種手段,因此,這可以用作一種反饋以確定應(yīng)該如何執(zhí)行可執(zhí)行文件的其它實(shí)例。這個方法克服了惡意檢測方法依賴于對惡意軟件簽名或惡意軟件的惡意/侵略性活動進(jìn)行識別的此類限制,且將惡意軟件自己的防御機(jī)制用作檢測的手段。一些惡意軟件程序被設(shè)計(jì)成,如果認(rèn)為自己運(yùn)行在仿真環(huán)境中,則通過執(zhí)行旨在損毀仿真器或阻止仿真器對其進(jìn)行分析的動作來進(jìn)行報(bào)復(fù)。例如,在檢測仿真時(shí),報(bào)復(fù)性惡意軟件程序可以通過試圖刪除計(jì)算機(jī)系統(tǒng)中的所有文件或試圖破壞操作系統(tǒng)的功能來進(jìn)行反擊。然而,這種報(bào)復(fù)性惡意軟件程序極少,原因在于這種行為將暴露惡意軟件程序的存在。在任何情況下,如果本發(fā)明的惡意軟件保護(hù)系統(tǒng)遭遇這種報(bào)復(fù)性惡意軟件程序,則系統(tǒng)可以被配置為對其仿真設(shè)置進(jìn)行適當(dāng)調(diào)整以終止攻擊性行為,并且可以將這種報(bào)復(fù)性行為用作檢測惡意軟件的一種手段。例如,惡意軟件保護(hù)系統(tǒng)可以使用主機(jī)入侵防止機(jī)制來對報(bào)復(fù)性行為作出響應(yīng),從而阻止惡意軟件繼續(xù)進(jìn)行任何刪除操作,或者簡單地阻止惡意軟件程序的任何進(jìn)一步執(zhí)行。本領(lǐng)域技術(shù)人員應(yīng)意識到,在不背離本發(fā)明的范圍的情況下,可以對上述實(shí)施例進(jìn)行多種修改。例如,盡管上述實(shí)施例具體描述了使用惡意軟件的反仿真功能來阻止惡意行為和/或檢測惡意軟件的有無,但是還包括使用任何惡意軟件反調(diào)試功能。調(diào)試惡意軟件包括分析惡意軟件程序的行為和功能以理解如何檢測惡意軟件程序和/或?qū)ζ錃⒍?,惡意軟件?chuàng)作者通常將其惡意軟件設(shè)計(jì)成防止調(diào)試。惡意軟件采用的反調(diào)試功能與其反仿真功能相對應(yīng),并且可以包括檢測調(diào)試器,當(dāng)被調(diào)試時(shí)拒絕執(zhí)行,當(dāng)被調(diào)試時(shí)阻止任何惡意功能的執(zhí)行,阻止調(diào)試器程序附著于惡意軟件程序,阻礙調(diào)試過程等。
權(quán)利要求
1.一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件的方法,當(dāng)在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行惡意軟件時(shí),所述惡意軟件試圖阻止檢測或分析,所述方法包括 確定是否應(yīng)該將可執(zhí)行文件識別為合法的;以及 如果不是,則執(zhí)行所述可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)內(nèi)執(zhí)行的指示。
2.根據(jù)權(quán)利要求I所述的方法,其中,在所述計(jì)算機(jī)系統(tǒng)中執(zhí)行所述確定是否應(yīng)該將可執(zhí)行文件識別為合法的步驟。
3.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其中,所述確定是否應(yīng)該將可執(zhí)行文件識別為合法的步驟包括以下任一項(xiàng) 確定標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果是,則將所述可執(zhí)行文件識別為合法的; 確定標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果否,則將所述可執(zhí)行文件識別為合法的;以及 確定關(guān)于可執(zhí)行文件的、包括對每個可執(zhí)行文件的合法性加以表示的值的數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符,如果是,確定與所述可執(zhí)行文件相關(guān)聯(lián)的所述值是否超過可執(zhí)行文件被認(rèn)為是合法時(shí)的閾值。
4 據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其中,所述向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)內(nèi)執(zhí)行的指示的步驟包括 在所述可執(zhí)行文件的執(zhí)行期間,攔截所述可執(zhí)行文件與所述計(jì)算機(jī)系統(tǒng)之間的指定通信;以及 利用對在仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述指定通信能夠包括函數(shù)調(diào)用、消息和事件中的任一項(xiàng)。
6.一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行權(quán)利要求I至5中任一項(xiàng)的所有步驟。
7.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)程序,在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)。
8.一種計(jì)算機(jī)系統(tǒng),包括 存儲器,所述存儲器存儲可執(zhí)行文件;以及 處理器,用于確定是否應(yīng)該將所述可執(zhí)行文件識別為合法的,以及如果確定不應(yīng)該將所述可執(zhí)行文件識別為合法的,則在所述計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)內(nèi)執(zhí)行的指示。
9.根據(jù)權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),其中,處理器還被配置為產(chǎn)生包括所述可執(zhí)行文件或所述可執(zhí)行文件的標(biāo)識符的消息以發(fā)送至服務(wù)器,并處理從服務(wù)器接收的響應(yīng)以確定所述響應(yīng)是否指示應(yīng)該將文件識別為合法的。
10.根據(jù)權(quán)利要求8或9所述的計(jì)算機(jī)系統(tǒng),其中,存儲器還被配置為對標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫進(jìn)行存儲,以及處理器還被配置為確定所述標(biāo)識了合法可執(zhí)行文件的數(shù)據(jù)庫中是否包括可執(zhí)行文件的標(biāo)識符。
11.根據(jù)權(quán)利要求8至10中任一項(xiàng)所述的計(jì)算機(jī)系統(tǒng),其中,存儲器還被配置為對標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫進(jìn)行存儲,以及處理器還被配置為確定所述標(biāo)識了違禁可執(zhí)行文件的數(shù)據(jù)庫中是否包括可執(zhí)行文件的標(biāo)識符。
12.根據(jù)權(quán)利要求8至11中任一項(xiàng)所述的計(jì)算機(jī)系統(tǒng),其中,存儲器還被配置為存儲關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以及處理器還被配置為確定所述數(shù)據(jù)庫中是否包括所述可執(zhí)行文件的標(biāo)識符。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中,處理器還被配置為,如果可執(zhí)行文件的數(shù)據(jù)庫中包括所述可執(zhí)行文件的標(biāo)識符,則確定與所述可執(zhí)行文件相關(guān)聯(lián)的所述值是否超過了所述可執(zhí)行文件被認(rèn)為是合法時(shí)的閾值。
14.根據(jù)權(quán)利要求8至13中任一項(xiàng)所述的計(jì)算機(jī)系統(tǒng),其中,處理器還被配置為在所述可執(zhí)行文件的執(zhí)行期間攔截可執(zhí)行文件與所述計(jì)算機(jī)系統(tǒng)之間的指定通信,并且利用對仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。
15.一種檢測潛在惡意軟件的方法,所述方法包括 執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示; 監(jiān)視所述可執(zhí)行文件的行為;以及 確定所述行為是否與仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為相對應(yīng)。
16.根據(jù)權(quán)利要求15所述的方法,其中,所述執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示的步驟包括 在非仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件; 在所述可執(zhí)行文件的執(zhí)行期間,攔截所述可執(zhí)行文件與計(jì)算機(jī)系統(tǒng)之間的指定通信;以及 利用對仿真計(jì)算機(jī)系統(tǒng)中的執(zhí)行加以指示的數(shù)據(jù)來響應(yīng)所攔截的通信。
17.根據(jù)權(quán)利要求15所述的方法,其中,所述執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示的步驟包括 在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述可執(zhí)行文件。
18.根據(jù)權(quán)利要求15至17中任一項(xiàng)所述的方法,其中,所述仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為包括以下任一項(xiàng) 試圖阻止執(zhí)行而不提供通知; 試圖收集關(guān)于仿真計(jì)算機(jī)系統(tǒng)的信息;以及 與非仿真計(jì)算機(jī)系統(tǒng)中可執(zhí)行文件的行為顯著不同。
19.一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行權(quán)利要求15至18中任一項(xiàng)的所有步驟。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)程序,在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)。
21.一種計(jì)算機(jī)系統(tǒng),包括 存儲器,所述存儲器存儲可執(zhí)行文件;以及 處理器,用于執(zhí)行可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示,監(jiān)視所述可執(zhí)行文件的行為,以及確定所述行為是否與仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的惡意軟件的預(yù)期行為相對應(yīng)。
22.—種維護(hù)關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫的方法,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以使多個計(jì)算機(jī)設(shè)備中的任一個能夠確定可執(zhí)行文件是否應(yīng)該被識別為合法的,所述方法包括在基于網(wǎng)絡(luò)的服務(wù)側(cè),從所述多個計(jì)算機(jī)設(shè)備中執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)設(shè)備接收關(guān)于所述可執(zhí)行文件的數(shù)據(jù),使用所述數(shù)據(jù)確定對可執(zhí)行文件的合法性加以表示的值,以及向所述多個計(jì)算機(jī)設(shè)備中的任一個提供所述值。
23.根據(jù)權(quán)利要求22所述的方法,其中,所述關(guān)于可執(zhí)行文件的數(shù)據(jù)包括以下任一項(xiàng) 執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)的標(biāo)識符; 與執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)觀察到的所述可執(zhí)行文件的任何可疑行為相關(guān)的/[目息;以及 對執(zhí)行了可執(zhí)行文件的計(jì)算機(jī)系統(tǒng)所確定的可執(zhí)行文件的合法性加以表示的值。
24.如權(quán)利要求23所述的方法,其中,所述使用數(shù)據(jù)確定對每個可執(zhí)行文件的合法性加以表不的值包括以下任一項(xiàng) 確定執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)是否是可信的,并且基于執(zhí)行了可執(zhí)行文件的可信計(jì)算機(jī)系統(tǒng)的數(shù)目或比例來確定所述值; 分析與執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)觀察到的可執(zhí)行文件的任何可疑行為相關(guān)的信息,并且基于可疑行為的數(shù)量、類型和程度來確定所述值;以及 核對由執(zhí)行了可執(zhí)行文件的每個計(jì)算機(jī)系統(tǒng)確定的值。
25.—種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序,在所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述計(jì)算機(jī)程序代碼裝置適于執(zhí)行權(quán)利要求22至24中任一項(xiàng)的所有步驟。
26.根據(jù)權(quán)利要求25所述的計(jì)算機(jī)程序,在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)。
27.一種服務(wù)器,用于維護(hù)關(guān)于可執(zhí)行文件的信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫包括對每個可執(zhí)行文件的合法性加以表示的值,以使多個計(jì)算機(jī)設(shè)備中的任一個能夠確定可執(zhí)行文件是否應(yīng)該被識別為合法的,所述服務(wù)器包括 接收機(jī),從所述多個計(jì)算機(jī)設(shè)備中執(zhí)行了可執(zhí)行文件的一個或多個計(jì)算機(jī)設(shè)備接收關(guān)于可執(zhí)行文件的數(shù)據(jù); 處理器,使用所述數(shù)據(jù)確定對可執(zhí)行文件的合法性加以表示的值;以及 發(fā)送機(jī),向所述多個計(jì)算機(jī)設(shè)備中的一個或多個計(jì)算機(jī)設(shè)備提供所述值。
全文摘要
根據(jù)本發(fā)明的第一方面,提供了一種保護(hù)計(jì)算機(jī)系統(tǒng)免于遭受惡意軟件的方法,當(dāng)在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行所述惡意軟件時(shí),所述惡意軟件試圖阻止檢測或分析。所述方法包括確定可執(zhí)行文件是否應(yīng)該被識別為合法的,如果不是,則執(zhí)行所述可執(zhí)行文件,同時(shí)向所述可執(zhí)行文件提供其正在仿真計(jì)算機(jī)系統(tǒng)中執(zhí)行的指示。
文檔編號G06F21/56GK102893289SQ201180023604
公開日2013年1月23日 申請日期2011年3月15日 優(yōu)先權(quán)日2010年3月15日
發(fā)明者楊諾·尼美拉, 米科·海彭恩, 圣特里·康加斯 申請人:F-賽酷公司