使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化的制作方法
【專利摘要】一種用于防止惡意軟件攻擊的方法,包括:在電子設(shè)備上啟動(dòng)應(yīng)用;攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令;確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖;重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源;在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及觀察所述重寫(xiě)的指令的結(jié)果。所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令。
【專利說(shuō)明】使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化
【技術(shù)領(lǐng)域】
[0001]概括地說(shuō),本發(fā)明涉及計(jì)算機(jī)安全和惡意軟件防護(hù),更具體地說(shuō),本發(fā)明涉及使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化。
【背景技術(shù)】
[0002]計(jì)算機(jī)和其它電子設(shè)備上的惡意軟件感染是非常侵入的,并且難以檢測(cè)和修復(fù)。反惡意軟件解決方案可能需要對(duì)惡意代碼或文件的簽名與被評(píng)估軟件進(jìn)行匹配來(lái)確定該軟件對(duì)計(jì)算系統(tǒng)是有害的。惡意軟件可以通過(guò)使用多形態(tài)的可執(zhí)行文件來(lái)偽裝自己,其中,惡意軟件改變其自身以避免被反惡意軟件解決方案檢測(cè)到。在這種情況下,反惡意軟件解決方案在零日攻擊中可能無(wú)法檢測(cè)到新的或演變的惡意軟件。惡意軟件可能包括但不限于:間諜軟件、后門、密碼竊取、垃圾郵件、網(wǎng)絡(luò)釣魚(yú)攻擊源、拒絕服務(wù)攻擊源、病毒、記錄器、木馬、廣告軟件、或產(chǎn)生不需要活動(dòng)的任何其它數(shù)字內(nèi)容。
【發(fā)明內(nèi)容】
[0003]在一個(gè)實(shí)施例中,一種用于防止惡意軟件攻擊的方法包括:在電子設(shè)備上啟動(dòng)應(yīng)用;攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令;確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖;重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源;在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及觀察所述重寫(xiě)的指令的結(jié)果。所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令。
[0004]在另一個(gè)實(shí)施例中,一件制造的物品包括計(jì)算機(jī)可讀介質(zhì)以及所述計(jì)算機(jī)可讀介質(zhì)上攜帶的計(jì)算機(jī)可執(zhí)行指令。該指令是處理器可讀取的。當(dāng)被讀取和執(zhí)行時(shí),所述指令使所述處理器用于:在電子設(shè)備上啟動(dòng)應(yīng)用;攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令;確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖;重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源;在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及觀察所述重寫(xiě)的指令的結(jié)果。所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令。
[0005]在又一個(gè)實(shí)施例中,一種用于防止惡意軟件攻擊的系統(tǒng)包括:耦接到存儲(chǔ)器的處理器,以及由所述處理執(zhí)行的動(dòng)態(tài)優(yōu)化框架。所述動(dòng)態(tài)優(yōu)化框架位于所述存儲(chǔ)器內(nèi)。所述動(dòng)態(tài)優(yōu)化框架被配置為:在電子設(shè)備上啟動(dòng)應(yīng)用;攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令;確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖;重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源;在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及觀察所述重寫(xiě)的指令的結(jié)果。所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令。
【專利附圖】
【附圖說(shuō)明】
[0006]為了更加完整地理解本發(fā)明及其特征和優(yōu)點(diǎn),現(xiàn)在結(jié)合附圖引用以下描述,在附圖中:
[0007]圖1是使用動(dòng)態(tài)優(yōu)化框架應(yīng)用沙盒化的示例系統(tǒng)的圖示;
[0008]圖2是用于對(duì)來(lái)自應(yīng)用的代碼或指令進(jìn)行攔截和重寫(xiě)的運(yùn)行時(shí)代碼操縱器和反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0009]圖3是用于對(duì)來(lái)自應(yīng)用的代碼或指令進(jìn)行攔截和重寫(xiě)的分配模塊、代碼高速緩存器、以及反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0010]圖4是用于對(duì)針對(duì)電子設(shè)備上的敏感文件的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0011]圖5是用于對(duì)針對(duì)電子設(shè)備上的注冊(cè)表的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0012]圖6是用于對(duì)企圖在電子設(shè)備上進(jìn)行存儲(chǔ)器修改的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0013]圖7是用于對(duì)企圖在電子設(shè)備上調(diào)用操作系統(tǒng)函數(shù)的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;
[0014]圖8是用于對(duì)企圖在電子設(shè)備上加載內(nèi)核模式驅(qū)動(dòng)器的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊的配置和操作的更詳細(xì)的圖示;以及
[0015]圖9是用于提供使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化的方法的示例實(shí)施例的圖示。
【具體實(shí)施方式】
[0016]圖1是使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化的示例系統(tǒng)100的圖示。系統(tǒng)100可以被配置為:以安全方式執(zhí)行應(yīng)用104,以便將應(yīng)用104的執(zhí)行與電子設(shè)備102的其余部分隔開(kāi)。這樣的執(zhí)行隔開(kāi)可以被稱為沙盒。系統(tǒng)100可以被配置為:提供一組安全資源讓?xiě)?yīng)用104來(lái)執(zhí)行,從而使得應(yīng)用104的任何惡意動(dòng)作可以被重定向、監(jiān)測(cè)和記錄。系統(tǒng)100可以被配置為:在允許應(yīng)用104在電子設(shè)備102上本地運(yùn)行之前,在沙盒中操作應(yīng)用104。為了以這樣的安全方式來(lái)執(zhí)行應(yīng)用104,系統(tǒng)100可以被配置為使用動(dòng)態(tài)優(yōu)化框架,其包括通信地耦接到反惡意軟件模塊110的運(yùn)行時(shí)代碼操縱器106。運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為:攔截應(yīng)用104的企圖執(zhí)行,重寫(xiě)訪問(wèn)敏感系統(tǒng)資源112的指令,對(duì)安全系統(tǒng)資源112執(zhí)行重寫(xiě)的執(zhí)行,以及確定由應(yīng)用104做出的動(dòng)作是否是惡意的。
[0017]雖然應(yīng)用104代表應(yīng)用,但應(yīng)用104可以包括數(shù)據(jù)、文件、過(guò)程、可執(zhí)行文件、腳本、代碼或共享庫(kù),或者由上述各項(xiàng)來(lái)體現(xiàn)。就惡意軟件來(lái)說(shuō),應(yīng)用104可以是未知的或未經(jīng)測(cè)試的,或者可以包括未知或未經(jīng)測(cè)試的代碼。例如,應(yīng)用104可以是其惡意軟件身份未知的獨(dú)立的應(yīng)用。在另一個(gè)示例中,應(yīng)用104可以是具有數(shù)據(jù)或代碼的已知應(yīng)用,其中,這些數(shù)據(jù)或代碼的惡意軟件身份是未知的。這些示例可以包括:具有未驗(yàn)證的文字處理文件的微軟? Word,具有未驗(yàn)證的.PDF文件的Adobe? Acrobat?,或者具有未驗(yàn)證的下載的JavaScript的網(wǎng)絡(luò)瀏覽器。例如,惡意軟件可以通過(guò)作為惡意應(yīng)用執(zhí)行或者通過(guò)利用已知應(yīng)用中的弱點(diǎn)來(lái)感染電子設(shè)備。惡意軟件可以通過(guò)使應(yīng)用打開(kāi)、運(yùn)行或執(zhí)行嵌有用于利用已知應(yīng)用的弱點(diǎn)的指令的文件或代碼來(lái)利用該已知應(yīng)用的弱點(diǎn)。這樣的惡意軟件攻擊可以包括利用棧、堆或其它緩沖器超限(overrun)或溢出(overflow)的那些惡意軟件攻擊。
[0018]應(yīng)用104可以包括:通過(guò)網(wǎng)絡(luò)108從網(wǎng)絡(luò)目的地118下載的數(shù)據(jù)120。例如,數(shù)據(jù)120可以包括:代碼、文件、應(yīng)用、腳本或其它適當(dāng)?shù)膶?shí)體。網(wǎng)絡(luò)目的地118可以包括:服務(wù)器、網(wǎng)站或可由應(yīng)用104或電子設(shè)備102上的另一實(shí)體訪問(wèn)的其它網(wǎng)絡(luò)實(shí)體。網(wǎng)絡(luò)目的地118可以包含通過(guò)電子設(shè)備102上的惡意代理偽裝下載的數(shù)據(jù)120形式的惡意內(nèi)容。例如,在電子設(shè)備102上執(zhí)行的惡意軟件可以聯(lián)系網(wǎng)絡(luò)目的地118來(lái)下載數(shù)據(jù)120形式的額外內(nèi)容,以便利用電子設(shè)備102的系統(tǒng)資源112。網(wǎng)絡(luò)目的地118可以偽造合法數(shù)據(jù)、頁(yè)面或應(yīng)用104可能企圖訪問(wèn)的其它內(nèi)容,并且反而可以使應(yīng)用104下載惡意應(yīng)用、數(shù)據(jù)、文件、代碼或數(shù)據(jù)120形式的其它內(nèi)容。例如,電子設(shè)備102上的網(wǎng)絡(luò)瀏覽器應(yīng)用可以訪問(wèn)網(wǎng)絡(luò)目的地118來(lái)訪問(wèn)看似合法的網(wǎng)站,但作為數(shù)據(jù)120的一部分而下載用來(lái)在電子設(shè)備102上執(zhí)行的腳本可能包括惡意軟件。
[0019]因此,系統(tǒng)100可以被配置為:使用沙盒安全技術(shù)來(lái)執(zhí)行應(yīng)用104,以避免執(zhí)行這種惡意內(nèi)容。在一個(gè)實(shí)施例中,系統(tǒng)100可以被配置為:對(duì)從網(wǎng)絡(luò)目的地118下載數(shù)據(jù)120進(jìn)行檢測(cè),并且當(dāng)應(yīng)用104使用動(dòng)態(tài)優(yōu)化框架時(shí)執(zhí)行這樣的數(shù)據(jù)120,以便確定應(yīng)用104是否是安全。在另一個(gè)實(shí)施例中,系統(tǒng)100可以被配置為:對(duì)從網(wǎng)絡(luò)目的地118下載數(shù)據(jù)120進(jìn)行檢測(cè),并且用使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用104來(lái)執(zhí)行這樣的內(nèi)容,以便確定該內(nèi)容是否是安全。
[0020]雖然在圖1中將系統(tǒng)100示為在電子設(shè)備102(其可以是發(fā)起數(shù)據(jù)120的下載的電子設(shè)備102)上使用運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110,但使用運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110進(jìn)行的沙盒化操作可以在單獨(dú)的電子設(shè)備上進(jìn)行。例如,系統(tǒng)100可以包括被配置為攔截?cái)?shù)據(jù)120的下載的網(wǎng)關(guān)或網(wǎng)絡(luò)服務(wù)器。另外,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為在這樣的網(wǎng)關(guān)或網(wǎng)絡(luò)服務(wù)器上進(jìn)行操作。因此,可以防止?jié)撛诘膼阂鈹?shù)據(jù)120甚至進(jìn)入目標(biāo)電子設(shè)備102所在的網(wǎng)絡(luò)。
[0021]網(wǎng)絡(luò)108可以包括用于在電子設(shè)備102與網(wǎng)絡(luò)目的地118之間進(jìn)行通信的任意適當(dāng)?shù)木W(wǎng)絡(luò)、一系列網(wǎng)絡(luò)或網(wǎng)絡(luò)的部分。這樣的網(wǎng)絡(luò)可以包括但不限于:互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、廣域網(wǎng)、局域網(wǎng)、回程網(wǎng)絡(luò)、對(duì)等網(wǎng)絡(luò)、或者它們的任意組合。
[0022]運(yùn)行時(shí)代碼操縱器106可以被配置為:在來(lái)自應(yīng)用104的代碼或指令的企圖執(zhí)行在系統(tǒng)資源112上進(jìn)行之前,攔截這樣的企圖執(zhí)行。運(yùn)行時(shí)代碼操縱器可以被配置為:分析這樣的代碼或指令以便確定這些指令是否需要修改。怎樣分析給定的代碼或指令以及隨后怎樣修改這些指令可以由反惡意軟件模塊110確定。例如,訪問(wèn)敏感系統(tǒng)資源112的代碼或指令可以被運(yùn)行時(shí)代碼操縱器106攔截,通過(guò)參考反惡意軟件模塊110來(lái)分析,被確定正在訪問(wèn)敏感系統(tǒng)資源112,被重寫(xiě)以便訪問(wèn)安全系統(tǒng)資源112,并且隨后在電子設(shè)備102上執(zhí)行。在另一個(gè)示例中,訪問(wèn)非敏感系統(tǒng)資源112的代碼或指令可以被運(yùn)行時(shí)代碼操縱器106攔截,通過(guò)參考反惡意軟件模塊110來(lái)分析,被確定正在訪問(wèn)非敏感系統(tǒng)資源112,被保留為訪問(wèn)非敏感系統(tǒng)資源112的原始形式,并且隨后在電子設(shè)備102上執(zhí)行。
[0023]運(yùn)行時(shí)代碼操縱器106可以被配置為:確定是否以安全方式來(lái)執(zhí)行數(shù)據(jù)120。這些確定可以是通過(guò)配置運(yùn)行時(shí)代碼操縱器106訪問(wèn)反惡意軟件模塊110來(lái)獲得是否以安全方式執(zhí)行數(shù)據(jù)120的標(biāo)準(zhǔn)而做出的。在一個(gè)實(shí)施例中,運(yùn)行時(shí)代碼操縱器106可以被配置為:如果數(shù)據(jù)120是未知或惡意的、應(yīng)用104是未知或惡意的、或者如果網(wǎng)絡(luò)目的地118是未知或惡意的,則以安全方式執(zhí)行數(shù)據(jù)120。
[0024]運(yùn)行時(shí)代碼操縱器106可以被配置為:基于數(shù)據(jù)120來(lái)啟動(dòng)應(yīng)用104。通過(guò)啟動(dòng)應(yīng)用104,運(yùn)行時(shí)代碼操縱器106可以被配置為:攔截運(yùn)行時(shí)代碼操縱器106對(duì)系統(tǒng)資源112的企圖訪問(wèn)。
[0025]運(yùn)行時(shí)代碼操縱器106可以被配置為:訪問(wèn)反惡意軟件模塊110,以便確定怎樣對(duì)所攔截的代碼或指令進(jìn)行重寫(xiě),以便重定向代碼或指令的執(zhí)行、運(yùn)行時(shí)代碼操縱器106。例如,訪問(wèn)反惡意軟件模塊110可以通過(guò)調(diào)用由反惡意軟件模塊110暴露的函數(shù)來(lái)進(jìn)行。運(yùn)行時(shí)代碼操縱器106可以被配置為:允許指令或代碼(包括那些重寫(xiě)的以及那些被允許保留其原始狀態(tài)的指令或代碼)在系統(tǒng)資源112上執(zhí)行。
[0026]運(yùn)行時(shí)代碼操縱器106可以被配置為:在代碼或指令的企圖執(zhí)行時(shí),重寫(xiě)這些代碼或指令,或者重定向這些代碼或指令的執(zhí)行。因此,運(yùn)行時(shí)代碼操縱器106可以被配置為在運(yùn)行時(shí)操作。此外,運(yùn)行時(shí)代碼操縱器106可以被配置為:在執(zhí)行期間的任意時(shí)刻允許修改或重定向代碼或指令。因此,運(yùn)行時(shí)代碼操縱器106可以被配置作為動(dòng)態(tài)運(yùn)行時(shí)代碼操縱器。
[0027]反惡意軟件模塊110可以被配置為:通過(guò)使用沙盒化技術(shù)的執(zhí)行,確定應(yīng)該監(jiān)測(cè)什么類型的應(yīng)用104或數(shù)據(jù)120??梢韵蜻\(yùn)行時(shí)代碼操縱器106提供這種確定以便攔截特定的代碼或指令。
[0028]給定所攔截的指令或代碼,反惡意軟件模塊110可以被配置為:確定企圖的執(zhí)行是否表示對(duì)敏感的系統(tǒng)資源112的企圖訪問(wèn)。例如,可以接收指令或代碼以進(jìn)行讀或?qū)懟蛐薷拿舾形募⑿薷淖?cè)表、調(diào)用系統(tǒng)函數(shù)或訪問(wèn)系統(tǒng)服務(wù)分配表格、向另一過(guò)程的存儲(chǔ)器讀或?qū)戇^(guò)程、或者加載內(nèi)核模式驅(qū)動(dòng)器。在這樣的示例中,惡意軟件可以操作以便惡意地?fù)p害或利用所描述的敏感系統(tǒng)資源。如果反惡意軟件模塊110確定企圖的執(zhí)行并不企圖訪問(wèn)敏感資源或進(jìn)行惡意操作,那么反惡意軟件模塊110可以被配置為:確定所攔截的指令或代碼并不需要被重寫(xiě)。
[0029]然而,如果反惡意軟件模塊110確定企圖的執(zhí)行并不企圖訪問(wèn)敏感系統(tǒng)資源,那么反惡意軟件模塊110可以被配置為:確定怎樣重寫(xiě)所攔截的代碼或指令??梢詫?duì)所攔截的代碼或指令進(jìn)行重寫(xiě)以便在安全資源上執(zhí)行。在安全資源上的執(zhí)行可以限制應(yīng)用104的執(zhí)行,并且作為沙盒化技術(shù)來(lái)工作。安全資源可以包括偽造的、假的、或者被配置為向應(yīng)用104提供執(zhí)行所期望的指令或代碼的表觀的其它資源。可以偽造返回值、參數(shù)或其它信息并將其返回應(yīng)用104??梢杂涗泩?zhí)行和執(zhí)行的效果。例如,可以將企圖的寫(xiě)入重定向到偽造的文件??梢杂涗浧髨D的寫(xiě)入,以及寫(xiě)入到偽造的文件的值。
[0030]反惡意軟件模塊110或其它反惡意軟件的軟件可以被配置為:對(duì)企圖的寫(xiě)入的效果進(jìn)行分析,并且確定企圖的執(zhí)行是否構(gòu)成惡意行為。為了做出這樣的確定,例如,反惡意軟件模塊110可以被配置為:咨詢表示指示惡意軟件的行為的行為分析規(guī)則。這樣的規(guī)則可以由反惡意軟件研究者開(kāi)發(fā),并且在本地提供給反惡意軟件模塊110或者在反惡意軟件服務(wù)器上可用。例如,一些靈敏操作系統(tǒng)函數(shù)通??赡軆H由其它操作系統(tǒng)函數(shù)調(diào)用。被非授權(quán)的函數(shù)訪問(wèn)可以指示惡意軟件攻擊。如果應(yīng)用104企圖執(zhí)行這樣的函數(shù),即使該企圖被重定向到偽造的函數(shù),則反惡意軟件模塊110可以被配置為:對(duì)執(zhí)行的企圖進(jìn)行分析,并且確定應(yīng)用104是惡意的或者在執(zhí)行惡意代碼。反惡意軟件模塊110可以被配置為:確定惡意操作,例如企圖進(jìn)行調(diào)試、終止、寫(xiě)入存儲(chǔ)器或?qū)⒋a注入另一過(guò)程、與諸如網(wǎng)絡(luò)配置、用戶配置、服務(wù)調(diào)度和管理或驅(qū)動(dòng)器安裝的各個(gè)操作系統(tǒng)服務(wù)或子系統(tǒng)進(jìn)行交互等。
[0031]可以允許由反惡意軟件模塊110確定以便在沙盒內(nèi)安全操作的所攔截和重寫(xiě)的代碼按照初始被應(yīng)用104配置的來(lái)執(zhí)行。反惡意軟件模塊110可以被配置為:對(duì)應(yīng)用104的全部執(zhí)行進(jìn)行分析,并且確定在允許正常執(zhí)行應(yīng)用104之前不存在惡意威脅。
[0032]運(yùn)行時(shí)代碼操縱器106可以由一個(gè)或多個(gè)過(guò)程、應(yīng)用、腳本、可執(zhí)行文件、庫(kù)、或其它實(shí)體來(lái)實(shí)現(xiàn)。運(yùn)行時(shí)代碼操縱器106可以包含用于執(zhí)行本文中描述的功能的指令。指令可以存儲(chǔ)在存儲(chǔ)器116中用于由處理器114執(zhí)行。在一個(gè)實(shí)施例中,可以使用DynamoR1動(dòng)態(tài)插裝工具平臺(tái)來(lái)實(shí)現(xiàn)運(yùn)行時(shí)代碼操縱器106。
[0033]反惡意軟件模塊110可以由一個(gè)或多個(gè)過(guò)程、應(yīng)用、腳本、可執(zhí)行文件、庫(kù)、或其它實(shí)體來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,反惡意軟件模塊110可以由共享庫(kù)或動(dòng)態(tài)鏈接庫(kù)(“DLL”)來(lái)實(shí)現(xiàn)。在另一個(gè)實(shí)施例中,反惡意軟件模塊110可以并入運(yùn)行時(shí)代碼操縱器106。反惡意軟件模塊110可以包含用于執(zhí)行本文中描述的功能的指令。指令可以存儲(chǔ)在存儲(chǔ)器116中用于由處理器114執(zhí)行。
[0034]例如,處理器114可以包括:微處理器、微控制器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、或者被配置為解釋和/或執(zhí)行程序指令和/或過(guò)程數(shù)據(jù)的任何其它數(shù)字或模擬電路。在一些實(shí)施例中,處理器114可以解釋和/或執(zhí)行存儲(chǔ)在存儲(chǔ)器116中的程序指令和/或過(guò)程數(shù)據(jù)。存儲(chǔ)器116可以整體或部分被配置為應(yīng)用存儲(chǔ)器、系統(tǒng)存儲(chǔ)器或這二者。存儲(chǔ)器116可以包括被配置為持有和/或容納一個(gè)或多個(gè)存儲(chǔ)器模塊的任何系統(tǒng)、設(shè)備或裝置。每一個(gè)存儲(chǔ)器模塊可以包括被配置為將程序指令和/或數(shù)據(jù)保留某個(gè)時(shí)間段的系統(tǒng)、設(shè)備或裝置(例如,計(jì)算機(jī)可讀介質(zhì))。
[0035]當(dāng)應(yīng)用104的代碼或指令被運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110重寫(xiě)或重定向時(shí),應(yīng)用104本身可以保持不變。此外,敏感的底層系統(tǒng)資源112可以保持不變。
[0036]運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為在電子設(shè)備102上在用戶模式中運(yùn)行。另外,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為:不依賴于安裝在電子設(shè)備102上的驅(qū)動(dòng)器來(lái)運(yùn)行,以特別地啟用本文中描述的功能。此外,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為:在沒(méi)有對(duì)電子設(shè)備102的特定硬件要求和沒(méi)有特定虛擬化特征的情況下進(jìn)行操作。通過(guò)在代碼級(jí)攔截、分析和修改指令,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為:在很低的級(jí)別上使代碼無(wú)害。例如,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110可以被配置為:識(shí)別低級(jí)別磁盤(pán)驅(qū)動(dòng)器或原始磁盤(pán)寫(xiě)入指令。這種低級(jí)別的操作可以在沒(méi)有內(nèi)核模式掛鉤、用戶模式掛鉤、或在電子設(shè)備102的操作系統(tǒng)中注冊(cè)的回調(diào)函數(shù)的情況下進(jìn)行。因此,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110的執(zhí)行可以與后門或掛鉤預(yù)防工具(諸如來(lái)自McAfee, Inc.或微軟? Patch Guard?的反惡意軟件產(chǎn)品)兼容。這樣的產(chǎn)品可以其它方式拒絕對(duì)需要掛鉤的沙盒化技術(shù)的訪問(wèn)。運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110的執(zhí)行可以不需要整個(gè)虛擬機(jī)來(lái)模擬或仿真電子設(shè)備102。因此,與否則會(huì)需要的系統(tǒng)占用空間(footpringt)相t匕,運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110的執(zhí)行可以需要較小的系統(tǒng)占用空間。
[0037]在操作中,反惡意軟件模塊110可以結(jié)合運(yùn)行時(shí)代碼操縱器106來(lái)操作,以便保護(hù)電子設(shè)備102不遭受惡意操作。在一個(gè)實(shí)施例中,反惡意軟件模塊110和運(yùn)行時(shí)代碼操縱器106可以在電子設(shè)備102上執(zhí)行。在另一個(gè)實(shí)施例中,反惡意軟件模塊110和運(yùn)行時(shí)代碼操縱器106可以在服務(wù)器上執(zhí)行以便保護(hù)電子設(shè)備102不遭受惡意操作。
[0038]應(yīng)用104可能企圖訪問(wèn)電子設(shè)備102上的敏感系統(tǒng)資源112。在Iv實(shí)施例中,應(yīng)用104可以是以數(shù)據(jù)120的形式通過(guò)網(wǎng)絡(luò)108從網(wǎng)絡(luò)目的地118下載的。在另一個(gè)實(shí)施例中,數(shù)據(jù)120可以是通過(guò)網(wǎng)絡(luò)108從網(wǎng)絡(luò)目的地下載以與應(yīng)用104—起使用的。反惡意軟件模塊110和運(yùn)行時(shí)代碼操縱器106可以在沙盒中運(yùn)行應(yīng)用104的執(zhí)行或具有數(shù)據(jù)120的應(yīng)用104,以便將這樣的執(zhí)行與敏感系統(tǒng)資源112隔離開(kāi)。
[0039]反惡意軟件模塊110和運(yùn)行時(shí)代碼操縱器106可以確定是否通過(guò)任意適當(dāng)?shù)姆绞絹?lái)在沙盒中執(zhí)行應(yīng)用104。例如,如果應(yīng)用104或數(shù)據(jù)120是從不受信任的或未知的網(wǎng)絡(luò)目的地118下載的,則可以在沙盒中執(zhí)行應(yīng)用104。例如,可以通過(guò)訪問(wèn)信譽(yù)服務(wù)器來(lái)做出關(guān)于網(wǎng)絡(luò)目的地118的這樣的確定。網(wǎng)絡(luò)目的地118的惡意軟件身份可以是惡意的、已知是安全、或者未知的。如果網(wǎng)絡(luò)目的地118的惡意軟件身份已知是惡意的或者未知的,則可以在沙盒中執(zhí)行應(yīng)用104。在另一個(gè)示例中,如果應(yīng)用104或數(shù)據(jù)120的惡意軟件身份是未知的或已知是惡意的,則可以在沙盒中執(zhí)行應(yīng)用104。在又一個(gè)示例中,如果應(yīng)用104企圖訪問(wèn)敏感系統(tǒng)資源112,則可以在沙盒中執(zhí)彳丁應(yīng)用104。
[0040]運(yùn)行時(shí)代碼操縱器106可以啟動(dòng)應(yīng)用104并占用應(yīng)用104的地址空間。運(yùn)行時(shí)代碼操縱器106可以攔截針對(duì)系統(tǒng)資源112的應(yīng)用104的代碼或指令的企圖執(zhí)行。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110以便確定代碼或指令的企圖執(zhí)行是否以敏感的系統(tǒng)資源112為目標(biāo)。如果是以這些敏感資源為目標(biāo),那么可以訪問(wèn)反惡意軟件模塊110以便確定怎樣對(duì)代碼或指令進(jìn)行重寫(xiě)以便尋址安全系統(tǒng)資源112。例如,可以將系統(tǒng)資源112的一些部分建立為沙盒存儲(chǔ)器。應(yīng)用104所針對(duì)的一個(gè)或多個(gè)實(shí)體可以被偽造,從而使得應(yīng)用104不知道其企圖已經(jīng)被重定向了。
[0041]運(yùn)行時(shí)代碼操縱器106可以攔截從系統(tǒng)資源112到應(yīng)用104的返回值或者控制轉(zhuǎn)移。系統(tǒng)資源112中的沙盒的元件可以偽造這些值。運(yùn)行時(shí)代碼操縱器可以對(duì)控制轉(zhuǎn)移進(jìn)行重定向,以便保持對(duì)應(yīng)用104的操作的控制。
[0042]反惡意軟件模塊110可以分析該操作,因?yàn)樵谙到y(tǒng)資源112內(nèi)該操作被隔離在了沙盒中。反惡意軟件模塊112可以確定操作是否指示惡意軟件攻擊。如果是,那么應(yīng)用程序104可被清理、隔離、或者從電子設(shè)備102移除。
[0043]圖2是用于對(duì)來(lái)自應(yīng)用104的代碼或指令進(jìn)行攔截和重寫(xiě)的運(yùn)行時(shí)代碼操縱器106和反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。
[0044]運(yùn)行時(shí)代碼操縱器106可以包括:通信地耦接到塊生成器204和代碼高速緩存器206的分配模塊202。分配模塊202、塊生成器204和代碼高速緩存器206可以實(shí)現(xiàn)為模塊、函數(shù)、庫(kù)或任何其它適當(dāng)?shù)膶?shí)體。分配模塊202可以被配置為:攔截來(lái)自應(yīng)用104的代碼或指令的企圖執(zhí)行。分配模塊202可以被配置為:向塊生成器204傳送代碼或指令。塊生成器204可以被配置為:將代碼或指令組裝成塊??梢詫⒏鱾€(gè)指令或代碼片段組裝成基本塊。然后可以將分別組裝成基本塊的指令的連續(xù)字符串或代碼片段組裝成軌跡(trace)。分配模塊202和/或塊生成器204可以通信地耦接到反惡意軟件模塊110,以便確定基本塊或字符串是否因?yàn)榘闹噶罨虼a針對(duì)敏感系統(tǒng)資源而應(yīng)該被重寫(xiě)。代碼或指令的基本塊或字符串可以代表順序操作且沒(méi)有分支點(diǎn)的代碼或指令的片段。分支點(diǎn)可以包括:其中接下來(lái)可以執(zhí)行代碼片段的兩個(gè)或更多個(gè)可能選擇的指令或代碼。因此,運(yùn)行時(shí)代碼操縱器106可以選擇分支點(diǎn)作為不同的代碼片段之間的分界線。
[0045]一旦已組裝好并且可能重寫(xiě)基本塊或軌跡,則可以將其存儲(chǔ)在代碼高速緩存器206中。運(yùn)行時(shí)代碼操縱器106下一次攔截到相同的代碼或指令時(shí),分配模塊202可以被配置為:指導(dǎo)執(zhí)行存儲(chǔ)在代碼高速緩存器206中的相應(yīng)塊或軌跡。因此,給定的一系列代碼或指令可以僅需要分析和重寫(xiě)一次。當(dāng)實(shí)時(shí)重寫(xiě)代碼時(shí),這加快了系統(tǒng)100的操作速度。代碼高速緩存器206可以被配置為:向系統(tǒng)資源發(fā)送適當(dāng)?shù)慕?jīng)分析的以及可能重寫(xiě)的指令或代碼。代碼高速緩存器206可以被配置為:從系統(tǒng)資源接收返回信息。例如,可以將代碼或指令從代碼高速緩存器206傳遞到操作系統(tǒng)208,其中,代碼或指令可以應(yīng)用于操作系統(tǒng)208或在硬件210上操作的其它實(shí)體。在企圖執(zhí)行函數(shù)、命令或系統(tǒng)調(diào)用之后,操作系統(tǒng)208可以向目的地傳送企圖的執(zhí)行,并且返回操作的結(jié)果。
[0046]在操作中,應(yīng)用104可以向諸如操作系統(tǒng)208或硬件210的系統(tǒng)資源發(fā)送代碼或指令的企圖執(zhí)行。運(yùn)行時(shí)代碼操縱器106可以攔截企圖的執(zhí)行。這樣的攔截可以由分配模塊202進(jìn)行。分配模塊202可以訪問(wèn)塊生成器204,以便根據(jù)所攔截的代碼或指令來(lái)構(gòu)建基本塊或軌跡。如果所攔截的代碼或指令是之前接收到的,那么可能已經(jīng)構(gòu)建了相應(yīng)的基本塊或軌跡并將其存儲(chǔ)在了代碼高速緩存器206中。在這種情況下,分配模塊202可以使代碼高速緩存器206中的相應(yīng)的基本塊或軌跡轉(zhuǎn)發(fā)到系統(tǒng)資源。塊生成器204、分配模塊202和/或運(yùn)行時(shí)代碼操縱器106的其它部分可以訪問(wèn)反惡意軟件模塊110,以便確定是否以及怎樣重寫(xiě)接收到的代碼或指令。塊生成器204可以對(duì)代碼高速緩存器206的內(nèi)容進(jìn)行分析,以便確定代碼高速緩存器206的現(xiàn)有內(nèi)容是否可以與接收到的并且可能被重寫(xiě)了的代碼結(jié)合來(lái)形成新的軌跡。可以將所得到的重寫(xiě)的代碼或指令構(gòu)建成相應(yīng)的基本塊或軌跡,并將其存儲(chǔ)在代碼高速緩存器206中。
[0047]與所攔截的代碼或指令相對(duì)應(yīng)的重寫(xiě)的指令可以由代碼高速緩存器206作為重定向的執(zhí)行發(fā)布給操作系統(tǒng)208或電子設(shè)備102的其它部分。重寫(xiě)的指令的隨后執(zhí)行可以導(dǎo)致返回值被企圖發(fā)送到應(yīng)用104。代碼高速緩存器206可以攔截這樣的返回值。返回值206可以用于確定接下來(lái)執(zhí)行代碼高速緩存器206的哪些部分。如果返回值206尚未由被配置為提供應(yīng)用104的沙盒安全操作的安全資源修改或偽造的話,則可以偽造或修改返回值206,并將其返回應(yīng)用104。
[0048]系統(tǒng)資源208可以企圖向應(yīng)用104轉(zhuǎn)移執(zhí)行的控制。例如,分配模塊202可以攔截這樣的企圖??梢孕薷目刂频霓D(zhuǎn)移,從而保持運(yùn)行時(shí)代碼操縱器106對(duì)應(yīng)用104的執(zhí)行的控制。可以向應(yīng)用104發(fā)送經(jīng)修改的或重定向的控制轉(zhuǎn)移。
[0049]通過(guò)代碼高速緩存器206的使用,系統(tǒng)100可以被配置為:通過(guò)對(duì)已經(jīng)重寫(xiě)的指令的重用而不需要隨后對(duì)之前從應(yīng)用104接收到的相同指令進(jìn)行重復(fù)分析和重寫(xiě),以接近本機(jī)速度的速度進(jìn)行操作。
[0050]圖3是用于對(duì)來(lái)自應(yīng)用104的代碼或指令進(jìn)行攔截和重寫(xiě)的分配模塊202、代碼高速緩存器206和反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。
[0051]代碼302可以表示應(yīng)用104企圖執(zhí)行的一系列指令或代碼。例如,代碼302可以包括:應(yīng)用104企圖順序執(zhí)行的一系列九個(gè)指令:
[0052]Code—segment—I
[0053]Code—segment—2
[0054]Code—segment—3
[0055]Codit1nal—I
[0056]Code—segment—4
[0057]Code_segment_5
[0058]Codit1nal_2
[0059]Code_segment_4
[0060]Code_segment_5
[0061]Codit1nal_3
[0062]其中,每一個(gè)〃Code_segment_N〃表示沒(méi)有決策分支的一個(gè)或多個(gè)順序指令,并且每一個(gè)“Codit1nal_N”表不在代碼302內(nèi)形成決策分支的一個(gè)或多個(gè)指令。在一個(gè)實(shí)施例中,由應(yīng)用104在給定的“Codit1nal_N”之后發(fā)布的代碼302的內(nèi)容可以基于從執(zhí)行接收到的返回值來(lái)發(fā)送。
[0063]對(duì)于代碼302的每一個(gè)這樣的元素來(lái)說(shuō),元素可以由分配202攔截。分配模塊202可以確定元素是否已經(jīng)提交給了代碼高速緩存器206,如果是,那么元素可以分配給操作系統(tǒng)208。分配模塊202可以確定元素是否可以與另一元素組合以包括在代碼高速緩存器206中的軌跡。為了做出這樣的確定,分配模塊202可以檢查代碼302中的下一元素。如果代碼302中的下一元素并不包含分支操作(諸如代碼分叉、條件語(yǔ)句或類似的操作),那么可以對(duì)元素進(jìn)行組合。如果代碼302中的下一元素包含這樣的分支操作,那么軌跡可以終止,并且可以創(chuàng)建以分支操作開(kāi)始的新的軌跡??梢韵虿僮飨到y(tǒng)208分配組合的軌跡。
[0064]如果元素或元素的組合以及相鄰元素尚未被提交給代碼高速緩存器206,那么可以將元素發(fā)送到塊生成器204。塊生成器204和/或分配模塊202可以確定元素是否包含對(duì)敏感資源的企圖訪問(wèn)。為了做出這樣的確定,分配模塊202和/或塊生成器204可以訪問(wèn)反惡意軟件模塊110。反惡意軟件模塊110還可以提供關(guān)于元素要怎樣重寫(xiě)的信息,以便避免訪問(wèn)敏感資源而是訪問(wèn)沙盒化的或者私有資源。在一個(gè)實(shí)施例中,反惡意軟件模塊110可以重寫(xiě)元素中的指令??梢詫⒔?jīng)修改的元素返回分配器202并且發(fā)送到代碼高速緩存器206。
[0065]例如,Code_segment_l可以由分配202接收。塊生成器204和反惡意軟件模塊110可以確定Code_segment_l包含企圖訪問(wèn)電子設(shè)備102的敏感資源的指令。因此,塊生成器204和反惡意軟件模塊110可以修改Code_segment_l的指令以便反而訪問(wèn)沙盒化的資源。經(jīng)修改的元素(被表示為Code_segment_l')可以構(gòu)建為基本塊,返回分配模塊202,并且添加到代碼高速緩存器206。
[0066]Code_segment_2可以由分配202接收。塊生成器204和反惡意軟件模塊110可以確定Code_segment_2不包含企圖訪問(wèn)電子設(shè)備102的敏感資源的指令。因此,塊生成器204和反惡意軟件模塊110可以保留Code_segment_l的指令以便反而訪問(wèn)沙盒化的資源。元素可以構(gòu)建為基本塊,返回分配模塊202,并且添加到代碼高速緩存器206。
[0067]Code_segment_3可以由分配202接收。塊生成器204和反惡意軟件模塊110可以確定Code_segment_3包含企圖訪問(wèn)電子設(shè)備102的敏感資源的指令。因此,塊生成器204和反惡意軟件模塊110可以修改Code_segment_3的指令以便反而訪問(wèn)沙盒化的資源。經(jīng)修改的元素(被表示為Code_segment_3')可以構(gòu)建為基本塊,返回分配模塊202,并且添加到代碼高速緩存器206。
[0068]Codit1nal_l可以由分配202接收。塊生成器204可以識(shí)別該條件語(yǔ)句中斷了從應(yīng)用104接收到的以Code_segment_l開(kāi)始并且以Code_segment_3結(jié)束的順序指令流。塊生成器204可以根據(jù)之前存儲(chǔ)的與Code_segment_l'、Code_segment_2和Code_segment_3,相對(duì)應(yīng)的基本塊形成軌跡,例如Trace_l??梢詫race_l傳遞到操作系統(tǒng)208來(lái)執(zhí)行??梢詫odit1nalj傳遞到操作系統(tǒng)208來(lái)執(zhí)行??梢越邮兆鳛镃odit1nalj的結(jié)果的返回值。Codit1nal_l的結(jié)果可以確定要執(zhí)行的下一代碼??梢韵驊?yīng)用104發(fā)送Codit1nal_l的結(jié)果??梢詫⑴c來(lái)自Trace_l或Codit1nal_l的響應(yīng)相對(duì)應(yīng)的其它返回值(其可以是偽造的)返回應(yīng)用104。
[0069]Code_segment_4可以由分配202接收。塊生成器204和反惡意軟件模塊110可以確定Code_segment_4包含企圖訪問(wèn)電子設(shè)備102的敏感資源的指令。因此,塊生成器204和反惡意軟件模塊110可以修改Code_segment_4的指令以便反而訪問(wèn)沙盒化的資源。經(jīng)修改的元素(被表示為Code_segment_4')可以構(gòu)建為基本塊,返回分配模塊202,并且添加到代碼高速緩存器206。
[0070]Code_segment_5可以由分配202接收。塊生成器204和反惡意軟件模塊110可以確定Code_segment_2不包含企圖訪問(wèn)電子設(shè)備102的敏感資源的指令。因此,塊生成器204和反惡意軟件模塊110可以保留Code_segment_5的指令以便反而訪問(wèn)沙盒化的資源。元素可以構(gòu)建為基本塊,返回分配模塊202,并且添加到代碼高速緩存器206。
[0071]Codit1nal_2可以由分配202接收。塊生成器204可以識(shí)別該條件語(yǔ)句中斷了從應(yīng)用104接收到的以Code_segment_4開(kāi)始并且以Code_segment_5結(jié)束的順序指令流。塊生成器204可以根據(jù)之前存儲(chǔ)的與Code_segment_4 '和Code_segment_5相對(duì)應(yīng)的基本塊形成軌跡,例如Trace_2??梢詫race_2傳遞到操作系統(tǒng)208來(lái)執(zhí)行??梢詫odit1nal_2傳遞到操作系統(tǒng)208來(lái)執(zhí)行。
[0072]Code_segment_4可以由分配202接收。塊生成器204或分配模塊202可以確定Code_segment_4已經(jīng)被分析、重寫(xiě)并且存儲(chǔ)在代碼高速緩存器206中。在一個(gè)實(shí)施例中,可以將Code_segment_f發(fā)布到操作系統(tǒng)208來(lái)執(zhí)行。在另一個(gè)實(shí)施例中,分配模塊202可以檢查接收到的下一代碼Code_segment_5。塊生成器204或分配模塊202可以確定Code_segment_5已經(jīng)被分析并且存儲(chǔ)在代碼高速緩存器206中。分配模塊202可以檢查接收到的下一代碼 Code_segment_3,并且確定執(zhí)行 Code_segment_4'和 Code_segment_5 的企圖與Trace_2相對(duì)應(yīng)??梢詫race_2發(fā)布到操作系統(tǒng)來(lái)執(zhí)行。
[0073]圖4是用于對(duì)針對(duì)電子設(shè)備102上的敏感文件的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。電子設(shè)備102可以包括文件406,文件406的存在或內(nèi)容可以是電子設(shè)備102上的惡意軟件攻擊的對(duì)象。
[0074]例如,應(yīng)用104可以企圖使用例如具有“向文件X進(jìn)行寫(xiě)入”的指令的代碼片段402來(lái)向文件“X”406進(jìn)行寫(xiě)入。運(yùn)行時(shí)代碼操縱器106可以攔截代碼片段402。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110,以便確定代碼片段402是否是要訪問(wèn)敏感系統(tǒng)資源的企圖。如果文件“X”406是由反惡意軟件模塊110所使用的規(guī)則所定義的這樣的敏感系統(tǒng)資源,那么反惡意軟件模塊110可以確定代碼片段402應(yīng)該被重寫(xiě)。反惡意軟件模塊110可以確定沙盒資源,例如存儲(chǔ)器的受保護(hù)部分、偽造的文件、或在其上可以安全地執(zhí)行指令并且可以觀察到其效果的其它這樣的資源。
[0075]例如,反惡意軟件模塊110可以確定代碼片段402應(yīng)該被修改為針對(duì)文件“Y”410。文件“Y” 410可以位于沙盒存儲(chǔ)器408之內(nèi),沙盒存儲(chǔ)器408可以是安全,以便限制和觀察所應(yīng)用的指令的效果,而不會(huì)損害電子設(shè)備102的其它部分。該修改可以導(dǎo)致代碼片段'404,其可以包含用于“向文件Y進(jìn)行寫(xiě)入”的指令。經(jīng)修改的指令可以存儲(chǔ)在沙盒記錄412中??梢栽谏澈写鎯?chǔ)器408內(nèi)觀察經(jīng)修改的寫(xiě)入的效果,以便確定該寫(xiě)入是否產(chǎn)生對(duì)電子設(shè)備102的惡意企圖攻擊。反惡意軟件模塊110或其它適當(dāng)?shù)膶?shí)體可以被配置為:對(duì)結(jié)果進(jìn)行分析并且將結(jié)果與例如反惡意軟件簽名、反惡意軟件聲譽(yù)知識(shí)、或反惡意軟件行為規(guī)則進(jìn)行比較。例如,如果向文件“Y”410寫(xiě)入的內(nèi)容會(huì)導(dǎo)致將惡意軟件代碼插入文字處理文檔中,則這樣的企圖執(zhí)行是惡意的。
[0076]如果確定了企圖執(zhí)行是惡意的,則反惡意軟件模塊110或?qū)?jīng)修改的指令的結(jié)果進(jìn)行分析的另一個(gè)實(shí)體可以被配置為:確定應(yīng)用104是惡意的、不安全、或者以其它方式與惡意軟件相關(guān)聯(lián)的??梢詫?duì)應(yīng)用104和電子設(shè)備102的任意相關(guān)聯(lián)的部分進(jìn)行清理、隔離、或移除。可以將與應(yīng)用104相關(guān)聯(lián)的數(shù)據(jù)(諸如其過(guò)程或文件的簽名、或者企圖的改變的簽名)發(fā)送到反惡意軟件服務(wù)器用于進(jìn)一步的分析。
[0077]應(yīng)用104可能沒(méi)有接收到已經(jīng)對(duì)文件“Y” 410而不是對(duì)文件“X” 406執(zhí)行了企圖寫(xiě)入的指示。應(yīng)用104可以接收來(lái)自運(yùn)行時(shí)代碼操縱器106的指示:已經(jīng)根據(jù)指令執(zhí)行了所請(qǐng)求的操作。
[0078]雖然示出了特定的企圖寫(xiě)入執(zhí)行,但系統(tǒng)100可以被配置為:對(duì)諸如讀、寫(xiě)、刪除或創(chuàng)建的文件操作進(jìn)行攔截、修改或偽造。例如,可以基于文件的標(biāo)識(shí)或要寫(xiě)入文件的內(nèi)容,分析是否攔截給定的命令或者企圖的執(zhí)行是否是惡意。
[0079]圖5是用于對(duì)針對(duì)電子設(shè)備102上的注冊(cè)表的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。電子設(shè)備102可以包括操作系統(tǒng)注冊(cè)表503,其內(nèi)容可以是電子設(shè)備102上的惡意軟件攻擊的對(duì)象。操作系統(tǒng)注冊(cè)表503可以被配置為:對(duì)諸如操作系統(tǒng)或單個(gè)應(yīng)用的電子設(shè)備102的元件的操作的設(shè)置進(jìn)行存儲(chǔ)。
[0080]例如,應(yīng)用104可以企圖訪問(wèn)注冊(cè)表503,來(lái)使用具有“創(chuàng)建注冊(cè)表子項(xiàng)Y”的指令的代碼片段502在應(yīng)用的類別之下創(chuàng)建新的子項(xiàng)“Y”504a。運(yùn)行時(shí)代碼操縱器106可以攔截代碼片段502。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110,以便確定代碼片段502是否是要訪問(wèn)敏感系統(tǒng)資源的企圖。注冊(cè)表503可以是由反惡意軟件模塊110所使用的規(guī)則定義的這樣的敏感系統(tǒng)資源,并且因此反惡意軟件模塊110可以確定代碼片段502應(yīng)該被重寫(xiě)。反惡意軟件模塊110可以確定在其上可以安全地執(zhí)行指令并且可以觀察到指令的效果的沙盒資源。
[0081]例如,反惡意軟件模塊110可以確定代碼片段502應(yīng)該被修改,以便針對(duì)假的注冊(cè)表508。假的注冊(cè)表508可以被構(gòu)造為電子設(shè)備102的正常注冊(cè)表,但可能位于電子設(shè)備102的安全部分內(nèi)(諸如沙盒存儲(chǔ)器408之內(nèi))。假的注冊(cè)表508可以被配置為:看起來(lái)是注冊(cè)表503以及作為注冊(cè)表503進(jìn)行響應(yīng),以便確定注冊(cè)表503的企圖訪問(wèn)是否是惡意的。該修改可以導(dǎo)致代碼片段,506,其可以包含“創(chuàng)建假的注冊(cè)表子項(xiàng)Y”的指令。經(jīng)修改的指令可以存儲(chǔ)在沙盒記錄412中??梢栽诩俚淖?cè)表508中創(chuàng)建與子項(xiàng)“Y”504a完全相同的子項(xiàng)“Y”504b??梢栽谏澈写鎯?chǔ)器408內(nèi)觀察經(jīng)修改的寫(xiě)入的效果,以便確定注冊(cè)表改變是否產(chǎn)生了對(duì)電子設(shè)備102的惡意企圖攻擊。反惡意軟件模塊110或其它適當(dāng)?shù)膶?shí)體可以被配置為對(duì)結(jié)果進(jìn)行分析。例如,如果創(chuàng)建的子項(xiàng)“Y”504會(huì)導(dǎo)致對(duì)系統(tǒng)服務(wù)或應(yīng)用的修改,從而導(dǎo)致惡意軟件的執(zhí)行,那么可以確定這樣的企圖執(zhí)行是惡意的。
[0082]應(yīng)用104可能沒(méi)有接收到已經(jīng)對(duì)假的注冊(cè)表508而不是對(duì)注冊(cè)表503執(zhí)行了注冊(cè)表的企圖訪問(wèn)的指示。應(yīng)用104可以接收來(lái)自運(yùn)行時(shí)代碼操縱器106的指示:已經(jīng)根據(jù)指令執(zhí)行了所請(qǐng)求的操作。
[0083]雖然示出了特定的企圖的注冊(cè)表訪問(wèn),但系統(tǒng)100可以被配置為:對(duì)諸如讀、寫(xiě)、刪除、修改或創(chuàng)建的注冊(cè)表操作進(jìn)行攔截、修改或偽造。例如,該操作可以由子項(xiàng)或子項(xiàng)內(nèi)的數(shù)據(jù)造成。例如,可以基于進(jìn)行該企圖的注冊(cè)表層級(jí)的標(biāo)識(shí)或內(nèi)容、注冊(cè)表子項(xiàng)、或注冊(cè)表子項(xiàng)的內(nèi)容,來(lái)分析是否對(duì)給定的命令進(jìn)行攔截或者企圖的執(zhí)行是否是惡意的。
[0084]圖6是用于在電子設(shè)備102上企圖修改存儲(chǔ)器的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。電子設(shè)備102可以包括分配給特定過(guò)程的存儲(chǔ)器,諸如過(guò)程I存儲(chǔ)器604。與過(guò)程I存儲(chǔ)器604相關(guān)聯(lián)的過(guò)程可以是電子設(shè)備102上的惡意軟件攻擊的對(duì)象。過(guò)程I存儲(chǔ)器604可以被配置為:對(duì)用于執(zhí)行特定過(guò)程的數(shù)據(jù)或代碼進(jìn)行存儲(chǔ)。該過(guò)程可以包括:敏感的反惡意軟件系統(tǒng)或關(guān)鍵過(guò)程,其可能因?yàn)樵撨^(guò)程的必要操作而成為惡意軟件的目標(biāo)。該過(guò)程可以包括:因?yàn)檫^(guò)程中的已知的可利用的弱點(diǎn)而成為目標(biāo)的過(guò)程。
[0085]例如,應(yīng)用104可以企圖使用代碼608a在特定的地址606處對(duì)過(guò)程I存儲(chǔ)器604進(jìn)行修改。代碼608a可以包括惡意代碼。企圖可以包括:使用具有“使用代碼Y來(lái)修改地址”的指令的代碼片段602。運(yùn)行時(shí)代碼操縱器106可以攔截代碼片段602。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110,以便確定代碼片段602是否是要訪問(wèn)敏感系統(tǒng)資源的企圖。取決于企圖的源,過(guò)程I存儲(chǔ)器604可以是由反惡意軟件模塊110所使用的規(guī)則定義的這樣的敏感系統(tǒng)資源,并且因此反惡意軟件模塊110可以確定代碼片段602應(yīng)該被重寫(xiě)。反惡意軟件模塊110可以確定在其上可以安全地執(zhí)行指令并且可以觀察到指令的效果的沙盒資源。
[0086]例如,反惡意軟件模塊110可以確定代碼片段602應(yīng)該被修改,以便針對(duì)沙盒存儲(chǔ)器408中的假的地址612。假的地址612可以被配置為:看起來(lái)是地址606并且作為地址606進(jìn)行響應(yīng),以便確定地址606的企圖訪問(wèn)是否是惡意的。該修改可以導(dǎo)致代碼片段’610,其可以包含“使用代碼Y來(lái)修改假的地址”的指令。經(jīng)修改的指令可以存儲(chǔ)在沙盒記錄412中。可以在沙盒存儲(chǔ)器408中的假的地址612處而不是在過(guò)程I存儲(chǔ)器604中的地址606處創(chuàng)建與代碼608a完全相同的代碼608b??梢栽谏澈写鎯?chǔ)器408內(nèi)觀察經(jīng)修改的寫(xiě)入的效果,以便確定注冊(cè)表改變是否產(chǎn)生了對(duì)電子設(shè)備102的惡意企圖攻擊。反惡意軟件模塊110或其它適當(dāng)?shù)膶?shí)體可以被配置為對(duì)結(jié)果進(jìn)行分析。例如,如果代碼608b的執(zhí)行會(huì)包括對(duì)電子設(shè)備102的操作系統(tǒng)的攻擊,那么可以確定這樣的企圖執(zhí)行是惡意的。
[0087]應(yīng)用104可能沒(méi)有接收到已經(jīng)對(duì)沙盒存儲(chǔ)器408中的假的地址612而不是對(duì)過(guò)程I存儲(chǔ)器604中的地址606執(zhí)行了注冊(cè)表的企圖訪問(wèn)的指示。應(yīng)用104可以接收來(lái)自運(yùn)行時(shí)代碼操縱器106的指示:已經(jīng)根據(jù)指令執(zhí)行了所請(qǐng)求的操作。
[0088]雖然示出了特定的企圖的存儲(chǔ)器修改,但系統(tǒng)100可以被配置為:對(duì)諸如讀、寫(xiě)、復(fù)制或刪除的存儲(chǔ)器操作進(jìn)行攔截、修改或偽造。這些操作可以是對(duì)與給定過(guò)程相關(guān)聯(lián)的存儲(chǔ)器的特定部分做出的。例如,可以基于存儲(chǔ)器所有者的標(biāo)識(shí)、存儲(chǔ)器模式、存儲(chǔ)器內(nèi)訪問(wèn)的地址、或者企圖修改的內(nèi)容,來(lái)分析是否對(duì)給定的命令進(jìn)行攔截或者企圖的執(zhí)行是否是惡意的。
[0089]圖7是用于對(duì)企圖在電子設(shè)備102上調(diào)用操作系統(tǒng)函數(shù)的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊I1的配置和操作的更詳細(xì)的圖示。電子設(shè)備102可以包括位于操作系統(tǒng)存儲(chǔ)器704內(nèi)并且包括一個(gè)或多個(gè)操作系統(tǒng)函數(shù)706的操作系統(tǒng)。這些函數(shù)可以是電子設(shè)備102的操作系統(tǒng)的特權(quán)、保留或控制關(guān)鍵函數(shù)。操作系統(tǒng)函數(shù)706可以是電子設(shè)備102上的惡意軟件攻擊的對(duì)象。操作系統(tǒng)存儲(chǔ)器704可以被配置為:對(duì)用于執(zhí)行操作系統(tǒng)函數(shù)或過(guò)程的數(shù)據(jù)或代碼進(jìn)行存儲(chǔ)。操作系統(tǒng)函數(shù)706因?yàn)楦淖冸娮釉O(shè)備102的操作的能力,所以操作系統(tǒng)函數(shù)706可能是惡意軟件的目標(biāo)。
[0090]例如,應(yīng)用104可以企圖執(zhí)行操作系統(tǒng)函數(shù)706。操作系統(tǒng)函數(shù)706可以是能夠影響電子設(shè)備102的關(guān)鍵操作的敏感或保留函數(shù)。由未被授權(quán)的實(shí)體執(zhí)行操作系統(tǒng)函數(shù)706可能導(dǎo)致惡意結(jié)果。企圖可以包括:使用具有“調(diào)用操作系統(tǒng)函數(shù)”的指令的代碼片段702。運(yùn)行時(shí)代碼操縱器106可以攔截代碼片段702。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110,以便確定代碼片段602是否是要訪問(wèn)敏感系統(tǒng)資源的企圖。取決于企圖的源、企圖中使用的參數(shù)、或者由企圖導(dǎo)致的動(dòng)作,操作系統(tǒng)函數(shù)706的執(zhí)行可以是如同由反惡意軟件模塊110使用的規(guī)則所定義的要訪問(wèn)敏感系統(tǒng)資源的企圖。因此,反惡意軟件模塊110可以確定代碼片段702應(yīng)該被重寫(xiě)。反惡意軟件模塊110可以確定在其上可以安全地執(zhí)行指令并且可以觀察到指令的效果的沙盒資源。
[0091]例如,反惡意軟件模塊110可以確定應(yīng)該修改代碼片段702,以便企圖執(zhí)行諸如假的操作系統(tǒng)函數(shù)710的偽造的操作系統(tǒng)函數(shù)。假的操作系統(tǒng)函數(shù)710可以被配置為:看起來(lái)是操作系統(tǒng)函數(shù)706并且作為操作系統(tǒng)函數(shù)706進(jìn)行響應(yīng),以便確定企圖的訪問(wèn)是否是惡意的。該修改可以導(dǎo)致代碼片段’708,其可以包含“調(diào)用假的操作系統(tǒng)函數(shù)”的指令。經(jīng)修改的指令可以存儲(chǔ)在沙盒記錄412中。可以在沙盒存儲(chǔ)器408內(nèi)執(zhí)行假的操作系統(tǒng)函數(shù)710。可以在沙盒存儲(chǔ)器408內(nèi)觀察執(zhí)行該函數(shù)的效果,以便確定該執(zhí)行是否產(chǎn)生了對(duì)電子設(shè)備102的惡意企圖攻擊。反惡意軟件模塊110或其它適當(dāng)?shù)膶?shí)體可以被配置為對(duì)結(jié)果進(jìn)行分析。例如,如果執(zhí)行假的操作系統(tǒng)函數(shù)710導(dǎo)致禁用反惡意軟件,那么可以確定企圖的執(zhí)行是惡意的。
[0092]應(yīng)用104可能沒(méi)有接收到操作系統(tǒng)函數(shù)的企圖執(zhí)行已經(jīng)作為假的操作系統(tǒng)函數(shù)710而不是操作系統(tǒng)函數(shù)706執(zhí)行的指示。應(yīng)用104可以接收來(lái)自運(yùn)行時(shí)代碼操縱器106的指示:已經(jīng)根據(jù)指令執(zhí)行了所請(qǐng)求的操作。
[0093]雖然示出了對(duì)操作系統(tǒng)函數(shù)的特定的企圖訪問(wèn),但系統(tǒng)100可以被配置為:對(duì)任何適當(dāng)?shù)南到y(tǒng)調(diào)用進(jìn)行攔截、修改或偽造。例如,可以基于函數(shù)的標(biāo)識(shí)、函數(shù)的模式、用于調(diào)用函數(shù)的參數(shù)、或者函數(shù)的目標(biāo)實(shí)體,來(lái)分析是否對(duì)給定的函數(shù)執(zhí)行進(jìn)行攔截或者企圖的執(zhí)行是否是惡意的。
[0094]圖8是用于對(duì)企圖在電子設(shè)備102上加載內(nèi)核模式驅(qū)動(dòng)器的指令或代碼進(jìn)行重寫(xiě)的反惡意軟件模塊110的配置和操作的更詳細(xì)的圖示。電子設(shè)備102可以包括:用于重要的操作系統(tǒng)動(dòng)作的保留存儲(chǔ)器,例如內(nèi)核存儲(chǔ)器804。內(nèi)核存儲(chǔ)器804中的內(nèi)核模式驅(qū)動(dòng)器806可以是電子設(shè)備102上的惡意軟件攻擊的對(duì)象。內(nèi)核模式驅(qū)動(dòng)器806a可以被配置為:使用特權(quán)優(yōu)先級(jí)在電子設(shè)備102中進(jìn)行操作。內(nèi)核模式驅(qū)動(dòng)器806a可以用作基于后門的惡意軟件攻擊的一部分。例如,內(nèi)核模式驅(qū)動(dòng)器806a的企圖加載可以包括:以惡意方式利用已知驅(qū)動(dòng)器的企圖,或者加載不安全或未知驅(qū)動(dòng)器的企圖。
[0095]例如,應(yīng)用104可以企圖將內(nèi)核模式驅(qū)動(dòng)器806a加載到內(nèi)核存儲(chǔ)器804中。在一個(gè)實(shí)施例中,內(nèi)核模式驅(qū)動(dòng)器806a可以具有未知的或不受信任的惡意軟件身份。內(nèi)核模式驅(qū)動(dòng)器806a可以包括:在加載之后將在電子設(shè)備102中以特權(quán)優(yōu)先級(jí)運(yùn)行的惡意代碼。企圖可以包括:使用具有“加載內(nèi)核模式驅(qū)動(dòng)器”的指令的代碼片段802。運(yùn)行時(shí)代碼操縱器106可以攔截代碼片段802。運(yùn)行時(shí)代碼操縱器106可以訪問(wèn)反惡意軟件模塊110,以便確定代碼片段602是否是要訪問(wèn)敏感系統(tǒng)資源的企圖。將未知內(nèi)核模式驅(qū)動(dòng)器加載到內(nèi)核存儲(chǔ)器804中,或者通過(guò)未知實(shí)體將驅(qū)動(dòng)器加載到內(nèi)核存儲(chǔ)器804中,可以是如同由反惡意軟件模塊110使用的規(guī)則定義的這樣的企圖。因此,反惡意軟件模塊110可以確定代碼片段802應(yīng)該被重寫(xiě)。反惡意軟件模塊110可以確定在其上可以安全地執(zhí)行指令并且可以觀察到指令的效果的沙盒資源。
[0096]例如,反惡意軟件模塊110可以確定代碼片段802應(yīng)該被修改以便在沙盒存儲(chǔ)器408中加載內(nèi)核模式驅(qū)動(dòng)器806b。內(nèi)核模式驅(qū)動(dòng)器806b在沙盒存儲(chǔ)器408中的加載可以被配置為:看起來(lái)像內(nèi)核存儲(chǔ)器804中的內(nèi)核模式驅(qū)動(dòng)器806b的加載并且作為內(nèi)核存儲(chǔ)器804中的內(nèi)核模式驅(qū)動(dòng)器806b的加載進(jìn)行響應(yīng),從而可以確定對(duì)地址606的企圖訪問(wèn)是否是惡意的。該修改可以導(dǎo)致代碼片段’808,其可以包含“在沙盒存儲(chǔ)器中加載內(nèi)核模式驅(qū)動(dòng)器”的指令??梢栽谏澈写鎯?chǔ)器408內(nèi)觀察內(nèi)核模式驅(qū)動(dòng)器810b的加載的效果,以便確定加載的內(nèi)核模式驅(qū)動(dòng)器810b是否產(chǎn)生了對(duì)電子設(shè)備102的惡意企圖攻擊。反惡意軟件模塊110或其它適當(dāng)?shù)膶?shí)體可以被配置為對(duì)結(jié)果進(jìn)行分析。例如,如果內(nèi)核模式驅(qū)動(dòng)器810的加載之后會(huì)有對(duì)電子設(shè)備102的操作系統(tǒng)的攻擊,那么可以確定這樣的企圖執(zhí)行是惡意的。
[0097]應(yīng)用104可能沒(méi)有接收到已經(jīng)在沙盒存儲(chǔ)器408內(nèi)而不是在內(nèi)核存儲(chǔ)器804內(nèi)執(zhí)行了內(nèi)核模式驅(qū)動(dòng)器810b的企圖加載的指示。應(yīng)用104可以接收來(lái)自運(yùn)行時(shí)代碼操縱器106的指示:已經(jīng)根據(jù)指令執(zhí)行了所請(qǐng)求的操作。
[0098]雖然示出了特定的驅(qū)動(dòng)器操作,但系統(tǒng)100可以被配置為:對(duì)諸如加載、卸載或執(zhí)行的驅(qū)動(dòng)器操作進(jìn)行攔截、修改或偽造。該操作可以是對(duì)諸如用戶模式存儲(chǔ)器或內(nèi)核模式存儲(chǔ)器的存儲(chǔ)器的特定部分做出的。例如,可以基于驅(qū)動(dòng)器的加載器的標(biāo)識(shí)、驅(qū)動(dòng)器要加載到的區(qū)域、驅(qū)動(dòng)器的標(biāo)識(shí)、或者驅(qū)動(dòng)器的隨后執(zhí)行,來(lái)分析是否對(duì)給定的驅(qū)動(dòng)器操作進(jìn)行攔截或者企圖的操作是否是惡意的。
[0099]圖9是用于提供使用動(dòng)態(tài)優(yōu)化框架的應(yīng)用沙盒化的方法900的示例實(shí)施例的圖
/Jn ο
[0100]在步驟905中,可以從未知的或惡意的網(wǎng)絡(luò)目的地進(jìn)行數(shù)據(jù)下載。數(shù)據(jù)可以包括應(yīng)用(諸如未知的或惡意的應(yīng)用),或者要由應(yīng)用使用的數(shù)據(jù)(諸如文字處理文件或者用于網(wǎng)絡(luò)瀏覽器的腳本)。在步驟910中,可以啟動(dòng)應(yīng)用以使用數(shù)據(jù)。例如,如果數(shù)據(jù)包括應(yīng)用,那么可以啟動(dòng)該應(yīng)用。在另一個(gè)應(yīng)用中,可以識(shí)別和啟動(dòng)與下載的數(shù)據(jù)一起使用的應(yīng)用。應(yīng)用可以由動(dòng)態(tài)優(yōu)化框架來(lái)啟動(dòng)以便控制應(yīng)用的執(zhí)行??梢允褂脛?dòng)態(tài)優(yōu)化框架在沙盒內(nèi)執(zhí)行應(yīng)用。
[0101]在步驟915中,可以對(duì)由應(yīng)用發(fā)布用來(lái)執(zhí)行的指令或代碼進(jìn)行攔截。指令或代碼可以包括連續(xù)指令的代碼片段。指令或代碼可以被分支點(diǎn)劃分成片段或軌跡。
[0102]在步驟920中,可以確定指令或代碼是否已經(jīng)在方法900的一個(gè)或多個(gè)步驟的之前執(zhí)行期間在先前被處理了。如果指令已經(jīng)在先前被處理,則可以取回先前處理的指令,并且方法900可以前進(jìn)到步驟935。如果指令沒(méi)有在先前被處理,那么在步驟925中可以確定指令是否正在企圖訪問(wèn)敏感系統(tǒng)資源。例如,這樣的系統(tǒng)資源的訪問(wèn)可以包括:讀或?qū)懨舾邢到y(tǒng)文件、修改其它過(guò)程的存儲(chǔ)器、加載內(nèi)核模式驅(qū)動(dòng)器、調(diào)用敏感系統(tǒng)函數(shù)、或者訪問(wèn)注冊(cè)表子項(xiàng)。
[0103]在步驟930中,可以重寫(xiě)指令以便將對(duì)敏感系統(tǒng)資源的企圖訪問(wèn)重定向到沙盒化的資源。例如,可以將對(duì)文件或注冊(cè)表項(xiàng)的企圖寫(xiě)入重定向到偽造的文件或注冊(cè)表項(xiàng)??梢詫?duì)未知的內(nèi)核模式驅(qū)動(dòng)器的企圖加載加載到沙盒存儲(chǔ)器??梢詫?duì)系統(tǒng)函數(shù)的企圖執(zhí)行重定向到偽造的系統(tǒng)函數(shù)??梢詫?duì)存儲(chǔ)器的企圖修改重定向以便在沙盒化的存儲(chǔ)器上進(jìn)行。
[0104]在步驟935中,重寫(xiě)的指令可以由在其上執(zhí)行應(yīng)用的電子設(shè)備執(zhí)行。在步驟940中,可以向應(yīng)用傳遞從系統(tǒng)資源返回的返回值或控制轉(zhuǎn)移。返回值可以由沙盒資源或者由動(dòng)態(tài)優(yōu)化框架偽造??刂妻D(zhuǎn)移可以首先由動(dòng)態(tài)優(yōu)化框架攔截以便保持對(duì)執(zhí)行應(yīng)用的控制。
[0105]在步驟945中,可以觀察執(zhí)行重寫(xiě)指令的結(jié)果,以便確定結(jié)果是否指示其執(zhí)行中所使用的應(yīng)用或數(shù)據(jù)與惡意軟件相關(guān)聯(lián)。例如,如果惡意代碼被寫(xiě)入文件或過(guò)程的存儲(chǔ)器、加載了惡意的內(nèi)核模式驅(qū)動(dòng)器、執(zhí)行了用于禁用反惡意軟件軟件的系統(tǒng)函數(shù)、或者寫(xiě)入注冊(cè)表設(shè)置以將應(yīng)用重定向到惡意網(wǎng)站,那么可以確定其執(zhí)行中所使用的應(yīng)用或數(shù)據(jù)是與惡意軟件相關(guān)聯(lián)的。
[0106]如果執(zhí)行重寫(xiě)指令的結(jié)果并不指示惡意軟件,那么方法900可以前進(jìn)到步驟960。如果執(zhí)行重寫(xiě)指令的結(jié)果指示惡意軟件,那么在步驟950中,可以確定應(yīng)用或應(yīng)用所使用的數(shù)據(jù)是惡意的并且與惡意軟件相關(guān)聯(lián)。在步驟955中,由應(yīng)用或應(yīng)用使用的數(shù)據(jù)可以從執(zhí)行它們的電子設(shè)備清除。例如,應(yīng)用或數(shù)據(jù)可以從未來(lái)的下載移除、隔離或阻擋。
[0107]如果執(zhí)行重寫(xiě)指令的結(jié)果不指示惡意軟件,那么在步驟960中,可以允許迄今分析了的指令的執(zhí)行。在步驟965中,可以確定應(yīng)用的執(zhí)行是否完成。如果完成,那么在步驟970中,可以確定應(yīng)用或應(yīng)用所使用的數(shù)據(jù)是安全,并且可以允許在沒(méi)有重寫(xiě)指令情況下以原始方式執(zhí)行應(yīng)用。如果沒(méi)有完成,那么方法900可以返回步驟915,以便攔截來(lái)自應(yīng)用的下一組代碼或指令。
[0108]可以使用圖1-8的系統(tǒng)或者可操作以實(shí)現(xiàn)方法900的其它系統(tǒng)來(lái)實(shí)現(xiàn)方法900。因此,方法900的優(yōu)選的初始化點(diǎn)和組成方法900的步驟的順序可以取決于所選擇的實(shí)現(xiàn)。在一些實(shí)施例中,可以可選地省略、重復(fù)或組合一些步驟。在某些實(shí)施例中,方法900可以部分或完全在軟件中體現(xiàn)為計(jì)算機(jī)可讀介質(zhì)。
[0109]為了該公開(kāi)內(nèi)容的目的,計(jì)算機(jī)可讀介質(zhì)可以包括可以將數(shù)據(jù)和/或指令保留一段時(shí)間的任何工具或工具的聚合。計(jì)算機(jī)可讀介質(zhì)可以包括但不限于:諸如直接存取存儲(chǔ)設(shè)備(例如,硬盤(pán)驅(qū)動(dòng)器或軟盤(pán))、順序存取存儲(chǔ)設(shè)備(例如,磁帶驅(qū)動(dòng)器)、壓縮盤(pán)、CD-ROM、DVD、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、和/或閃存器的存儲(chǔ)介質(zhì);以及諸如線纜、光纖以及其它電磁和/或光載波的通信介質(zhì);和/或上述各種介質(zhì)的任意組合。
[0110]雖然詳細(xì)描述了本公開(kāi)內(nèi)容,但應(yīng)該理解的是:可以在不脫離由所附權(quán)利要求書(shū)定義的本公開(kāi)內(nèi)容的精神和范圍的前提下對(duì)本
【發(fā)明內(nèi)容】
做出各種變化、替代和改變。
【權(quán)利要求】
1.一種用于防止惡意軟件攻擊的方法,包括: 在電子設(shè)備上啟動(dòng)應(yīng)用; 攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令,所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令; 確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖; 重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源; 在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及 觀察重寫(xiě)的指令的結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 確定所述重寫(xiě)的指令的結(jié)果是否指示企圖的惡意動(dòng)作; 基于所述結(jié)果的確定,來(lái)確定所述應(yīng)用與惡意軟件相關(guān)聯(lián)。
3.根據(jù)權(quán)利要求1所述的方法,其中: 攔截所述一個(gè)或多個(gè)指令包括:攔截指令的第一片段和指令的第二片段;以及確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖,以及重寫(xiě)所述一個(gè)或多個(gè)指令包括: 確定所述第一片段是否包括要訪問(wèn)第一敏感系統(tǒng)資源的企圖; 基于這樣的確定,重寫(xiě)所述第一片段以訪問(wèn)第一安全系統(tǒng)資源; 確定所述第二片段是否包括要訪問(wèn)第二敏感系統(tǒng)資源的企圖;以及基于這樣的確定,重寫(xiě)所述第二片段以訪問(wèn)第二系統(tǒng)資源;配置所述應(yīng)用來(lái)使用所述數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其中,確定所述指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖包括:確定所述企圖是否與在所述電子設(shè)備上的惡意軟件攻擊的已知方法相對(duì)應(yīng)。
5.根據(jù)權(quán)利要求1所述的方法,其中,重寫(xiě)所述指令包括: 重寫(xiě)訪問(wèn)所述敏感系統(tǒng)資源的可疑指令;以及 保持不訪問(wèn)所述敏感系統(tǒng)資源的非可疑指令。
6.根據(jù)權(quán)利要求1所述的方法,還包括: 確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感資源的企圖的重復(fù);以及 基于這樣的確定,在不重復(fù)對(duì)所述一個(gè)或多個(gè)指令的重寫(xiě)的情況下來(lái)執(zhí)行所述重寫(xiě)的指令。
7.根據(jù)權(quán)利要求1所述的方法,其中: 所述敏感系統(tǒng)資源包括注冊(cè)表;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的注冊(cè)表。
8.根據(jù)權(quán)利要求1所述的方法,其中: 所述敏感系統(tǒng)資源包括文件;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的文件。
9.根據(jù)權(quán)利要求1所述的方法,其中: 所述敏感系統(tǒng)資源包括存儲(chǔ)器中的地址;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的存儲(chǔ)器中的地址。
10.根據(jù)權(quán)利要求1所述的方法,其中,所述敏感系統(tǒng)資源包括操作系統(tǒng)函數(shù);并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的操作系統(tǒng)函數(shù)。
11.根據(jù)權(quán)利要求1所述的方法,其中: 所述敏感系統(tǒng)資源包括驅(qū)動(dòng)器;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以加載偽造的驅(qū)動(dòng)器。
12.—件制造的物品,包括: 計(jì)算機(jī)可讀介質(zhì);以及 在所述計(jì)算機(jī)可讀介質(zhì)上攜帶的計(jì)算機(jī)可執(zhí)行指令,所述指令能夠由處理器讀取,當(dāng)被讀取和執(zhí)行時(shí),所述指令使所述處理器用于: 在電子設(shè)備上啟動(dòng)應(yīng)用 攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令,所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令; 確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖; 重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源; 在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及 觀察重寫(xiě)的指令的結(jié)果。
13.根據(jù)權(quán)利要求12所述的物品,其中,還使所述處理器用于: 確定所述重寫(xiě)的指令的結(jié)果是否指示企圖的惡意動(dòng)作; 基于所述結(jié)果的確定,確定所述應(yīng)用與惡意軟件相關(guān)聯(lián)。
14.根據(jù)權(quán)利要求12所述的物品,其中: 攔截所述一個(gè)或多個(gè)指令包括:攔截指令的第一片段和指令的第二片段;以及確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖,以及重寫(xiě)所述一個(gè)或多個(gè)指令包括: 確定所述第一片段是否包括要訪問(wèn)第一敏感系統(tǒng)資源的企圖; 基于這樣的確定,重寫(xiě)所述第一片段以訪問(wèn)第一安全系統(tǒng)資源; 確定所述第二片段是否包括要訪問(wèn)第二敏感系統(tǒng)資源的企圖;以及基于這樣的確定,重寫(xiě)所述第二片段以訪問(wèn)第二系統(tǒng)資源;配置所述應(yīng)用來(lái)使用所述數(shù)據(jù)。
15.根據(jù)權(quán)利要求12所述的物品,其中,確定所述指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖包括:確定所述企圖是否與在所述電子設(shè)備上的惡意軟件攻擊的已知方法相對(duì)應(yīng)。
16.根據(jù)權(quán)利要求12所述的物品,其中,使所述處理器重寫(xiě)所述指令包括使所述處理器用于: 重寫(xiě)訪問(wèn)所述敏感系統(tǒng)資源的可疑指令;以及 保持不訪問(wèn)所述敏感系統(tǒng)資源的非可疑指令。
17.根據(jù)權(quán)利要求12所述的物品,其中: 所述敏感系統(tǒng)資源包括注冊(cè)表;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的注冊(cè)表。
18.根據(jù)權(quán)利要求12所述的物品,其中: 所述敏感系統(tǒng)資源包括文件;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的文件。
19.根據(jù)權(quán)利要求12所述的物品,其中: 所述敏感系統(tǒng)資源包括存儲(chǔ)器中的地址;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的存儲(chǔ)器中的地址。
20.根據(jù)權(quán)利要求12所述的物品,其中: 所述敏感系統(tǒng)資源包括操作系統(tǒng)函數(shù);并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的操作系統(tǒng)函數(shù)。
21.根據(jù)權(quán)利要求12所述的物品,其中: 所述敏感系統(tǒng)資源包括驅(qū)動(dòng)器;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以加載偽造的驅(qū)動(dòng)器。
22.一種用于防止惡意軟件攻擊的系統(tǒng),包括: 處理器,其耦接到存儲(chǔ)器;以及 由所述處理器 執(zhí)行的、位于所述存儲(chǔ)器之內(nèi)的動(dòng)態(tài)優(yōu)化框架,所述框架被配置用于: 在電子設(shè)備上啟動(dòng)應(yīng)用; 攔截來(lái)自所述應(yīng)用的一個(gè)或多個(gè)指令,所述應(yīng)用企圖執(zhí)行所述一個(gè)或多個(gè)指令; 確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)所述電子設(shè)備的敏感系統(tǒng)資源的企圖; 重寫(xiě)所述一個(gè)或多個(gè)指令以訪問(wèn)所述電子設(shè)備的安全系統(tǒng)資源; 在所述電子設(shè)備上執(zhí)行重寫(xiě)的指令;以及 觀察重寫(xiě)的指令的結(jié)果。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,所述框架還被配置用于: 確定所述重寫(xiě)的指令的結(jié)果是否指示企圖的惡意動(dòng)作; 基于所述結(jié)果的確定,確定所述應(yīng)用與惡意軟件相關(guān)聯(lián)。
24.根據(jù)權(quán)利要求22所述的系統(tǒng),其中:攔截所述一個(gè)或多個(gè)指令包括:攔截指令的第一片段和指令的第二片段;以及 確定所述一個(gè)或多個(gè)指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖,并且重寫(xiě)所述一個(gè)或多個(gè)指令包括: 確定所述第一片段是否包括要訪問(wèn)第一敏感系統(tǒng)資源的企圖; 基于這樣的確定,重寫(xiě)所述第一片段以訪問(wèn)第一安全系統(tǒng)資源; 確定所述第二片段是否包括要訪問(wèn)第二敏感系統(tǒng)資源的企圖;以及基于這樣的確定,重寫(xiě)所述第二片段以訪問(wèn)第二系統(tǒng)資源;配置所述應(yīng)用來(lái)使用所述數(shù)據(jù)。
25.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,確定所述指令是否包括要訪問(wèn)敏感系統(tǒng)資源的企圖包括:確定所述企圖是否與在所述電子設(shè)備上的惡意軟件攻擊的已知方法相對(duì)應(yīng)。
26.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,配置所述框架用于重寫(xiě)所述指令包括配置所述框架用于: 重寫(xiě)訪問(wèn)所述敏感系統(tǒng)資源的可疑指令;以及 保持不訪問(wèn)所述敏感系統(tǒng)資源的非可疑指令。
27.根據(jù)權(quán)利要求22所述的系統(tǒng),其中: 所述敏感系統(tǒng)資源包括注冊(cè)表;并且 重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的注冊(cè)表。
28.根據(jù)權(quán)利要求22所述的系統(tǒng),其中:所述敏感系統(tǒng)資源包括文件;并且重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的文件。
29.根據(jù)權(quán)利要求22所述的系統(tǒng),其中:所述敏感系統(tǒng)資源包括存儲(chǔ)器中的地址;并且重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的存儲(chǔ)器中的地址。
30.根據(jù)權(quán)利要求22所述的系統(tǒng),其中:所述敏感系統(tǒng)資源包括操作系統(tǒng)函數(shù);并且重寫(xiě)所述一個(gè)或多個(gè)指令包括:重寫(xiě)所述指令以訪問(wèn)偽造的操作系統(tǒng)函數(shù)。
31.根據(jù)權(quán)利要求22所述的系統(tǒng),其中:所述敏感系統(tǒng)資源包括驅(qū)動(dòng)器;并且重寫(xiě)所述一個(gè)或多個(gè)指 令包括:重寫(xiě)所述指令以加載偽造的驅(qū)動(dòng)器。
【文檔編號(hào)】G06F21/00GK104081404SQ201280058398
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2012年11月27日 優(yōu)先權(quán)日:2011年11月28日
【發(fā)明者】M·D·布林克利, R·R·佩爾默赫 申請(qǐng)人:邁克菲公司