專利名稱:計算機(jī)設(shè)備中的惡意軟件檢測的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于操作計算設(shè)備的方法,并且更具體地涉及一種改進(jìn)的方法, 用于對計算設(shè)備中的惡意軟件進(jìn)行掃描。
背景技術(shù):
在本發(fā)明的上下文中,術(shù)語“計算設(shè)備”包括但不限于臺式和膝上型計算機(jī)、個人數(shù)字助理(PDA )、移動電話、智能電話、數(shù)碼相機(jī)和數(shù)碼音樂播放器.其還包括將上述一種或多種類別的設(shè)備的功能與很多其他工業(yè)和家用電子設(shè)備結(jié)合在一起的綜合設(shè)備。現(xiàn)在廣泛的共識是,惡意程序(惡意軟件)對計算設(shè)備的影響具有顯著的風(fēng)險, 特別足當(dāng)計算設(shè)備通過網(wǎng)絡(luò)連接到其他設(shè)備的時候。對于此惡意軟件的所有實例而言, 通常被稱為病毒。然而,安全專家在很多不同類型的惡意軟件之間進(jìn)行區(qū)分.最近的互聯(lián)網(wǎng)文章標(biāo)識并描述了十一種不同類型,其包括病毒、蠕蟲、瓦比特(Wabbit )、木馬、后門 (backdoor)、間謀軟件、偵 7M ( Exploit)、引導(dǎo)工具(rootkit),鍵盤記錄器(key logger) 、撥號器(dialer)以及瀏覽器強(qiáng)盜(Browser Hijacker)。惡意軟件可以以不同方式獲得對計算設(shè)備的登錄.很多感染的發(fā)生是因為用于被欺騙以安裝攜帶該感染的軟件。進(jìn)入設(shè)備的這條路徑可以通過證書、認(rèn)證、安轉(zhuǎn)軟件包驗證以及其他代碼項目(例如宏)來相對容易地監(jiān)視。然而,用戶并不總是留意在安裝階段給出的有關(guān)不信任軟件危險的警示。此外,惡意軟件并不局限于可安裝的可執(zhí)行程序,并且可以通過其他手段例如電子郵件和電子郵件附件來傳播。為此,計算設(shè)備越來越多地配備反病毒軟件。此軟件傳統(tǒng)上的工作是通過連上主機(jī)操作系統(tǒng)的文件系統(tǒng),并在文件被寫入或從盤片上被讀取的時候掃描該文件。在此掃描過程中,它們搜索可以被用作簽名或指紋的唯一字節(jié)系列來識別惡意軟件。大多數(shù)個人計算機(jī)用戶意識到如果該方法是有效的,則他們需要將針對此類軟件的病毒定義文件保持最新。由于即刻(on-the-fly)掃描的處理是易錯的(例如,其不能檢測到可移動介質(zhì)上潛在的惡意軟件感染),所以大多數(shù)類型的防病毒軟件總是以更深的批處理模式周期的運行,在此期間整個軟件系統(tǒng)的完整內(nèi)容被分析以查找上述所稱的指紋。然而,僅掃描文件系統(tǒng)的反病毒軟件不能捕獲所有的惡意軟件.已知的是,存在文件系統(tǒng)之外的其他途徑來對設(shè)備進(jìn)行感染。已知可以被惡意軟件偵測以允許其代碼在計算設(shè)備上執(zhí)行的安全漏洞在一定規(guī)則的基礎(chǔ)上,在控制計算設(shè)備的操作系統(tǒng)或在一般使用的軟件包中被發(fā)現(xiàn)。網(wǎng)絡(luò)的文章中列出了多種此類偵測,包括緩沖器溢出、整數(shù)溢出、存儲器出錯、格式化串攻擊、競態(tài)條件、跨站腳本執(zhí)行、跨站起請求偽造以及SQL感染病蟲。通過很多途徑進(jìn)入設(shè)備的惡意軟件可能完全駐留在存儲器中,并且不能通過掃描文件系統(tǒng)來檢測。這種類型的惡意軟件的例子將被稱為蠕蟲,其通過在通信堆找中偵測薄弱點而從一個機(jī)器的存儲器中傳播到另一個機(jī)器的存儲器。
為此,反病毒軟件通常檢查易失性存儲器(RAM)的內(nèi)容以及文件系統(tǒng)的內(nèi)容,從而查找各種類型的存儲器駐留惡意軟件的簽名。應(yīng)當(dāng)注意的是,所有的計算設(shè)備均潛在地受到惡意軟件攻擊,而不僅僅是臺式或膝上型計算機(jī).已經(jīng)在其他計算設(shè)備上偵測到安全漏洞,包括電池供電的移動設(shè)備。具體而言,很明顯的是,對于移動計算設(shè)備例如智能電話(其在長時間中保持加電或待機(jī)并通常使用非易失性閃速存儲器技術(shù))而言,與處于采用易失性動態(tài)RAM并可以依靠規(guī)則地斷電以清除存儲器駐留惡意軟件的電網(wǎng)供電計算機(jī)上的惡意軟件相比,基于存儲器的惡意軟件例如蠕蟲顯然更加危險。當(dāng)前的反病毒軟件嚴(yán)重地依賴于對文件系統(tǒng)進(jìn)行掃描。然而,用于此目的的現(xiàn)存方法的問題在于
直到執(zhí)行批處理掃描,它們才能檢測到良好隱藏的或多形態(tài)的病毒;
如果病毒絲毫不依賴于被寫入到盤片(例如純網(wǎng)絡(luò)病毒),則其不可能被檢測到。其對每次文件存取增加開銷(即使是非執(zhí)行程序,當(dāng)它們包含嵌入的可執(zhí)行文件時);
在操作系統(tǒng)層次上有效實施通常要求掃描器與文件系統(tǒng)驅(qū)動器聯(lián)合定位,其自身可以打開安全薄弱點,因為如果病毒攻擊掃描器自身的話,則其可以獲得對整個文件系統(tǒng)的無約束存取;
特別地,深度掃描可以產(chǎn)生可執(zhí)行程序或其他文件的很多掃描,即使不對它們進(jìn)行調(diào)用;并且使設(shè)備的操作減慢,這在功率節(jié)約方面非常低效.在電池供電的設(shè)備中,對功率的任何不必要使用對設(shè)備的功能發(fā)揮都是有害的,而即使在電網(wǎng)供電的設(shè)備上,也不贊成這樣,因為能源浪費對全球變暖和環(huán)境惡化產(chǎn)生影響。如上所述,由于已經(jīng)意識到對文件系統(tǒng)的掃描不能檢測到存儲器惡意軟件,所以當(dāng)前的反病毒軟件通常還掃描設(shè)備存儲器。然而,掃描存儲器的現(xiàn)有方法也具有下列缺點
當(dāng)反病毒軟件首次加載或以固定時間間隔加載時觸發(fā)存儲器掃描,任何惡意軟件可能已經(jīng)在存儲器特定部分被掃描的時候被執(zhí)行;
通過存儲器內(nèi)容的改變,觸發(fā)存儲器掃描,有必要對所有此類改變進(jìn)行侵略性掃描, 這導(dǎo)致了性能極度惡化。需要掃描整個設(shè)備存儲器,這在計算設(shè)備具有數(shù)G字節(jié)存儲器的時候開梢顯著, 這加劇了上述問題;
在實現(xiàn)請求分頁(demand paging)的系統(tǒng)中(其中一部分虛擬存儲器保持在盤片上), 掃描器還需要意識到哪部分存儲器實際上駐留在交換(swap)文件中,以免其對性能產(chǎn)生更進(jìn)一步的惡化;
掃描存儲器對于電池供電的設(shè)備而言足特別繁重的,因為連續(xù)掃描存儲器的方案可以導(dǎo)致功耗的很大上升。此外,如以上結(jié)合操作盤片所述,對功率的任何不必要使用對電池供電設(shè)備的功能發(fā)揮均有損害,而即使在電網(wǎng)供電的設(shè)備上,也不贊成這樣,因為能源浪費對全球變暖和環(huán)境惡化產(chǎn)生影響。
發(fā)明內(nèi)容
在保持對惡意軟件的簽名或指紋進(jìn)行掃描的相同詳細(xì)方法的同時,本發(fā)明公開了計算設(shè)備如何被設(shè)置用于實現(xiàn)以下列方式來檢測和抗擊惡意代碼感染的系統(tǒng)即比現(xiàn)存的防病毒軟件掃描解決方案更加有效并且更加強(qiáng)健。 根據(jù)本發(fā)明的第一方面,提供一種操作計算設(shè)備的方法,其中,所述設(shè)備通過以下方式來防護(hù)于可執(zhí)行惡意軟件
a.將程序從所述設(shè)備上的不可執(zhí)行存儲器分離;
b.僅允許執(zhí)行來自于可執(zhí)行存儲器的任何代碼;
c.使用第一軟件實體,其能夠就惡意軟件僅掃描所述設(shè)備上的可執(zhí)行存儲器。根據(jù)本發(fā)明第二方面,提供一種計算設(shè)備,其被設(shè)置用于根據(jù)第一方面的方法來操作。根據(jù)本發(fā)明第三方面,提供一種操作系統(tǒng),用于使計算設(shè)備根據(jù)第一方面的方法來操作。
現(xiàn)在將參照附圖并通過進(jìn)一步示例的方式來描述本發(fā)明的實施方式,其中
圖I示出了根據(jù)本發(fā)明的病毒掃描方法的流程圖2示出了其中存儲器頁面被標(biāo)記為可執(zhí)行和只讀時的病毒掃描方法的流程圖3示出了根據(jù)本發(fā)明的病毒掃描方法的流程圖,其中修改后的存儲器頁面被掃描。
具體實施例方式本發(fā)明背后的理解是在盤片上存儲的可執(zhí)行代碼其自身是無害的。即使當(dāng)該代碼加載到存儲器中,其仍然不產(chǎn)生傷害。僅當(dāng)該代碼執(zhí)行的時候,它才有機(jī)會產(chǎn)生傷害。因此, 如果可以找到識別將要被執(zhí)行的代碼的方法,則可以完全省卻對存儲器的整個內(nèi)容進(jìn)行掃描,掃描文件系統(tǒng)讀取和寫入,以及對惡意軟件搜索中整個文件系統(tǒng)的深度掃描。通過識別將要執(zhí)行的代碼,可以使掃描處理更加有效。實施本發(fā)明的基礎(chǔ)在于對于計算設(shè)備而言,使用中央處理單元(CPU ),其可以在包含可執(zhí)行代碼的存儲的那些部分以及僅包含數(shù)據(jù)的那些部分之間進(jìn)行區(qū)分;對于計算設(shè)備中的反病毒軟件而言,設(shè)置一種機(jī)制,通過該機(jī)制,包含代碼的一部分存儲器的內(nèi)容何時發(fā)生變化被通知。合適的處理器包括符合英國劍橋ARM pic所設(shè)計的ARM架構(gòu)版本6 (ARMv6)的處理器,以及符合美國加利福尼亞Santa Clara的因特爾公司所設(shè)計的因特爾IA-32的那些處理器。和很多其他結(jié)合了存儲器管理功能的處理器一樣,這些CPU將可存取存儲器劃分為頁面。該ARM架構(gòu)通過為存儲器的每個頁面設(shè)置XN比特來實現(xiàn)此目的,其中XN表示從不執(zhí)行(Execute Never),而因特爾通過設(shè)定執(zhí)行禁用比特來實現(xiàn)對存儲器頁面的標(biāo)記。應(yīng)用注意到,盡管因特爾公開了提供執(zhí)行禁用比特以阻止惡意軟件執(zhí)行數(shù)據(jù)頁面中的代碼,很明顯其目的是防止惡意軟件偵測的攻擊,例如堆棧和緩沖器溢出,但是如本發(fā)明所公開的,在因特爾的公開中沒有任何使用此機(jī)制來改進(jìn)病毒掃描操作的效率并減輕病毒掃描操作中固有的功率浪費的暗示。圖I示出了本發(fā)明的一種實施方式,用于該計算設(shè)備的操作系統(tǒng)將支持此種類型的不可執(zhí)行存儲器頁面。在此實施方式中,所有存儲器被默認(rèn)標(biāo)記為不可執(zhí)行,直到其需要執(zhí)行代碼為止,即當(dāng)其明顯未被標(biāo)記時標(biāo)記為可執(zhí)行??梢钥吹?,一旦實現(xiàn)此種未被標(biāo)記,則即刻的效果是用于病毒檢查的掃描搜索空間極大地減少,因為只有那些被標(biāo)記為可執(zhí)行的存儲器頁面才需要就基于本機(jī)碼的病毒進(jìn)行掃描。仍然被標(biāo)記為不可執(zhí)行頁面的存儲器頁面可以被忽略,因為他們包含的代碼不能運行并且引起惡意傷害。然而,本發(fā)明另一實施方式是提供一種用于當(dāng)存儲器的可執(zhí)行頁面其中之一的內(nèi)容改變時直接或通過操作系統(tǒng)來通知反病毒軟件的機(jī)制;這使得能夠僅當(dāng)必要的時候才對存儲器進(jìn)行重新掃描,并且由此最小化了對完整存儲器掃描的需要。有多個方式來實現(xiàn)該通知機(jī)制.兩個(但不排他)建議方法如下
I.交互在圖2中示出了該方法,并且該方法利用如下事實,即很多處理器,包括如上所述的ARM以及因特爾架構(gòu),附加地能夠?qū)⒋鎯ζ黜撁鏄?biāo)記為寫保護(hù),或只讀.向計算設(shè)備上的客戶端應(yīng)用提供應(yīng)用編程接口(API),其中該客戶端應(yīng)用必須調(diào)用將要分配的存儲器區(qū)域,從而起可以在設(shè)備上運行.在此實施方式中,當(dāng)分配了存儲器區(qū)域時,與此同時, 對于所關(guān)注的存儲頁面,不可執(zhí)行比特被關(guān)閉(toggle off)而寫保護(hù)比特被打開(toggle on ).因此,所使用的存儲的所有頁面處于可寫入或可執(zhí)行狀態(tài)頁面不可以同時處于可寫入和可執(zhí)行,并且因此設(shè)備將不允許對可執(zhí)行頁面進(jìn)行寫入.因此,可能包含惡意代碼的客戶端應(yīng)用可以被寫入到所要求的頁面中,因為他們已經(jīng)被切換為“可寫入然而,當(dāng)客戶端應(yīng)用請求任何頁面從可寫入切換到可執(zhí)行的時候,頁面立刻被標(biāo)記為只讀,并且被添加到待掃描列頁面列表中.只有當(dāng)反病毒軟件成功完成其掃描之后,客戶端API調(diào)用才返回。如果掃描結(jié)果為清潔,則頁面接下來被標(biāo)記為可執(zhí)行以及只讀,從而所關(guān)注頁面中的客戶端代碼可以在設(shè)備上運行,但不可寫入新的代碼,因為頁面被標(biāo)記為只讀.然而,如果掃描檢測到任何可疑代碼,則狀態(tài)改變將失敗,并且頁面將返回被標(biāo)記為可寫入和不可執(zhí)行.可選地,然后可以清除存儲器頁面的整個內(nèi)容。對于大多數(shù)計算機(jī)設(shè)備上的大多數(shù)現(xiàn)存軟件,程序加載器是僅有的需要被修改以使用上述API的實體.任何繞過該程序加載器的企圖將不可避免地失敗,因為此類企圖將嘗試執(zhí)行來自不可執(zhí)行頁面中的代碼。2、響應(yīng)這要求一點都不改變API,并且確實允許向可執(zhí)行頁面進(jìn)行寫入.然而, 無論何時對可執(zhí)行頁面進(jìn)行了修改,通過操作系統(tǒng)內(nèi)核(kernel )來通知病毒掃描器,并且其接下來著手進(jìn)行頁面掃描.如果發(fā)現(xiàn)惡意代碼,則掃描器將其指示設(shè)定不可執(zhí)行頁面標(biāo)志的內(nèi)核(并可選地清除頁面的內(nèi)容〕.為了更好的響應(yīng),如果沒有執(zhí)行可疑代碼的風(fēng)險的話,則掃描可以異步地進(jìn)行;如果任何線程企圖在成功完成掃描之前執(zhí)行該頁面中的代碼,則操作系統(tǒng)內(nèi)核可以將該線程掛起。響應(yīng)模式的實現(xiàn)可以通過在存儲器管理器中設(shè)定特殊的例外句柄(handler ), 其可以在有任何企圖對可執(zhí)行頁面的內(nèi)容進(jìn)行修改時觸發(fā)中斷所建議的機(jī)制對于本領(lǐng)域技術(shù)人員是熟知的,因為其與頁面默認(rèn)相似。然而,通知的其他方法也是可行的,并且本發(fā)明并不受所建議機(jī)制的限制。上述實施方式僅提供用于示意目的而不只旨在于將本發(fā)明限制在特定的實施方式中.本發(fā)明可以以很多方式來實施,并且可以實施在很多不同的操作系統(tǒng)和不同的計算設(shè)備上,而不脫離這里所公開的本發(fā)明的范圍。從以上描述中可以看到,通過使用本發(fā)明產(chǎn)生了若千有益效果
文件掃描變得幾乎多余(redundant)。
掃描所有可以被執(zhí)行的代碼,并且這些代碼可以被證實為抗惡意軟件;其不需要掃描,除非存儲器頁面被寫入。這消除了文件系統(tǒng)病毒掃描鉤子程序(hook)所帶來的安全風(fēng)險和低效率。只需要對被標(biāo)記為可執(zhí)行的存儲器進(jìn)行掃描。病毒掃描器不需要意識到二進(jìn)制文件格式中的任何變化,或在其上使用的任何壓縮算法中的變化。自修改病毒代碼將自動地受制于完全相同的重新掃描要求。存儲器掃描API不將相同的安全風(fēng)險或開銷表現(xiàn)為文件系統(tǒng)插件。通過RAM頁面可以對很多處理可見的事實,其調(diào)用相對不頻繁(可執(zhí)行代碼的加載遠(yuǎn)比時盤片的存取要不頻繁)并且可以通過跨越存儲器界限來有效地實現(xiàn).API誤用的結(jié)果正好是服務(wù)的拒絕(拒絕代碼被加載)而不是自由的文件系統(tǒng)存取.只需要向存儲器披露可執(zhí)行代碼,而不是每個曾經(jīng)加載的文件,以及效用和可靠性方面的收益、通過本發(fā)明節(jié)約功率所獲得的額外效率收益;對于電池操作的設(shè)備,這延長了一組電池或單次充電的使用,同時針對所有計算設(shè)備的功率節(jié)約直接轉(zhuǎn)換為較少的能量浪費,較少的全球變暖以及較少的環(huán)境污染。盡管已經(jīng)參考特定實施方式對本發(fā)明進(jìn)行了描述,但需要意識到,可以實施各種修改,同時仍然保留在所附權(quán)利要求書所限定的本發(fā)明的范圍中。
權(quán)利要求
1.一種操作計算設(shè)備的方法,其中,所述設(shè)備通過以下方式來防護(hù)于可執(zhí)行惡意軟件a.將可執(zhí)行程序從所述設(shè)備上的不可執(zhí)行存儲器分離;以及b,僅允許執(zhí)行來自于可執(zhí)行存儲器的任何代碼;以及c.使用第一軟件實體,所述第一軟件實體能夠就惡意軟件僅掃描所述設(shè)備上的可執(zhí)行存儲器。
2.根據(jù)權(quán)利要求I所述的方法,其中,所述計算設(shè)備上的存儲器包括可以被設(shè)定為可執(zhí)行或不可執(zhí)行的頁面。
3.根據(jù)權(quán)利要求I或2所述的方法,其中,所述第一軟件響應(yīng)于所述設(shè)備上的可執(zhí)行存儲器的內(nèi)容已經(jīng)被改變的通知,而就惡意軟件來掃描所述設(shè)備上的所述可執(zhí)行存儲器。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述通知是可執(zhí)行存儲器的單個頁面已經(jīng)被改變,并且其中所述第一軟件實體通過僅對已經(jīng)發(fā)生改變的頁面進(jìn)行掃描來進(jìn)行響應(yīng)。
5.根據(jù)權(quán)利要求4所述的方法,其中,針對待掃描頁面的未處理的通知或請求被保持在隊列中,直到它們可以被處理。
6.根據(jù)權(quán)利要求3至5中任一項所述的方法,其中,尋求執(zhí)行來自被改變的可執(zhí)行存儲器的代碼的軟件應(yīng)用被阻止執(zhí)行來自被改變的可執(zhí)行存儲器的代碼,直到已經(jīng)就惡意軟件對所述被改變存儲器進(jìn)行了掃描。
7.根據(jù)權(quán)利要求6所述的方法,其中,檢測被改變的可執(zhí)行頁面中的惡意軟件使得尋求執(zhí)行其內(nèi)容的軟件應(yīng)用被中止。
8.根據(jù)權(quán)利要求6或7所述的方法,其中,檢測被改變的可執(zhí)行頁面中的惡意軟件使得將對被檢測為包含所述惡意軟件的存儲器進(jìn)行清除。
9.根據(jù)權(quán)利要求2所述的方法,其中,所述計算設(shè)備被設(shè)置為可寫入存儲器不能被執(zhí)行,并且可執(zhí)行存儲器不能被寫入,并且其中,使得第二軟件實體能夠?qū)⑺龃鎯ζ髦械捻撁鏄?biāo)記為可寫入或可執(zhí)行。
10.根據(jù)權(quán)利要求9所述的方法,其中,尋求執(zhí)行來自一個或多個可寫入存儲器頁面的代碼的軟件應(yīng)用請求所述第二軟件實體使所述頁面可執(zhí)行,并且所述第二軟件實體并不履行該請求,直到所述第一軟件實體已經(jīng)將所述頁面標(biāo)記為只讀并且已經(jīng)就惡意軟件了掃描所述頁面。
全文摘要
一種掃描計算設(shè)備的存儲器中的病毒的方法,其中僅需要對被標(biāo)記為可執(zhí)行的存儲器頁面進(jìn)行掃描??梢酝ㄟ^將頁面從可寫入改變?yōu)榭蓤?zhí)行的API,或者通過己經(jīng)對可執(zhí)行頁面進(jìn)行了修改的內(nèi)核通知,來觸發(fā)掃描。本發(fā)明的高效在于其使得很多先前的文件系統(tǒng)掃描成為多余;這節(jié)省了功率,并使得設(shè)備執(zhí)行更快。其還更加安全,因為其檢測其他方法所不能達(dá)到的病毒,并且在執(zhí)行點這樣做。
文檔編號G06F21/00GK102609651SQ201210025739
公開日2012年7月25日 申請日期2012年2月7日 優(yōu)先權(quán)日2012年2月7日
發(fā)明者周亞芹 申請人:蘇州工業(yè)園區(qū)飛酷電子科技有限公司