本發(fā)明屬于計算機安全檢測技術(shù)領域,具體涉及一種基于時態(tài)性質(zhì)檢測的自進化惡意程序識別系統(tǒng)。
背景技術(shù):
隨著信息技術(shù)的日益發(fā)展與計算機的普及,從個人計算機、智能手機,到各種智能家居產(chǎn)品,越來越多的計算設備出現(xiàn)在人們的身旁。計算機在為人類提供了諸多便利,極大提高社會運轉(zhuǎn)效率的同時,也帶來了許多的安全性問題。其中絕大部分的問題源自于的惡意程序的傳播與執(zhí)行。常見的惡意程序有病毒、蠕蟲、木馬、后臺程序,它們能夠?qū)τ嬎銠C系統(tǒng)進行控制、信息竊取乃至破壞,并能進行自動復制傳播,這極大地危害了廣大計算機用戶的隱私安全,財產(chǎn)安全,乃至影響到社會、國家的安全。
傳統(tǒng)的惡意程序檢測主要通過對惡意程序進行掃描,識別其中所包含的特定二進制特征序列,從而判斷程序是否為惡意程序。例如,中國專利申請?zhí)枮?01610134408.7的發(fā)明專利申請,公開了一種嵌入式處理器的未知惡意代碼檢測方法,包括創(chuàng)建嵌入式系統(tǒng)自體集、生成檢測器集、檢測未知惡意代碼的步驟;在處理器指令級對系統(tǒng)內(nèi)正常程序的指令序列信息進行采集編碼生成二進制串集合作為自體集,隨機生成二進制串作為候選檢測器,并將其與自體集中的元素進行否定選擇生成檢測器集;利用檢測器集里的二進制串與從指令級收集到的待檢測代碼的行為信息二進制串進行匹配;采用雙閾值的海民規(guī)則進行自體集的二進制串、檢測器二進制串以及待檢測二進制串之間的模糊匹配,以提高對未知惡意代碼的檢測率,降低檢測系統(tǒng)的資源消耗。
這種檢測方法,雖然具有檢測速度快的特點,但需要不斷更新特征數(shù)據(jù)庫來維持對惡意程序的識別能力,具有滯后性。
另外,隨著惡意程序種自修改、死代碼插入等各種混淆技術(shù)的采用,這種傳統(tǒng)檢測方法常常會失效。面對惡意程序不斷變異的形勢,傳統(tǒng)惡意程序檢測程序常處于被動防御的地位。
模型檢測技術(shù)的提出,起初用于檢查軟件模型是否滿足需求文檔中所描述的性質(zhì),若以惡意行為特征作為待驗證的性質(zhì),自然也可以將模型檢測應用于惡意程序的檢測。例如,中國專利申請?zhí)枮?00810089576.4的發(fā)明專利申請,公開了一種基于語義的惡意代碼檢測方法,該發(fā)明方法包含a)獲得已知惡意代碼的有窮狀態(tài)自動機;b)獲得待檢測的二進制可疑程序的下推自動機;c)使用模型檢驗方法檢測所述的下推自動機和所述有窮狀態(tài)自動機之間是否存在可以同時被兩者接收的輸入字符串,若是,則判定上述待檢測的可疑程序為惡意程序。
時態(tài)性質(zhì)檢測是模型檢測技術(shù)的一個分支,其主要關(guān)注于模型中是否具備時間相關(guān)的性質(zhì),可以描述一定的時序關(guān)系,而通常在惡意程序中,為了完成某類惡意行為,必定具備按照某種順序執(zhí)行指令操作的性質(zhì),因而,可以引入時態(tài)邏輯進行描述,自然,就可以進行性質(zhì)的驗證。目前,隨著研究領域的發(fā)展,需要研究更多的自動時態(tài)性質(zhì)挖掘方法。
技術(shù)實現(xiàn)要素:
針對傳統(tǒng)的惡意程序特征序列檢測方法,結(jié)合模型檢測技術(shù),本發(fā)明提出了一種基于時態(tài)性質(zhì)檢測的自進化惡意程序識別系統(tǒng)。通過二進制分析工具,對程序樣本進行遞歸下降法的反匯編,破除指令重疊、自修改等混淆技術(shù)的影響,并生成相應的程序模型,在此基礎上,進行時態(tài)性質(zhì)挖掘、篩選與采集,構(gòu)建出初始的惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫,在之后的惡意程序識別過程中,只需對待識別程序進行性質(zhì)驗證,從而判斷程序是否具備惡意性質(zhì)。并能夠以之作為新樣本進行性質(zhì)采集,以擴充惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫,自動地完成系統(tǒng)惡意程序檢測能力的增強。
具體的,本發(fā)明提供了一種惡意程序識別系統(tǒng),所述系統(tǒng)包括以下模塊:
訓練模塊:用于根據(jù)樣本程序,構(gòu)建惡意程序性質(zhì)數(shù)據(jù)庫;
識別模塊:用于采用模型檢測方法對待識別程序進行性質(zhì)驗證,判斷是否為惡意程序。
優(yōu)選的,所述訓練模塊通過對所述樣本程序進行自動的時態(tài)性質(zhì)挖掘,并通過對比正常程序樣本與惡意程序樣本的性質(zhì),篩選出惡意程序所特有的部分,從而建立所述惡意程序性質(zhì)數(shù)據(jù)庫。
優(yōu)選的,所述識別模塊在所述惡意程序性質(zhì)數(shù)據(jù)庫的基礎上,對待識別的目標程序進行性質(zhì)驗證,根據(jù)目標程序是否具備惡意程序性質(zhì)來判斷目標程序是否為惡意程序。
優(yōu)選的,所述系統(tǒng)具備以下兩個數(shù)據(jù)庫:正常程序時態(tài)性質(zhì)數(shù)據(jù)庫,存儲正常程序樣本挖掘所得的性質(zhì);惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫,存儲惡意程序樣本挖掘所得的性質(zhì)。
優(yōu)選的,所述惡意程序識別系統(tǒng)具備自進化能力,在使用過程中,根據(jù)判斷結(jié)果,將已測試程序進行標注,放入訓練模塊中處理,以進行時態(tài)性質(zhì)數(shù)據(jù)庫的擴充。
更優(yōu)選的,所述訓練模塊包括如下組成單元:
控制流圖生成單元,用于從樣本程序庫中讀取一個已知惡意與否的樣本程序,采用IDA Pro使用遞歸下降法對該樣本程序的目標代碼進行反匯編、庫函數(shù)調(diào)用識別,相應控制流圖的生成;
轉(zhuǎn)換單元,用于將樣本程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型;
時態(tài)性質(zhì)挖掘單元,用于在遷移系統(tǒng)模型上運行時態(tài)性質(zhì)挖掘算法,以一些常見的時態(tài)性質(zhì)為模板,挖掘指令路徑中存在的時態(tài)性質(zhì);
時態(tài)性質(zhì)存儲單元,用于根據(jù)所述樣本程序是否為惡意程序,將挖掘到的時態(tài)性質(zhì)分別存入正常程序時態(tài)性質(zhì)數(shù)據(jù)庫與惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫;
判斷單元,用于判斷樣本程序庫中是否還有程序樣本;
篩選及更新單元,用于對比正常程序性質(zhì)數(shù)據(jù)庫與惡意程序性質(zhì)數(shù)據(jù)庫中的性質(zhì),篩選出那些僅屬于惡意程序數(shù)據(jù)的性質(zhì),更新惡意程序性質(zhì)數(shù)據(jù)庫。
更優(yōu)選的,所述控制流圖生成單元、轉(zhuǎn)換單元、時態(tài)性質(zhì)挖掘單元、時態(tài)性質(zhì)存儲單元、判斷單元依次連接,所述判斷單元還連接控制流圖生成單元和篩選及更新單元。
優(yōu)選的,所述識別模塊中包括以下組成單元:
流圖構(gòu)建單元,用于讀取待識別程序,對待識別程序的目標代碼進行反匯編、庫函數(shù)識別以及控制流圖的生成;
流圖轉(zhuǎn)換單元,用于將待識別程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型;
檢測單元,用于使用時態(tài)邏輯模型檢查器檢查遷移系統(tǒng)模型中是否具有惡意程序性質(zhì)數(shù)據(jù)庫中的時態(tài)性質(zhì);
判定單元,用于判斷遷移系統(tǒng)模型是否具備某項惡意程序性質(zhì);如果遷移系統(tǒng)模型具備某項惡意程序性質(zhì),就輸出結(jié)果,表示其具備惡意特征,否則,則認定為正常程序。
更優(yōu)選的,所述流圖構(gòu)建單元、流圖轉(zhuǎn)換單元、檢測單元、判定單元依次連接。
本發(fā)明的有益效果如下:本發(fā)明可以有效識別惡意程序,同時可以將運行過程中識別出來的程序作為樣本進行進一步的性質(zhì)挖掘,以更新擴充惡意程序性質(zhì)數(shù)據(jù)庫,從而自動地逐步增強系統(tǒng)的惡意程序識別能力。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1是本發(fā)明的一種基于時態(tài)性質(zhì)檢測的自進化惡意程序識別系統(tǒng)構(gòu)成示意圖;
圖2是本發(fā)明的訓練模塊的結(jié)構(gòu)示意圖;
圖3是本發(fā)明的訓練模塊的工作流程圖;
圖4是本發(fā)明的識別模塊的結(jié)構(gòu)示意圖;
圖5是本發(fā)明的識別模塊的工作流程圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術(shù)人員。
如圖1所示,本發(fā)明公開一種基于時態(tài)性質(zhì)檢測的自進化惡意程序識別系統(tǒng)100,所述系統(tǒng)包括以下模塊:
訓練模塊110,用于根據(jù)樣本程序構(gòu)建惡意程序性質(zhì)數(shù)據(jù)庫。訓練模塊110通過對樣本程序進行自動的時態(tài)性質(zhì)挖掘,并通過對比正常程序樣本與惡意程序樣本的性質(zhì),篩選出惡意程序所特有的部分,從而建立惡意程序性質(zhì)數(shù)據(jù)庫。例如,所述惡意程序所特有的部分可以是惡意程序中所包含的特定二進制特征序列。
識別模塊120,用于采用模型檢測方法對待識別程序進行性質(zhì)驗證,判斷是否為惡意程序。識別模塊120在訓練模塊得出的所述惡意程序性質(zhì)數(shù)據(jù)庫的基礎上,對待識別的目標程序進行性質(zhì)驗證,根據(jù)目標程序是否具備惡意程序性質(zhì)來判斷目標程序是否為惡意程序。
本發(fā)明所述惡意程序識別系統(tǒng),具備自進化能力:在使用過程中,根據(jù)判斷結(jié)果,將已測試程序進行標注,放入訓練模塊中,以進行時態(tài)性質(zhì)數(shù)據(jù)庫的擴充。優(yōu)選的,根據(jù)本發(fā)明的一個優(yōu)選實施例,所述系統(tǒng)還具備以下兩個數(shù)據(jù)庫:正常程序時態(tài)性質(zhì)數(shù)據(jù)庫130(DB1):存儲正常程序樣本挖掘所得的性質(zhì);惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫140(DB2):存儲惡意程序樣本挖掘所得的性質(zhì)。惡意程序識別系統(tǒng)還可以將運行過程中識別出來的程序作為樣本進行進一步的性質(zhì)挖掘,以更新擴充惡意程序性質(zhì)數(shù)據(jù)庫,從而自動地逐步增強系統(tǒng)的惡意程序識別能力。
如圖2所示,本發(fā)明中的所述訓練模塊110中包括以下組成單元:
控制流圖生成單元111,用于從樣本程序庫中讀取一個樣本程序,即一個已知惡意與否的程序,采用IDA Pro使用遞歸下降法對該樣本程序的目標代碼進行反匯編、庫函數(shù)調(diào)用識別,相應控制流圖的生成;該單元的目的是破除指令重疊、自修改等混淆技術(shù)的影響。
IDA Pro,是交互式反匯編器專業(yè)版(Interactive Disassembler Professional)的簡稱,或簡稱為IDA,是一個基于控制臺的MS-DOS應用程序。
IDA是一種遞歸下降反匯編器。但是,為了提高遞歸下降過程的效率,IDA在區(qū)分數(shù)據(jù)與代碼的同時,還設法確定這些數(shù)據(jù)的類型。雖然在IDA中看到的是匯編語言形式的代碼,但IDA的主要目標之一,在于呈現(xiàn)盡可能接近源代碼的代碼。此外,IDA不僅使用數(shù)據(jù)類型信息,而且通過派生的變量和函數(shù)名稱來盡其所能地注釋生成的反匯編代碼。這些注釋將原始十六進制代碼的數(shù)量減到最少,并顯著增加了向用戶提供的符號化信息的數(shù)量。
轉(zhuǎn)換單元112,用于將樣本程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型。
時態(tài)性質(zhì)挖掘單元113,用于在遷移系統(tǒng)模型上運行時態(tài)性質(zhì)挖掘算法,以一些常見的時態(tài)性質(zhì)為模板,挖掘指令路徑中存在的時態(tài)性質(zhì)。
時態(tài)性質(zhì)存儲單元114,用于根據(jù)所述樣本程序是否為惡意程序,將挖掘到的時態(tài)性質(zhì)分別存入正常程序時態(tài)性質(zhì)數(shù)據(jù)庫與惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫。
判斷單元115,用于判斷樣本程序庫中是否還有程序樣本。所述判斷單元連接控制流圖生成單元111和篩選及更新單元116。
篩選及更新單元116,用于對比正常程序性質(zhì)數(shù)據(jù)庫DB1與惡意程序性質(zhì)數(shù)據(jù)庫DB2中的性質(zhì),篩選出那些僅屬于惡意程序數(shù)據(jù)的性質(zhì),更新惡意程序性質(zhì)數(shù)據(jù)庫DB2,即將DB2內(nèi)容更新為DB2-DB1的差集。
如圖3所示,本發(fā)明中的所述訓練模塊的工作方法包括如下步驟:
步驟A1:從樣本程序庫中讀取一個樣本程序,即一個已知惡意與否的程序,采用IDA Pro使用遞歸下降法對該樣本程序的目標代碼進行反匯編、庫函數(shù)調(diào)用識別,相應控制流圖的生成;該步驟的目的是破除指令重疊、自修改等混淆技術(shù)的影響。
步驟A2:將樣本程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型;
步驟A3:在遷移系統(tǒng)模型上運行時態(tài)性質(zhì)挖掘算法,以一些常見的時態(tài)性質(zhì)為模板,挖掘指令路徑中存在的時態(tài)性質(zhì);
步驟A4:根據(jù)所述樣本程序是否為惡意程序,將挖掘到的時態(tài)性質(zhì)分別存入正常程序時態(tài)性質(zhì)數(shù)據(jù)庫與惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫;
步驟A5:若樣本程序庫中不再具備程序樣本,則跳到下一步驟A6,否則回到步驟A1;
步驟A6:對比正常程序性質(zhì)數(shù)據(jù)庫DB1與惡意程序性質(zhì)數(shù)據(jù)庫DB2中的性質(zhì),篩選出那些僅屬于惡意程序數(shù)據(jù)的性質(zhì),更新惡意程序性質(zhì)數(shù)據(jù)庫DB2,即將DB2內(nèi)容更新為DB2-DB1的差集。
如圖4所示,本發(fā)明中的所述識別模塊120中包括以下組成單元:
流圖構(gòu)建單元121,用于讀取待識別程序,對待識別程序的目標代碼進行反匯編、庫函數(shù)識別以及控制流圖的生成。
流圖轉(zhuǎn)換單元122,用于將待識別程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型。
檢測單元123,用于使用時態(tài)邏輯模型檢查器檢查遷移系統(tǒng)模型中是否具有惡意程序性質(zhì)數(shù)據(jù)庫DB2中的時態(tài)性質(zhì)。
判定單元124,用于判斷遷移系統(tǒng)模型是否具備某項惡意程序性質(zhì)。如果遷移系統(tǒng)模型具備某項惡意程序性質(zhì),就輸出結(jié)果,表示其具備惡意特征,否則,則認定為正常程序。
如圖5所示,本發(fā)明中的所述識別模塊的工作方法包括如下步驟:
步驟B1:讀取待識別程序,對待識別程序的目標代碼進行反匯編、庫函數(shù)識別以及控制流圖的生成;
步驟B2:將待識別程序的控制流圖轉(zhuǎn)換為遷移系統(tǒng)模型;
步驟B3:使用時態(tài)邏輯模型檢查器檢查遷移系統(tǒng)模型中是否具有惡意程序性質(zhì)數(shù)據(jù)庫DB2中的時態(tài)性質(zhì);
步驟B4:如果遷移系統(tǒng)模型具備某項惡意程序性質(zhì),就輸出結(jié)果,表示其具備惡意特征,否則,則認定為正常程序。
本發(fā)明通過二進制分析工具IDA Pro,對程序樣本進行遞歸下降法的反匯編,破除指令重疊、自修改等混淆技術(shù)的影響,并生成相應的程序模型,在此基礎上,進行時態(tài)性質(zhì)挖掘、篩選與采集,構(gòu)建出初始的惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫,在之后的惡意程序識別過程中,對待識別程序進行性質(zhì)驗證,從而判斷程序是否具備惡意性質(zhì)。并能夠以之作為新樣本進行性質(zhì)采集,以擴充惡意程序時態(tài)性質(zhì)數(shù)據(jù)庫,自動地完成系統(tǒng)惡意程序檢測能力的增強。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術(shù)人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的虛擬機的創(chuàng)建裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
顯然,本領域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其同等技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。