專利名稱:基于程序行為分析的計算機防護方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機防護方法,尤其涉及以程序的動作行為為特征的計算機防護方法。
背景技術(shù):
現(xiàn)有的計算機病毒防范產(chǎn)品大體上可以分為兩類,一類用來是對入侵計算機的病毒程序進行隔離,例如防火墻,通過對通訊端口、協(xié)議等進行限制來防止入侵病毒程序的進入;另一類用來對可能形成入侵的病毒程序文件進行掃描,例如現(xiàn)有的殺毒軟件,利用入侵病毒程序的代碼特征,發(fā)現(xiàn)并清除該病毒程序。這兩類產(chǎn)品盡管能夠發(fā)現(xiàn)并消除某些病毒程序,但是也都具有一些無法克服的缺點,例如(一)防火墻的防止病毒程序入侵主要通過對通信端口和/或協(xié)議的監(jiān)控實現(xiàn),需要由用戶自己設(shè)置使用某個通信端口或協(xié)議的程序要么允許、要么不允許通過的條件,因此,1.要求用戶對系統(tǒng)非常熟悉,才能對防火墻進行有效設(shè)置;2.監(jiān)控顆粒太大,如果所禁止的端口和/或協(xié)議是正常程序也需要使用的,或者病毒程序采用了允許正常通過的端口或協(xié)議,則可能導(dǎo)致誤判或直接影響網(wǎng)絡(luò)的正常運行。
(二)利用病毒特征碼的清楚病毒的方式將永遠滯后于病毒的發(fā)展,因為只有捕獲到病毒樣本后,才能提取到病毒的特征碼,這使得這種殺毒軟件對新出現(xiàn)的未知病毒入侵無法防范。
發(fā)明內(nèi)容
本發(fā)明要解決的問題在于,提供一種能夠主動對程序行為進行判斷從而防止計算機被病毒程序破壞的方法。
本發(fā)明提供的基于程序行為分析的計算機防護方法,包括對計算機運行的指令或指令集進行分類,并為所述指令或指令集設(shè)置危險系數(shù);
監(jiān)控運行的程序行為,累計將要運行或已經(jīng)運行的指令或指令集的危險系數(shù),在所述系數(shù)的和大于設(shè)定的閾值時,中斷所述程序的運行。
進一步,選擇出可能危及計算機安全的指令或指令集進行分類。
所述指令或指令集為下述操作的指令或指令集文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進程或線程操作;注冊表操作;窗口、托盤操作;堆棧操作;注入線程操作;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號操作。
所述程序行為為下述程序戶行為調(diào)用操作系統(tǒng)外殼程序;修改程序文件或?qū)懗绦蛭募?;調(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運行其他程序;創(chuàng)建超過預(yù)定數(shù)量的相同線程;修改和創(chuàng)建用戶帳號;向系統(tǒng)注冊表添加啟動項;修改系統(tǒng)啟動文件;向其他進程注入線程;堆棧操作;應(yīng)用級進程自動提升為系統(tǒng)級進程操作;攔截系統(tǒng)API調(diào)用。
進一步,將監(jiān)控程序嵌入到操作系統(tǒng)的API函數(shù)中,實現(xiàn)對程序的動作行為的監(jiān)控。
以及,通過被監(jiān)控程序運行的指令,記錄被監(jiān)控程序的動作行為。
所述方法還包括建立已知程序檔案庫,用于存儲已知程序的標識和所述已知程序的特征數(shù)據(jù);以及,判斷被監(jiān)控的程序是否是已知程序,如果是,利用已知程序檔案庫中的特征數(shù)據(jù)判斷所述被監(jiān)控程序是否完好,如果完好,結(jié)束判斷,否則中止所述已知程序的執(zhí)行。
所述方法還包括建立攻擊識別規(guī)則庫,用于存儲明顯破壞計算機安全的計算機指令或指令集;以及,在被監(jiān)控的程序不是已知程序時,利用攻擊識別規(guī)則庫中的特指令或指令集判斷所述被監(jiān)控程序是否為危險程序,如果是,中止所述已知程序的執(zhí)行。
在本發(fā)明中,對計算機運行的指令或指令集進行分類,并為所述指令或指令集設(shè)置危險系數(shù),這樣,將監(jiān)控到的指令或指令集對應(yīng)的危險系數(shù)累加起來,就可以判斷被監(jiān)控程序的行為,進而決定是否中斷所述程序的運行。需要說明的是,本發(fā)明并沒有僅對危害計算機安全的指令或指令集設(shè)置危險系數(shù),而是對全部的計算機指令包含的指令或指令集進行分類進行分類和設(shè)置危險系數(shù),能夠避免多個無害指令結(jié)合后變?yōu)橛泻χ噶畹那闆r,例如無限次的循環(huán)、對重要存儲單元的讀寫等??梢姡景l(fā)明能夠主動對程序行為進行判斷從而防止計算機被病毒程序破壞。
圖1為本發(fā)明所述方法的第一實施例流程圖;圖2為本發(fā)明所述方法的第二實施例流程圖;圖3為本發(fā)明所述方法的第三實施例流程圖。
具體實施例方式
下面參照附圖,并結(jié)合最常用的微軟Windows操作系統(tǒng),對本發(fā)明的實施例作詳細說明。
如圖1所示,為本發(fā)明所述方法的第一實施例流程圖。圖1所述的實施例的步驟11對計算機運行的指令或指令集進行分類,然后在步驟12為所述指令或指令集設(shè)置危險系數(shù)。本實施例中,步驟11和步驟12可以通過一個指令或指令集表實現(xiàn)。該表可以稱為指令系數(shù)表,僅設(shè)置兩個字段,一個指令字段,用于存儲被分類出的指令或指令集合,一個字段為系數(shù)字段,用于存儲不同指令或指令集合對應(yīng)的危險系數(shù)。其中,一個不同的指令,由于帶有不同參數(shù)或者不同作用范圍的參數(shù)可能使一個具體的指令由對計算機無害變?yōu)橛泻Γ?,當描述循環(huán)的指令的循環(huán)次數(shù)有限且合理時對計算機無害,但是當循環(huán)次數(shù)無線時,則可能由于陷入死循環(huán)而過渡消耗計算機的資源而變得有害。因此,一個指令可能由于帶有的參數(shù)不同,或者參數(shù)的范圍不同而具有不同的危險系數(shù),一個指令由于帶有的參數(shù)不同,或者參數(shù)的范圍不同而變?yōu)椴煌闹噶?,在所述指令系?shù)表中占有較多的行。同理,當不同的指令單獨存在時可能對計算機無害,但是當該指令與其他指令結(jié)合構(gòu)成一個指令集合時卻可能變得有害。例如,一個讀存儲單元數(shù)據(jù)的指令時無害的,但是當讀取的存儲單元為存儲堆棧指針的單元,則該“讀”指令與一個數(shù)值運算指令和寫存儲單元指令結(jié)合時,就可能構(gòu)成一個有害的指令集合。因此,可能要一組指令在所述指令系數(shù)表中占一行。在本發(fā)明的另一個實施例中,該指令系數(shù)表還包括一個類別字段,用于識別所述指令字段存儲的是一個單個的指令還是一個由多條指令構(gòu)成的指令集合。
然后在步驟13,監(jiān)控運行的程序行為,即監(jiān)控將要運行或已經(jīng)運行的指令或指令集,找到所述指令或指令集對應(yīng)的危險系數(shù),然后在步驟14累計將要運行或已經(jīng)運行的指令或指令集的危險系數(shù),即將所述危險系數(shù)作求和操作,然后在步驟15判斷所述求和操作的結(jié)果是否大于設(shè)定的閾值,如果大于,說明被監(jiān)控的程序已經(jīng)具有了足以危害計算機系統(tǒng)安全的行為,因此在步驟16中斷所述程序的運行;否則,說明被監(jiān)控的程序具有足以危害計算機系統(tǒng)安全的行為,此時返回到步驟13繼續(xù)監(jiān)控。
圖1所述的方法可以靜態(tài)使用也可以動態(tài)使用。所謂靜態(tài)使用,是對處于靜止狀態(tài)或非激活狀態(tài)的被監(jiān)控程序進行掃描判斷,從而獲得該程序是否是病毒程序或被病毒侵害;也可以在被監(jiān)控程序處于活動狀態(tài),即運行狀態(tài)時對其進行監(jiān)控,尤其是在一個指令或指令集運行之前對其進行判斷,還有可能防止實際對計算機危害結(jié)果的發(fā)生。
在本發(fā)明的另一個實施例中,步驟13的監(jiān)控操作通過類別字段協(xié)助完成,即先判斷一個指令的類別,從而確定這是一個需要作單獨判斷的指令還是屬于一個指令集的指令,從而方便步驟13的操作。
在本發(fā)明的另一個實施例中,選擇出可能危及計算機安全的指令或指令集進行分類,而不是對所有指令分類,排除一些明顯不能成生對計算機危害的指令,例如空操作指令,可以提高對被監(jiān)控程序的監(jiān)控效率。
圖2為本發(fā)明所述方法的第二實施例流程圖;與圖1所述實施例相比,本實施例增加了建立已知程序檔案庫的步驟21,所述已知程序檔案庫用于存儲已知程序的標識和所述已知程序的特征數(shù)據(jù);還增加了一個判斷步驟22,判斷被監(jiān)控的程序是否是已知程序,如果是,利用已知程序檔案庫中的特征數(shù)據(jù)判斷所述被監(jiān)控程序是否完好(步驟23),如果完好,結(jié)束判斷(步驟24),否則中止所述已知程序的執(zhí)行。
圖3為本發(fā)明所述方法的第三實施例流程圖;與圖2所述實施例相比,增加了建立攻擊識別規(guī)則庫的步驟31,所述攻擊識別規(guī)則庫用于存儲明顯破壞計算機安全的計算機指令或指令集;以及,增加了在被監(jiān)控的程序不是已知程序時,利用攻擊識別規(guī)則庫中的特指令或指令集判斷所述被監(jiān)控程序是否為危險程序的步驟32,如果晶步驟32判斷被進空的程序是危險程序,直接經(jīng)步驟16中止所述已知程序的執(zhí)行。
在圖1、圖2和圖3所述的實施例中,還包括通過被監(jiān)控程序運行的指令,記錄被監(jiān)控程序的動作行為的步驟(圖中未繪出)。
在圖1、圖2和圖3所述的實施例中。將監(jiān)控程序嵌入到操作系統(tǒng)的API函數(shù)中,從而獲得對系統(tǒng)的監(jiān)控權(quán),實現(xiàn)對被監(jiān)控程序的動作行為的監(jiān)控。
如果比較結(jié)果證明被監(jiān)控程序為危險程序,不但中斷該程序的繼續(xù)運行,而且向用戶報警,或等待進一步處理。因此,采用如上所述的方法對已知程序進行檢查,不但可以保證對已知程序是否正常運行進行判斷,而且可以檢查出已知程序是否受到攻擊,并且與現(xiàn)有技術(shù)采用病毒特征代碼比較的方法相比,不但檢查病毒攻擊的準確性更好,而且執(zhí)行效率更高。
如上所述,根據(jù)將已知程序與程序行為知識庫中記錄的合法的動作行為進行比較,如果已知程序按照前述所記錄的合法的程序行為執(zhí)行,則說明所述已知程序運行正常;如果一旦出現(xiàn)了該已知程序合法動作行為以外的動作行為,則可以確定所述已知程序收到攻擊,應(yīng)將其停止。
而且,在本發(fā)明的實施例中,根據(jù)被監(jiān)控程序的不同調(diào)用系統(tǒng)API函數(shù)結(jié)束當前進程;或者調(diào)用系統(tǒng)API函數(shù)結(jié)束當前線程。
由于在已知程序中,有相當一部分程序其功能是系統(tǒng)的底層服務(wù),如果直接將這些程序結(jié)束,會使系統(tǒng)重啟,以致系統(tǒng)癱瘓。因此,在本發(fā)明中對于那些不可以中斷,且已經(jīng)受到攻擊的程序,直接中斷執(zhí)行了非法操作的線程結(jié)束即可,即保證系統(tǒng)的安全,又可以不影響系統(tǒng)的工作,使系統(tǒng)穩(wěn)定運行,避免了現(xiàn)有的病毒防火墻工具,由于對系統(tǒng)中的重要服務(wù)的程序病毒進行檢查時,殺滅病毒的同時,使系統(tǒng)中重要的程序文件造成損壞,影響系統(tǒng)的穩(wěn)定性。例如微軟Windows操作系統(tǒng)中,Lsass.exe為系統(tǒng)服務(wù)程序,如果該程序受到病毒程序的攻擊,直接將該程序發(fā)生攻擊的線程結(jié)束,這樣,即可以保證系統(tǒng)安全,又能夠阻止有害程序?qū)ο到y(tǒng)的侵害。
在對被監(jiān)控程序的動作行為是否為有害動作行為進行判斷的步驟中,要將捕獲到的該程序的動作行為與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進行比較,從而判斷該程序是否為有害程序所述攻擊識別規(guī)則庫為是記錄了有害程序的攻擊行為特征的數(shù)據(jù)庫,每一記錄對應(yīng)一個動作集,即對計算機的破壞性行為及這些行為或動作之間特定的關(guān)聯(lián)關(guān)系。
所述指令或指令集為下述操作的指令或指令集文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進程或線程操作;注冊表操作;窗口、托盤操作;堆棧操作;注入線程操作;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號操作。
所述程序行為為下述程序戶行為調(diào)用操作系統(tǒng)外殼程序;修改程序文件或?qū)懗绦蛭募徽{(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運行其他程序;創(chuàng)建超過預(yù)定數(shù)量的相同線程;修改和創(chuàng)建用戶帳號;向系統(tǒng)注冊表添加啟動項;修改系統(tǒng)啟動文件;向其他進程注入線程;堆棧操作;應(yīng)用級進程自動提升為系統(tǒng)級進程操作;攔截系統(tǒng)API調(diào)用。
例如,程序自行改變運行層級,如在微軟Windows操作系統(tǒng)中,某程序自動從應(yīng)用級提升系統(tǒng)級執(zhí)行,由于只有少數(shù)的正常程序才具有這一特征,因此,可以判斷得到很多具有這種特征分程序為病毒程序或被病毒攻擊過的程序。
本發(fā)明的實施例中,所述攻擊識別規(guī)則庫包括下述規(guī)則的任何單個或兩個以上任意的組合。
a)運行于用戶層的程序,轉(zhuǎn)入系統(tǒng)核心層RINGO運行;和/或;b)執(zhí)行修改其他程序文件的操作;和/或;c)通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用操作系統(tǒng)的外殼程序;和/或;d)通過監(jiān)聽端口接收數(shù)據(jù)后,使系統(tǒng)緩沖區(qū)溢出;和/或;e)通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用一般文件傳輸協(xié)議程序傳輸數(shù)據(jù);和/或;f)由郵件系統(tǒng)自動生成,且該程序運行時修改注冊表的自啟動項,該程序無窗口、無托盤,并且立即開始發(fā)送郵件;和/或;g)由郵件系統(tǒng)自動生成,且該程序運行時修改注冊表的自啟動項,該程序無窗口、無托盤,并且立即開始創(chuàng)建監(jiān)聽端口。
例如,對于一個已知程序,如果該程序行為不包括能修改其他程序文件的行為時,而當該程序運行時,卻修改了其他程序文件,上述危險動作就可以被監(jiān)控到,然后與已知程序檔案庫中存儲的該已知程序的特征數(shù)據(jù)相比較,就可以判斷該已知程序一定是被病毒感染。
通過上述的說明內(nèi)容,本發(fā)明領(lǐng)域相關(guān)工作人員完全可以在不偏離本項發(fā)明技術(shù)思想的范圍內(nèi),進行多樣的變更以及修改。因此,本項發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利范圍來確定其技術(shù)性范圍。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種基于程序行為分析的計算機防護方法,其特征在于對計算機運行的指令或指令集進行分類,并為所述指令或指令集設(shè)置危險系數(shù);監(jiān)控運行的程序行為,累計將要運行或已經(jīng)運行的指令或指令集的危險系數(shù),在所述系數(shù)的和大于設(shè)定的閾值時,中斷所述程序的運行。
2.按照權(quán)利要求1所述基于程序行為分析的計算機防護方法,其特征在于,選擇出可能危及計算機安全的指令或指令集進行分類。
3.按照權(quán)利要求2所述基于程序行為分析的計算機防護方法,其特征在于,所述指令或指令集為下述操作的指令或指令集文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進程或線程操作;注冊表操作;窗口、托盤操作;堆棧操作;注入線程操作;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號操作。
4.按照權(quán)利要求3所述基于程序行為分析的計算機防護方法,其特征在于,所述程序行為為下述程序戶行為調(diào)用操作系統(tǒng)外殼程序;修改程序文件或?qū)懗绦蛭募?;調(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運行其他程序;創(chuàng)建超過預(yù)定數(shù)量的相同線程;修改和創(chuàng)建用戶帳號;向系統(tǒng)注冊表添加啟動項;修改系統(tǒng)啟動文件;向其他進程注入線程;堆棧操作;應(yīng)用級進程自動提升為系統(tǒng)級進程操作;攔截系統(tǒng)API調(diào)用。
5.按照權(quán)利要求1所述基于程序行為分析的計算機防護方法,其特征在于將監(jiān)控程序嵌入到操作系統(tǒng)的API函數(shù)中,實現(xiàn)對程序的動作行為的監(jiān)控。
6.按照權(quán)利要求5所述基于程序行為分析的計算機防護方法,其特征在于通過被監(jiān)控程序運行的指令,記錄被監(jiān)控程序的動作行為。
7.按照權(quán)利要求1、2、3、4、5或6所述基于程序行為分析的計算機防護方法,其特征在于還包括建立已知程序檔案庫,用于存儲已知程序的標識和所述已知程序的特征數(shù)據(jù);以及,判斷被監(jiān)控的程序是否是已知程序,如果是,利用已知程序檔案庫中的特征數(shù)據(jù)判斷所述被監(jiān)控程序是否完好,如果完好,結(jié)束判斷,否則中止所述已知程序的執(zhí)行。
8.按照權(quán)利要求7所述基于程序行為分析的計算機防護方法,其特征在于還包括建立攻擊識別規(guī)則庫,用于存儲明顯破壞計算機安全的計算機指令或指令集;以及,在被監(jiān)控的程序不是已知程序時,利用攻擊識別規(guī)則庫中的特指令或指令集判斷所述被監(jiān)控程序是否為危險程序,如果是,中止所述已知程序的執(zhí)行。
9.按照權(quán)利要求8所述基于程序行為分析的計算機防護方法,其特征在于,所述攻擊識別規(guī)則庫,包括下述規(guī)則及一個以上下述的規(guī)則的任意組合a)運行于用戶層的程序,轉(zhuǎn)入系統(tǒng)核心層RING0運行;和/或;b)執(zhí)行修改其他程序文件的操作;和/或;c)通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用操作系統(tǒng)的外殼程序;和/或;d)通過監(jiān)聽端口接收數(shù)據(jù)后,使系統(tǒng)緩沖區(qū)溢出;和/或;e)通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用一般文件傳輸協(xié)議程序傳輸數(shù)據(jù);和/或;f)由郵件系統(tǒng)自動生成,且該程序運行時修改注冊表的自啟動項,該程序無窗口、無托盤,并且立即開始發(fā)送郵件;和/或;g)由郵件系統(tǒng)自動生成,且該程序運行時修改注冊表的自啟動項,該程序無窗口、無托盤,并且立即開始創(chuàng)建監(jiān)聽端口。
全文摘要
本發(fā)明涉及一種基于程序行為分析的計算機防護方法,該方法對計算機運行的指令或指令集進行分類,并為所述指令或指令集設(shè)置危險系數(shù);并且以此為基礎(chǔ),監(jiān)控運行的程序行為,累計將要運行或已經(jīng)運行的指令或指令集的危險系數(shù),在所述系數(shù)的和大于設(shè)定的閾值時,中斷所述程序的運行。因此,本發(fā)明能夠主動對程序行為進行判斷從而防止計算機被病毒程序破壞。
文檔編號G06F21/54GK101013461SQ20071008023
公開日2007年8月8日 申請日期2007年2月14日 優(yōu)先權(quán)日2007年2月14日
發(fā)明者白杰, 李薇, 魯征宇 申請人:白杰, 李薇, 魯征宇