一種多維無特征碼惡意程序檢測方法
【技術領域】
[0001] 本發明屬于計算機反病毒領域,具體涉及一種多維無特征碼惡意程序檢測方法。
【背景技術】
[0002] 隨著信息化在各行各業應用的不斷深入,計算機安全問題越來越受到重視。在計 算機安全問題中,計算機病毒等惡意代碼是一個最主要的安全威脅。目前,針對計算機病毒 的定義不同學者有不同的理解,在1994年2月18日,我國正式頒布實施了《中華人民共和 國計算機信息系統安全保護條例》,在第二十八條中明確指出:"計算機病毒,是指編制或者 在計算機程序中插入的破壞計算機功能或者毀壞數據,影響計算機使用,并能自我復制的 一組計算機指令或者程序代碼。"這是我國對于計算機病毒的正式定義,但隨著計算機黑客 技術的不斷發展變化,新的攻擊手段層出不窮,通常將這些對計算機安全構成威脅的有別 于正常程序的計算機程序統稱為惡意程序,如破壞系統的安全、損害系統或未得到用戶許 可的情況下獲得用戶的敏感信息等。惡意代碼主要包括傳統計算機病毒、宏病毒、惡意腳 本、木馬、蠕蟲以及最近幾年出現的僵尸網絡等。
[0003] 目前,針對惡意程序的檢測主要包括基于特征碼檢測、行為檢測和文件完整性校 驗檢測三種方法。基于特征碼檢測需要事先構建一個惡意程序特征碼庫,該特征碼庫的構 建需要事先捕獲惡意程序樣本,然后進行分析提取出最具有代表性的一個或多個字符串, 添加到惡意程序特征碼庫。對待檢測程序基于構建好的惡意程序特征碼庫進行掃描匹配, 如果成功匹配則說明檢測到一個惡意程序,否則沒有。因此,基于特征碼檢測方法的一個前 提是有一個完備的惡意程序特征碼庫,如果特征碼庫不完備,則必然導致漏報。但在實際應 用過程中,不可能生成一個絕對完備的惡意程序特征碼庫,同時新的未知惡意程序的特征 碼不可能提前生成,因此對新的未知惡意程序和已知惡意程序的變種無能為力。
[0004] 基于行為的檢測方法利用惡意程序的特有行為特征來進行檢測,常見的惡意程序 行為包括復制自身到指定目錄、創建啟動項、關閉安全軟件、刪除文件等。通過對正在運行 的程序的行為進行監測,如果發現程序具有這些典型惡意程序行為的檢測,則進行報警。基 于行為的檢測方法依據是程序的行為特征,但惡意程序和合法程序存在一些相同或相似的 行為,如刪除文件、復制文件,因此基于行為的檢測方法,存在很大的誤報。
[0005] 文件完整性校驗檢測方法首先計算正常文件內容的校驗和,然后將文件校驗和保 存起業,然后在文件使用時或定期不定期計算其現在的校驗和與原來保存的文件校驗和是 否一致,如一致則說明文件沒有被感染,否則說明文件被感染。文件完整性校驗方法可以檢 測已知和未知惡意程序,但與基于行為的檢測方法缺點一樣,存在很大的誤報,因為文件內 容發生改變并非文件是由于惡意程序感染的唯一原因,文件內容的改變有可能是正常程序 引起的,而且這種方法也會影響文件的運行速度。
[0006] 隨著Internet的迅速發展,惡意程序的產生與傳播更加快捷,新型高危惡意程序 造成的危害日益增大。加之新型惡意程序構建技術,如會自動進行變形、加密、解密等的采 用,對傳統惡意程序檢測技術提出嚴峻的挑戰,因此,研制新型惡意程序檢測技術是當前應 對惡意程序的一個亟待解決的問題。
【發明內容】
[0007] 本發明的目的是針對計算機系統中惡意程序檢測問題,提供一種多維無特征碼惡 意程序檢測方法。本發明不用建立傳統惡意程序檢測所需要的龐大特征碼庫,通過建立計 算機正常程序模型,從而產生覆蓋惡意程序空間的檢測器,實現對惡意程序的檢測,本發明 不依賴特征碼匹配檢測惡意程序,對待檢測程序不區分已知惡意程序或未知惡意程序,因 此具有良好的未知惡意程序檢測能力。
[0008] 本發明的多維無特征碼惡意程序檢測方法包括如下步驟:
[0009] 步驟Sl :收集計算機中的正常程序訓練集BPa、BPb和惡意程序訓練集EP,并基于 訓練集BPa和EP構建不同長度正常程序字符串集合庫;
[0010] 步驟S2:基于構建的不同長度正常程序字符串集合庫,對正常程序訓練集BPb中 的每一個正常程序提取其多維特征,計算各正常程序的特征向量和泛化值,構建正常程序 豐旲型;
[0011] 步驟S3 :基于所述正常程序模型,生成覆蓋惡意程序空間的檢測器;
[0012] 步驟S4 :對特檢測程序p進行特征提取,生成特檢測程序p的特征向量,計算特檢 測程序P的特征向量與檢測器之間的歐幾里德距離,若所述歐幾里德距離小于或等于檢測 器的檢測值,則特檢測程序P為惡意程序,否則為正常程序。
[0013] 由于本發明采用了以上的技術方案,因此本發明可以達到以下的有益效果:
[0014] 1、本發明可有效加快檢測速度。由于本發明不基于傳統特征碼匹配的方法,隨著 惡意程序數量的不斷增加,其特征碼庫也將越來越大,掃描匹配耗時越來越長;本發明勿需 特征碼,僅需提取程序特征即實現對程序的檢測,故檢測速度更快。
[0015] 2、本發明具有檢測未知惡意程序的能力。由于本發明不基于傳統特征碼匹配的方 法,采用通過構建計算機正常程序模型,生成覆蓋惡意程序空間的檢測器,實現對惡意程序 的檢測,因此本發明具有檢測未知惡意程序的良好能力。
【附圖說明】
[0016] 圖1為本發明的系統框架圖;
[0017] 圖2為本發明【具體實施方式】中,生成正常程序字符串庫的流程圖;
[0018] 圖3為本發明【具體實施方式】中,構建正常程序模型的流程圖;
[0019] 圖4為本發明【具體實施方式】中,生成檢測器的流程圖;
[0020] 圖5為本發明【具體實施方式】中,對待檢測程序判定過程的流程圖。
【具體實施方式】
[0021] 為使本發明的目的、技術方案和優點更加清楚,下面結合實施方式和附圖,對本發 明作進一步地詳細描述。
[0022] 如圖1所示,本發明的一種多維無特征碼惡意程序檢測方法包括如下步驟:
[0023] 步驟Sl :收集計算機中的正常程序訓練集5Λ,、和惡意程序 訓練集EP (通常選擇典型的正常程序和惡意程序),基于訓練集BPa和EP構建不同長度正 常程序字符串集合庫;
[0024] 步驟S2 :基于構建的不同長度正常程序字符串集合庫,對正常程序訓練集BPb中 的每一個正常程序提取其多維特征,計算該正常程序的特征向量和泛化值,從而構建起計 算機中正常程序模型;
[0025] 步驟S3,基于所構建的正常程序模型,生成覆蓋惡意程序空間的檢測器;
[0026] 步驟S4 :對特檢測程序p首先提取其特征,生成特檢測程序p的特征向量,并計 算該特征向量與檢測器之間的歐幾里德距離,若該歐幾里德距離小于或等于檢測器的檢測 值,則判定特檢測程序P為惡意程序,否則判定特檢測程序P為正常程序。
[0027] 具體的,在上述的步驟Sl中,如圖2所示,進行構建不同長度正常程序字串集合庫 的步驟包括:
[0028] 步驟Sll :從正常程序訓練集BPa中的一個正常程序bp依次提取長度為L的字符 串bpy每次滑動一個字節,即對每個正常程序bp,存在多個長度為L的字符串bp^
[0029] 步驟S12 :計算字符串bp^在惡意程序訓練集EP中字符串出現的次數Cbp和文件出 現的次數Fbp;
[0030] 步驟S13 :判斷Cbp/Fbp< λ,λ為預設閾值,如果滿足則轉步驟S15,否則轉步驟 S14;由于正常程序和惡意程序可能會擁有相同的功能,如刪除文件操作,因此,通過引入閾 值λ選出最能代表正常特征的字符串,其具體取值基于系統環境根據經驗值進行設置,λ 的參考取值范圍為1. 〇~10. 0。
[0031] 步驟S14 :對不滿足步驟S13條件的字符串,則丟棄當前字符串bp^
[0032] 步驟S15 :對滿足步驟S13條件的字符串,計算當前字符串bp^在正常程序訓練集 BPa中字符串出現的次數C bp和文件出現的次數P bp,計算C bp/P _作為當前字符串 bpj勺權值ω,即定義提取的字符串為一個二元組〈bp u ω > ;
[0033] 步驟S16 :將字符串bpjl加到長度為L的字符串集合BPS沖,即BPS f {bpsL|bpsL=< bp L, ω > };
[0034] 步驟S17 :繼續從正常程序訓練集BPa選擇其他正常程序,重復步驟S21至步驟 S26,將字符串添加到長度為L的字符串集合BPS^中;
[0035] 步驟S18 :將字符串長度L取不同的值,重復步驟Sll至步驟S17,生成不同長度正 常程序字符串集合庫BPS,即BPS = BPS1U BPS2U BPS3 U…,其中下標用于標識字L取不 同值時所對應的正常程序字符串集合庫。
[0036] 具體的,在上述的步驟S2中,如圖3所示,提取程序特征向量,構建正常程序模型 的步驟包括:
[0037] 步驟S21 :從正常程序訓練集BPb中的一個正常程序bp依次提取字符串長度為L 的字符串bpy每次滑動一個字節;
[0038] 步驟S22 :計算字符串bp^在BPS中字符串長度為L的字符串集合BPS ^中出現的 次數與從正常程序bp中提取長度為L的字符串總數之比,作為bp的一維的特征值即L 的每個取值對應bp的一維特征值;
[0039] 步驟S23 :在字符串長度L的當前取值下,累加正常程序bp在BPS集合中出現的 字符串對應的字符串權值,其計算結果用I表示;
[0040] 步驟S24:字符串長度L取不同值,重復上述步驟,得到正常程序bp的多維特 征(維數取決于L的取值個數),從而得到一個表示正常程序bp的特征向量,即bp = < c2, (V> ;將正常程序bp在BPS出現的字符串權值的累加值除以系數δ (〇 < δ < 1) 作為正常程序bp的泛化值(假設L的取值個數為Ν,則每個正常程序的泛化值為:Ν個I 累加和除以S ),采用泛化值的方法可有效減少訓練用正常程序的數量;進一步地,如果前 述字符串權值越大,表明出現次數越多,正常程序也越多,則可以賦予一個較大的泛化值, 可代表更多未知的正常程序;
[0041] 步驟S25 :對正常程序訓練集BPb中的所有正常程序重復上述步驟,從而構建起正 常程序模型。
[0042] 具體的,在上述的步驟S3中,如圖4所示,生成檢測器的步驟包括:
[0043] 步驟S31 :隨機生成一個檢測器,生成檢測器的維數與步驟S2中所提取的正常程 序特征向量的維數一致;
[0044] 步驟S32 :計算隨機生成的檢測器與正常程序模型中向量的最短歐幾里德距離 dm