預(yù)測性堆溢出保護的制作方法
【專利摘要】一種用于防止惡意軟件攻擊的方法,包括:識別一組數(shù)據(jù),該一組數(shù)據(jù)的惡意軟件狀態(tài)不知道是安全的;發(fā)起使用數(shù)據(jù)的應(yīng)用程序;確定應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配;確定應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配;將新的存儲器分配與先前的存儲器分配進行比較;以及基于比較,確定數(shù)據(jù)是否包括惡意軟件。
【專利說明】預(yù)測性堆溢出保護
【技術(shù)領(lǐng)域】
[0001]概括的說,本發(fā)明涉及計算機安全和惡意軟件保護,更具體的說,本發(fā)明涉及預(yù)測性堆溢出保護。
【背景技術(shù)】
[0002]計算機和其他電子設(shè)備上的惡意軟件感染非常具有侵入性且難以檢測和修復(fù)。反惡意軟件解決方案可能需要將惡意代碼或文件的簽名與評估的軟件相對照,以確定該軟件對計算系統(tǒng)有害。惡意軟件可能通過使用多態(tài)的可執(zhí)行文件來偽裝自己,其中,惡意軟件改變自身以避免被反惡意軟件解決方案檢測到。在這樣的情況下,反惡意軟件解決方案可能無法檢測到在零日攻擊中的新的或變體的惡意軟件。惡意軟件可以包括,但是不限于,間諜軟件、隱匿程式、密碼竊取程序、垃圾郵件、網(wǎng)絡(luò)釣魚攻擊、拒絕服務(wù)攻擊的來源、病毒、記錄器、特洛伊木馬、廣告軟件或產(chǎn)生不想要的活動的任何其他數(shù)字內(nèi)容。
【發(fā)明內(nèi)容】
[0003]在一實施例中,一種用于防止惡意軟件攻擊的方法包括:識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不知道是安全的;發(fā)起使用所述數(shù)據(jù)的應(yīng)用程序;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配;將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
[0004]在另一實施例中,一種制品,包括計算機可讀介質(zhì)和在計算機可讀介質(zhì)上攜帶的計算機可執(zhí)行指令。所述指令由處理器可讀。當(dāng)讀取或執(zhí)行時,所述指令使所述處理器識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不知道是安全的;發(fā)起使用所述數(shù)據(jù)的應(yīng)用程序;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配;將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
[0005]在又一實施例中,一種用于防止惡意軟件攻擊的系統(tǒng),包括耦合到存儲器的處理器和由處理器執(zhí)行的反惡意軟件檢測器。反惡意軟件檢測器駐留在存儲器中。反惡意軟件檢測器被配置成:識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不知道是安全的;發(fā)起使用所述數(shù)據(jù)的應(yīng)用程序;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配;確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配;將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
【專利附圖】
【附圖說明】
[0006]為了更完整的理解本發(fā)明及其特征和優(yōu)點,現(xiàn)在結(jié)合附圖參照下面的描述,其中:
[0007]圖1是對用于預(yù)測性堆溢出保護的示例性系統(tǒng)的說明;[0008]圖2是對用于預(yù)測性堆溢出保護的系統(tǒng)的反惡意軟件檢測器和其他組件的示例性配置和執(zhí)行進行進一步說明;
[0009]圖3是對用于預(yù)測性堆溢出保護的系統(tǒng)的示例性操作的進一步說明;
[0010]圖4是對用于預(yù)測性堆溢出保護的方法的示例性實施例的說明;
[0011]圖5a和5b是對用于確定存儲器分配與先前創(chuàng)建的存儲器分配是否匹配并從而指示基于溢出的惡意軟件的示例性方法的說明;
[0012]圖6是對用于確定存儲器分配是否與先前創(chuàng)建的存儲器分配不匹配并從而指示基于溢出的惡意軟件不存在的方法的示例性實施例的說明。
【具體實施方式】
[0013]圖1是對用于預(yù)測性堆溢出保護的示例性系統(tǒng)100的說明。系統(tǒng)100可以被配置成確定具有應(yīng)用程序或針對應(yīng)用程序的數(shù)據(jù)的形式的實體是否是惡意軟件。這樣的數(shù)據(jù)可能是配置成利用系統(tǒng)或易受攻擊的應(yīng)用程序中的溢出弱點的惡意軟件。在一實施例中,系統(tǒng)100可以被配置成檢測試圖利用諸如堆溢出弱點之類的缺陷的惡意軟件。
[0014]系統(tǒng)中的堆溢出弱點可以包括對于緩沖器溢出的系統(tǒng)的缺陷,其中,向緩沖器寫入數(shù)據(jù),但是數(shù)據(jù)被寫入到與緩沖器相鄰的存儲器中了。利用溢出弱點可以包括,例如,惡意軟件使用基于?;蚧诙牙玫募夹g(shù)。基于堆利用的技術(shù)可以包括利用惡意代碼毀損在目標(biāo)系統(tǒng)的存儲器堆中分配的存儲器。這樣的存儲器分配可以實時進行。系統(tǒng)100可以被配置成確定這樣的、利用應(yīng)用程序中的弱點的企圖。
[0015]系統(tǒng)100可以被配置成保護客戶端104免受惡意軟件攻擊。在一實施例中,系統(tǒng)100可以被配置成保護客戶端104免受基于堆基于溢出的惡意軟件攻擊??蛻舳?04可以包括計算機、服務(wù)器、膝上型電腦、平板電腦、智能電話、或易受惡意軟件攻擊的任何其它適當(dāng)?shù)碾娮釉O(shè)備。
[0016]為了保護客戶端104免受惡意軟件攻擊,可以利用反惡意軟件檢測器102檢測諸如數(shù)據(jù)106之類的潛在危險的數(shù)據(jù)。數(shù)據(jù)106可以包括用于應(yīng)用程序加載或執(zhí)行的應(yīng)用程序或信息。例如,數(shù)據(jù)106可以包括詞處理文件、電子郵件、電子郵件附件、電子數(shù)據(jù)表文件、圖像文件、PDF文件、html頁面、JavaScript或由客戶端104上的應(yīng)用程序執(zhí)行的其他
腳本、代碼、或Flash?文件。數(shù)據(jù)106可以包括這樣的實體或這樣的實體的多個實例的部
分。在一些情況下,可以知道數(shù)據(jù)106是惡意的或知道其是安全的。但是,假如要向客戶端104加載大量的數(shù)據(jù),用于做出這樣的確定的、對數(shù)據(jù)106的典型的反惡意軟件掃描在處理資源方面可能是昂貴和不實際的。在其他情況下,數(shù)據(jù)106的惡意軟件狀態(tài)可能是不知道的。從而,對數(shù)據(jù)106的典型的反惡意軟件掃描可能不會產(chǎn)生關(guān)于數(shù)據(jù)106是否安全的信息。此外,該掃描可能是昂貴的。數(shù)據(jù)106可以包含所謂的“零天”惡意軟件攻擊,其中,其惡意的內(nèi)容還未被例如基于簽名的反惡意軟件機制識別。
[0017]在一實施例中,可以通過網(wǎng)絡(luò)108從網(wǎng)絡(luò)目的地110下載數(shù)據(jù)106。例如,可以響應(yīng)于客戶端104上的應(yīng)用程序的請求來進行這樣的下載。進行這樣的請求可以由代表合法的應(yīng)用程序來進行,或可以由客戶端104上的惡意軟件以偽裝的方式來進行。在另一實施例中,數(shù)據(jù)106可能已經(jīng)存在于客戶端104上了。
[0018]網(wǎng)絡(luò)目的地110可以包括,例如,網(wǎng)站、服務(wù)器、或客戶端104可訪問的網(wǎng)絡(luò)實體。網(wǎng)絡(luò)目的地110可以被配置成模仿客戶端104可能試圖訪問的合法數(shù)據(jù)、頁面或其他內(nèi)容,但是反而網(wǎng)絡(luò)目的地118可能使客戶端104下載數(shù)據(jù)106的形式的惡意的應(yīng)用程序、數(shù)據(jù)、文件、代碼或其他內(nèi)容。例如,客戶端104上的網(wǎng)絡(luò)瀏覽器應(yīng)用程序可能為了看上去合法的網(wǎng)站訪問網(wǎng)絡(luò)目的地110,但是被配置成在客戶端104上執(zhí)行的、作為數(shù)據(jù)106的一部分下載的腳本可能包括惡意軟件。
[0019]網(wǎng)絡(luò)108可以包括任何合適的網(wǎng)絡(luò)、一系列的網(wǎng)絡(luò)或其一部分,以在電子設(shè)備104、監(jiān)控器102和聲譽服務(wù)器106之間通信。這樣的網(wǎng)絡(luò)可以包括但不限于:互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、廣域網(wǎng)、局域網(wǎng)、回程網(wǎng)、對等網(wǎng)或其任何組合。
[0020]反惡意軟件檢測器102可以被配置成確定數(shù)據(jù)106中的潛在的危險元素。在一實施例中,反惡意軟件檢測器102可以被配置成確定數(shù)據(jù)106是否包括被配置成使用諸如基于堆的溢出惡意軟件之類的溢出利用來攻擊客戶端102或其它設(shè)備的信息。
[0021]反惡意軟件檢測器102可以使用諸如腳本、可執(zhí)行程序、共享庫、應(yīng)用程序、過程、服務(wù)器或虛擬機之類的任何合適的機制來實現(xiàn)。在一實施例中,反惡意軟件檢測器102可以位于客戶端104上并被配置成分析由客戶端104接收的數(shù)據(jù)106。在另一實施例中,反惡意軟件檢測器102可以與客戶端104相分離。在這樣的實施例中,反惡意軟件檢測器可以被配置成在客戶端104接收到數(shù)據(jù)106之前對其進行分析。從而,反惡意軟件檢測器可以被配置成在確定數(shù)據(jù)106是惡意的情況下,保護客戶端104不接收數(shù)據(jù)106。
[0022]為了保護客戶端104不接收被確定為惡意的數(shù)據(jù)106,系統(tǒng)100可以被配置成在其到達客戶端104之前攔截數(shù)據(jù)106。在一實施例中,反惡意軟件檢測器102可以被配置成攔截數(shù)據(jù)106。在另一實施例中,系統(tǒng)100可以包括被配置成攔截數(shù)據(jù)106的網(wǎng)絡(luò)網(wǎng)關(guān)112。在這樣的實施例中,網(wǎng)絡(luò)網(wǎng)關(guān)112可以通信地耦合到反惡意軟件檢測102或包括反惡意軟件檢測器112??梢允褂弥T如可執(zhí)行程序、應(yīng)用程序、過程、服務(wù)器或網(wǎng)絡(luò)設(shè)備之類的任何合適的機制來實現(xiàn)網(wǎng)絡(luò)網(wǎng)關(guān)112。在接收到數(shù)據(jù)106之后,網(wǎng)絡(luò)網(wǎng)關(guān)112可以被配置成向反惡意軟件檢測器102發(fā)送數(shù)據(jù)106,以確定數(shù)據(jù)106是否是惡意的。如果數(shù)據(jù)106是惡意的,則網(wǎng)絡(luò)網(wǎng)關(guān)112或反惡意軟件檢測器102可以被配置成阻擋數(shù)據(jù)106去客戶端104。反惡意軟件檢測器102和/或網(wǎng)絡(luò)網(wǎng)關(guān)112可以被配置成攔截并分析去往情況類似于客戶端104的其他電子設(shè)備的類似下載。因此,網(wǎng)絡(luò)網(wǎng)關(guān)112和/或反惡意軟件檢測器102可以被配置成保護整個網(wǎng)絡(luò)114免受惡意數(shù)據(jù)106攻擊。網(wǎng)絡(luò)114可以包括,例如,局域網(wǎng)、廣域網(wǎng)、或它們的一些部分,它們的對外部網(wǎng)絡(luò)108的網(wǎng)絡(luò)訪問受到網(wǎng)絡(luò)網(wǎng)關(guān)112和/或反惡意軟件檢測器的保護。
[0023]反惡意軟件檢測器102可以被配置成確定數(shù)據(jù)106是否包括對客戶端104的試圖的惡意軟件攻擊。在一實施例中,反惡意軟件檢測器102可以被配置成確定數(shù)據(jù)106是否包括被配置成對客戶端104進行惡意軟件攻擊的應(yīng)用程序。在另一實施例中,反惡意軟件檢測器102可以被配置成確定數(shù)據(jù)106是否包括基于溢出的惡意軟件攻擊。
[0024]反惡意軟件檢測器102可以被配置成分析數(shù)據(jù)106是否包括任何合適的方式的試圖的惡意軟件攻擊。在一實施例中,反惡意軟件檢測器102可以被配置成模擬數(shù)據(jù)106的執(zhí)行或使用數(shù)據(jù)106的應(yīng)用程序。可以結(jié)合例如配置成模擬使用數(shù)據(jù)106的應(yīng)用程序的執(zhí)行或數(shù)據(jù)106自身的執(zhí)行的虛擬機來使用這樣的實施例。虛擬機可以位于例如與客戶端104相分離的服務(wù)器上或在客戶端104自身上。在另一實施例中,反惡意軟件檢測器102可以勾住執(zhí)行數(shù)據(jù)106的電子設(shè)備或使用數(shù)據(jù)106的應(yīng)用程序的存儲器。在又一實施例中,反惡意軟件檢測器102可以被配置成在沙箱中執(zhí)行數(shù)據(jù)106或使用數(shù)據(jù)106的應(yīng)用程序,以保護客戶端104的系統(tǒng)資源。
[0025]反惡意軟件檢測器102可以被配置成通過分析在這樣的執(zhí)行中生成的存儲器分配來分析數(shù)據(jù)106或使用數(shù)據(jù)106的應(yīng)用程序的執(zhí)行。如果目前識別的存儲器分配非常相似于先前的存儲器分配,則該執(zhí)行可以指示數(shù)據(jù)106是惡意的。這樣的相似可以是類似數(shù)據(jù)正被重復(fù)寫入存儲器的證據(jù),這可以是對基于溢出的惡意軟件攻擊的指示。反惡意軟件檢測器102可以被配置成如果沒有足夠的證據(jù)存在以確定數(shù)據(jù)106是否是安全或惡意的,則向另外的反惡意軟件檢測器實體咨詢。
[0026]如果反惡意軟件檢測器102確定數(shù)據(jù)106包括試圖的惡意軟件攻擊,則反惡意軟件檢測器102可以被配置成阻擋對數(shù)據(jù)106的試圖下載。如果數(shù)據(jù)106已經(jīng)被加載到客戶端104或系統(tǒng)100的另一部分上,則反惡意軟件檢測器102可以被配置成通過任何合適的機制或以任何合適的方式清除數(shù)據(jù)106。例如,可以移除、刪除或隔離數(shù)據(jù)106。反惡意軟件檢測器102可以被配置成向客戶端102的用戶通知被阻擋的嘗試。此外,反惡意軟件檢測器102可以被配置成向反惡意軟件服務(wù)器發(fā)送數(shù)據(jù)106或與數(shù)據(jù)106相關(guān)的信息以進行進一步分析,報告或向其他反惡意軟件實體或設(shè)置傳播數(shù)據(jù)106的知識。此外,反惡意軟件檢測器102可以被配置成將網(wǎng)絡(luò)目的地110分類為不安全的,并向反惡意軟件服務(wù)器報告這樣的確定。如果反惡意軟件檢測器102確定數(shù)據(jù)106不包括試圖的惡意軟件攻擊,則反惡意軟件檢測器102可以被配置成允許對數(shù)據(jù)106的試圖下載。
[0027]在操作中,反惡意軟件檢測器102可以操作成保護客戶端104和/或網(wǎng)絡(luò)114中的其他實體免受惡意軟件攻擊。在一個實施例中,反惡意軟件檢測器102可以在客戶端104上執(zhí)行。在另一實施例中,反惡意軟件檢測器102可以與客戶端104分開操作。在這樣的實施例中,例如,反惡意軟件檢測器可以在例如網(wǎng)絡(luò)114上的服務(wù)器上操作。網(wǎng)絡(luò)網(wǎng)關(guān)112可以在網(wǎng)絡(luò)114上操作。
[0028]在一實施例中,數(shù)據(jù)106可以存在于客戶端104上。在另一實施例中,可以通過網(wǎng)絡(luò)108從網(wǎng)絡(luò)目的地110下載數(shù)據(jù)106。可以利用客戶端104作為目標(biāo)來下載數(shù)據(jù)106。可以利用網(wǎng)絡(luò)網(wǎng)關(guān)112和/或反惡意軟件檢測器102來攔截數(shù)據(jù)106。網(wǎng)絡(luò)網(wǎng)關(guān)112和/或反惡意軟件檢測器102可以分析數(shù)據(jù)106,以確定其內(nèi)容的類型。如果數(shù)據(jù)106包括要在客戶端104上執(zhí)行的應(yīng)用程序,則可以由反惡意軟件檢測器102處理數(shù)據(jù)106,以確定其是否包括被配置成進行基于溢出的攻擊的惡意軟件。反惡意軟件檢測器102可以確定可以使用數(shù)據(jù)106的一個或多個應(yīng)用程序。如果數(shù)據(jù)106包括針對容易受到基于溢出的攻擊的應(yīng)用程序的信息,則可以由反惡意軟件檢測器處理數(shù)據(jù)106,以確定數(shù)據(jù)106是否包括被配置成進行基于溢出的攻擊的惡意軟件。
[0029]反惡意軟件檢測器102可以分析數(shù)據(jù)106或使用數(shù)據(jù)106的應(yīng)用程序,以確定數(shù)據(jù)106是否包括惡意軟件。在一實施例中,反惡意軟件檢測器102可以分析數(shù)據(jù)106的執(zhí)行,以確定數(shù)據(jù)106是否包括基于溢出的惡意軟件。反惡意軟件檢測器102可以監(jiān)控或分析與執(zhí)行數(shù)據(jù)106或使用數(shù)據(jù)106的應(yīng)用程序相關(guān)聯(lián)的存儲器分配。反惡意軟件檢測器102可以確定目前進行的存儲器分配是否與先前的存儲器分配匹配或相關(guān)。
[0030]在一實施例中,為了監(jiān)控或分析這樣的執(zhí)行,反惡意軟件檢測器102可能勾住諸如存儲器剖析器之類的客戶端104的存儲器功能。在這樣的實施例中,反惡意軟件檢測器102可以在客戶端104上執(zhí)行或通信地耦合到客戶端104。數(shù)據(jù)106可能已經(jīng)存在于客戶端104上??赡苁褂脭?shù)據(jù)106執(zhí)行客戶端104上的應(yīng)用程序。
[0031]在另一實施例中,反惡意軟件檢測器102可以使用虛擬機來模擬數(shù)據(jù)106或使用數(shù)據(jù)106的應(yīng)用程序的執(zhí)行和存儲器分配。該應(yīng)用程序可能已經(jīng)由反惡意軟件檢測器102或網(wǎng)絡(luò)網(wǎng)關(guān)112在分析數(shù)據(jù)106之后選擇。
[0032]如果反惡意軟件檢測器102確定目前進行的存儲器分配與先前的存儲器分配匹配或相關(guān),則反惡意軟件檢測器可以確定數(shù)據(jù)106包括基于溢出的惡意軟件攻擊。反惡意軟件檢測器102或網(wǎng)絡(luò)網(wǎng)關(guān)112可以阻擋數(shù)據(jù)106進一步下載到諸如客戶端104之類的網(wǎng)絡(luò)114的組件。反惡意軟件檢測器102可以將數(shù)據(jù)106從客戶端104或從網(wǎng)絡(luò)114的其他部分清除。此外,反惡意軟件檢測102可以向其他反惡意軟件服務(wù)器發(fā)送關(guān)于客戶端104的信息,以進行進一步分析、報告或分發(fā)。
[0033]如果反惡意軟件檢測器102確定沒有攔截的存儲器分配匹配或與先前的存儲器分配相關(guān),則反惡意軟件檢測器可以確定數(shù)據(jù)106不包括基于溢出的惡意軟件攻擊。在一實施例中,可以將數(shù)據(jù)106傳遞到其他反惡意軟件實體以進行進一步分析。在另一實施例中,可以允許數(shù)據(jù)106在客戶端104上下載并執(zhí)行。
[0034]如果反惡意軟件檢測器102不能明確地確定任何攔截的存儲器分配匹配或與先前的存儲器分配相關(guān),則反惡意軟件檢測器可以將數(shù)據(jù)106傳遞到其他反惡意軟件實體,以進行進一步分析。這樣的其他反惡意軟件實體例如可以包括典型的反惡意軟件掃描軟件或反堆溢出惡意軟件。這樣的實體的執(zhí)行在系統(tǒng)資源方面可能是昂貴的。但是,在反惡意軟件檢測器初步確定數(shù)據(jù)106可能是或不是惡意的情況下,這樣的執(zhí)行的開銷可以是合理的。此外,反惡意軟件檢測器102的分析可以排除在許多情況下運行這樣的實體的必要性,例如在存儲器分配與先前的存儲器分配非常相似的情況下。因此,在反惡意軟件檢測器102不能明確確定的情況下執(zhí)行典型的反惡意軟件技術(shù)可能使得在惡意軟件檢測的效率方面的整體增加。
[0035]圖2是對反惡意軟件檢測器102和系統(tǒng)100的其他組件的示例性配置和執(zhí)行的進一步說明。在一實施例中,反惡意軟件檢測器102可以通過使用虛擬機框架來實現(xiàn)。反惡意軟件檢測器102可以包括通信地耦合到存儲器剖析器204和虛擬機存儲器管理器206的虛擬機202。
[0036]虛擬機202可以被配置成對應(yīng)用程序224的操作進行仿真,如同其在客戶端104上執(zhí)行。此外,虛擬機202可以被配置成對任何適當(dāng)應(yīng)用程序的操作進行模擬,包括在圖1的數(shù)據(jù)106中包含的應(yīng)用程序或被反惡意軟件檢測器102識別為使用數(shù)據(jù)106的應(yīng)用程序。在執(zhí)行部分的數(shù)據(jù)106之后,虛擬機202可以被配置成向存儲器剖析器204發(fā)送過程流事件。這樣的過程流事件可以包括例如,對循環(huán)操作的終止。虛擬機202可以被配置成發(fā)送這樣的終止事件,因為這樣的事件可能對應(yīng)于試圖的存儲器分配或作為基于溢出的惡意軟件攻擊的一部分的寫入的結(jié)束。
[0037]反惡意軟件檢測器102可以包括被配置成解析和解釋數(shù)據(jù)106的語法分析器/解析器204。語法分析器/解析器204可以被配置成確定數(shù)據(jù)106的結(jié)構(gòu)以及向虛擬機224發(fā)送數(shù)據(jù)段。虛擬機202可以利用相應(yīng)的數(shù)據(jù)端226來執(zhí)行應(yīng)用程序224。[0038]反惡意軟件檢測器102可以包括或通信地耦合到文檔對象模型(“D0M”)處理程序210。DOM處理程序210可以包括被配置成提供如何執(zhí)行應(yīng)用程序224的信息的一個或多個DOM。DOM處理程序210可以包括與反惡意軟件檢測器102被配置成模擬或分析的每一種應(yīng)用程序或數(shù)據(jù)類型相對應(yīng)的D0M。例如,在給出數(shù)據(jù)106中的網(wǎng)絡(luò)瀏覽器腳本的情況下,DOM處理程序210可以被配置成如何操作在應(yīng)用程序224中模擬的網(wǎng)絡(luò)瀏覽器應(yīng)用程序,以使得執(zhí)行或選擇腳本中的選項。
[0039]虛擬機202可以被配置成通過結(jié)束執(zhí)行循環(huán)來執(zhí)行應(yīng)用程序224。執(zhí)行應(yīng)用程序224可能需要模擬或執(zhí)行用于分配存儲器的命令。虛擬機202可以被配置成向虛擬機存儲器管理器206發(fā)送這樣的存儲器分配指令。此外,虛擬機202可以被配置成向存儲器剖析器204發(fā)送過程控制事件,例如,指示執(zhí)行循環(huán)終止的事件。
[0040]虛擬機存儲器管理器206可以被配置成進行這樣的存儲器分配207。存儲器分配207可以表示或模擬客戶端104中將由應(yīng)用程序224的執(zhí)行做出的存儲器分配。存儲器分配207可以被創(chuàng)建為存儲器塊。存儲器分配207可以包括與使用數(shù)據(jù)段226的應(yīng)用程序224相關(guān)聯(lián)的程序數(shù)據(jù)。存儲器分配207的內(nèi)容可以指示已經(jīng)進行了基于溢出的惡意軟件攻擊。虛擬機存儲器管理器206可以被配置成向存儲器剖析器204發(fā)送存儲器分配207以進行分析。
[0041]存儲器剖析器204可以被配置成對存儲器分配相互進行比較,以確定數(shù)據(jù)106是否包括基于溢出的惡意軟件攻擊。存儲器剖析器204可以被配置成進行這樣的確定,例如,通過確定存儲器分配是否相互匹配或存儲器分配是緊接著地進行的。此外,存儲器剖析器204可以被配置成在適當(dāng)?shù)臅r間進行這樣的確定。例如,存儲器剖析器204可以被配置成針對先前創(chuàng)建的存儲器分配來分析新創(chuàng)建的存儲器分配。在另一示例中,存儲器剖析器204可以被配置成在從虛擬機202接收到循環(huán)終止事件之后,針對先前創(chuàng)建的存儲器分配來分析存儲器分配。
[0042]存儲器剖析器204可以被配置成使用任何適當(dāng)?shù)臋C制或方法來比較存儲器分配。模型數(shù)據(jù)數(shù)據(jù)庫218可以被配置成向存儲器剖析器204提供模型數(shù)據(jù)。這樣的信息可以包括針對存儲器剖析器204的標(biāo)準(zhǔn),以在存儲器分配之間進行比較。例如,模型數(shù)據(jù)數(shù)據(jù)庫218可以包括關(guān)于存儲器分配的比較的決策樹或規(guī)則以及如何使用這樣的比較來確定數(shù)據(jù)106是否是惡意的、安全的或未知的。模型數(shù)據(jù)數(shù)據(jù)庫218可以包括表示存儲器分配的特征的模型數(shù)據(jù),例如指示惡意軟件或指示安全數(shù)據(jù)??梢酝ㄟ^對已知的惡意數(shù)據(jù)或已知的安全數(shù)據(jù)的統(tǒng)計分析來確定這樣的指示。在確定數(shù)據(jù)106是安全的或惡意的之后,存儲器剖析器204可以向基于云的反惡意軟件分類器222或另一反惡意軟件服務(wù)器提供數(shù)據(jù)106和該確定,上述基于云的反惡意軟件分類器222或另一反惡意軟件服務(wù)器可以繼而處理來自其他客戶端的這樣的結(jié)果,并生成對模型數(shù)據(jù)數(shù)據(jù)庫218的更新。模型數(shù)據(jù)數(shù)據(jù)庫218可以被配置成向存儲器剖析器204指示要應(yīng)用于存儲器分配的比較的一系列這樣的標(biāo)準(zhǔn)以及指示如果滿足這樣的標(biāo)準(zhǔn)時,如何繼續(xù)。該系列的標(biāo)準(zhǔn)可以包括順序地進行多種比較。上述標(biāo)準(zhǔn)可以包含在不同存儲器比較之間的差異的閾值。
[0043]在一實施例中,存儲器剖析器204可以被配置成將給定存儲器分配的散列值、數(shù)字簽名或校驗和與其他所創(chuàng)建的存儲器分配進行比較。存儲器剖析器204可以被配置成生成存儲器分配的這樣的散列值、數(shù)字簽名或校驗和,以唯一地標(biāo)識該存儲器分配??梢允褂眯r灪蛠碛行У剡M行這樣的比較。如果存儲器分配的散列值、簽名或校驗和與已經(jīng)創(chuàng)建的另一存儲器分配匹配,則存儲器剖析器204可以被配置成確定存儲器分配相互匹配。在另外的實施例中,存儲器剖析器204可以被配置成確定具有相同的散列值、簽名或檢驗和的存儲器分配它們自身相等。這樣的匹配或相等的存儲器分配可以是對應(yīng)用程序224試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器中的指示。這樣的試圖重復(fù)地寫惡意代碼可以指示:應(yīng)用程序224正試圖進行基于溢出的惡意軟件攻擊。因此,存儲器剖析器204可以確定數(shù)據(jù)106是惡意的。
[0044]如果存儲器分配的散列值、簽名或檢驗和不與任何其他的存儲器分配匹配,則存儲器剖析器204可以被配置成采取任何適當(dāng)?shù)碾S后操作。例如,存儲器剖析器204可以被配置成確定存儲器分配不匹配,從而數(shù)據(jù)106不構(gòu)成基于溢出的惡意軟件。但是,數(shù)據(jù)106中的惡意軟件可能已經(jīng)在所生成的每一存儲器分配中導(dǎo)致足夠數(shù)量的已被改變的比特,以避免校驗和檢測。從而,該示例可能無法檢測到在數(shù)據(jù)106中實際存在的惡意軟件。因此,在另一實施例中,存儲器剖析器204可以被配置成對存儲器分配執(zhí)行另外的檢查。這樣的另外的檢查可以包括在存儲器分配之間的另外的比較,如下文所描述的,或?qū)?shù)據(jù)106傳遞給其他的反惡意軟件實體,如下文所描述的。
[0045]在另一實施例中,存儲器剖析器204可以被配置成將給定存儲器分配的大小與其他所創(chuàng)建的存儲器分配比較。存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定存儲器分配大小的閾值差異,在該閾值差異下可以確定兩個存儲器分配匹配。這樣的匹配或相等大小的存儲器分配可以是對應(yīng)用程序224試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器的指示。這樣的重復(fù)寫惡意代碼的嘗試可以指示應(yīng)用程序224正試圖進行基于溢出的惡意軟件攻擊。因此,如果由于應(yīng)用程序224的執(zhí)行,導(dǎo)致兩個或多個存儲器分配關(guān)于大小匹配,則存儲器剖析器204可以確定數(shù)據(jù)106是惡意的。
[0046]存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定存儲器分配的閾值差異,在該閾值差異上,可以確定兩個存儲器分配不匹配。這樣的不匹配的存儲器分配可以是應(yīng)用程序224沒有試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器的指示。因此,如果由于應(yīng)用程序224的執(zhí)行導(dǎo)致兩個存儲器分配不匹配,則存儲器剖析器204可以確定數(shù)據(jù)106是安全的。
[0047]如果兩個存儲器分配之間的差異既不低于指示匹配的第一閾值,也不超過指示存儲器分配關(guān)于惡意軟件是安全的第二閾值,則存儲器剖析器204可以被配置成采取任何適當(dāng)?shù)暮罄m(xù)動作。例如,存儲器剖析器204可以被配置成確定存儲器分配不匹配,并從而數(shù)據(jù)106不構(gòu)成基于溢出的惡意軟件。但是,數(shù)據(jù)106中的惡意軟件可能已經(jīng)導(dǎo)致存儲器分配在大小上波動,以避免大小比較檢測。在模型數(shù)據(jù)數(shù)據(jù)庫218中,可能尚未考慮這樣的行為。因此,在另一示例中,存儲器剖析器204可以被配置成對存儲器分配執(zhí)行另外的檢查。這樣的另外的檢查可以包括存儲器分配之間的另外的比較,如上文和下文所描述的,或?qū)?shù)據(jù)106傳遞到其它的反惡意軟件實體,如下文所描述的。
[0048]在又一實施例中,存儲器剖析器204可以被配置成將給定存儲器分配的熵與其他所創(chuàng)建的存儲器分配比較。給定存儲器分配的熵可以是對其中包含的代碼的本質(zhì)的指示??梢允褂么_定代碼或數(shù)據(jù)的熵的任何適當(dāng)方法。存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定熵比較標(biāo)準(zhǔn)。例如,模型數(shù)據(jù)數(shù)據(jù)庫218可以包括模型數(shù)據(jù),用于指示對于來自(I…9) 的熵評級系統(tǒng),兩個存儲器分配必須具有相同的熵值才認為其匹配。在另一示例中,模型數(shù)據(jù)數(shù)據(jù)庫218可以包括熵差閾值,在該熵差異閾值下兩個存儲器分配的熵之間的差異指示存儲器分配匹配。匹配的熵值可以是對應(yīng)用程序224試圖將相同的惡意代碼重復(fù)地寫入客戶端104的存儲器中的指示。這樣的試圖重復(fù)地寫惡意代碼可以指示應(yīng)用程序224正試圖進行基于溢出的惡意軟件攻擊。因此,如果由于應(yīng)用程序224的執(zhí)行導(dǎo)致兩個或更多個存儲器分配關(guān)于熵匹配,則存儲器剖析器204可以確定數(shù)據(jù)106是惡意的。
[0049]存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定熵的閾值差異,在該熵的閾值差異上,可以確定兩個存儲器分配具有實質(zhì)不同的熵。在一示例中,使用范圍為(I…9)的熵評級系統(tǒng),大于或等于I的差異可以是實質(zhì)不同。這樣的在熵方面實質(zhì)不同的存儲器分配可以是寫入每一個存儲器分配中的代碼實質(zhì)不同的指示,并且從而不存在應(yīng)用程序224試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器。因此,如果由于應(yīng)用程序224的執(zhí)行導(dǎo)致的存儲器分配以實質(zhì)上不同的熵來創(chuàng)建,則存儲器剖析器204可以確定數(shù)據(jù)106是安全的。
[0050]如果沒有兩個存儲器分配在熵方面相互匹配,則存儲器剖析器204可以被配置成采取任何適當(dāng)?shù)暮罄m(xù)動作。例如,存儲器剖析器204可以被配置成確定存儲器分配不匹配,并且從而數(shù)據(jù)106不構(gòu)成基于溢出的惡意軟件。但是,數(shù)據(jù)106中的惡意軟件可能已經(jīng)導(dǎo)致存儲器分配波動,以避免大小比較檢測。在模型數(shù)據(jù)數(shù)據(jù)庫218中可能尚未考慮這樣的行為。因此,在另一示例中,存儲器剖析器204可以被配置成執(zhí)行對存儲器分配的另外檢查。這樣的另外的檢查可以包括存儲器分配之間的另外的比較,如上文和下文所描述的,或?qū)?shù)據(jù)106傳遞到其他反惡意軟件實體,如下文所描述的。
[0051]在又一實施例中,存儲器剖析器204可以被配置成將給定存儲器分配的分配時間與其他所創(chuàng)建的存儲器分配進行比較。存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定存儲器分配時間的閾值差異,在該時間的閾值差異下,可以確定已經(jīng)在基本接近的時間量中創(chuàng)建了兩個存儲器分配。分配時間中的接近差異可以指示應(yīng)用程序224試圖重復(fù)地進行存儲器分配。這樣的重復(fù)存儲器分配可以是對應(yīng)用程序224試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器中的指示。這樣的試圖重復(fù)寫惡意代碼可以指示應(yīng)用程序224正試圖進行基于溢出的惡意軟件攻擊。因此,如果在基本相同的時間量中創(chuàng)建了存儲器分配,則存儲器剖析器204可以確定數(shù)據(jù)106是惡意的。
[0052]存儲器剖析器204可以被配置成根據(jù)模型數(shù)據(jù)數(shù)據(jù)庫218確定存儲器分配時間的閾值差異,在存儲器分配時間的閾值差異上,可以確定兩個存儲器分配被充分分開地創(chuàng)建。這樣分開創(chuàng)建的存儲器分配可以是不存在應(yīng)用程序224試圖重復(fù)地將相同的惡意代碼寫入客戶端104的存儲器中的指示。因此,如果由于應(yīng)用程序224的執(zhí)行導(dǎo)致的存儲器分配被在實質(zhì)不同的時間創(chuàng)建,則存儲器剖析器204可以確定數(shù)據(jù)106是安全的。
[0053]如果兩個存儲器分配的時間方面的差異既不基本接近也不分離,則存儲器剖析器204可以被配置成采取任何適當(dāng)?shù)暮罄m(xù)動作。例如,存儲器剖析器204可以被配置成確定存儲器分配基本不接近,并且從而數(shù)據(jù)106不構(gòu)成基于溢出的惡意軟件。但是,數(shù)據(jù)106中的惡意軟件可能已經(jīng)使存儲器分配在分配時間方面波動,以避免大小比較檢測。在模型數(shù)據(jù)數(shù)據(jù)庫218中可能尚未考慮這樣的行為。因此,在另一示例中,存儲器剖析器204可以被配置成對存儲器分配執(zhí)行另外的檢查。這樣的另外的檢查可以包括存儲器分配之間的另外的比較,如上文所描述的,或?qū)?shù)據(jù)106傳遞到其他反惡意軟件實體,如下文所描述的。
[0054]當(dāng)存儲器剖析器204不能確認數(shù)據(jù)106構(gòu)成基于溢出的惡意軟件時,但是其也不能確認數(shù)據(jù)106是安全的,則存儲器剖析器204可以被配置成確定數(shù)據(jù)106的惡意軟件狀態(tài)是未知的。
[0055]使用單個適當(dāng)?shù)谋容^方法,存儲器剖析器204可以確定存儲器分配之間的比較未示出存儲器分配匹配或與確定數(shù)據(jù)106是惡意的充分相關(guān)。但是,如上文所描述的,這樣的無法檢測到惡意動作可能是惡意軟件偽裝自身的結(jié)果。因此,可以使用上文實施例的組合。在一示例中,可以以任何適當(dāng)?shù)捻樞蝽樞虻厥褂眯r灪?、大小、熵和時間技術(shù)。在另一示例中,一旦校驗和、大小、熵或時間技術(shù)中的任何一個確定兩個存儲器分配匹配,則可以確定數(shù)據(jù)106是惡意的。在未來的示例中,如果使用任何技術(shù)確定任何存儲器分配匹配,則可以向另外的反惡意軟件實體發(fā)送數(shù)據(jù)106,以進行進一步驗證。在又一實施例中,兩個存儲器分配匹配的確定的特定組合或多個兩個存儲器分配匹配的確定可以指示數(shù)據(jù)106是惡意的。
[0056]如果基于任何適當(dāng)?shù)募夹g(shù),存儲器剖析器204不能確定任何兩個存儲器分配匹配或無法匹配,則可以將數(shù)據(jù)106歸類為未知的或?qū)⑵浒l(fā)送至另外的反惡意軟件實體進行進一步驗證。如果基于技術(shù)的任何適當(dāng)?shù)慕M合存儲器剖析器204確定沒有跡象表明任何兩個存儲器分配匹配,則可以將數(shù)據(jù)106歸類為安全的。
[0057]對于存儲器分配的比較的技術(shù)的任何組合,存儲器剖析器204可以被配置成確定數(shù)據(jù)106是惡意的置信水平百分比。例如,如果兩個存儲器分配共享檢驗和,則存儲器剖析器204可以被配置成確定數(shù)據(jù)106是惡意的具有95%的確實性。在另一示例中,如果沒有兩個這樣的存儲器分配共享校驗和,但是兩個存儲器分配基本上具有相同的大小,則存儲器剖析器204可以被配置成確定數(shù)據(jù)106是惡意的具有50%的確實性。給定技術(shù)分配的百分比確實性可以可變的,這取決于所確定的存儲器分配中的差異。例如,如果兩個存儲器分配在大小上相同,則存儲器剖析器204可以被配置成確定數(shù)據(jù)106是惡意的具有85%的確實性。然而,如果兩個存儲器分配在大小上有10 %的不同,則存儲器剖析器204可以被配置為確定數(shù)據(jù)106是惡意的具有40%的確實性??梢栽诖_定置信級別百分比中組合多個技術(shù)。例如,如果兩個存儲器分配的熵相同,并且它們在短時間內(nèi)創(chuàng)建了彼此,則存儲器剖析器204可以被配置成確定數(shù)據(jù)106是惡意的具有95%的確實性。置信級別百分比因子的確定可以是基于模型數(shù)據(jù)數(shù)據(jù)庫218的。對已知惡意代碼的統(tǒng)計分析可以示出對存儲器剖析器204執(zhí)行的比較中的一個或多個的強相關(guān)。因此,存儲器剖析器204可以量化所觀測的、使用數(shù)據(jù)106的、對應(yīng)于這樣的已知行為的應(yīng)用程序224的行為。存儲器剖析器204所確定的置信級別百分比可以由其他反惡意軟件實體使用,它們被發(fā)送關(guān)于數(shù)據(jù)106的分析。
[0058]存儲器剖析器204可以被配置成訪問一個或多個其它反惡意軟件實體,以確定數(shù)據(jù)106的惡意軟件狀態(tài)。在一實施例中,存儲器剖析器204可以被配置成:在對數(shù)據(jù)106的分析已經(jīng)推斷出兩個存儲器分配匹配時,進行這樣的訪問。這樣的訪問可以針對數(shù)據(jù)106是惡意的錯誤判斷提供另外的檢查。在另一實施例中,存儲器剖析器204可以被配置成當(dāng)對數(shù)據(jù)106的分析已經(jīng)不能推斷任何兩個存儲器分配是否匹配或無法匹配時,進行這樣的訪問。這樣的訪問可以提供防御可能不匹配所預(yù)期的惡意軟件的行為,但是又不能確定性的確定為安全的惡意軟件的第二道防線。[0059]系統(tǒng)100可以包括通信地耦合到反惡意軟件檢測器102的本地反惡意軟件分類器216。本地反惡意軟件分類器216可以位于例如具有反惡意軟件檢測器102的服務(wù)器或局域網(wǎng)上。本地反惡意軟件分類器216可以包括配置成測試數(shù)據(jù)106的一個或多個應(yīng)用程序。反惡意軟件檢測器102可以被配置成向本地反惡意軟件分類器216發(fā)送數(shù)據(jù)106以及相關(guān)聯(lián)的信息和分析。本地反惡意軟件分類器216可以被配置成應(yīng)用比反惡意軟件檢測器102更資源密集的技術(shù)。例如,本地反惡意軟件分類器216可以被配置成確定數(shù)據(jù)106是否匹配基于簽名的白名單-其指示數(shù)據(jù)106是安全的-或黑名單-其指示數(shù)據(jù)106是惡意軟件。在另一示例中,本地反惡意軟件分類器216可以被配置成分析數(shù)據(jù)106,特別是對于殼代碼(shellcode),并產(chǎn)生數(shù)據(jù)106是否為惡意的置信級別。在這樣的示例中,本地反惡意軟件分類器216可以被配置成考慮由反惡意軟件檢測器102所完成的先前的分析。如果對于這樣的殼代碼分析,確定數(shù)據(jù)106是惡意的所需的缺省置信級別是95%,則反惡意軟件檢測器102確定數(shù)據(jù)106是惡意的或未知的可以導(dǎo)致本地反惡意軟件分類器216降低確定數(shù)據(jù)106是惡意的所必需的置信級別。例如,可以將置信級別降低至70%。
[0060]系統(tǒng)100可以包括通信地耦合到反惡意軟件檢測器102的、基于云的反惡意軟件分類器222?;谠频姆磹阂廛浖诸惼?22可以位于例如網(wǎng)絡(luò)220上的服務(wù)器上。網(wǎng)絡(luò)220可以包括任何適當(dāng)?shù)木W(wǎng)絡(luò)、網(wǎng)絡(luò)系列、或用于在反惡意軟件檢測器102和基于云的反惡意軟件分類器222之間通信的其部分。這樣的網(wǎng)絡(luò)可以包括但不限于:互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、廣域網(wǎng)、局域網(wǎng)、回程網(wǎng)、對等網(wǎng)或其任何組合。反惡意軟件檢測器102可以被配置成向基于云的反惡意軟件分類器222發(fā)送關(guān)于應(yīng)用程序224執(zhí)行數(shù)據(jù)106的上下文信息,例如代表數(shù)據(jù)106的執(zhí)行的元素或指紋或數(shù)字簽名的特征向量?;谠频姆磹阂廛浖诸惼?22可以被配置成確定其他反惡意軟件檢測器和任何相關(guān)聯(lián)的分析是否已經(jīng)報告了數(shù)據(jù)106?;谠频姆磹阂廛浖诸惼?22可以被配置成向反惡意軟件檢測器102返回對是否已知數(shù)據(jù)106是惡意的還是安全的指示。如果反惡意軟件檢測器102報告數(shù)據(jù)106是惡意的或安全的,則基于云的反惡意軟件分類器222可以被配置成將關(guān)于數(shù)據(jù)106的信息并入到已知安全或惡意的數(shù)據(jù)的統(tǒng)計模型中。可以向模型數(shù)據(jù)數(shù)據(jù)庫218提供這樣的統(tǒng)計模型。
[0061]反惡意軟件檢測器102可以包括耦合到處理器212的存儲器214。存儲器剖析器204、虛擬機202和虛擬存儲器管理器206可以以任何適當(dāng)?shù)倪^程、應(yīng)用程序、文件、可執(zhí)行程序或其他適當(dāng)?shù)膶嶓w來實現(xiàn)。存儲器剖析器204、虛擬機202和虛擬存儲器管理器206可以包含用于執(zhí)行本申請中描述的功能的指令,并且上述指令可以存儲在存儲器214中,以由處理器212執(zhí)行。
[0062]處理器212可以包括例如微處理器、微控制器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、或配置成解釋和/或執(zhí)行程序指令和/或過程數(shù)據(jù)的任何其他的數(shù)字或模擬電路。在一些實施例中,處理器212可以解釋和/或執(zhí)行在存儲器214中存儲的程序指令和/或過程數(shù)據(jù)。存儲器214可以被部分或全部配置作為應(yīng)用程序存儲器、系統(tǒng)存儲器、或兩者。存儲器214可以包括配置成持有或容納一個或多個存儲器模塊的任何系統(tǒng)、設(shè)備、或裝置。每一存儲器模塊可以包括配置成保存程序指令和/或數(shù)據(jù)一段時間的任何系統(tǒng)、設(shè)備或裝置(例如,計算機可讀介質(zhì))。
[0063]在操作上,可以在反惡意軟件檢測器102上執(zhí)行存儲器剖析器204、虛擬機202和虛擬存儲器管理器206。反惡意軟件檢測器102可以接收數(shù)據(jù)106,該數(shù)據(jù)106要被分析,以確定其是否包含基于溢出的惡意軟件。虛擬機202可以基于反惡意軟件檢測器102接收的數(shù)據(jù)106來發(fā)起應(yīng)用程序224。
[0064]語法分析器/解析器203可以將數(shù)據(jù)106分成數(shù)據(jù)段226并向虛擬機202發(fā)送這樣的段。虛擬機202可以訪問來自DOM處理程序210的一個或多個D0M,以確定如何執(zhí)行應(yīng)用程序204。應(yīng)用程序224可以執(zhí)行或模擬數(shù)據(jù)段226。在諸如終止執(zhí)行循環(huán)的各個過程流事件完成之后,虛擬機202可以通知存儲器剖析器204。如所需要的,虛擬機202可以訪問虛擬機存儲器管理器206,以創(chuàng)建存儲器分配207。虛擬機存儲器管理器206可以將新的存儲器分配傳遞給存儲器剖析器204。
[0065]在接收到過程流事件和/或新的存儲器分配之后,存儲器剖析器204可以將新的存儲器分配與先前創(chuàng)建的存儲器分配做比較。存儲器剖析器204可以繼續(xù)這樣的分析,直到已經(jīng)基于數(shù)據(jù)106完全地模擬或執(zhí)行了應(yīng)用程序224,或直到存儲器剖析器204確定數(shù)據(jù)106包括惡意軟件為止。
[0066]存儲器剖析器204可以將新的存儲器分配與先前創(chuàng)建的所有存儲器分配進行比較,以確定新的存儲器分配是否與先前的存儲器分配匹配,以確定數(shù)據(jù)106包括基于溢出的惡意軟件攻擊??梢允褂萌魏芜m當(dāng)?shù)募夹g(shù)來確定新的存儲器分配是否與先前的存儲器分配匹配。例如,可以比較每一存儲器分配的特征。在另外的示例中,可以將每一存儲器分配的特征之間的差異與一個或多個閾值進行比較。存儲器剖析器204可以組合一個或多個比較技術(shù)。存儲器剖析器204可以訪問模型數(shù)據(jù)數(shù)據(jù)庫218,以確定決策樹、要進行的比較、閾值或?qū)⑿碌拇鎯ζ鞣峙渑c先前創(chuàng)建的存儲器進行比較有用的其他信息。
[0067]存儲器剖析器204可以將新的存儲器分配的校驗和、簽名、或散列值與先前創(chuàng)建的存儲器分配進行比較。如果新的存儲器分配與先前的存儲器分配匹配,則存儲器剖析器204可以確定新的存儲器分配與先前的存儲器分配匹配。存儲器剖析器204可以至少初步地確定數(shù)據(jù)106包括基于溢出的惡意軟件。在一實施例中,存儲器剖析器204可以確定數(shù)據(jù)106包括惡意軟件,例如具有95%的置信級別。如果新的存儲器分配與先前的存儲器分配不匹配,則存儲器剖析器204可以進行另外的比較。
[0068]存儲器剖析器204可以將新的存儲器分配的大小與先前創(chuàng)建的存儲器分配進行比較。如果新的存儲器分配與先前創(chuàng)建的存儲器分配具有相同的大小,或在所指定的大小的閾值差異內(nèi),則存儲器剖析器204可以確定新的存儲器分配與先前的存儲器分配相匹配,并且如果該存儲器分配與先前的存儲器分配匹配,則數(shù)據(jù)106包括惡意軟件。如果在新的存儲器分配和先前的存儲器分配之間的大小的差異超出給定的閾值,則存儲器剖析器204可以確定新的存儲器分配與先前的存儲器分配不匹配。如果在存儲器分配和先前的存儲器分配之間的大小差異超出更大的第二閾值,則存儲器剖析器204可以確定數(shù)據(jù)106不包括惡意軟件。可以結(jié)合其他的比較來使用存儲器剖析器204確定新的存儲器分配關(guān)于大小匹配或不匹配。在一實施例中,存儲器剖析器204可以量化在新的存儲器分配與先前的存儲器分配之間關(guān)于大小的差異,并將該差異轉(zhuǎn)換成數(shù)據(jù)106包括惡意軟件的置信級別。可以結(jié)合諸如下文描述的比較之類的其它比較來使用這樣的置信級別。
[0069]存儲器剖析器204可以將新的存儲器分配的熵與先前創(chuàng)建的存儲器分配進行比較。如果新的存儲器分配與先前創(chuàng)建的存儲器分配具有相同的熵,或其在指定的熵的差異閾值內(nèi),則存儲器剖析器204可以確定新的存儲器分配與先前的存儲器分配匹配。如果該存儲器分配與先前的存儲器分配匹配,則存儲器剖析器204可以確定數(shù)據(jù)106包含惡意軟件。如果在新的存儲器分配與先前的存儲器分配之間的熵的差異超出給定閾值,則存儲器剖析器204可以確定新的存儲器分配與先前的存儲器分配匹配。如果存儲器分配關(guān)于熵與先前的存儲器分配不匹配,則存儲器剖析器204可以確定數(shù)據(jù)106不包括惡意軟件??梢越Y(jié)合其他的比較來使用由存儲器剖析器204確定的新的存儲器分配關(guān)于熵匹配或不匹配先前的存儲器分配。在一實施例中,存儲器剖析器204可以量化新的存儲器分配和先前的存儲器分配關(guān)于熵之間的差異,并將該差異轉(zhuǎn)換成數(shù)據(jù)106包括惡意軟件的置信級別。可以結(jié)合其他比較來使用這樣的置信級別。
[0070]存儲器剖析器204可以將新的存儲器分配的做出分配的時間與先前創(chuàng)建的存儲器分配的到達時間進行比較。如果新的存儲器分配的分配時間在所指定的先前的存儲器分配的分配時間的指定閾值內(nèi),則存儲器剖析器204可以確定新的存儲器分配在時間上足夠接近,并且匹配先前的存儲器分配。如果該存儲器分配在時間上與先前的存儲器分配足夠接近,則存儲器剖析器204可以確定數(shù)據(jù)106包括惡意軟件。如果在新的存儲器分配與先前的存儲器分配之間的分配時間上的差異超出給定的閾值,則存儲器剖析器204可以確定新的存儲器分配無法與先前的存儲器分配匹配。如果該存儲器分配無法與先前的存儲器分配關(guān)于分配時間匹配,則存儲器剖析器204可以確定數(shù)據(jù)106不包括惡意軟件??梢越Y(jié)合其他的比較來使用由存儲器剖析器204確定的新的存儲器分配匹配或不匹配先前的存儲器分配。在一實施例中,存儲器剖析器204可以量化新的存儲器分配和先前的存儲器分配之間關(guān)于分配時間的差異,并將該差異轉(zhuǎn)換成數(shù)據(jù)106包括惡意軟件的置信級別。可以結(jié)合其他比較來使用這樣的置信級別。
[0071]確定給定的比較產(chǎn)生惡意的結(jié)果或未知的結(jié)果可以使得存儲器剖析器204進行另外的比較或訪問另外 的反惡意軟件資源。在一個實施例中,確定給定的比較產(chǎn)生安全結(jié)果可以使得存儲器剖析器204執(zhí)行另外的比較。在另一實施例中,這樣的確定可以使得存儲器剖析器204確定代碼106是安全的。在又一另外的實施例中,僅在所有的比較方法產(chǎn)生安全的確定之后,存儲器剖析器204才確定代碼106是安全的。
[0072]虛擬機202、存儲器剖析器204和虛擬機存儲器管理器206可以繼續(xù)處理數(shù)據(jù)106,直到應(yīng)用程序224已經(jīng)完成執(zhí)行。在檢測到潛在的惡意數(shù)據(jù)組106或其惡意軟件狀態(tài)是未知的一組數(shù)據(jù)106之后,存儲器剖析器204可以使用本地的反惡意軟件分類器216或基于云的反惡意軟件分類器222來進行對數(shù)據(jù)106的進一步分析。存儲器剖析器204可以向這樣的實體發(fā)送簽名、特征向量或關(guān)于數(shù)據(jù)106的其他信息。存儲器剖析器204可以接收這樣的實體關(guān)于數(shù)據(jù)106是否可以被確定為包括基于溢出的惡意軟件的指示。
[0073]圖3是對系統(tǒng)100的示例性操作的進一步描述。先前的存儲器分配304可以包括先前分配的塊塊C1-塊5以及相關(guān)聯(lián)的信息:
[0074]塊。:校驗和=123 ;熵=I ;時間戳=001 ;大小=22
[0075]塊!:校驗和=345 ;熵=3 ;時間戳=200 ;大小=47
[0076]塊2:校驗和=456 ;熵=5 ;時間戳=400 ;大小=62
[0077]塊3:校驗和=123 ;熵=7 ;時間戳=600 ;大小=82
[0078]塊4:校驗和=789 ;熵=8 ;時間戳=800 ;大小=56[0079]可以通過如上文所描述的任何適當(dāng)?shù)姆绞絹泶_定每一塊的校驗和熵。每一塊的時間戳可以利用分配該塊的時間來確定,并且其可以例如以毫秒來測量??梢砸灾T如字節(jié)之類的任何適當(dāng)?shù)姆绞絹頊y量每一塊的大小。存儲器剖析器204可以通過例如在由虛擬機存儲器管理器206接收到其時存儲信息或通過訪問虛擬機存儲器管理器206來訪問先前的分配 304。
[0080]虛擬機202可以生成循環(huán)事件308的結(jié)束并將其發(fā)送至存儲器剖析器204。虛擬機存儲器管理器206可以分配稱為塊5的新塊302,并向存儲器剖析器204發(fā)送關(guān)于其的信息。[0081]存儲器剖析器204可以訪問模型數(shù)據(jù)數(shù)據(jù)庫218,以獲得諸如利用其來比較塊5和先前的分配304的閾值306之類的模型數(shù)據(jù)。例如,閾值306可以指示:小于10毫秒的時間差異和小于I字節(jié)的大小差異可以指示數(shù)據(jù)106可能包括基于溢出的惡意軟件。在另一示例中,閾值306可以指示:大于300毫秒的時間差異和大于60字節(jié)的大小差異可以指示數(shù)據(jù)106不可能包括基于溢出的惡意軟件。
[0082]存儲器剖析器204可以比較塊5的信息和先前的分配304,以確定塊5是否匹配任何這樣的分配來確定數(shù)據(jù)106指示基于溢出的惡意軟件,無法匹配這樣的分配、或不能確信地確定匹配或無法匹配。
[0083]例如,塊5可以具有“123”的校驗和。存儲器剖析器204可以確定塊5的校驗和與來自先前的分配304的塊^和塊3的校驗和都匹配。存儲器剖析器204可以確定塊5與塊。和塊3匹配,并確定這樣的匹配是數(shù)據(jù)106包含基于溢出的惡意軟件的指示。確定塊5與超過先前的分配304中的一個匹配可以提供數(shù)據(jù)105包含基于溢出的惡意軟件的進一步證據(jù)。存儲器剖析器204可以向基于云的反惡意軟件分類器222或本地反惡意軟件分類器發(fā)送數(shù)據(jù)106、塊5、塊。和塊3,以進行進一步報告和分析。存儲器剖析器204可以通知反惡意軟件檢測器102數(shù)據(jù)106可能是惡意的并且應(yīng)該將其清除、阻擋或移除。存儲器剖析器204可以建立例如數(shù)據(jù)106包含基于溢出的惡意軟件的95%的置信級別。在一實施例中,塊5與先前的分配304的另外的比較可能是不必需的。
[0084]在另一實施例中,塊5可以具有46個字節(jié)的大小以及熵值3。存儲器剖析器204可以確定塊5的熵與來自先前的分配304的塊i的熵匹配。存儲器剖析器204可以確定塊5與塊i匹配,并且確定這樣的匹配是數(shù)據(jù)106包含基于溢出的惡意軟件的指示。存儲器剖析器204可以建立例如數(shù)據(jù)106包含基于溢出的惡意軟件的40%的置信級別。在一實施例中,塊5與塊i之間匹配的熵值可能不足以確定塊5與塊i匹配。在這樣的實施例中,可以進行另外的比較。
[0085]從而,存儲器剖析器可以確定塊5與塊i之間的大小差異是I字節(jié),其小于在閾值306中所標(biāo)識的閾值。存儲器剖析器204可以確定塊5與塊i匹配,并且確定這樣的匹配是數(shù)據(jù)106包含基于溢出的惡意軟件的指示。使用大小和熵的比較的組合可以使得存儲器剖析器204到存儲器剖析器204確定數(shù)據(jù)106包含基于溢出的惡意軟件。存儲器剖析器204可以建立例如數(shù)據(jù)106包含基于溢出的惡意軟件的95%的置信級別。存儲器剖析器204可以向基于云的反惡意軟件分類器222或本地反惡意軟件分類器發(fā)送數(shù)據(jù)106、塊5和塊1;以進行進一步報告和分析。存儲器剖析器204可以通知反惡意軟件檢測器102數(shù)據(jù)106可能是惡意的并且應(yīng)該將其清除、阻擋或移除。[0086]在又一實施例中,塊5可能具有時間戳“405”。存儲器剖析器204可以確定塊5的時間戳位于塊2的小于10毫秒的閾值(由閾值306定義)內(nèi)。存儲器剖析器204可以確定塊5與塊2匹配,并確定這樣的匹配是數(shù)據(jù)106包含基于溢出的惡意軟件的指示。存儲器剖析器204可以向基于云的反惡意軟件分類器222或本地反惡意軟件分類器發(fā)送數(shù)據(jù)106、塊5和塊2,以進行進一步報告和分析。存儲器剖析器204可以通知反惡意軟件檢測器102:數(shù)據(jù)106可能是惡意的,并且應(yīng)該將其清除、阻擋或移除。存儲器剖析器204可以建立例如數(shù)據(jù)106包含基于溢出的惡意軟件的80%的置信級別。
[0087]但是如果塊5的大小也為82字節(jié),則存儲器剖析器204可以確定塊5與塊2之間的大小差異不在如由閾值306所定義的小于I字節(jié)的閾值內(nèi)。因此,存儲器剖析器204可能不能基于大小比較確定塊5匹配塊2。對于塊5,存儲器剖析器204可以降低數(shù)據(jù)106包含基于溢出的惡意軟件的置信級別。存儲器剖析器204可以向基于云的反惡意軟件分類器222和本地反惡意軟件分類器216提交塊5、塊2和數(shù)據(jù)106以另外指示數(shù)據(jù)106是惡意的。可以與由存儲器剖析器204確定的置信級別或惡意軟件信息一起提交這樣的信息,并且這樣的信息可以由基于云的反惡意軟件分類器222和本地反惡意軟件分類器216在進行惡意軟件確定時考慮在內(nèi)。
[0088]在又一個示例中,塊5可以具有“750”的時間戳和120字節(jié)的大小。存儲器剖析器204可以確定塊5在大小差異(64字節(jié))方面與塊4匹配。根據(jù)閾值306,大于60字節(jié)的大小差異可以指示存儲器分配匹配。但是,存儲器剖析器204可以確定塊5與塊i之間的時間差異(50毫秒)既不落入第一閾值(小于10毫秒)(以確定塊匹配),也不在第二閾值之外(大于300毫秒)(以確定塊不匹配)。存儲器剖析器204可以向基于云的反惡意軟件分類器222和本地反惡意軟件分類器216提交塊5、塊4和數(shù)據(jù)106,用于數(shù)據(jù)106是惡意的或安全的另外的指示。存儲器剖析器204可以進行另外的比較,例如校驗和或熵比較,以進一步確定塊5的狀態(tài)。在一實施例中,存儲器剖析器204可以忽視多個決定性的比較中的單個未確定的狀態(tài)比較。
[0089]在另外的示例中,塊5可以具有時間戳“1100”、校驗和“555”、熵值6以及180字節(jié)的大小。存儲器剖析器204可以確定塊5不匹配先前的分配304的任何校驗和或任何熵。此外,存儲器剖析器204可以確定塊5與先前的分配304之間的大小差異超出閾值大小差異量(60字節(jié)),并且將被認為匹配,如閾值306所限定的。此外,存儲器剖析器204可以確定塊5與先前的分配304之間的時間差異超出時間閾值量(300毫秒),并且將無法匹配,如由閾值306所定義的。存儲器剖析器204可以推斷塊5基本上與任何的先前的分配304不同,并且因此數(shù)據(jù)106不包括基于溢出的惡意軟件。
[0090]圖4是對用于預(yù)測性堆溢出保護的方法400的示例性實施例的描述。
[0091]在步驟404,可以攔截數(shù)據(jù)的下載,或可以檢測到駐留在電子設(shè)備上的數(shù)據(jù)。這樣的數(shù)據(jù)可能是未知的、不可信的或具有不知道是安全的惡意軟件狀態(tài)。例如,上述數(shù)據(jù)可以是從未知的網(wǎng)絡(luò)目的地下載的。上述數(shù)據(jù)可以包括要由應(yīng)用程序使用的應(yīng)用程序或信息??梢詫⑴c上述數(shù)據(jù)相關(guān)聯(lián)的應(yīng)用程序確定利用該數(shù)據(jù)執(zhí)行。
[0092]在步驟410,可以使用上述數(shù)據(jù)執(zhí)行或模擬該應(yīng)用程序。例如,可以在虛擬機中模擬該應(yīng)用程序,或例如在數(shù)據(jù)駐留在其上的電子設(shè)備上執(zhí)行該應(yīng)用程序。可以由例如虛擬機存儲器監(jiān)控器或存儲器分配功能中的鉤子(hook)來檢查應(yīng)用程序中循環(huán)的執(zhí)行或試圖的存儲器分配。在步驟415中,可以確定的是執(zhí)行循環(huán)已經(jīng)終止和/或應(yīng)用程序已經(jīng)進行新的存儲器分配。
[0093]可以將新的存儲器分配與先前的存儲器分配進行比較,以確定惡意軟件是否正在進行操作來重復(fù)地寫惡意代碼,以試圖利用應(yīng)用程序中基于溢出的弱點??梢砸匀魏芜m當(dāng)?shù)姆绞絹韺⑿碌拇鎯ζ鞣峙渑c先前的存儲器分配進行比較。
[0094]在步驟420中,可以確定新創(chuàng)建的存儲器分配的校驗和、散列值或數(shù)字簽名。在步驟425中,可以確定該校驗和是否與任何先前創(chuàng)建的存儲器分配的校驗和匹配。如果匹配的話,則方法400可以繼續(xù)到步驟465。
[0095]如果新的存儲器分配的校驗和與任何先前創(chuàng)建的存儲器分配不匹配,則在步驟430中,可以確定存儲器分配是否匹配或等于任何先前的存儲器分配??梢允褂萌魏芜m當(dāng)?shù)姆椒▉肀容^該存儲器分配與先前的存儲器分配。例如,可以比較上述分配的大小、熵和/或分配時間??梢允褂梅峙渲g的閾值差異來測量差異或使差異合格。在一實施例中,步驟430可以由如圖5a和5b中示出的方法500的步驟來進行。如果存儲器分配匹配或等于任何先前的存儲器分配,則方法400可以繼續(xù)進行到步驟465。
[0096]如果存儲器分配與任何先前的存儲器分配都不匹配,則在步驟435中,可以確定該應(yīng)用程序是否已經(jīng)完成執(zhí)行。如果沒有完成,則方法400可以返回到步驟415,以等待新存儲器分配的分配。如果該應(yīng)用程序已經(jīng)完成執(zhí)行,則在步驟440中,可以確定存儲器分配是否不與任何先前的分配匹配。雖然在不同的步驟中給出了步驟440和步驟430,但是,他們可以并行地執(zhí)行??梢允褂梅峙渲g的另一閾值差異來測量分配之間的差異或使分配之間的差異合格。在一實施例中,步驟440可以由如圖6中示出的方法600的步驟來進行。如果該存儲器分配與所有先前的存儲器分配都不匹配,則方法400可以繼續(xù)到步驟470。
[0097]如果存儲器分配與所有先前的存儲器分配都不匹配,則基于通過數(shù)據(jù)的使用生成的存儲器分配的比較可能不能完全地確定數(shù)據(jù)是否為惡意的。在步驟445中,可以向配置成進行例如核心(shell)代碼、基于簽名的或聲譽的分析的反惡意軟件模塊發(fā)送比較的結(jié)果和數(shù)據(jù)。從而,可以確定基于數(shù)據(jù)自身結(jié)合例如通過在步驟430和440中分析存儲器分配行為確定的置信級別的惡意軟件狀態(tài)。
[0098]在步驟450中,如果基于這樣的分析確定數(shù)據(jù)是惡意的,則方法400可以轉(zhuǎn)到步驟465。如果確定數(shù)據(jù)不是惡意的,則方法400可以轉(zhuǎn)到步驟470。
[0099]在步驟465中,基于當(dāng)使用數(shù)據(jù)時對存儲器分配行為的分析,可以確定數(shù)據(jù)是惡意的。這樣的數(shù)據(jù)可以包括基于溢出的惡意軟件??梢圆扇∪魏芜m當(dāng)?shù)男U齽幼???梢宰钃踹M一步下載這樣的數(shù)據(jù),或者從電子設(shè)備或網(wǎng)絡(luò)清除或移除這樣的數(shù)據(jù)。在步驟475中,可以利用上述數(shù)據(jù)以及分析的結(jié)果向基于云的反惡意軟件服務(wù)器報告這樣的惡意確定??梢詫⑦@樣的惡意確定并入存儲器分配行為的特征。
[0100]在步驟470中,基于當(dāng)使用數(shù)據(jù)時對存儲器分配行為的分析,可以確定數(shù)據(jù)是安全的??梢栽试S執(zhí)行上述數(shù)據(jù)或允許將上述數(shù)據(jù)下載到其目標(biāo)客戶端。在步驟475中,可以與上述數(shù)據(jù)以及分析的結(jié)果一起向基于云的反惡意軟件服務(wù)器報告安全確定。可以將這樣的安全確定并入存儲器分配行為的特征。
[0101]圖5a和5b是對用于確定存儲器分配是否與先前創(chuàng)建的存儲器分配匹配并從而指示基于溢出的惡意軟件的示例性方法500的描述。[0102]在步驟505中,模型數(shù)據(jù)指示可以確定惡意軟件。這樣的模型數(shù)據(jù)可以是對已知為基于溢出的惡意軟件的數(shù)據(jù)的存儲器分配行為的統(tǒng)計分析的結(jié)果??梢栽诶鐢?shù)據(jù)庫中訪問模型數(shù)據(jù),并且可能已經(jīng)由反惡意軟件服務(wù)器或服務(wù)生成上述模型數(shù)據(jù)。模型數(shù)據(jù)可以包括層級、決策樹、比較、和/或要應(yīng)用于描繪存儲器分配行為特征的閾值。
[0103]方法500可以包括新創(chuàng)建的存儲器分配與先前創(chuàng)建的存儲器分配的比較的任何適當(dāng)?shù)慕M合。在一實施例中,給定的度量指示新創(chuàng)建的存儲器分配與先前創(chuàng)建的存儲器分配匹配的確定可能足以確定分配行為指示了基于溢出的惡意軟件。在另一實施例中,這樣的確定可能需要使用其他度量的另外的比較。下文示出了三個這樣的可能的比較。通過對已知為基于溢出的惡意軟件的數(shù)據(jù)的存儲器分配行為的統(tǒng)計分析,可以確定以特定的順序應(yīng)用比較的特定組合。在又一實施例中,任何這樣的比較可以產(chǎn)生存儲器分配匹配先前的存儲器分配的置信級別,并從而指示惡意軟件。還可以通過所描述的統(tǒng)計分析來確定置信級別。此外,可以并行地或與所描述的比較相混合的進行方法600的步驟。
[0104]在步驟510中,可以將新的存儲器分配的熵與先前的分配的熵進行比較??梢允褂萌魏芜m當(dāng)?shù)撵氐臏y量。在步驟515中,如果分配之間的熵的差異低于熵閾值,則在步驟520中,可以確定這樣的差異是分配匹配的指示。在一實施例中,可以使用這樣的確定來增加分配匹配的置信級別。如果分配之間的熵差異不低于熵閾值,則在步驟525中,可以確定這樣的差異不是分配匹配的指示。在一實施例中,可以使用這樣的確定來減少分配匹配的置信級別。
[0105]在步驟530中,可以將新存儲器分配的大小與先前的分配的大小進行比較。在步驟535中,如果分配之間的大小差異低于大小閾值,則在步驟540中,可以確定這樣的差異是分配匹配的指示。在一實施例中,可以使用這樣的確定增加分配匹配的置信級別。如果分配之間的大小差異不低于大小閾值,則在步驟545中,可以確定這樣的差異不是分配匹配的指示。在一實施例中,可以使用這樣的確定來減少分配匹配的置信級別。
[0106]在步驟550中,可以將新存儲器分配的創(chuàng)建和分配時間與先前分配的創(chuàng)建時間進行比較。在步驟555,如果分配之間的創(chuàng)建時間差異低于時間閾值,則在步驟560中,可以確定這樣的差異是分配匹配的指示。在一實施例中,可以使用這樣的確定來增加分配匹配的置信級別。如果分配之間的創(chuàng)建時間差異不低于時間閾值,則在步驟565中,可以確定這樣的差異不是分配匹配的指示。在一實施例中,可以使用這樣的確定來減少分配匹配的置信級別。
[0107]在步驟570中,可以確定是否已經(jīng)將新的分配與所有的先前分配進行了比較。如果沒有,則方法500可以返回步驟510,以繼續(xù)比較新的分配和另一個給定的先前分配。
[0108]如果已經(jīng)將新的分配與所有先前的分配進行了比較,則在步驟575中,可以確定新的分配與先前分配中的任何一個是否匹配。在一實施例中,如果通過兩個比較已經(jīng)確定新的分配與先前分配的特征匹配,則在步驟580中,可以確定新的分配匹配先前的分配。在另一實施例中,如果新的分配匹配先前的分配的置信級別超出諸如95%的閾值,則在步驟580中,可以確定新的分配匹配先前的分配。如果不超出閾值,則在步驟585中,可以確定新的分配與先前的分配不匹配。
[0109]圖6是對用于確定存儲器分配是否與先前創(chuàng)建的存儲器分配不匹配并從而指示基于溢出的惡意軟件不存在的方法600的示例性實施例的描述。[0110]在步驟605中,可以確定指示安全數(shù)據(jù)的模型數(shù)據(jù)。這樣的模型數(shù)據(jù)可以是對已知是安全的數(shù)據(jù)的存儲器分配行為的統(tǒng)計分析的結(jié)果。可以在例如數(shù)據(jù)庫中訪問模型數(shù)據(jù),并且上述模型數(shù)據(jù)可能已經(jīng)由反惡意軟件服務(wù)器或服務(wù)生成。模型數(shù)據(jù)可以包括要應(yīng)用于描繪存儲器分配行為的特征的層級、決策樹、比較、和/或閾值。
[0111]方法600可以包括新創(chuàng)建的存儲器分配與先前創(chuàng)建的存儲器分配的比較的任何適當(dāng)組合。在一實施例中,給定度量指示新創(chuàng)建的存儲器分配與先前創(chuàng)建的存儲器分配不匹配的確定可能足以確定該分配行為指示了基于溢出的惡意軟件。在另一實施例中,這樣的確定可能需要使用其他度量的另外的比較。下文示出了三個這樣的可能的比較。通過對已知為基于溢出的惡意軟件的數(shù)據(jù)的存儲器分配行為進行統(tǒng)計分析,可以確定以特定的順序應(yīng)用比較的特定組合。在又一實施例中,可以使用所有這樣的比較來確定存儲器分配不與先前的存儲器分配中的任何一個匹配,并從而指示數(shù)據(jù)是安全的。方法600的比較可以與方法500并行地進行或與方法500混合進行。
[0112]在步驟610中,可以將新存儲器分配的熵與先前分配的熵進行比較??梢允褂渺氐娜魏芜m當(dāng)測量。在步驟615中,如果分配之間的熵差異高于熵閾值,則方法600可以轉(zhuǎn)到步驟620以繼續(xù)進行分配之間的比較。如果熵的差異不超出熵閾值,則方法600可以轉(zhuǎn)到步驟650。
[0113]在步驟620中,可以將新存儲器分配的大小與先前分配的大小進行比較。在步驟625中,如果分配之間的大小差異高于大小閾值,則方法600可以轉(zhuǎn)到步驟630以繼續(xù)進行分配之間的比較。如果分配之間的大小差異不高于大小閾值,則方法600可以轉(zhuǎn)到步驟650。
[0114]在步驟630中,可以將新存儲器分配的創(chuàng)建時間與先前分配的創(chuàng)建時間進行比較。在步驟635中,如果分配之間的創(chuàng)建時間差異高于時間閾值,則方法600可以轉(zhuǎn)到步驟640,以繼續(xù)進行分配之間的比較。如果分配之間的創(chuàng)建時間差異不高于時間閾值,則方法600可以轉(zhuǎn)到步驟650。
[0115]在步驟640,可以確定是否已經(jīng)將新分配與所有先前創(chuàng)建的分配進行了比較。如果沒有,則方法600可以返回步驟610,以將新分配與另一給定的先前分配進行比較。
[0116]如果已經(jīng)將新分配與所有先前創(chuàng)建的分配進行了比較,則在步驟645中,可以確定新分配與任何先前創(chuàng)建的分配都不匹配。在一實施例中,已經(jīng)將新分配與所有這樣的分配進行了比較,并且超出了在每一個比較檢查中定義的閾值差異。在另一實施例中,如果在至少兩個比較中,差異超出了閾值,則可以確定該新分配不與先前創(chuàng)建的分配匹配。
[0117]在步驟650中,可以確定新分配不與任何先前創(chuàng)建的分配匹配。在與先前創(chuàng)建的分配的比較期間,該新分配可能不滿足至少一個差異閾值。從而,可能存在新分配與先前創(chuàng)建的分配匹配的合理機會。
[0118]可以使用圖1-4中的系統(tǒng)或操作成執(zhí)行方法400、500和600的任何其他系統(tǒng)來實現(xiàn)方法400、500和600。這樣的話,用于方法400、500和600以及包括方法400、500和600的步驟的順序的優(yōu)選初始化點可以取決于所選擇的實現(xiàn)。在一些實施例中,可以可選地省略、重復(fù)或組合一些步驟。可以并行地進行方法400、500和600中的某些步驟。在某些實施例中,可以以在計算機可讀介質(zhì)中包含的軟件部分地或完全地實現(xiàn)方法400、500和600。
[0119]為了本公開的目的,計算機可讀介質(zhì)可以包括可以保存數(shù)據(jù)和/或指令一段時間的任何工具或工具的聚合。計算機可讀介質(zhì)可以包括但不限于,諸如直接訪問存儲設(shè)備(例如,硬盤驅(qū)動或軟盤)、順序存取存儲器設(shè)備(例如,磁帶磁盤驅(qū)動)、壓縮盤、CD-ROM、DVD、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)JP/或閃存之類的存儲介質(zhì);以及諸如電線、光纖和其他電磁的和/或光學(xué)的載波之類的通信介質(zhì);和/或前述的任何組合。
[0120] 雖然已經(jīng)詳細地描述了本公開,但是應(yīng)該理解的是可以對其進行各種改變、替換和修改,而不偏離由所附權(quán)利要求書所定義的本公開的精神和保護范圍。
【權(quán)利要求】
1.一種用于防止惡意軟件攻擊的方法,包括: 識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不是已知安全的; 使用所述數(shù)據(jù)發(fā)起應(yīng)用程序; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配; 將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及 基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
2.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:應(yīng)用標(biāo)準(zhǔn)來確定所述新的存儲器分配是否與所述先前的存儲器分配中的一個或多個匹配;以及基于所述標(biāo)準(zhǔn)的應(yīng)用,確定所述數(shù)據(jù)是否包括惡意軟件。
3.根據(jù)權(quán)利要求1所述的方法,還包括: 在虛擬機上模擬所述應(yīng)用程序的執(zhí)行; 檢測在所述虛擬機上的所述應(yīng)用程序的執(zhí)行中的執(zhí)行循環(huán)的終止;以及 在所述虛擬機上創(chuàng)建所述新的存儲器分配; 其中,在檢測到所述執(zhí)行循環(huán)的終止之后,比較所述新的存儲器分配和所述先前的存儲器分配。
4.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配的校驗和是否與所述先前的存儲器分配中的任何一個的校驗和相等。
5.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的閾值量內(nèi)。
6.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的閾值創(chuàng)建時間內(nèi)創(chuàng)建。
7.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述第一熵值是否在所述第二熵值的閾值量內(nèi)。
8.根據(jù)權(quán)利要求1所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括以下各項中的兩項或更多項: 將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較; 將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括確定如下各項中的兩項或更多項: 所述新的存儲器分配的校驗和是否等于所述先前的存儲器分配中的任何一個的校驗和; 所述新的存儲 器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的第一閾值量內(nèi); 所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的第二閾值創(chuàng)建時間內(nèi)創(chuàng)建; 所述第一熵值是否在所述第二熵值的第三閾值量內(nèi)。
9.根據(jù)權(quán)利要求1所述的方法,還包括: 基于所述比較,確定所述數(shù)據(jù)的惡意軟件狀態(tài)是未知的;以及 基于所述數(shù)據(jù)的內(nèi)容,執(zhí)行反惡意軟件分析,以確定所述數(shù)據(jù)是否包括惡意軟件。
10.一種制品,包括: 一種計算機可讀介質(zhì);以及 在所述計算機可讀介質(zhì)上攜帶的計算機可執(zhí)行指令,所述指令能夠由處理器讀取,當(dāng)讀取或執(zhí)行時,所述指令用于使所述處理器執(zhí)行以下操作: 識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不是已知安全的; 使用所述數(shù)據(jù)發(fā)起應(yīng)用程序; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配; 將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及 基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
11.根據(jù)權(quán)利要求10所述的制品,其中還使所述處理器執(zhí)行以下操作: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:應(yīng)用標(biāo)準(zhǔn)來確定所述新的存儲器分配是否與所述先前的存儲器分配中的一個或多個匹配;以及基于所述標(biāo)準(zhǔn)的應(yīng)用,確定所述數(shù)據(jù)是否包括惡意軟件。
12.根據(jù)權(quán)利要求10所述的制品,其中還使所述處理器執(zhí)行以下操作: 在虛擬機上模擬所述應(yīng)用程序的執(zhí)行; 檢測在所述虛擬機上的所述應(yīng)用程序的執(zhí)行中的執(zhí)行循環(huán)的終止;以及 在所述虛擬機上創(chuàng)建所述新的存儲器分配; 其中,在檢測到所述執(zhí)行循環(huán)的終止之后,比較所述新的存儲器分配和所述先前的存儲器分配。
13.根據(jù)權(quán)利要求10所述的制品,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配是否與所述先前的存儲器分配中的任何一個的校驗和相等。
14.根據(jù)權(quán)利要求10所述的制品,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的閾值量內(nèi)。
15.根據(jù)權(quán)利要求10所述的制品,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的閾值創(chuàng)建時間內(nèi)創(chuàng)建。
16.根據(jù)權(quán)利要求10所述的方法,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述第一熵值是否在所述第二熵值的閾值量內(nèi)。
17.根據(jù)權(quán)利要求10所述的制品,其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括以下各項中的兩項或更多項: 將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較; 將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括確定如下各項中的兩項或更多項: 所述新的存儲器分配校驗和是否等于所述先前的存儲器分配中的任何一個的校驗和; 所述新的存儲器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的第一閾值量內(nèi); 所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的第二閾值創(chuàng)建時間內(nèi)創(chuàng)建; 所述第一熵值是否在所述第二熵值的第三閾值量內(nèi)。
18.根據(jù)權(quán)利要求10所述的制品,其中,還使得所述處理器執(zhí)行以下操作:基于所述標(biāo)準(zhǔn)的應(yīng)用,確定所述數(shù)據(jù)的惡意軟件狀態(tài)是未知的;以及 基于所述數(shù)據(jù)的內(nèi)容,執(zhí)行反惡意軟件分析,以確定所述數(shù)據(jù)是否包括惡意軟件。
19.一種用于防止惡意軟件攻擊的系統(tǒng),包括: 耦合到存儲器的處理器;以及 由所述處理器執(zhí)行的反惡意軟件檢測器,其駐留在所述存儲器中,所述反惡意軟件檢測器被配置成: 識別一組數(shù)據(jù),所述一組數(shù)據(jù)的惡意軟件狀態(tài)不是已知安全的; 使用所述數(shù)據(jù)發(fā)起應(yīng)用程序; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了一個或多個先前的存儲器分配; 確定所述應(yīng)用程序已經(jīng)創(chuàng)建了新的存儲器分配; 將所述新的存儲器分配與所述先前的存儲器分配進行比較;以及 基于所述比較,確定所述數(shù)據(jù)是否包括惡意軟件。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,所述反惡意軟件檢測器還被配置成: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:應(yīng)用標(biāo)準(zhǔn)來確定所述新的存儲器分配是否與所述先前的存儲器分配中的一個或多個匹配;以及 基于所述標(biāo)準(zhǔn)的應(yīng)用,確定所述數(shù)據(jù)是否包括惡意軟件。
21.根據(jù)權(quán)利要求19所述的系統(tǒng),還包括虛擬機,其中: 所述虛擬機被配置成: 模擬所述應(yīng)用程序的執(zhí)行;以及 創(chuàng)建所述新的存儲器分配;以及 所述反惡意軟件檢測器被配置成檢測在所述虛擬機上的所述應(yīng)用程序的執(zhí)行中的執(zhí)行循環(huán)的終止; 其中反惡意軟件檢測器被配置成:在檢測到所述執(zhí)行循環(huán)的終止之后,比較所述新的存儲器分配和所述先前的存儲器分配。
22.根據(jù)權(quán)利要求19所述的系統(tǒng),其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配是否與所述先前的存儲器分配中的任何一個的校驗和相等。
23.根據(jù)權(quán)利要求19所述的系統(tǒng),其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的閾值量內(nèi)。
24.根據(jù)權(quán)利要求19所述的系統(tǒng),其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的閾值創(chuàng)建時間內(nèi)創(chuàng)建。
25.根據(jù)權(quán)利要求19所述的系統(tǒng),其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括:將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括:確定所述新的熵值是否在所述第二熵值的閾值量內(nèi)。
26.根據(jù)權(quán)利要求19所述的系統(tǒng),其中: 將所述新的存儲器分配與所述先前的存儲器分配進行比較包括以下各項中的兩項或更多項: 將所述新的存儲器分配的校驗和與所述先前的存儲器分配中的一個或多個的校驗和進行比較; 將所述新的存儲器分配的大小與一個或多個先前的存儲器分配的大小進行比較;將所述新的存儲器分配的創(chuàng)建時間與一個或多個先前的存儲器分配的創(chuàng)建時間進行比較;以及 將所述新的存儲器分配的第一熵值與一個或多個先前的存儲器分配的第二熵值進行比較;以及 確定所述數(shù)據(jù)是否包括惡意軟件包括確定如下各項中的兩項或更多項: 所述新的存儲器分配校驗和是否等于所述先前的存儲器分配中的任何一個的校驗和; 所述新的存儲器分配的大小是否在所述先前的存儲器分配中的任何一個的大小的第一閾值量內(nèi); 所述新的存儲器分配是否在所述先前的存儲器分配中的任何一個的第二閾值創(chuàng)建時間內(nèi)創(chuàng)建; 所述第一熵值是否在所述第二熵值的第三閾值量內(nèi)。
27.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,所述反惡意軟件檢測器還被配置成: 基于所述標(biāo)準(zhǔn)的應(yīng)用,確定所述數(shù)據(jù)的惡意軟件狀態(tài)是未知的;以及 基于所述數(shù)據(jù)的內(nèi)容,執(zhí)行反惡意軟件分析,以確定所述數(shù)據(jù)是否包括惡意軟件。
【文檔編號】G06F21/52GK103975337SQ201280060659
【公開日】2014年8月6日 申請日期:2012年12月7日 優(yōu)先權(quán)日:2011年12月9日
【發(fā)明者】C·阿爾梅, S·芬克 申請人:邁克菲公司