專利名稱:在引導(dǎo)環(huán)境中標(biāo)識惡意軟件的制作方法
在引導(dǎo)環(huán)境中標(biāo)識惡意軟件 背景
隨著越來越多的計(jì)算機(jī)和其它計(jì)算設(shè)備通過諸如因特網(wǎng)等各種網(wǎng)絡(luò)進(jìn) 行互聯(lián),計(jì)算機(jī)安全已經(jīng)變得日益重要,尤其是因通過網(wǎng)絡(luò)或通過信息流 傳遞的入侵或攻擊而引起的安全問題。如本領(lǐng)域的技術(shù)人員和其他人員將 認(rèn)識到的,這些攻擊以許多不同的形式出現(xiàn),這些形式包括但肯定不限于
計(jì)算機(jī)病毒、計(jì)算機(jī)蠕蟲、系統(tǒng)組件替換、木馬、RootKit、間諜軟件、服 務(wù)拒絕攻擊、甚至合法計(jì)算機(jī)系統(tǒng)特征的誤用/濫用,所有這些均為非法目 的而惡意利用一個或多個計(jì)算機(jī)系統(tǒng)漏洞。盡管本領(lǐng)域的技術(shù)人員將認(rèn)識 到,各種計(jì)算機(jī)攻擊在技術(shù)上是彼此不同的,但為了本發(fā)明的目的及為了 描述的簡單,在諸如因特網(wǎng)等計(jì)算機(jī)網(wǎng)絡(luò)上散播的所有惡意計(jì)算機(jī)程序?qū)?在下文中被統(tǒng)稱為計(jì)算機(jī)惡意軟件,或者簡稱為惡意軟件。
當(dāng)計(jì)算機(jī)系統(tǒng)受到攻擊計(jì)算機(jī)惡意軟件的或被其"感染"時,不利結(jié)
果各有不同,包括禁用系統(tǒng)設(shè)備;擦除或破壞固件、應(yīng)用程序或數(shù)據(jù)文件;
將潛在敏感的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上的另一個位置;關(guān)閉計(jì)算機(jī)系統(tǒng);或者使 計(jì)算機(jī)系統(tǒng)崩潰。即使不是全部,但也是眾多計(jì)算機(jī)惡意軟件的又一有害 方面在于使用受感染的計(jì)算機(jī)系統(tǒng)來感染通過網(wǎng)絡(luò)連接來通信地連接的其 它計(jì)算機(jī)系統(tǒng)。
對計(jì)算機(jī)惡意軟件,尤其是對計(jì)算機(jī)病毒和蠕蟲的傳統(tǒng)防護(hù)是反病毒 軟件。大多數(shù)反病毒軟件通過將數(shù)據(jù)中的模式與被稱為惡意軟件的"簽名" 的內(nèi)容進(jìn)行匹配來標(biāo)識該惡意軟件。通常,在調(diào)度特定事件發(fā)生時,如在 從計(jì)算機(jī)上的存儲設(shè)備中讀取或向其寫入數(shù)據(jù)時,反病毒軟件掃描惡意軟 件簽名。如本領(lǐng)域技術(shù)人員和其他人員所理解的,計(jì)算機(jī)用戶有從諸如硬 盤等存儲設(shè)備讀取和寫入數(shù)據(jù)的不斷發(fā)生的需求。例如, 一些軟件應(yīng)用程 序提供的一個共同操作是打開存儲在硬盤上的文件并在計(jì)算機(jī)顯示器上顯 示該文件的內(nèi)容。然而,由于打開文件可能使得與該文件相關(guān)聯(lián)的惡意軟 件被執(zhí)行,所以在滿足打開操作之前,反病毒軟件通常對該文件執(zhí)行掃描 或其它分析。如果檢測到惡意軟件,則執(zhí)行掃描的反病毒軟件可以例如通過使打開操作失敗來阻止該惡意軟件被執(zhí)行。
惡意軟件正日益用被特別設(shè)計(jì)來將該惡意軟件向被設(shè)計(jì)來保護(hù)計(jì)算機(jī) 的軟件(例如,反病毒軟件、反間諜軟件軟件等)"隱藏"的一個或多個 程序來分發(fā)。類似于安裝在計(jì)算機(jī)上的其它類型的應(yīng)用程序,被設(shè)計(jì)來保 護(hù)計(jì)算機(jī)免于惡意軟件的軟件依賴于操作系統(tǒng)所提供的服務(wù)。然而,如果 惡意軟件能夠感染計(jì)算機(jī)操作系統(tǒng)的組件或其它低級組件,則惡意軟件可 以控制提供給被設(shè)計(jì)來保護(hù)計(jì)算機(jī)的軟件的信息。特別設(shè)計(jì)來隱藏作為計(jì) 算機(jī)上的惡意軟件的特征的數(shù)據(jù)的惡意軟件以下一般被稱為"RootKit"。
出于說明的目的且僅作為示例,圖1描繪RootKit如何能夠控制對于 被設(shè)計(jì)來保護(hù)計(jì)算機(jī)100免于惡意軟件的軟件可用的信息。如圖1所示, 計(jì)算機(jī)100包括應(yīng)用程序102、操作系統(tǒng)104、存儲設(shè)備106和RootKit 108。 同樣,操作系統(tǒng)104包括向安裝在計(jì)算機(jī)100上的應(yīng)用程序提供應(yīng)用程序 編程接口 ( "API")形式的服務(wù)的接口 110。應(yīng)用程序102執(zhí)行被設(shè)計(jì)來 保護(hù)計(jì)算機(jī)100免于惡意軟件的動作。例如,在用戶嘗試訪問存儲在存儲 設(shè)備106上的文件時,應(yīng)用程序102可以掃描文件以尋找"訪問時(on access)"惡意軟件。然而,如圖1所示,應(yīng)用程序102以用戶模式執(zhí)行操 作并依賴于至少部分地以內(nèi)核模式操作的操作系統(tǒng)104所提供的服務(wù)。此 外,計(jì)算機(jī)100感染了 "掛鉤"在操作系統(tǒng)104中的RootKit 108,其中其 截取被用來在計(jì)算機(jī)100上執(zhí)行基本功能的調(diào)用。換言之,RootKit 108擔(dān) 當(dāng)了 "中間人",從而監(jiān)視和更改操作系統(tǒng)104和安裝在計(jì)算機(jī)100上的 應(yīng)用程序之間的通信。如果諸如反病毒軟件等應(yīng)用程序試圖列出包含 RootKit 108所使用的一個或多個文件的目錄的內(nèi)容,則RootKit 108將審査 來自列表的文件名。類似地,RootKit 108可以隱藏系統(tǒng)注冊表、進(jìn)程列表 等中的條目,從而控制RootKit 108想要隱藏的所有信息。
概述
提供本概述以便以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的 一些概念。本概述并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征,也不旨在 用于幫助確定所要求保護(hù)的主題的范圍。
一般而言,本發(fā)明的各方面針對標(biāo)識使用在引導(dǎo)環(huán)境中激活以避免被檢測的程序代碼的惡意軟件。根據(jù)一實(shí)施例,提供了在引導(dǎo)過程期間執(zhí)行 對惡意軟件的搜索的方法。更具體地,該方法使得被配置為掃描惡意軟件 的軟件模塊在計(jì)算機(jī)啟動時被初始化。隨后,響應(yīng)于標(biāo)識掃描事件的發(fā)生, 該方法使得該軟件模塊搜索計(jì)算機(jī)存儲器以尋找作為惡意軟件特征的數(shù) 據(jù)。如果標(biāo)識了惡意軟件的數(shù)據(jù)特征,則實(shí)現(xiàn)防止惡意軟件在計(jì)算機(jī)上執(zhí) 行的功能。作為在計(jì)算機(jī)啟動時執(zhí)行掃描的結(jié)果,執(zhí)行向反病毒軟件隱藏 的混淆技術(shù)的惡意軟件被標(biāo)識。
當(dāng)結(jié)合附圖參考以下詳細(xì)描述時,可以更容易領(lǐng)會并更好地理解本發(fā) 明的上述方面和許多附加優(yōu)點(diǎn),附圖中
圖1是被配置為執(zhí)行現(xiàn)代計(jì)算機(jī)的功能的軟件組件和被設(shè)計(jì)為隱藏惡
意軟件的RootKit的框圖2是具有被配置為在引導(dǎo)環(huán)境中標(biāo)識惡意軟件的組件的計(jì)算機(jī)的圖 示描繪;
圖3是示出在計(jì)算機(jī)啟動時執(zhí)行的事件的示例性時間線的圖示描繪; 圖4是在引導(dǎo)過程期間標(biāo)識惡意軟件的軟件模塊的示例性流程圖。
詳細(xì)描述
本發(fā)明的各方面可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指 令的通用上下文中描述。 一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特 定抽象數(shù)據(jù)類型的例程、程序、應(yīng)用程序、窗口小部件、對象、組件、數(shù) 據(jù)結(jié)構(gòu)等。此外,本方面可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理 設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以 位于本地和/或遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)上。
現(xiàn)參考圖2,將描述具有實(shí)現(xiàn)本發(fā)明的各方面的組件的計(jì)算機(jī)200。本 領(lǐng)域技術(shù)人員和其他人將認(rèn)識到,計(jì)算機(jī)200可以是各種設(shè)備的任一種, 包括但不限于,個人計(jì)算設(shè)備、基于服務(wù)器的計(jì)算設(shè)備、小型和大型計(jì)算 機(jī)、膝上型計(jì)算機(jī)、個人數(shù)字助理("PDA")、機(jī)頂盒、娛樂和游戲系 統(tǒng)、或具有某種類型的存儲器的其它電子設(shè)備。圖2所示的計(jì)算機(jī)200包 含與以上參考圖l所描述的名稱相同的多個相同的組件。就此,計(jì)算機(jī)200包括應(yīng)用程序202、具有相關(guān)聯(lián)的接口 205的操作系統(tǒng)204和存儲設(shè)備206。 為易于說明且因?yàn)槠鋵τ诶斫獗景l(fā)明并不重要,所以圖2未示出許多計(jì)算 機(jī)系統(tǒng)的典型組件,如鍵盤、鼠標(biāo)、顯示器、CPU、存儲器等。然而,在 該實(shí)施例中,計(jì)算機(jī)200還包括掃描引擎208和引導(dǎo)檢測模塊210。如下更 詳細(xì)地描述的,掃描引擎208和引導(dǎo)檢測模塊210共同提供標(biāo)識諸如 RootKit等在可以使用傳統(tǒng)反病毒軟件所提供的服務(wù)之前開始執(zhí)行的惡意 軟件的方法。就此,在引導(dǎo)計(jì)算機(jī)200時,標(biāo)識感染該計(jì)算機(jī)的RootKit 或其它惡意軟件以使RootKit不能夠繼續(xù)隱藏作為惡意軟件特征的數(shù)據(jù)。
圖2中示出的操作系統(tǒng)204可以是諸如Microsoft⑧操作系統(tǒng)、UNIX 操作系統(tǒng)或Linux⑧操作系統(tǒng)等通用操作系統(tǒng)。同樣,操作系統(tǒng)204可被配 置為使用為專用計(jì)算機(jī)系統(tǒng)所設(shè)計(jì)的非通用硬件。無論如何,如本領(lǐng)域技 術(shù)人員和其他人員所理解的,操作系統(tǒng)204控制計(jì)算機(jī)200的一般操作并
負(fù)責(zé)管理硬件和基本系統(tǒng)操作以及執(zhí)行應(yīng)用程序。更具體地,操作系統(tǒng)204 確保諸如應(yīng)用程序202等計(jì)算機(jī)程序能夠使用像存儲設(shè)備206等資源。通 過提供供代碼在為操作系統(tǒng)204所保留的存儲器空間中執(zhí)行的機(jī)制,現(xiàn)代 計(jì)算機(jī)允許應(yīng)用程序擴(kuò)展操作系統(tǒng)204的功能。這類系統(tǒng)的問題是RootKit 或其它惡意軟件可能能夠危及操作系統(tǒng)204提供給諸如反病毒軟件等應(yīng)用 程序的數(shù)據(jù)的完整性。結(jié)果,RootKit能夠?qū)崿F(xiàn)防止反病毒軟件標(biāo)識該 RootKit和/或任何其它相關(guān)聯(lián)的惡意軟件的混淆技術(shù)。
本領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到,RootKit通常將其自身添加到計(jì) 算機(jī)上的自動啟動可擴(kuò)展性點(diǎn)(以下稱為"ASEP")。 一般而言,ASEP 指的是允許無需明確的用戶調(diào)用而開始執(zhí)行程序的可擴(kuò)展性點(diǎn)。作為被添 加到ASEP的結(jié)果, 一旦用戶執(zhí)行"登錄"或其后某一時間,RootKit則可 以在引導(dǎo)過程期間開始執(zhí)行。通常,反病毒軟件使用操作系統(tǒng)所提供的服 務(wù)來搜索惡意軟件且只在操作系統(tǒng)所提供的服務(wù)可用的情況下才可以保護(hù) 計(jì)算機(jī)。結(jié)果,在操作系統(tǒng)的服務(wù)可用之前感染操作系統(tǒng)或計(jì)算機(jī)的其它 低級組件的RootKit可能能夠隱藏作為惡意軟件特征的數(shù)據(jù)。在本發(fā)明的一 實(shí)施例中,提供了在操作系統(tǒng)所提供的服務(wù)可用之前標(biāo)識惡意軟件的引導(dǎo) 檢測模塊210。由于引導(dǎo)檢測模塊210的各方面在下文中參考圖4更詳細(xì)地描述,因此在此將不提供引導(dǎo)檢測模塊210的詳細(xì)描述。然而, 一般而言,
引導(dǎo)檢測模塊210使掃描引擎208在引導(dǎo)過程期間被加載到存儲器中并被 執(zhí)行。如果標(biāo)識了惡意軟件,則可以從計(jì)算機(jī)移除該惡意軟件或者可以"隔 離"該惡意軟件以便一旦計(jì)算機(jī)引導(dǎo)之后,反病毒軟件可以處理該感染。
如圖2中進(jìn)一步示出的,計(jì)算機(jī)200還包括用于確定計(jì)算機(jī)存儲器中 的數(shù)據(jù)是否是惡意軟件的特征的掃描引擎208。掃描引擎208可以使用任何 當(dāng)前現(xiàn)有的或?qū)⒁_發(fā)的技術(shù)來標(biāo)識在操作系統(tǒng)204所提供的服務(wù)可用之 前開始執(zhí)行的惡意軟件。就此,掃描引擎208可以利用完整性檢驗(yàn)來驗(yàn)證 實(shí)現(xiàn)操作系統(tǒng)的程序代碼是否是由諸如操作系統(tǒng)提供者等可信實(shí)體數(shù)字地 簽名的。此外,掃描引擎208可以搜索諸如在非預(yù)期位置的跳轉(zhuǎn)指令、隱 藏的進(jìn)程、對分配給操作系統(tǒng)204的范圍之外的存儲器地址的引用等可疑 活動。例如,某些操作系統(tǒng)維護(hù)具有當(dāng)前正在執(zhí)行的程序列表的數(shù)據(jù)結(jié)構(gòu), 有時也稱為進(jìn)程表。從進(jìn)程表或類似的數(shù)據(jù)結(jié)構(gòu)中移除一個條目可能是存 在RootKit的強(qiáng)烈的啟發(fā)式指示符。同樣,掃描引擎208可以利用引導(dǎo)環(huán)境 中的傳統(tǒng)的基于簽名的技術(shù)來檢測惡意軟件。就此,可以通過將實(shí)現(xiàn)惡意 軟件的文件數(shù)據(jù)中的模式和被稱為該惡意軟件的"簽名"的內(nèi)容進(jìn)行匹配 來標(biāo)識該數(shù)據(jù)。在這種情況下,已知是實(shí)現(xiàn)惡意軟件的數(shù)據(jù),或該數(shù)據(jù)的 特征子集,是由將該數(shù)據(jù)轉(zhuǎn)換為唯一地標(biāo)識該惡意軟件的簽名的函數(shù)來處 理的。 一旦關(guān)于該惡意軟件的簽名可用,則搜索引擎208可以在存儲器中 搜索匹配的數(shù)據(jù)。
如本領(lǐng)域技術(shù)人員和其他人員所理解的,圖2是能夠?qū)崿F(xiàn)本發(fā)明的各 方面的一個計(jì)算機(jī)200的簡化示例。計(jì)算機(jī)200的實(shí)際實(shí)施例將具有圖2 中未示出的或在所附文本中所描述的另外的組件。同樣,圖2示出能夠在 引導(dǎo)環(huán)境中執(zhí)行對惡意軟件的搜索的一個組件體系結(jié)構(gòu)。因此,圖2中示 出的軟件組件應(yīng)被解釋為是示例性的而非限制性的。
現(xiàn)參考圖3,將描述示出在引導(dǎo)計(jì)算機(jī)時所執(zhí)行的事件的示例性時間 線300。本領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到,時間線300是可在計(jì)算機(jī)啟 動時發(fā)生的事件的概括且非窮盡性的集合的高度簡化的示例。在其它實(shí)施 例中,可以發(fā)生另外的或更少的事件,或者事件能夠以與以下提供的描述所不同的順序來發(fā)生。因此,圖3中示出的時間線300僅僅是說明性的并 應(yīng)被解釋為是示例性的。
如圖3所示,在事件302處,電源被"打開"以便向計(jì)算機(jī)供電。在 有足夠的電源可用時,在事件304處,CPU開始執(zhí)行基本輸入輸出系統(tǒng) ("BIOS")代碼。BIOS代碼包含使計(jì)算機(jī)執(zhí)行用于初始化計(jì)算機(jī)硬件的 功能的計(jì)算機(jī)指令通常,計(jì)算機(jī)一旦上電,計(jì)算機(jī)的BIOS則進(jìn)行通常被稱 為上電自檢(POST)的硬件檢查以確定支持硬件是否存在并正確工作。本 領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到,BIOS通常位于非易失性存儲器中以確 保BIOS總是可用的且將不被影響易失性存儲器或大容量數(shù)據(jù)存儲的故障 的損壞。此外,本領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到,BIOS提供低級輸入 /輸出控制。例如,在個人計(jì)算機(jī)中,BIOS包含控制鍵盤、顯示器屏幕、 盤驅(qū)動器、執(zhí)行基本輸入輸出("I/O")、和其它雜項(xiàng)功能的計(jì)算機(jī)指令。
在事件306處,BIOS中的指令將控制定向到操作系統(tǒng)加載器。通常, 操作系統(tǒng)加載器執(zhí)行硬件檢測,將操作系統(tǒng)加載到例如, 一組隨機(jī)存取存 儲器(RAM)存儲器設(shè)備等計(jì)算機(jī)易失性存儲器中,并開始初始化操作系 統(tǒng)。在事件307處,加載操作系統(tǒng)"內(nèi)核",且其可用于向其它組件提供 服務(wù)。就此,在事件308處,操作系統(tǒng)的稱為I/O管理器的一個組件的初 始化啟動加載和初始化引導(dǎo)驅(qū)動程序的進(jìn)程。就此,1/0管理器組裝引導(dǎo)驅(qū) 動程序的優(yōu)先化列表且該列表上的每一驅(qū)動程序都被加載到存儲器中。引 導(dǎo)驅(qū)動程序通常提供啟用對諸如視頻卡、打印機(jī)、盤驅(qū)動器等硬件資源的 優(yōu)化的訪問的服務(wù)。 一旦加載了所有的引導(dǎo)驅(qū)動程序,則在事件310處, 啟動用戶模式子系統(tǒng)。 一般而言,用戶模式子系統(tǒng)向用戶模式應(yīng)用程序空 間提供支持服務(wù)。就此,啟動用戶模式子系統(tǒng)可以包括建立本地安全授權(quán) 機(jī)構(gòu)并最終向用戶呈現(xiàn)"登錄"提示。在事件312處,執(zhí)行登錄且使用戶 模式服務(wù)可用。例如,服務(wù)器消息塊("SMB")是在執(zhí)行登錄后變得可 用的、在計(jì)算機(jī)之間共享文件、打印機(jī)、串行端口和通信抽象的協(xié)議。一 旦用戶模式服務(wù)可用,則在事件314處,可以訪問用戶模式應(yīng)用程序空間 來執(zhí)行程序。 一旦到達(dá)事件314,可以執(zhí)行被設(shè)計(jì)來在通用計(jì)算機(jī)上執(zhí)行特 定任務(wù)的程序。就此,在程序被選擇來在用戶模式應(yīng)用程序空間中執(zhí)行時,
10操作系統(tǒng)可以使得與該所選擇的程序相關(guān)聯(lián)的程序代碼從存儲設(shè)備(例如, 硬盤驅(qū)動器)加載到CPU可以訪問該程序代碼的存儲器中。
如以下更詳細(xì)地描述的,本發(fā)明的各方面使得在引導(dǎo)過程期間執(zhí)行對 惡意軟件的搜索。更具體地,在時間線300的任何數(shù)量的不同位置處,可
以將軟件模塊(例如,掃描引擎208)加載到存儲器中。隨后,可以執(zhí)行對 作為惡意軟件特征的數(shù)據(jù)的搜索。就此,可以繼續(xù)掃描在引導(dǎo)過程期間執(zhí) 行的組件,直到一旦引導(dǎo)過程完成,傳統(tǒng)反病毒軟件可用來保護(hù)計(jì)算機(jī)為 止。
取決于計(jì)算機(jī)的配置,本發(fā)明的各方面可以在BIOS、操作系統(tǒng)加載器、 或引導(dǎo)驅(qū)動程序中實(shí)現(xiàn)。就此,且如圖3所示,掃描引擎208可被加載到 存儲器中,并在事件304、 306或310處開始執(zhí)行。 一般而言,期望在引導(dǎo) 過程中盡可能早地開始掃描惡意軟件,以防止感染先前組件的惡意軟件擁 有實(shí)現(xiàn)混淆技術(shù)的機(jī)會。然而,即使惡意軟件能夠在引導(dǎo)過程期間實(shí)現(xiàn)混 淆技術(shù),該惡意軟件可用的資源也可能不足以來避免檢測。就此,引導(dǎo)環(huán) 境是受限的,且惡意軟件隱藏自身和/或在實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)上執(zhí)行惡意 動作的能力受到限制。
時間線300或引導(dǎo)過程中提供免于惡意軟件的保護(hù)的位置可以取決于 計(jì)算機(jī)的配置。例如,本領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到,計(jì)算機(jī)廠商 各自都可以提供用于初始化計(jì)算機(jī)上的硬件的不同BIOS。因此,BIOS所 提供的服務(wù)可能是不標(biāo)準(zhǔn)化的,但是可以不管計(jì)算機(jī)平臺而提供本發(fā)明的 單個實(shí)現(xiàn)。換言之,如果BIOS所提供的服務(wù)是跨計(jì)算機(jī)平臺標(biāo)準(zhǔn)化的,則 在BIOS中實(shí)現(xiàn)本發(fā)明的各方面可以更容易地被執(zhí)行。更一般地,引導(dǎo)過程 中掃描引擎208被加載到存儲器中以及開始執(zhí)行的位置可以取決于影響計(jì) 算機(jī)可被如何配置的任何數(shù)量的因素。
現(xiàn)參考圖4,將更詳細(xì)地描述如上參考圖2簡單提到的示例性引導(dǎo)檢 測模塊210。 一般而言,引導(dǎo)檢測模塊210提供標(biāo)識諸如RootKit等在引導(dǎo) 過程期間變?yōu)榛顒拥膼阂廛浖姆椒?。通過在引導(dǎo)過程期間變?yōu)榛顒拥模?惡意軟件能夠更容易地實(shí)現(xiàn)混淆技術(shù)來過濾傳遞到傳統(tǒng)反病毒軟件的數(shù) 據(jù)。最初,在執(zhí)行引導(dǎo)檢測模塊210之前,"打開"電源以使有電能可供計(jì)算機(jī)使用。
如圖4所示,引導(dǎo)檢測模塊210在框400處開始,在此作出關(guān)于是否
在當(dāng)前引導(dǎo)中執(zhí)行一個或多個惡意軟件掃描的判定。如上所述,在電源被 施加到計(jì)算機(jī)時,發(fā)生使得計(jì)算機(jī)引導(dǎo)的一系列事件。在一實(shí)施例中,引
導(dǎo)檢測模塊210可被配置為在計(jì)算機(jī)每次引導(dǎo)時都掃描惡意軟件。然而,
取決于所使用的技術(shù),掃描惡意軟件可以是資源密集型過程。因此,在其 它實(shí)施例中,基于是否滿足最小化計(jì)算機(jī)資源的使用的先決條件而選擇性 地執(zhí)行惡意軟件掃描。
可被用來在各情況之間區(qū)分要還是不要執(zhí)行惡意軟件掃描的第一先決 條件是"可疑"活動的標(biāo)識。反病毒軟件可以標(biāo)識可能是惡意軟件特征的 活動但沒有足夠的信息來確定地聲明存在惡意軟件感染。在這種情況下, 計(jì)算機(jī)或計(jì)算機(jī)網(wǎng)絡(luò)可以轉(zhuǎn)換到在其中進(jìn)行對惡意軟件的窮盡性搜索的加
強(qiáng)狀態(tài)。到加強(qiáng)狀態(tài)的轉(zhuǎn)換可以使得在計(jì)算機(jī)的每次引導(dǎo)期間都執(zhí)行惡意 軟件掃描。就此,在標(biāo)識可疑活動時可以設(shè)置跨各次引導(dǎo)而持續(xù)存在的變
量以指示將在計(jì)算機(jī)啟動時執(zhí)行惡意軟件掃描。在這種情況下,在框400 處,引導(dǎo)檢測模塊210檢査該變量的值以確定是否執(zhí)行惡意軟件掃描。
可被用來在各情況之間區(qū)分要還是不要執(zhí)行掃描的另一先決條件是基 于用戶輸入的。就此,可以將使用戶能夠生成使得在引導(dǎo)過程期間執(zhí)行惡 意軟件掃描的輸入的控制集成到反病毒軟件中。同樣,在引導(dǎo)過程期間可 以提示用戶提供關(guān)于是否應(yīng)當(dāng)執(zhí)行掃描的輸入。類似于以上所提供的描述, 在接收到指示將執(zhí)行掃描的適當(dāng)?shù)挠脩糨斎霑r,可以設(shè)置持續(xù)存在的變量。
作為附加示例,可以自動調(diào)度惡意軟件掃描而不需標(biāo)識可疑活動或接 收用戶輸入。就此,本發(fā)明的各方面可被配置為以諸如計(jì)算機(jī)每五次引導(dǎo) 等規(guī)則的時間間隔或其它任意地建立的值來執(zhí)行惡意軟件掃描此外,可以 隨機(jī)做出關(guān)于是否發(fā)生惡意軟件掃描的判定。例如,本領(lǐng)域技術(shù)人員和其 他人員將認(rèn)識到,諸如高級可編程中斷控制器("APIC")等硬件設(shè)備可 被用來生成隨機(jī)值。就此,關(guān)于是否在當(dāng)前引導(dǎo)中執(zhí)行惡意軟件掃描的判 定可以基于該值。如果由于不滿足適當(dāng)?shù)南葲Q條件而在框400做出不執(zhí)行 惡意軟件掃描的判定,則引導(dǎo)檢測模塊210前進(jìn)至框414,其在此終止。相反,如果作出執(zhí)行掃描的判定,則引導(dǎo)檢測模塊210前進(jìn)至框402。
在框402處,初始化掃描引擎208 (圖2)且其在引導(dǎo)過程中的預(yù)定位 置處開始執(zhí)行。如上所述,在引導(dǎo)計(jì)算機(jī)時,本發(fā)明的各方面可以在可能 不同的位置處開始搜索惡意軟件。就此,可以將實(shí)現(xiàn)本發(fā)明的程序代碼集 成到BIOS、操作系統(tǒng)加載器、或引導(dǎo)驅(qū)動程序中。結(jié)果,在框402處,掃 描引擎208的初始化可以在時間線300 (圖3)中的不同位置處發(fā)生。此外, 在其所集成到其中的組件中,掃描引擎208的初始化可以且通常將被分配 最高優(yōu)先級。例如,如上所述,使用優(yōu)先化列表來標(biāo)識引導(dǎo)驅(qū)動程序被初 始化的順序。如果掃描引擎208是由引導(dǎo)驅(qū)動程序來初始化的,則該引導(dǎo) 驅(qū)動程序與其它引導(dǎo)驅(qū)動程序相比被分配最高優(yōu)先級。結(jié)果,在后續(xù)初始 化的引導(dǎo)驅(qū)動程序被加載到存儲器中時,對其進(jìn)行惡意軟件掃描。以此方 式,在引導(dǎo)過程期間惡意軟件可以隱藏自身的可能性被最小化。
如圖4所示,在判定框404處,引導(dǎo)檢測模塊210保持空閑,直到掃 描事件發(fā)生為止。在一實(shí)施例中,掃描引擎208 —被初始化則自動執(zhí)行惡 意軟件掃描。然而,可以定義使得在引導(dǎo)過程期間執(zhí)行另外的惡意軟件掃 描的掃描事件。類似于現(xiàn)有反病毒軟件所執(zhí)行的"訪問時"掃描,在引導(dǎo) 過程期間加載到存儲器中的軟件的每一部分在被允許執(zhí)行之前都由掃描引 擎208來掃描。例如,在每一引導(dǎo)驅(qū)動程序被加載到存儲器中時,在事件 310 (圖3)處,可以生成掃描事件以便對引導(dǎo)驅(qū)動程序進(jìn)行惡意軟件掃描。 此外,本領(lǐng)域技術(shù)人員和其他人員將認(rèn)識到, 一旦掃描引擎208被初始化, 則可以在其它情況下生成掃描事件而不背離所要求保護(hù)的主題的范圍。
在掃描被標(biāo)識的事件時,在框406處,引導(dǎo)檢測模塊210使得惡意軟 件掃描被執(zhí)行。如上參考圖2簡要地提到的,任何當(dāng)前現(xiàn)有的或要被開發(fā) 的技術(shù)都可被用來搜索惡意軟件。就此,掃描引擎208可以實(shí)現(xiàn)完整性檢 驗(yàn)來確定分配給操作系統(tǒng)的存儲器地址空間中的程序代碼是否是源自可信 實(shí)體的。同樣,除完整性檢驗(yàn)之外,構(gòu)想可以在掃描中執(zhí)行基于簽名的技 術(shù)和/或搜索"可疑修改"。
在一實(shí)施例中,在框406處執(zhí)行的掃描搜索已知惡意軟件的子集。如 上所述,惡意軟件掃描可以是資源密集型過程。此外,掃描引擎208在執(zhí)行掃描時所請求的服務(wù)與非引導(dǎo)環(huán)境相比在引導(dǎo)環(huán)境中可能不能被迅速滿 足。就此,在引導(dǎo)環(huán)境中執(zhí)行對所有已知的惡意軟件的掃描可能負(fù)面影響 用戶體驗(yàn)。因此,在框406處,可以執(zhí)行掃描來標(biāo)識最可能在引導(dǎo)環(huán)境中
開始執(zhí)行的惡意軟件的類型(例如,RootKit)。然而,本領(lǐng)域技術(shù)人員和
其他人員將認(rèn)識到,這僅僅是優(yōu)化技術(shù)且不應(yīng)被解釋為對所要求保護(hù)的主
題的限制。隨后,在判定框408處,作為在框406處執(zhí)行的掃描的結(jié)果, 作出關(guān)于是否標(biāo)識了惡意軟件的判定。如果沒有標(biāo)識惡意軟件,則引導(dǎo)檢 測模塊210前進(jìn)至以下將更詳細(xì)地描述的框412。相反,如果標(biāo)識了惡意軟 件感染,則引導(dǎo)檢測模塊210前進(jìn)至框410。
如圖4所示,在框410處,引導(dǎo)檢測模塊210使得該惡意軟件感染被 處理。如果到達(dá)框410,則在引導(dǎo)過程期間標(biāo)識惡意軟件的數(shù)據(jù)特征。在一 實(shí)施例中,在框412處處理感染包括嘗試通過殺死進(jìn)程、刪除文件、移除 配置文件中與惡意軟件相關(guān)聯(lián)的條目等來從計(jì)算機(jī)中移除該惡意軟件。然 而,由于在引導(dǎo)環(huán)境中可用的資源是有限的,所以在框412處,成功地移 除惡意軟件的所有組件可能是困難的或不可能的。例如,某些惡意軟件實(shí) 現(xiàn)在其中監(jiān)視惡意軟件的資源(例如,文件、進(jìn)程、配置文件中的條目等) 的自我保存技術(shù)。在標(biāo)識了移除該惡意軟件的嘗試時,執(zhí)行被設(shè)計(jì)來保存 該惡意軟件的資源并維持感染的功能。因此,處理惡意軟件感染還可以包 括"隔離"惡意軟件的在引導(dǎo)環(huán)境中活動的組件。就此,可以使用"占位 程序(stub)"模塊作為惡意軟件的占位符。例如,占位程序模塊可被配置 為維持惡意軟件進(jìn)程、響應(yīng)于被調(diào)用而接受和/或返回有效數(shù)據(jù)、或執(zhí)行防 止觸發(fā)惡意軟件自我保存技術(shù)的任何其它動作。在該實(shí)施例中,在隔離惡 意軟件時,數(shù)據(jù)通常被傳遞到一旦計(jì)算機(jī)引導(dǎo)則執(zhí)行的反病毒軟件,以便 可以移除惡意軟件的所有組件。
如圖4所示,在框412處,作出關(guān)于計(jì)算機(jī)是否成功引導(dǎo)的判定。如 上所述,在傳統(tǒng)反病毒軟件能夠提供保護(hù)之前,本發(fā)明的各方面標(biāo)識在引 導(dǎo)環(huán)境中變?yōu)榛顒拥膼阂廛浖?。然而?一旦引導(dǎo)過程完成并且傳統(tǒng)反病毒 軟件可用。本發(fā)明的功能則休眠直到引導(dǎo)過程重新啟動為止。在引導(dǎo)過程 完成時,引導(dǎo)檢測模塊210前進(jìn)至框141,其在此終止。然而,如果在框412處作出引導(dǎo)過程未完成的判定,則引導(dǎo)檢測模塊返回至框404,且重復(fù) 框404-412,直到引導(dǎo)過程確實(shí)完成為止。
盡管示出和描述了各說明性實(shí)施例,但可以理解,可在其中作出各種 改變而不背離本發(fā)明的精神和范圍。
權(quán)利要求
1. 一種在計(jì)算機(jī)啟動時利用引導(dǎo)過程的計(jì)算機(jī)200中的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法標(biāo)識在所述引導(dǎo)過程期間變?yōu)榛顒拥膼阂廛浖?,所述方法包?a)使得被配置為執(zhí)行惡意軟件掃描的軟件模塊在所述引導(dǎo)過程期間被初始化402;(b)響應(yīng)于標(biāo)識掃描事件的發(fā)生404(i)使得所述軟件模塊掃描計(jì)算機(jī)200存儲器以尋找作為惡意軟件特征的數(shù)據(jù)406;以及(ii)如果標(biāo)識了惡意軟件的數(shù)據(jù)特征,則處理所述惡意軟件感染410。
2. 如權(quán)利要求1所述的方法,其特征在于,所述被配置為執(zhí)行惡意軟件掃 描的軟件模塊是在所述引導(dǎo)過程中執(zhí)行BIOS的階段處初始化的。
3. 如權(quán)利要求1所述的方法,其特征在于,所述被配置為執(zhí)行惡意軟件掃 描的軟件模塊是在所述引導(dǎo)過程中執(zhí)行操作系統(tǒng)加載器的階段處初始化的。
4. 如權(quán)利要求1所述的方法,其特征在于,所述被配置為執(zhí)行惡意軟件掃 描的軟件模塊是在引導(dǎo)驅(qū)動程序中實(shí)現(xiàn)的。
5. 如權(quán)利要求1所述的方法,其特征在于,惡意軟件掃描是在滿足先決條 件時在計(jì)算機(jī)啟動時選擇性地執(zhí)行的。
6. 如權(quán)利要求5所述的方法,其特征在于,用戶輸入是所述被用來確定在 當(dāng)前引導(dǎo)期間是否執(zhí)行掃描的先決條件。
7. 如權(quán)利要求1所述的方法,其特征在于,惡意軟件掃描是在所述計(jì)算機(jī) 200的規(guī)則地調(diào)度的引導(dǎo)時選擇性地執(zhí)行的。
8. 如權(quán)利要求1所述的方法,其特征在于,惡意軟件掃描是在所述計(jì)算機(jī) 200的隨機(jī)選擇的引導(dǎo)時執(zhí)行的。
9. 如權(quán)利要求1所述的方法,其特征在于,使得所述軟件模塊掃描計(jì)算機(jī) 存儲器以尋找作為惡意軟件特征的數(shù)據(jù)包括將存儲器中的數(shù)據(jù)和與惡意軟件 相關(guān)聯(lián)的簽名進(jìn)行比較。
10. 如權(quán)利要求l所述的方法,其特征在于,使得所述軟件模塊掃描計(jì) 算機(jī)存儲器以尋找作為惡意軟件特征的數(shù)據(jù)包括執(zhí)行完整性檢驗(yàn)來確定分配 給所述操作系統(tǒng)的存儲器空間中的程序代碼是否源自可信實(shí)體。
11. 如權(quán)利要求l所述的方法,其特征在于,所述掃描被配置為標(biāo)識可 能在引導(dǎo)環(huán)境中活動的所有已知惡意軟件的子集。
12. 如權(quán)利要求1所述的方法,其特征在于,處理所述惡意軟件感染410包括殺死進(jìn)程、刪除文件、以及移除配置文件中與所述惡意軟件相關(guān)聯(lián)的條目。
13. 如權(quán)利要求1所述的方法,其特征在于,處理所述惡意軟件感染410 包括使用占位程序模塊作為占位符來防止觸發(fā)惡意軟件自我保存技術(shù)。
14. 一種包含計(jì)算機(jī)200可讀指令的計(jì)算機(jī)可讀介質(zhì),所述指令當(dāng)在啟 動時實(shí)現(xiàn)引導(dǎo)環(huán)境的計(jì)算機(jī)200中執(zhí)行時,執(zhí)行一種確定所述計(jì)算機(jī)200是否 感染惡意軟件的方法,所述方法包括(a) 將惡意軟件掃描引擎208集成到所述引導(dǎo)環(huán)境的組件中;(b) 確定在當(dāng)前引導(dǎo)期間是否執(zhí)行惡意軟件掃描404;以及(c) 如果作出在當(dāng)前引導(dǎo)期間執(zhí)行惡意軟件掃描的判定,則使得掃描引 擎208搜索所述引導(dǎo)環(huán)境的各組件以尋找惡意軟件406。
15. 如權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,惡意軟件掃 描引擎208被集成到BIOS、操作系統(tǒng)加載器、或引導(dǎo)驅(qū)動程序中。
16. 如權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述在當(dāng)前 引導(dǎo)期間是否執(zhí)行惡意軟件掃描的判定404是通過接收響應(yīng)于提示的用戶輸入 而做出的。
17. 如權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使得掃描引 擎208搜索所述引導(dǎo)環(huán)境的各組件以尋找惡意軟件406包括搜索RootKit的可 疑活動特征。
18. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,執(zhí)行所述對 作為RootKit特征的可疑活動的搜索包括(a) 標(biāo)識非預(yù)期位置中的跳轉(zhuǎn)指令;(b) 標(biāo)識隱藏的進(jìn)程;以及(c) 標(biāo)識對分配給所述操作系統(tǒng)104的范圍之外的存儲器地址的引用。
19. 一種具有用于在引導(dǎo)環(huán)境中標(biāo)識惡意軟件的計(jì)算機(jī)可執(zhí)行組件的 計(jì)算機(jī)可讀介質(zhì),包括(a) 被配置為搜索計(jì)算機(jī)存儲器以尋找作為惡意軟件特征的數(shù)據(jù)的掃 描組件208;(b) 用于在所述引導(dǎo)過程期間初始化所述掃描組件的引導(dǎo)檢測組件 210;以及(C) 使得所述掃描組件搜索存儲器以尋找已知惡意軟件的子集的優(yōu)化 組件。
20. 如權(quán)利要求19搜索的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述引導(dǎo)檢測組件還被配置為通過用占位程序模塊替換惡意軟件程序代碼來處理所述惡 意軟件感染。
全文摘要
一般而言,本發(fā)明針對標(biāo)識惡意軟件。在一實(shí)施例中,提供了在引導(dǎo)過程期間執(zhí)行對惡意軟件的搜索的方法。更具體地,該方法使得被配置為掃描惡意軟件的軟件模塊在計(jì)算機(jī)啟動時被初始化。隨后,響應(yīng)于標(biāo)識掃描事件的發(fā)生,該方法使得該軟件模塊掃描計(jì)算機(jī)存儲器以尋找作為惡意軟件特征的數(shù)據(jù)。如果標(biāo)識了惡意軟件的數(shù)據(jù)特征,則該方法處理該惡意軟件感染。
文檔編號G06F12/16GK101479709SQ200780024510
公開日2009年7月8日 申請日期2007年2月21日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者A·A·波利亞科夫, R·R·菲利普斯, S·A·費(fèi)爾德 申請人:微軟公司