專利名稱:基于程序行為分析的計(jì)算機(jī)防護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)防護(hù)方法,與現(xiàn)有技術(shù)相比較不同的是,不采用病毒特征代碼進(jìn)行比對,而是以程序的動作行為為特征,是基于程序行為分析的計(jì)算機(jī)防護(hù)方法。
背景技術(shù):
一直以來,對計(jì)算機(jī)病毒的入侵和反入侵的斗爭都在激烈地進(jìn)行著,隨著計(jì)算機(jī)越來越廣泛地使用,這種斗爭的激烈程度也上升到一個新的高度。經(jīng)過長期的斗爭實(shí)踐,人們總結(jié)出許多的具體方法來防止對計(jì)算機(jī)病毒的入侵,研制出許多相應(yīng)的防范產(chǎn)品。這些產(chǎn)品大體上可以分為兩類,一類是對入侵病毒進(jìn)行隔離,例如防火墻,通過對通訊端口、協(xié)議等進(jìn)行限制來防止入侵病毒的進(jìn)入;另一類是對可能形成入侵的染病毒文件進(jìn)行搜尋,例如現(xiàn)有的殺毒軟件,利用可能形成入侵染病毒文件的代碼特征,通過掃描發(fā)現(xiàn)并清除有害染病毒文件。這兩類產(chǎn)品雖然在反病毒入侵的斗爭中起了不少的作用,但都具有一些無法克服的缺點(diǎn),它們分別是(一)防火墻雖然能夠阻斷一些非法病毒或黑客的入侵,但防火墻的監(jiān)控對象為主要端口和協(xié)議,需要由用戶自己設(shè)置要么允許通過、要么不允許通過。其主要缺陷,1.要求用戶對系統(tǒng)非常熟悉,才能對它進(jìn)行有效設(shè)置;2.由于監(jiān)控顆粒太大,對于網(wǎng)絡(luò)應(yīng)用中必須用到的端口和協(xié)議基本無法設(shè)置,如果允許通過,則可能導(dǎo)致病毒或黑客入侵發(fā)生;若不允許通過,則可能又直接影響網(wǎng)絡(luò)的正常運(yùn)行。
(二)利用病毒特征碼的殺毒軟件將永遠(yuǎn)滯后于病毒的發(fā)展,因?yàn)橹挥胁东@到病毒樣本后,才能提取到病毒的特征碼,這使得這種殺毒軟件對新出現(xiàn)的未知病毒入侵無法防范,用戶即使裝備了殺毒軟件,也會再次受到該病毒的攻擊傷害,只有通過升級、更新病毒數(shù)據(jù)庫才可以解決,而這種解決是滯后于病毒發(fā)生的。
發(fā)明內(nèi)容
本發(fā)明正是為了解決現(xiàn)有技術(shù)的缺點(diǎn)而產(chǎn)生,解決了現(xiàn)有殺毒軟件、防火墻不能對未知病毒以及木馬進(jìn)行有效的防護(hù),并且解決了現(xiàn)有殺毒軟件、防火墻使用過于復(fù)雜的弊病。其目的在于提供一種基于程序行為分析的計(jì)算機(jī)防護(hù)方法,并能夠有效的對病毒、木馬的攻擊進(jìn)行攔截,保證計(jì)算機(jī)的安全。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于對于已知程序,監(jiān)控其動作行為,并與程序行為知識庫中記錄的所述已知程序的合法動作行為進(jìn)行比較,判斷該已知程序是否受到非法攻擊;對于未知程序,監(jiān)控其動作行為,并與攻擊識別規(guī)則庫中記錄的攻擊識別規(guī)則進(jìn)行比較,判斷其是否為有害程序;前述程序行為知識庫為,利用自動化工具,逐一對合法的已知程序所執(zhí)行的動作行為進(jìn)行分析列表,并將所述分析列表進(jìn)行存儲的數(shù)據(jù)庫;所述攻擊識別規(guī)則庫為,利用自動化工具,記錄了計(jì)算機(jī)病毒、木馬及有害程序的攻擊行為特征的數(shù)據(jù)庫,每一記錄對應(yīng)一類病毒,每一類病毒對應(yīng)一個動作集,該動作集包括一系列動作及其之間特定的關(guān)聯(lián)關(guān)系。
如上所述,可知前述攻擊識別規(guī)則庫中記錄的有害程序的攻擊行為特征,并非某個或某種病毒、木馬的單一的動作。根據(jù)下述動作行為分類可知,單一的動作并不是判斷有害程序的標(biāo)準(zhǔn)。因此,攻擊識別規(guī)則庫中存儲的記錄為,每一條所述記錄對應(yīng)一類病毒或木馬,并且包括該類病毒或木馬的多個動作行為作為其特征,并且記錄了所述該類病毒或木馬的多個動作行為之間在時間等方面的關(guān)聯(lián)關(guān)系,從而可以準(zhǔn)確的對有害程序做出判斷。
并且,對于各個監(jiān)控動作和危險(xiǎn)動作設(shè)置權(quán)值,當(dāng)未知程序執(zhí)行所述監(jiān)控動作或危險(xiǎn)動作達(dá)到權(quán)值上限時,則可以向用戶報(bào)警;且該權(quán)值上限可以使用本發(fā)明所提供的經(jīng)驗(yàn)值,也可由用戶自定義,給用戶在使用上帶來了方便。
如上所述,進(jìn)行監(jiān)控、記錄的動作行為包括監(jiān)控動作,該動作可能影響計(jì)算機(jī)安全,需要對其進(jìn)行實(shí)時監(jiān)控;并且所述監(jiān)控動作,是計(jì)算機(jī)程序所執(zhí)行的常見的動作,是多數(shù)的正常程序也必須執(zhí)行的動作。
并且所述監(jiān)控動作包括文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進(jìn)程、創(chuàng)建線程;注冊表操作;窗口、托盤操作;堆棧溢出;注入線程;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號。
危險(xiǎn)動作,該動作首先是一個監(jiān)控動作,在程序運(yùn)行中,該動作可能威脅計(jì)算機(jī)安全;并且所述危險(xiǎn)動作為少數(shù)正常程序會執(zhí)行的動作,并且多數(shù)的病毒程序或木馬程序需要執(zhí)行的程序,因此執(zhí)行這樣的動作的程序具有危害性會更大,例如,程序自行改變運(yùn)行層級,在微軟Windows操作系統(tǒng)中,某程序自動從應(yīng)用級(RING3)提升系統(tǒng)級(RING0)執(zhí)行,只有少數(shù)的正常程序才具有這一特征,但是卻是很多具有攻擊性的病毒程序所共同具有的特征。
并且所述危險(xiǎn)動作包括調(diào)用SHELL程序;修改程序文件或?qū)懗绦蛭募?;調(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運(yùn)行其他程序;創(chuàng)建大量相同線程;修改和創(chuàng)建用戶帳號;危險(xiǎn)網(wǎng)絡(luò)操作;向系統(tǒng)注冊表添加啟動項(xiàng);修改系統(tǒng)啟動文件;向其他進(jìn)程注入線程;堆棧溢出;應(yīng)用級進(jìn)程時自動提升為系統(tǒng)級進(jìn)程操作;攔截系統(tǒng)API調(diào)用。
除前述監(jiān)控動作和危險(xiǎn)動作以外,還包括非監(jiān)控動作,即不影響計(jì)算機(jī)安全無需進(jìn)行監(jiān)控的動作。例如,修改顯示設(shè)置、對GDI資源的調(diào)用等。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述自動化工具為,通過勾掛系統(tǒng)的API(Application Programming Interface應(yīng)用編程接口)函數(shù)對程序的動作行為進(jìn)行監(jiān)控?,F(xiàn)有的操作系統(tǒng),程序執(zhí)行時通常需要進(jìn)行系統(tǒng)提供的API的調(diào)用,因此,只需要通過勾掛程序的系統(tǒng)API調(diào)用,即可對程序所執(zhí)行的動作行為進(jìn)行監(jiān)控。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,包括如下步驟6.1)程序開始運(yùn)行;6.2)判斷該程序是否為已知程序;
6.3)如判斷為已知程序,則監(jiān)控、記錄該已知程序的動作行為,并與程序行為知識庫中存儲的已知程序合法的動作行為進(jìn)行比較,并判斷該程序是否被攻擊;如判斷為未知程序,對該程序的動作行為是否為有害動作行為進(jìn)行判斷。
并且,所述程序被判斷為已知程序后,對該已知程序是否受到攻擊進(jìn)行判斷的步驟,還包括如下步驟7.1)勾掛程序系統(tǒng)API調(diào)用;7.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;7.3)將所記錄的動作行為與程序行為知識庫中存儲的已知程序合法動作行為進(jìn)行比較,判斷該已知程序是否受到攻擊;7.4)如果比較結(jié)果為合法動作行為,則返回步驟7.1);如果比較結(jié)果為否,則證明該已知程序已受到攻擊,并終止該程序繼續(xù)運(yùn)行,向用戶報(bào)警,或等待進(jìn)一步處理。因此,采用如上所述的方法對已知程序進(jìn)行檢查,不但可以保證對已知程序是否正常運(yùn)行進(jìn)行判斷,而且可以檢查出已知程序是否受到攻擊,并且與現(xiàn)有技術(shù)采用病毒特征代碼比較的方法相比,不但檢查病毒攻擊的準(zhǔn)確性更好,而且執(zhí)行效率更高。
因此,根據(jù)將已知程序與程序行為知識庫中記錄的合法的動作行為進(jìn)行比較,如果已知程序按照前述所記錄的合法的程序行為執(zhí)行,則說明所述已知程序運(yùn)行正常;如果一旦出現(xiàn)了該已知程序合法動作行為以外的動作行為,則可以確定所述已知程序收到攻擊,應(yīng)將其停止。
并且,所述步驟7.4)中還包括如下步驟
8.1)根據(jù)程序行為知識庫的定義,判斷是否結(jié)束進(jìn)程;8.2)如果判斷結(jié)果為是,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前進(jìn)程;如果判斷結(jié)果為否,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前線程。
由于在已知程序中,有相當(dāng)一部分程序其功能是系統(tǒng)的底層服務(wù),如果直接將這些程序結(jié)束,會使系統(tǒng)重啟,以致系統(tǒng)癱瘓。因此,在本發(fā)明中,對于程序行為知識庫中的程序進(jìn)行定義,如上述步驟8.1),對于那些不可以終止,且已經(jīng)受到攻擊的程序,將按照步驟8.2)所述,將執(zhí)行了非法操作的線程結(jié)束即可。如上所述,即保證系統(tǒng)的安全,又可以不影響系統(tǒng)的工作,使系統(tǒng)穩(wěn)定運(yùn)行,避免了現(xiàn)有的病毒防火墻工具,由于對系統(tǒng)中的重要服務(wù)的程序病毒進(jìn)行檢查時,殺滅病毒的同時,使系統(tǒng)中重要的程序文件造成損壞,影響系統(tǒng)的穩(wěn)定性。
如果,所述程序被判斷為未知程序后,對該程序的動作行為是否為有害動作行為進(jìn)行判斷的步驟,包括如下步驟9.1)勾掛程序系統(tǒng)API調(diào)用;9.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;9.3)判斷該程序是否有程序來源;9.4)將捕獲到的該程序的動作行為與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較;9.5)判斷該程序是否為有害程序;如果判斷結(jié)果為是,則進(jìn)入下一步;9.6)由用戶確認(rèn)是否允許該程序繼續(xù)執(zhí)行;9.7)如果用戶確認(rèn)允許該程序繼續(xù)運(yùn)行,則該程序繼續(xù)運(yùn)行,如果用戶確認(rèn)不允許該程序繼續(xù)運(yùn)行,則終止該程序繼續(xù)運(yùn)行。
如上所述對于未知程序,根據(jù)前述攻擊識別規(guī)則庫,可以判斷該程序是否為有害程序,從程序行為進(jìn)行分析不但省去了現(xiàn)有殺毒軟件中用戶頻繁升級病毒庫的麻煩,而且對于未知的病毒、木馬等有害程序更能起到很好的攔截效果,這是現(xiàn)有技術(shù)所不能解決的難題,并且具有更高的執(zhí)行效率。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,如果該程序有程序來源信息,則將監(jiān)控到的該程序的動作行為記錄到程序行為知識庫中,并返回步驟9.2),繼續(xù)對該程序的動作行為進(jìn)行監(jiān)控、記錄。
將該有程序來源的程序的動作行為記錄到程序行為知識庫中時,其記錄的結(jié)構(gòu)與程序行為知識庫相同,并在返回步驟9.2)后,繼續(xù)捕獲該程序的監(jiān)控動作和危險(xiǎn)動作,并繼續(xù)向程序行為知識庫中添加該程序的記錄。
前述步驟9.3)中,所述程序來源信息為包括是否為安裝程序創(chuàng)建;是否為經(jīng)用戶確認(rèn)過的程序。當(dāng)某未知程序是由安裝程序創(chuàng)建時,該程序具有很高的可靠性,因此可以通過系統(tǒng)默認(rèn)設(shè)置,認(rèn)為該程序是合法程序,因此將其動作行為,添加到程序行為知識庫中,因此在保證系統(tǒng)安全的前提下,減少了系統(tǒng)的開銷。如果某未知程序其執(zhí)行的動作行為已經(jīng)通過了用戶的確認(rèn),則說明用戶了解該程序的動作行為,因此將其添加到程序行為知識庫,并且將以后的動作行為也添加到程序行為知識庫中。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,所述步驟9.6)中,在用戶確認(rèn)允許被判定為有害程序的無來源未知程序繼續(xù)執(zhí)行后,將該程序的所述動作行為記錄到程序行為知識庫中;并返回步驟9.2)。
用戶對未知程序的動作行為進(jìn)行確認(rèn),并添加到程序行為知識庫中時,其記錄的結(jié)構(gòu)與程序行為知識庫相同,并在返回步驟9.2)后,繼續(xù)捕獲該程序的監(jiān)控動作和危險(xiǎn)動作,并繼續(xù)向程序行為知識庫中添加該程序的記錄。
如上所述,可以使程序行為知識庫得到不斷補(bǔ)充,當(dāng)未知程序的記錄被加入到程序行為知識庫中后,該未知程序就轉(zhuǎn)變?yōu)榱艘阎绦?,再次?zhí)行該程序時,則按照已知程序的判斷方法進(jìn)行判斷,從而提高了系統(tǒng)的效率。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述步驟7.4)或所述步驟9.7)中,通過調(diào)用系統(tǒng)API,將受到攻擊的已知程序和具有有害動作行為的未知程序終止。所述API函數(shù)均為操作系統(tǒng)提供的固定的函數(shù)。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其中所述步驟9.4)或所述步驟9.5)中,判斷該程序的動作行為是否為有害動作行為,通過在步驟9.4)中與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較,得到該監(jiān)控動作或危險(xiǎn)動作的權(quán)值,并在步驟9.5)中將權(quán)值累加;當(dāng)權(quán)值累加結(jié)果達(dá)到權(quán)值上限,則將該程序行為判斷為有害程序行為。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述權(quán)值上限由本發(fā)明提供的經(jīng)驗(yàn)值判斷,或按照用戶自定義。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,所述被監(jiān)控的程序處于運(yùn)行狀態(tài),其退出后,不再進(jìn)行監(jiān)視和記錄。這樣,不但可以有效的保護(hù)系統(tǒng),而且可以減少系統(tǒng)開銷。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述程序行為知識庫,其結(jié)構(gòu)描述包括程序ID、程序類型、程序運(yùn)行層級、寫PE文件權(quán)限、調(diào)用系統(tǒng)SHELL權(quán)限、網(wǎng)絡(luò)行為和注冊表操作。
其中所述程序行為知識庫中,所述程序類型為程序分類枚舉類型,分為可被緩沖區(qū)溢出攻擊的程序和普通應(yīng)用程序。
其中所述網(wǎng)絡(luò)行為,其結(jié)構(gòu)描述包括網(wǎng)絡(luò)連接動作類型、使用端口數(shù)量以及連接描述。
其中所述連接描述包括本地端口、本地地址、遠(yuǎn)程端口、遠(yuǎn)程地址以及使用協(xié)議。
其中所述注冊表操作,其結(jié)構(gòu)描述包括該程序所操作的注冊表項(xiàng)數(shù)、每項(xiàng)操作的鍵值。
并且,所述程序行為知識庫,通過對本地計(jì)算機(jī)使用軟件進(jìn)行檢查,添加與用戶已經(jīng)使用的已知程序相對應(yīng)的已知程序行為的記錄,作為本地計(jì)算機(jī)的程序行為知識庫,并按照用戶需要對用戶將要使用的已知程序進(jìn)行補(bǔ)充。
其中,所述攻擊識別規(guī)則庫,包括病毒規(guī)則一,a)運(yùn)行于用戶層RING3的程序,轉(zhuǎn)入系統(tǒng)核心層RING0運(yùn)行;病毒規(guī)則二,b)該程序執(zhí)行修改其他程序文件的操作;遠(yuǎn)程攻擊規(guī)則一,
c)該程序通過監(jiān)聽端口接受數(shù)據(jù)后,立即調(diào)用SHELL程序;遠(yuǎn)程攻擊規(guī)則二,d)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,發(fā)生緩沖區(qū)溢出;遠(yuǎn)程攻擊規(guī)則三,e)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用一般文件傳輸協(xié)議TFTP程序;郵件蠕蟲規(guī)則一,f)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始發(fā)送郵件;可疑木馬規(guī)則一,g)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始創(chuàng)建監(jiān)聽端口;本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述攻擊識別規(guī)則庫,其結(jié)構(gòu)描述包括可執(zhí)行PE文件的全路徑、創(chuàng)建者全路徑、創(chuàng)建者的特性、創(chuàng)建者有無窗口、與創(chuàng)建者是否同一文件、是否拷貝自身、文件有無描述、是否自啟動、誰創(chuàng)建的自啟動項(xiàng)、是否被創(chuàng)建者啟動、是否自己創(chuàng)建自啟動項(xiàng)、是否有窗口或托盤圖標(biāo)、修改注冊表項(xiàng)鏈表和網(wǎng)絡(luò)動作鏈表。
其中,所述修改注冊表項(xiàng)鏈表的子數(shù)據(jù)結(jié)構(gòu),包括入口列表、鍵名、值名和值。
其中,所述網(wǎng)絡(luò)動作鏈表的子數(shù)據(jù)結(jié)構(gòu),包括類型、本地端口、本地地址、遠(yuǎn)程端口、遠(yuǎn)程地址和使用協(xié)議。
圖1為本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法的流程圖;圖2為判斷未知程序的動作行為的權(quán)值計(jì)算的流程圖。
具體實(shí)施例方式
下面參照附圖,并結(jié)合最常用的微軟Windows操作系統(tǒng),將本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法運(yùn)用于該微軟Windows操作系統(tǒng)中,對本發(fā)明的實(shí)施例作詳細(xì)說明。
如圖1所示,為本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法的流程圖。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于對于已知程序,監(jiān)控其動作行為,并與程序行為知識庫中記錄的所述已知程序的合法動作行為進(jìn)行比較,判斷該已知程序是否受到非法攻擊;對于未知程序,監(jiān)控其動作行為,并與攻擊識別規(guī)則庫中記錄的攻擊識別規(guī)則進(jìn)行比較,判斷其是否為有害程序;本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,包括如下步驟6.1)程序開始運(yùn)行;6.2)判斷該程序是否為已知程序;
6.3)如判斷為已知程序,則監(jiān)控、記錄該已知程序的動作行為,并與程序行為知識庫中存儲的已知程序合法的動作行為進(jìn)行比較,并判斷該程序是否被攻擊;如判斷為未知程序,對該程序的動作行為是否為有害動作行為進(jìn)行判斷。
并且,所述程序被判斷為已知程序后,對該已知程序是否受到攻擊進(jìn)行判斷的步驟,還包括如下步驟7.1)勾掛程序系統(tǒng)API調(diào)用;7.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;7.3)將所記錄的動作行為與程序行為知識庫中存儲的已知程序合法動作行為進(jìn)行比較,判斷該已知程序是否受到攻擊;7.4)如果比較結(jié)果為合法動作行為,則返回步驟7.1);如果比較結(jié)果為否,則證明該已知程序已受到攻擊,并終止該程序繼續(xù)運(yùn)行,向用戶報(bào)警,或等待進(jìn)一步處理。因此,采用如上所述的方法對已知程序進(jìn)行檢查,不但可以保證對已知程序是否正常運(yùn)行進(jìn)行判斷,而且可以檢查出已知程序是否受到攻擊,并且與現(xiàn)有技術(shù)采用病毒特征代碼比較的方法相比,不但檢查病毒攻擊的準(zhǔn)確性更好,而且執(zhí)行效率更高。
如上所述,根據(jù)將已知程序與程序行為知識庫中記錄的合法的動作行為進(jìn)行比較,如果已知程序按照前述所記錄的合法的程序行為執(zhí)行,則說明所述已知程序運(yùn)行正常;如果一旦出現(xiàn)了該已知程序合法動作行為以外的動作行為,則可以確定所述已知程序收到攻擊,應(yīng)將其停止。
并且,所述步驟7.4)中還包括如下步驟
8.1)根據(jù)程序行為知識庫的定義,判斷是否結(jié)束進(jìn)程;8.2)如果判斷結(jié)果為是,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前進(jìn)程;如果判斷結(jié)果為否,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前線程。
由于在已知程序中,有相當(dāng)一部分程序其功能是系統(tǒng)的底層服務(wù),如果直接將這些程序結(jié)束,會使系統(tǒng)重啟,以致系統(tǒng)癱瘓。因此,在本發(fā)明中,對于程序行為知識庫中的程序進(jìn)行定義,如上述步驟8.1),對于那些不可以終止,且已經(jīng)受到攻擊的程序,將按照步驟8.2)所述,將執(zhí)行了非法操作的線程結(jié)束即可。如上所述,即保證系統(tǒng)的安全,又可以不影響系統(tǒng)的工作,使系統(tǒng)穩(wěn)定運(yùn)行,避免了現(xiàn)有的病毒防火墻工具,由于對系統(tǒng)中的重要服務(wù)的程序病毒進(jìn)行檢查時,殺滅病毒的同時,使系統(tǒng)中重要的程序文件造成損壞,影響系統(tǒng)的穩(wěn)定性。例如微軟Windows操作系統(tǒng)中,Lsass.exe為系統(tǒng)服務(wù)程序,如果該程序可能受到溢出攻擊,則不能將其進(jìn)程結(jié)束,這樣會使系統(tǒng)重啟造成系統(tǒng)不穩(wěn)定;因此,按照本發(fā)明的方法及程序行為知識庫中對其定義,將該程序發(fā)生溢出攻擊的線程結(jié)束,這樣,即可以保證系統(tǒng)安全,又能夠組織有害程序?qū)ο到y(tǒng)的侵害;又如微軟Word文字編輯軟件,也存在溢出攻擊的危險(xiǎn),但是由于其不是系統(tǒng)服務(wù)軟件,因此根據(jù)本發(fā)明的方法及程序行為知識庫的定義,可以將整個Word進(jìn)程結(jié)束,以此保護(hù)了系統(tǒng)的安全。
如果,所述程序被判斷為未知程序后,對該程序的動作行為是否為有害動作行為進(jìn)行判斷的步驟,包括如下步驟9.1)勾掛程序系統(tǒng)API調(diào)用;9.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;9.3)判斷該程序是否有程序來源;
9.4)將捕獲到的該程序的動作行為與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較;9.5)判斷該程序是否為有害程序;如果判斷結(jié)果為是,則進(jìn)入下一步;9.6)由用戶確認(rèn)是否允許該程序繼續(xù)執(zhí)行;9.7)如果用戶確認(rèn)允許該程序繼續(xù)運(yùn)行,則該程序繼續(xù)運(yùn)行,如果用戶確認(rèn)不允許該程序繼續(xù)運(yùn)行,則終止該程序繼續(xù)運(yùn)行。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,如果該程序有程序來源信息,則將監(jiān)控到的該程序的動作行為記錄到程序行為知識庫中,并返回步驟9.2),繼續(xù)對該程序的動作行為進(jìn)行監(jiān)控、記錄。
將該有程序來源的程序的動作行為記錄到程序行為知識庫中時,其記錄的結(jié)構(gòu)與程序行為知識庫相同,并在返回步驟9.2)后,繼續(xù)捕獲該程序的監(jiān)控動作和危險(xiǎn)動作,并繼續(xù)向程序行為知識庫中添加該程序的記錄。如上所述,可以使程序行為知識庫得到不斷補(bǔ)充,當(dāng)未知程序的記錄被加入到程序行為知識庫中后,該未知程序就轉(zhuǎn)變?yōu)榱艘阎绦?,再次?zhí)行該程序時,則按照已知程序的判斷方法進(jìn)行判斷,從而提高了系統(tǒng)的效率。
并且,如圖2所示,為判斷未知程序的動作行為的權(quán)值計(jì)算的流程圖。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其中所述步驟9.4)或所述步驟9.5)中,判斷該程序的動作行為是否為有害動作行為,通過在步驟9.4)中與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較,得到該監(jiān)控動作或危險(xiǎn)動作的權(quán)值,并在步驟9.5)中將權(quán)值累加;當(dāng)權(quán)值累加結(jié)果達(dá)到權(quán)值上限,則將該程序行為判斷為有害程序行為。其中,所述權(quán)值上限由本發(fā)明提供的經(jīng)驗(yàn)值判斷,或按照用戶自定義。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其中,前述程序行為知識庫為,利用自動化工具,逐一對合法的已知程序所執(zhí)行的動作行為進(jìn)行分析列表,并將所述分析列表進(jìn)行存儲的數(shù)據(jù)庫;所述攻擊識別規(guī)則庫為,利用自動化工具,記錄了計(jì)算機(jī)病毒、木馬及有害程序的攻擊行為特征的數(shù)據(jù)庫,每一記錄對應(yīng)一類病毒,每一類病毒對應(yīng)一個動作集,該動作集包括一系列動作及其之間特定的關(guān)聯(lián)關(guān)系。
如上所述,可知前述攻擊識別規(guī)則庫中記錄的有害程序的攻擊行為特征,并非某個或某種病毒、木馬的單一的動作。根據(jù)下述動作行為分類可知,單一的動作并不是判斷有害程序的標(biāo)準(zhǔn)。因此,攻擊識別規(guī)則庫中存儲的記錄為,每一條所述記錄對應(yīng)一類病毒或木馬,并且包括該類病毒或木馬的多個動作行為作為其特征,并且記錄了所述該類病毒或木馬的多個動作行為之間在時間等方面的關(guān)聯(lián)關(guān)系,從而可以準(zhǔn)確的對有害程序做出判斷。
并且如上所述,對于各個監(jiān)控動作和危險(xiǎn)動作設(shè)置權(quán)值,當(dāng)未知程序執(zhí)行所述監(jiān)控動作或危險(xiǎn)動作達(dá)到權(quán)值上限時,則可以向用戶報(bào)警;且該權(quán)值上限可以使用本發(fā)明所提供的經(jīng)驗(yàn)值,也可由用戶自定義,給用戶在使用上帶來了方便。
如上所述,進(jìn)行監(jiān)控、記錄的動作行為包括
監(jiān)控動作,該動作可能影響計(jì)算機(jī)安全,需要對其進(jìn)行實(shí)時監(jiān)控;并且所述監(jiān)控動作,是計(jì)算機(jī)程序所執(zhí)行的常見的動作,是多數(shù)的正常程序也必須執(zhí)行的動作。
并且所述監(jiān)控動作包括文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進(jìn)程、創(chuàng)建線程;注冊表操作;窗口、托盤操作;堆棧溢出;注入線程;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號。
危險(xiǎn)動作,該動作首先是一個監(jiān)控動作,在程序運(yùn)行中,該動作可能威脅計(jì)算機(jī)安全;并且所述危險(xiǎn)動作為少數(shù)正常程序會執(zhí)行的動作,并且多數(shù)的病毒程序或木馬程序需要執(zhí)行的程序,因此執(zhí)行這樣的動作的程序具有危害性會更大,例如,程序自行改變運(yùn)行層級,在微軟Windows操作系統(tǒng)中,某程序自動從應(yīng)用級(RING3)提升系統(tǒng)級(RING0)執(zhí)行,只有少數(shù)的正常程序才具有這一特征,但是卻是很多具有攻擊性的病毒程序所共同具有的特征。
并且所述危險(xiǎn)動作包括調(diào)用SHELL程序;修改程序文件或?qū)懗绦蛭募?;調(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運(yùn)行其他程序;創(chuàng)建大量相同線程;修改和創(chuàng)建用戶帳號;危險(xiǎn)網(wǎng)絡(luò)操作;向系統(tǒng)注冊表添加啟動項(xiàng);修改系統(tǒng)啟動文件;向其他進(jìn)程注入線程;堆棧溢出;應(yīng)用級進(jìn)程時自動提升為系統(tǒng)級進(jìn)程操作;攔截系統(tǒng)API調(diào)用。
除前述監(jiān)控動作和危險(xiǎn)動作以外,還包括非監(jiān)控動作,即不影響計(jì)算機(jī)安全無需進(jìn)行監(jiān)控的動作。例如,修改顯示設(shè)置,對GDI資源的調(diào)用等。這些動作不會對系統(tǒng)造成不良影響,因此為了節(jié)省系統(tǒng)開銷,并不對這些動作行為進(jìn)行監(jiān)控。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述自動化工具為,通過勾掛系統(tǒng)的API(Application Programming Interface應(yīng)用編程接口)函數(shù)對程序的動作行為進(jìn)行監(jiān)控?,F(xiàn)有的操作系統(tǒng),程序執(zhí)行時通常需要進(jìn)行系統(tǒng)提供的API的調(diào)用,因此,只需要通過勾掛程序的系統(tǒng)API調(diào)用,即可對程序所執(zhí)行的動作行為進(jìn)行監(jiān)控。
如上所述對于未知程序,根據(jù)前述攻擊識別規(guī)則庫,可以判斷該程序是否為有害程序,從程序行為進(jìn)行分析不但省去了現(xiàn)有殺毒軟件中用戶頻繁升級病毒庫的麻煩,而且對于未知的病毒、木馬等有害程序更能起到很好的攔截效果,這是現(xiàn)有技術(shù)所不能解決的難題,并且具有更高的執(zhí)行效率。
并且,前述步驟9.3)中,所述程序來源信息為包括是否為安裝程序創(chuàng)建,是否為經(jīng)用戶確認(rèn)過的程序。如圖1所示,當(dāng)某未知程序是由安裝程序創(chuàng)建時,該程序具有很高的可靠性,因此可以通過系統(tǒng)默認(rèn)設(shè)置,認(rèn)為該程序是合法程序,因此將其動作行為,添加到程序行為知識庫中,因此在保證系統(tǒng)安全的前提下,減少了系統(tǒng)的開銷。如果某未知程序其執(zhí)行的動作行為已經(jīng)通過了用戶的確認(rèn),則說明用戶了解該程序的動作行為,因此將其添加到程序行為知識庫,并且將以后的動作行為也添加到程序行為知識庫中。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述步驟7.4)或所述步驟9.7)中,通過調(diào)用系統(tǒng)API,將受到攻擊的已知程序和具有有害動作行為的未知程序終止。所述API函數(shù)均為操作系統(tǒng)提供的固定的函數(shù)。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法,所述被監(jiān)控的程序處于運(yùn)行狀態(tài),其退出后,不再進(jìn)行監(jiān)視和記錄。這樣,不但可以有效的保護(hù)系統(tǒng),而且可以減少系統(tǒng)開銷。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述程序行為知識庫,其結(jié)構(gòu)描述包括程序ID、程序類型、程序運(yùn)行層級、寫PE文件權(quán)限、調(diào)用系統(tǒng)SHELL權(quán)限、網(wǎng)絡(luò)行為和注冊表操作。
所述程序行為知識庫結(jié)構(gòu)實(shí)體描述如下struct Know{DWORD type1;BOOL bAllowedWriteFile;BOOL bCreateShell;DWORD NetOffset;DWORD RegOffset;};其中type1為程序分類枚舉類型,目前暫時分為可被緩沖區(qū)溢出攻擊的程序和普通應(yīng)用程序兩類,描述如下,enum KnowType{OVERFLOW,NORMAL};bAllowedWriteFile,表示該程序是否可以寫可執(zhí)行PE文件。
bCreateShell,表示該程序是否可以調(diào)用系統(tǒng)shell。
NetOffset,表示在知識庫文件中偏移多少的位置為對該程序網(wǎng)絡(luò)行為的描述。
RegOffset,表示在知識庫文件中偏移多少的位置為對該程序注冊表操作行為的描述。
在程序行為知識庫中使用以下分結(jié)構(gòu)描述該程序的網(wǎng)絡(luò)動作行為的結(jié)構(gòu)實(shí)體描述為struct Net{short type2;int num;ListenPort port[];};其中,Type2,用來描述網(wǎng)絡(luò)連接的動作類型,分為兩類,監(jiān)聽和連接,使用如下枚舉量描述,enum NetType{Listen,Connect};num,為涉及到的端口數(shù)量;ListenPort,針對每一個連接的具體描述,使用如下結(jié)構(gòu)表示,struct ListenPort{short lport;IPADDR lipaddr;short dport;IPADDR dipaddr;short protocol;};lport使用的本地端口;lipaddr使用的本地地址;dport所連接的遠(yuǎn)程端口;dipaddr所連接的遠(yuǎn)程地址;
protocol所使用的協(xié)議,使用TCP/IP協(xié)議定義。
在程序行為知識庫中使用以下分結(jié)構(gòu)描述該程序的注冊表操作動作行為的結(jié)構(gòu)實(shí)體描述為struct Reg{int num;char*fullregname[];};num,表示該程序所操作的注冊表項(xiàng)數(shù)。
fullregname,每一項(xiàng)操作的鍵值。
并且,所述程序行為知識庫,通過對本地計(jì)算機(jī)使用軟件進(jìn)行檢查,添加與用戶已經(jīng)使用的已知程序相對應(yīng)的已知程序行為的記錄,作為本地計(jì)算機(jī)的程序行為知識庫,并按照用戶需要對用戶將要使用的已知程序進(jìn)行補(bǔ)充。
本發(fā)明的基于程序行為分析的計(jì)算機(jī)防護(hù)方法中,所述攻擊識別規(guī)則庫,其結(jié)構(gòu)描述包括可執(zhí)行PE文件的全路徑、創(chuàng)建者全路徑、創(chuàng)建者的特性、創(chuàng)建者有無窗口、與創(chuàng)建者是否同一文件、是否拷貝自身、文件有無描述、是否自啟動、誰創(chuàng)建的自啟動項(xiàng)、是否被創(chuàng)建者啟動、是否自己創(chuàng)建自啟動項(xiàng)、是否有窗口或托盤圖標(biāo)、修改注冊表項(xiàng)鏈表和網(wǎng)絡(luò)動作鏈表。
本發(fā)明的區(qū)分有害程序行為的方法中,所述攻擊識別規(guī)則庫,其中,每一記錄的數(shù)據(jù)結(jié)構(gòu)實(shí)體為struct UnknowPEFileInMem{
Char WeighofDanger;//危險(xiǎn)權(quán)值Char FileName[MAX_PATH];//新創(chuàng)建的PE文件的全路徑Char CreatorName[MAX_PATH];//創(chuàng)建者的全路徑Char CharacterOfCreator;//創(chuàng)建者的特性Char NoWindowOfCreator;//創(chuàng)建者有無窗口Char SameAsCreator;//與創(chuàng)建者是同一個文件Char CopySelf;//拷貝自身,對于創(chuàng)建者是CopySelf,對于被復(fù)制的文件是SameAsCreator,//以次來區(qū)分兩者Char FileDescription;//文件有無描述Char AutoRun;//是否自啟動Char WhoWriteAutoRun;//誰創(chuàng)建的自啟動項(xiàng)BOOLEAN RunByCreator;//是否被創(chuàng)建者啟動BOOLEAN RunBySelf;//是否自己創(chuàng)建啟動項(xiàng)BOOLEAN bCreateWindow;//是否有窗口或托盤圖標(biāo)LIST_ENTRY RegList;//修改注冊表項(xiàng)鏈表LIST_NET ListNetAction;//網(wǎng)絡(luò)動作鏈表}上述創(chuàng)建者的特性“CharacterOfCreator”的具體數(shù)據(jù)記錄及描述是-1未知程序;0其它已知程序;1郵件系統(tǒng);2網(wǎng)絡(luò)瀏覽器;3網(wǎng)絡(luò)交流系統(tǒng)(如QQ、MSN等);
上述誰創(chuàng)建的自啟動項(xiàng)“WhoWriteAutoRun”的具體數(shù)據(jù)記錄及描述是0未知;1自己;2創(chuàng)建者;3.自己,創(chuàng)建者都會寫其中修改注冊表項(xiàng)鏈表的子數(shù)據(jù)結(jié)構(gòu)實(shí)體為。
struct REG_DATA{LIST_ENTRY List;//入口列表char Key[];//鍵名char ValueName[];//值名char Value[];//值}其中網(wǎng)絡(luò)動作鏈表的子數(shù)據(jù)結(jié)構(gòu)實(shí)體為struct LIST_NET{int type;//類型short lport;//本地端口IPADDR lipaddr;//本地IP地址short dport;//遠(yuǎn)程端口IPADDR dipaddr;//遠(yuǎn)程IP地址short protocol;//使用協(xié)議};
按照如上所述攻擊識別規(guī)則庫,其中包括病毒規(guī)則一,a)運(yùn)行于用戶層RING3的程序,轉(zhuǎn)入系統(tǒng)核心層RING0運(yùn)行;病毒規(guī)則二,b)該程序執(zhí)行修改其他程序文件的操作;遠(yuǎn)程攻擊規(guī)則一,c)該程序通過監(jiān)聽端口接受數(shù)據(jù)后,立即調(diào)用SHELL程序;遠(yuǎn)程攻擊規(guī)則二,d)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,發(fā)生緩沖區(qū)溢出;遠(yuǎn)程攻擊規(guī)則三,e)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用一般文件傳輸協(xié)議TFTP程序;郵件蠕蟲規(guī)則一,f)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始發(fā)送郵件;可疑木馬規(guī)則一,g)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始創(chuàng)建監(jiān)聽端口;下面以病毒攻擊為例,對本發(fā)明的實(shí)施例作詳細(xì)說明。
對于一個已知程序,如果程序行為描述為不能修改程序文件,當(dāng)該程序運(yùn)行時,卻修改了其他程序文件,上述危險(xiǎn)動作被系統(tǒng)監(jiān)控,然后與程序行為知識庫中存儲的該已知程序的合法動作行為相比較,產(chǎn)生不同的動作,因此可以判斷該已知程序一定是被病毒感染。利用這一方法可以發(fā)現(xiàn)CIH等病毒,對于被CIH等病毒感染的已知程序運(yùn)行時,該已知程序就會試圖感染其他PE文件,因此可以在對病毒并不了解的情況下,將其阻止,從而避免了由于病毒代碼更新的滯后性而使新生的病毒有機(jī)可乘。
下面利用攔截震蕩波病毒,對本發(fā)明的實(shí)施例作以說明震蕩波蠕蟲病毒與其他蠕蟲病毒不同,并不發(fā)送郵件,其工作原理為,在本地開辟后門。監(jiān)聽TCP 5554端口,做為FTP服務(wù)器等待遠(yuǎn)程控制命令。病毒以FTP的形式提供文件傳送。黑客可以通過這個端口偷竊用戶機(jī)器的文件和其他信息。病毒開辟128個掃描線程,以本地IP地址為基礎(chǔ),取隨機(jī)IP地址,瘋狂的試探連接445端口,試圖利用windows操作系統(tǒng)中的LSASS中存在一個緩沖區(qū)溢出漏洞進(jìn)行攻擊,一旦攻擊成功會導(dǎo)致對方機(jī)器感染此病毒并進(jìn)行下一輪的傳播。
當(dāng)感染了震蕩波病毒的的計(jì)算機(jī)發(fā)出攻擊包至使用了本發(fā)明的防護(hù)系統(tǒng)時,本地計(jì)算機(jī)的LSASS進(jìn)程溢出,溢出代碼會調(diào)用GetProcAddress,就會被本發(fā)明的監(jiān)控機(jī)制捕獲,判斷為緩沖區(qū)溢出,而且在溢出前,LSASS進(jìn)程會從系統(tǒng)的139,445端口接收數(shù)據(jù),這與上述d)規(guī)則所提供的規(guī)則相符;因此本發(fā)明可以準(zhǔn)確判斷出該遠(yuǎn)程攻擊,于是系統(tǒng)調(diào)用ExitThread,將這個線程結(jié)束,從而使震蕩波蠕蟲無法進(jìn)入下一步的動作,有效保護(hù)了本地計(jì)算機(jī)。
下面再利用截獲著名的反彈行木馬黑洞對本發(fā)明的實(shí)施例作以說明由于其屬于未知程序,該進(jìn)程啟動即被本發(fā)明的監(jiān)控系統(tǒng)捕獲,同時該程序沒有創(chuàng)建應(yīng)用程序窗口及系統(tǒng)托盤區(qū)圖標(biāo);并且該程序啟動后會修改注冊表啟動項(xiàng),以保證自己可以在下次用戶登錄時自動啟動,此動作行為也是危險(xiǎn)動作,因此也被本發(fā)明的監(jiān)控系統(tǒng)捕獲,該進(jìn)程繼續(xù)執(zhí)行將會連接遠(yuǎn)端web服務(wù)器以獲得客戶端服務(wù)的地址、端口信息,以便與其建立連接進(jìn)行信息傳輸,此連網(wǎng)動作被捕獲后,將上述動作一同與攻擊識別規(guī)則庫中的規(guī)則比較,符合攻擊識別規(guī)則庫中的規(guī)則g),便可判斷為可疑木馬,并向用戶報(bào)警,同時說明該非法程序的屬性為可疑木馬,,以便用戶更準(zhǔn)確的了解信息,避免了現(xiàn)有防火墻系統(tǒng)只要發(fā)生網(wǎng)絡(luò)動作便報(bào)警,而且需要用戶對報(bào)警動作安全性做出判斷,避免了計(jì)算機(jī)知識較少的用戶在使用防護(hù)系統(tǒng)時產(chǎn)生麻煩。
通過上述的說明內(nèi)容,本發(fā)明領(lǐng)域相關(guān)工作人員完全可以在不偏離本項(xiàng)發(fā)明技術(shù)思想的范圍內(nèi),進(jìn)行多樣的變更以及修改。因此,本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利范圍來確定其技術(shù)性范圍。
權(quán)利要求
1.一種基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于對于已知程序,監(jiān)控其動作行為,并與程序行為知識庫中記錄的該已知程序的合法動作行為進(jìn)行比較,判斷該已知程序是否受到非法攻擊;對于未知程序,監(jiān)控其動作行為,并與攻擊識別規(guī)則庫中記錄的攻擊識別規(guī)則進(jìn)行比較,判斷其是否為有害程序;所述程序行為知識庫為,利用自動化工具,逐一對合法的已知程序所執(zhí)行的動作行為進(jìn)行分析列表,并將所述分析列表進(jìn)行存儲的數(shù)據(jù)庫;所述攻擊識別規(guī)則庫為,利用自動化工具,記錄了計(jì)算機(jī)病毒、木馬及有害程序的攻擊行為特征的數(shù)據(jù)庫,每一記錄對應(yīng)一類病毒,每一類病毒對應(yīng)一個動作集,該動作集包括一系列動作及其之間的關(guān)聯(lián)關(guān)系。
2.按照權(quán)利要求1所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述進(jìn)行監(jiān)控、記錄動作行為包括監(jiān)控動作,該動作可能影響計(jì)算機(jī)安全、需要對其進(jìn)行實(shí)時監(jiān)控;危險(xiǎn)動作,該動作首先是一個監(jiān)控動作,在程序運(yùn)行中,該動作可能威脅計(jì)算機(jī)安全;此外,還包括非監(jiān)控動作,即不影響計(jì)算機(jī)安全無需進(jìn)行監(jiān)控的動作。
3.按照權(quán)利要求2所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述監(jiān)控動作,包括文件操作;網(wǎng)絡(luò)操作;創(chuàng)建進(jìn)程、創(chuàng)建線程;注冊表操作;窗口、托盤操作;堆棧溢出;注入線程;攔截系統(tǒng)API調(diào)用以及訪問、修改和創(chuàng)建用戶帳號。
4.按照權(quán)利要求2所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述危險(xiǎn)動作包括調(diào)用SHELL程序;修改程序文件或?qū)懗绦蛭募?;調(diào)用FTP或TFTP;創(chuàng)建FTP或TFTP服務(wù);發(fā)送郵件;瀏覽器或郵件系統(tǒng)自動運(yùn)行其他程序;創(chuàng)建大量相同線程;修改和創(chuàng)建用戶帳號;危險(xiǎn)網(wǎng)絡(luò)操作;向系統(tǒng)注冊表添加啟動項(xiàng);修改系統(tǒng)啟動文件;向其他進(jìn)程注入線程;堆棧溢出;應(yīng)用級進(jìn)程自動提升為系統(tǒng)級進(jìn)程操作;攔截系統(tǒng)API調(diào)用。
5.按照權(quán)利要求1所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述自動化工具為,通過勾掛系統(tǒng)的API函數(shù)對程序的動作行為進(jìn)行監(jiān)控。
6.按照權(quán)利要求1所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,包括如下步驟6.1)程序開始運(yùn)行;6.2)判斷該程序是否為已知程序;6.3)如判斷為已知程序,則監(jiān)控、記錄該已知程序的動作行為,并與程序行為知識庫中存儲的已知程序合法的動作行為進(jìn)行比較,并判斷該程序是否被攻擊;如判斷為未知程序,對該程序的動作行為是否為有害動作行為進(jìn)行判斷。
7.按照權(quán)利要求1或6所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述程序被判斷為已知程序后,對該已知程序是否受到攻擊進(jìn)行判斷的步驟,還包括如下步驟7.1)勾掛程序系統(tǒng)API調(diào)用;7.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;7.3)將所記錄的動作行為與程序行為知識庫中存儲的已知程序合法動作行為進(jìn)行比較,判斷該已知程序是否受到攻擊;7.4)如果比較結(jié)果為合法動作行為,則返回步驟7.1);如果比較結(jié)果為否,則證明該已知程序已受到攻擊,并終止該程序繼續(xù)運(yùn)行,向用戶報(bào)警,或等待進(jìn)一步處理。
8.按照權(quán)利要求7所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述步驟7.4)中還包括如下步驟8.1)根據(jù)程序行為知識庫的定義,判斷是否結(jié)束進(jìn)程;8.2)如果判斷結(jié)果為是,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前進(jìn)程;如果判斷結(jié)果為否,則調(diào)用系統(tǒng)API函數(shù)結(jié)束當(dāng)前線程。
9.按照權(quán)利要求1或6所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述程序被判斷為未知程序后,對該程序的動作行為是否為有害動作行為進(jìn)行判斷的步驟,包括如下步驟9.1)勾掛程序系統(tǒng)API調(diào)用;9.2)監(jiān)控程序動作行為,捕獲程序所執(zhí)行的監(jiān)控動作和危險(xiǎn)動作;9.3)判斷該程序是否有程序來源;9.4)將捕獲到的該程序的動作行為與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較;9.5)判斷該程序是否為有害程序;如果判斷結(jié)果為是,則進(jìn)入下一步;9.6)由用戶確認(rèn)是否允許該程序繼續(xù)執(zhí)行;9.7)如果用戶確認(rèn)允許該程序繼續(xù)運(yùn)行,則該程序繼續(xù)運(yùn)行,如果用戶確認(rèn)不允許該程序繼續(xù)運(yùn)行,則終止該程序繼續(xù)運(yùn)行。
10.按照權(quán)利要求9所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述步驟9.3)中,如果該程序有程序來源信息,則將監(jiān)控到的該程序的動作行為記錄到程序行為知識庫中,并返回步驟9.2)。
11.按照權(quán)利要求10所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于將該有程序來源的程序的動作行為記錄到程序行為知識庫中時,其記錄的結(jié)構(gòu)與程序行為知識庫相同,并在返回步驟9.2)后,繼續(xù)捕獲該程序的監(jiān)控動作和危險(xiǎn)動作,并繼續(xù)向程序行為知識庫中添加該程序的記錄。
12.按照權(quán)利要求9所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述步驟9.3)中,所述程序來源信息包括是否為安裝程序創(chuàng)建;是否為經(jīng)用戶確認(rèn)過的程序。
13.按照權(quán)利要求9所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述步驟9.6)中,在用戶確認(rèn)允許被判為有害程序的無來源未知程序繼續(xù)執(zhí)行后,將該程序的所述動作行為記錄到程序行為知識庫中;并返回步驟9.2)。
14.按照權(quán)利要求13所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于用戶對未知程序的動作行為進(jìn)行確認(rèn),并添加到程序行為知識庫中時,其記錄的結(jié)構(gòu)與程序行為知識庫相同,并在返回步驟9.2)后,繼續(xù)捕獲該程序的監(jiān)控動作和危險(xiǎn)動作,并繼續(xù)向程序行為知識庫中添加該程序的記錄。
15.按照權(quán)利要求7至11、13或14中的任意一項(xiàng)所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于已記錄到程序行為知識庫的有程序來源的未知程序和經(jīng)過用戶對其動作行為進(jìn)行確認(rèn)的未知程序,當(dāng)再次運(yùn)行該程序時,將按照已知程序的判斷方法對其進(jìn)行判斷。
16.按照權(quán)利要求1、7或9中的任意一項(xiàng)所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述步驟7.4)或所述步驟9.7)中,通過調(diào)用系統(tǒng)API,將受到攻擊的已知程序和具有有害動作行為的未知程序終止。
17.按照權(quán)利要求9所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述步驟9.4)或所述步驟9.5)中,判斷該程序的動作行為是否為有害動作行為,通過在步驟9.4)中捕獲的該未知程序的動作行為與攻擊識別規(guī)則庫中的攻擊識別規(guī)則進(jìn)行比較,得到該監(jiān)控動作或危險(xiǎn)動作的權(quán)值;在步驟9.5)中將權(quán)值累加;當(dāng)權(quán)值累加結(jié)果達(dá)到權(quán)值上限,則將該程序行為判斷為有害程序行為。
18.按照權(quán)利要求17所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述權(quán)值上限由本發(fā)明提供的經(jīng)驗(yàn)值判斷,或按照用戶自定義。
19.按照權(quán)利要求6至9中任意一項(xiàng)所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述被監(jiān)控的程序處于運(yùn)行狀態(tài),其退出后,不再進(jìn)行監(jiān)視和記錄。
20.按照權(quán)利要求1所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述程序行為知識庫,其結(jié)構(gòu)描述包括程序ID、程序類型、程序運(yùn)行層級、寫PE文件權(quán)限、調(diào)用系統(tǒng)SHELL權(quán)限、網(wǎng)絡(luò)行為和注冊表操作。
21.按照權(quán)利要求20所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述程序行為知識庫中,所述程序類型為程序分類枚舉類型,分為可被緩沖區(qū)溢出攻擊的程序和普通應(yīng)用程序。
22.按照權(quán)利要求20所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述網(wǎng)絡(luò)行為,其結(jié)構(gòu)描述包括網(wǎng)絡(luò)連接動作類型、使用端口數(shù)量以及連接描述。
23.按照權(quán)利要求22所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述連接描述包括本地端口、本地地址、遠(yuǎn)程端口、遠(yuǎn)程地址以及使用協(xié)議。
24.按照權(quán)利要求20所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述注冊表操作,其結(jié)構(gòu)描述包括該程序所操作的注冊表項(xiàng)數(shù)、每項(xiàng)操作的鍵值。
25.按照權(quán)利要求1或20所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于所述程序行為知識庫,通過對本地計(jì)算機(jī)使用軟件進(jìn)行檢查,添加與用戶已經(jīng)使用的已知程序相對應(yīng)的已知程序行為的記錄,作為本地計(jì)算機(jī)的程序行為知識庫,并按照用戶需要對用戶將要使用的已知程序進(jìn)行補(bǔ)充。
26.按照權(quán)利要求1所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫中,所述關(guān)聯(lián)關(guān)系包括前后動作之間的時間關(guān)系及調(diào)用和被調(diào)用關(guān)系。
27.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括病毒規(guī)則一a)運(yùn)行于用戶層RING3的程序,轉(zhuǎn)入系統(tǒng)核心層RING0運(yùn)行。
28.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括病毒規(guī)則二b)該程序執(zhí)行修改其他程序文件的操作。
29.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括遠(yuǎn)程攻擊規(guī)則一c)該程序通過監(jiān)聽端口接受數(shù)據(jù)后,立即調(diào)用SHELL程序。
30.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括遠(yuǎn)程攻擊規(guī)則二d)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,發(fā)生緩沖區(qū)溢出。
31.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括遠(yuǎn)程攻擊規(guī)則三e)該程序通過監(jiān)聽端口接收數(shù)據(jù)后,立即調(diào)用一般文件傳輸協(xié)議TFTP程序。
32.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括郵件蠕蟲規(guī)則一f)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始發(fā)送郵件。
33.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,包括可疑木馬規(guī)則一g)該程序由郵件系統(tǒng)自動生成,且該程序運(yùn)行時修改注冊表的自啟動項(xiàng),該程序無窗口、無托盤,并且立即開始創(chuàng)建監(jiān)聽端口。
34.按照權(quán)利要求26所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述攻擊識別規(guī)則庫,其結(jié)構(gòu)包括可執(zhí)行PE文件的全路徑、創(chuàng)建者全路徑、創(chuàng)建者的特性、創(chuàng)建者有無窗口、與創(chuàng)建者是否同一文件、是否拷貝自身、文件有無描述、是否自啟動、誰創(chuàng)建的自啟動項(xiàng)、是否被創(chuàng)建者啟動、是否自己創(chuàng)建自啟動項(xiàng)、是否有窗口或托盤圖標(biāo)、修改注冊表項(xiàng)鏈表和網(wǎng)絡(luò)動作鏈表。
35.按照權(quán)利要求34所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述修改注冊表項(xiàng)鏈表的子數(shù)據(jù)結(jié)構(gòu),包括入口列表、鍵名、值名和值。
36.按照權(quán)利要求34所述基于程序行為分析的計(jì)算機(jī)防護(hù)方法,其特征在于,所述網(wǎng)絡(luò)動作鏈表的子數(shù)據(jù)結(jié)構(gòu),包括類型、本地端口、本地地址、遠(yuǎn)程端口、遠(yuǎn)程地址和使用協(xié)議。
全文摘要
本發(fā)明涉及一種計(jì)算機(jī)防護(hù)方法,即,基于程序行為分析的計(jì)算機(jī)防護(hù)方法。其特征在于對于已知程序,監(jiān)控其動作行為,并與程序行為知識庫中記錄的該已知程序的合法動作行為進(jìn)行比較,判斷該已知程序是否受到非法攻擊;對于未知程序,監(jiān)控其動作行為,并與攻擊識別規(guī)則庫中記錄的攻擊識別規(guī)則進(jìn)行比較,判斷其是否為有害程序。避免了現(xiàn)有的殺毒軟件需要將程序與病毒庫中的病毒特征代碼進(jìn)行比較。利用本發(fā)明的方法不但提高了效率,避免了病毒代碼更新的滯后性,可以有效地對未知的病毒、木馬進(jìn)行攔截。
文檔編號H04L29/06GK1818823SQ20051000768
公開日2006年8月16日 申請日期2005年2月7日 優(yōu)先權(quán)日2005年2月7日
發(fā)明者劉旭 申請人:福建東方微點(diǎn)信息安全有限責(zé)任公司