本發(fā)明涉及惡意程序檢測領(lǐng)域,尤其是涉及一種惡意程序分析方法。
背景技術(shù):
傳統(tǒng)惡意程序分析方法,作為傳統(tǒng)軟件惡意行為檢測技術(shù)的核心技術(shù),主要包括程序惡意行為檢測、文件特征和行為特征比對等方法,存在匯編指令級信息缺失,難以有效檢測軟件中隱藏的惡意行為,無法有效應(yīng)對惡意程序不斷采用新的混淆和隱藏技術(shù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于:針對現(xiàn)有技術(shù)存在的問題,提供一種惡意程序分析方法,解決傳統(tǒng)方法難以有效檢測軟件中隱藏的惡意行為的問題。
本發(fā)明的發(fā)明目的通過以下技術(shù)方案來實(shí)現(xiàn):一種惡意程序分析方法,該方法包括步驟:(1)將惡意程序樣本庫映射為一個(gè)以惡意程序基因?yàn)樽钚卧膼阂獬绦蚧驇欤?2)利用惡意程序基因庫進(jìn)行惡意程序分析。
作為進(jìn)一步的技術(shù)方案,將惡意程序樣本庫映射為惡意程序基因庫的方法為:基于每個(gè)惡意程序運(yùn)行時(shí)的匯編指令流,提取其中的關(guān)鍵匯編指令流片段,并建立關(guān)鍵匯編指令流片段與惡意行為的語義映射。
作為進(jìn)一步的技術(shù)方案,建立關(guān)鍵匯編指令流片段與惡意行為的語義映射的方法包括步驟:1)建立匯編指令流IS=I0,I1,...,IN中的任意匯編指令I(lǐng)進(jìn)行抽象描述的映射關(guān)系I→ID;2)形式化惡意程序運(yùn)行時(shí)的匯編指令流序列,將匯編指令流序列IS=I0,I1,...,IN映射為序列IDS=ID0,ID1,...,IDN;3)將惡意程序的樣本集合中所有的惡意程序均執(zhí)行步驟1)和步驟2),得到一個(gè)惡意程序的DNA行為序列集合,同時(shí)每個(gè)惡意程序DNA行為序列對應(yīng)不同的惡意程序分類;4)針對每一類惡意程序DNA行為序列,提取每一類惡意程序DNA序列集合中K個(gè)相同的平凡子序列片段;5)計(jì)算得到最優(yōu)的惡意程序基因信息。
作為進(jìn)一步的技術(shù)方案,步驟1)中,ID為六元組<C,OP,F(xiàn),WR,d,t>,其中,C是描述指令操作碼屬性的三元組C=<c,m>,c表示指令的操作碼,m表示指令的操作模式;OP是描述指令操作數(shù)的多元組OP=<n,op1,...,opn>,n表示指令的操作數(shù)個(gè)數(shù),opi指向指令的第i個(gè)操作數(shù);F是描述指令對標(biāo)志寄存器置位的九元組F=<cf,pf,af,zf,sf,tf,if,df,of>,分別對應(yīng)9個(gè)標(biāo)志寄存器;WR是描述指令的內(nèi)存和寄存器讀寫狀態(tài)的三元組WR=<wrr,wrm,rm>,wrr表示指令是否有寄存器讀寫,wrm表示指令是否有內(nèi)存讀寫,rm表示指令對內(nèi)存讀寫的區(qū)間;d描述指令的循環(huán)嵌套深度;t描述指令在代碼中位置的時(shí)間戳。
作為進(jìn)一步的技術(shù)方案,步驟2)中還包括步驟:定義兩個(gè)ID間相似度SimID的計(jì)算公式:SimID=SimC*(λbSimB+λsSimS),根據(jù)六元組<C,OP,F(xiàn),WR,d,t>,其中SimC表示兩個(gè)ID間的指令語義相似度,即<C,OP>的相似度;SimB表示兩個(gè)ID間的行為相似度,即<F,WR>的相似度,SimS表示兩個(gè)ID間的結(jié)構(gòu)相似度,即<d,t>的相似度;同時(shí),公式需要滿足如下要求:
λb+λs=1,1≥SimC≥0,1≥SimB≥0,1≥SimS≥0。
作為進(jìn)一步的技術(shù)方案,步驟5)中,計(jì)算得到最優(yōu)的惡意程序基因信息的公式:其中,參數(shù)πw表示閾值設(shè)定。
作為進(jìn)一步的技術(shù)方案,利用梯度下降法求解公式第n個(gè)最優(yōu)化公式
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
1、本發(fā)明能夠從底層有效語義刻畫惡意程序的惡意行為,從而提高惡意程序分析和檢測的匹配準(zhǔn)確率。
2、本發(fā)明能夠有效克服代碼層級的加殼、加密、多態(tài)等技術(shù),從而能夠有效應(yīng)對未知惡意程序的快速動態(tài)增長。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
實(shí)施例
本發(fā)明是基于惡意程序運(yùn)行時(shí)的匯編指令流,提取其中的關(guān)鍵匯編指令流片段,并建立其與惡意行為的語義映射。具體包括以下步驟:
第一步,針對每一個(gè)匯編指令,設(shè)計(jì)將指令流IS=I0,I1,...,IN中的任意匯編指令I(lǐng)進(jìn)行抽象描述的映射關(guān)系I→ID。其中,ID為六元組<C,OP,F(xiàn),WR,d,t>。其中,C是描述指令操作碼屬性的三元組C=<c,m>,c表示指令的操作碼,m表示指令的操作模式,包括讀寫賦值、邏輯運(yùn)算、算術(shù)運(yùn)算、控制跳轉(zhuǎn)、函數(shù)調(diào)用等;OP是描述指令操作數(shù)的多元組OP=<n,op1,...,opn>,n表示指令的操作數(shù)個(gè)數(shù)(包括隱含操作數(shù)),opi指向指令的第i個(gè)操作數(shù);F是描述指令對標(biāo)志寄存器置位的九元組F=<cf,pf,af,zf,sf,tf,if,df,of>,分別對應(yīng)9個(gè)標(biāo)志寄存器;WR是描述指令的內(nèi)存和寄存器讀寫狀態(tài)的三元組WR=<wrr,wrm,rm>,wrr表示指令是否有寄存器讀寫,wrm表示指令是否有內(nèi)存讀寫,rm表示指令對內(nèi)存讀寫的區(qū)間,包括棧、堆、代碼段等;d描述指令的循環(huán)嵌套深度;t描述指令在代碼中位置的時(shí)間戳。
第二步,形式化惡意程序運(yùn)行時(shí)的匯編指令流序列。通過I→ID的映射關(guān)系,將指令流序列IS=I0,I1,...,IN映射為序列IDS=ID0,ID1,...,IDN,視為對程序從初始指令I(lǐng)0出發(fā)的指令執(zhí)行路徑的序列的抽象描述,抽象的正確性有語義包容來保證。IDS是通過六元組ID=<C,OP,F(xiàn),WR,d,t>描述的匯編指令流序列,即IDS=ID0,ID1,...,IDN。為針對IDS進(jìn)行序列比對,首先需要定義兩個(gè)ID間相似度SimID的計(jì)算公式:
SimID=SimC*(λbSimB+λsSimS)
根據(jù)六元組<C,OP,F(xiàn),WR,d,t>,其中SimC表示兩個(gè)ID間的指令語義相似度,即<C,OP>的相似度;SimB表示兩個(gè)ID間的行為相似度,即<F,WR>的相似度,SimS表示兩個(gè)ID間的結(jié)構(gòu)相似度,即<d,t>的相似度。由于指令操作碼包含了最高程度的語義信息,因此Simc作為公式的乘法因子。同時(shí),公式需要滿足如下要求:
λb+λs=1,1≥SimC≥0,1≥SimB≥0,1≥SimS≥0
因此SimID滿足1≥SimID≥0,描述了兩個(gè)ID間的語義、行為和結(jié)構(gòu)的歸一化相似度。
第三步,定義惡意程序的DNA行為序列集合。針對一個(gè)惡意程序的樣本集合,我們可以通過提取每個(gè)惡意程序運(yùn)行的匯編指令流序列IDS(即惡意程序的DNA行為序列)。因此,該惡意程序樣本集合對應(yīng)一個(gè)惡意程序的DNA行為序列集合,表示為IDS∈IN×Q,其中表示有N條惡意程序DNA行為序列,每個(gè)DNA序列長度為Q(DNA序列長度是不定長度的,為了建模方便,我們統(tǒng)一為相同長度)。同時(shí)每個(gè)惡意程序DNA行為序列對應(yīng)不同的惡意程序分類,即該惡意程序樣本集合有一個(gè)標(biāo)簽向量Y∈{1,...,C}N,其中惡意程序表示有C個(gè)分類。
第四步,針對每一類惡意程序DNA行為序列,我們的目標(biāo)是提取每一類惡意程序DNA序列集合中K個(gè)相同的平凡子序列片段,即提取一個(gè)長度為L(L<<Q)的惡意程序DNA序列片段,即惡意程序基因序列,表示為GK×L。不同長度的序列之間的距離采用如下公式計(jì)算:
其中Mn,k表示第n個(gè)惡意程序DNA序列與第k個(gè)惡意程序基因的距離,下標(biāo)表示中j(j=1,...,J;J=:Q-L+1)。因此對于惡意程序基因序列的提取,轉(zhuǎn)化成對于k個(gè)平凡子序列的計(jì)算,即:
第五步,采用最優(yōu)化的方式,計(jì)算得到最優(yōu)的惡意程序基因信息,計(jì)算公式如下:
對于每個(gè)每個(gè)子序列的距離與計(jì)算的距離之間采用logistics回歸模型計(jì)算得到,即其中參數(shù)πw表示閾值設(shè)定。
第六步,利用梯度下降法求解公式第n(n=1,...,N)個(gè)最優(yōu)化公式計(jì)算Fn針對變量Gk,l的偏微分使其等于0,即:
其中,Mn,k作為一種不可微的公式,可以作近似計(jì)算,即因此上述的偏分計(jì)算得到如下的結(jié)果:
第七步,計(jì)算計(jì)算Fn針對變量W的偏微分使其等于0,即:
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,應(yīng)當(dāng)指出的是,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。