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