丁建偉,陳周國(guó),劉義銘
(中國(guó)電子科技集團(tuán)公司第三十研究所 保密通信重點(diǎn)實(shí)驗(yàn)室,四川 成都 610041)
近年來,隨著云計(jì)算、大數(shù)據(jù)等技術(shù)的發(fā)展以及互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的不斷完善,大量的惡意計(jì)算機(jī)程序、應(yīng)用、可執(zhí)行代碼等[1](以下統(tǒng)稱“惡意程序”)在互聯(lián)網(wǎng)間大肆傳播,用以破壞宿主計(jì)算機(jī)、非法收集敏感數(shù)據(jù)、非授權(quán)登錄等,給個(gè)人、企業(yè)以及政府部門帶來了極大的困擾。
根據(jù)國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心2018年發(fā)布的《互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢(shì)綜述》,中國(guó)全年計(jì)算機(jī)惡意程序傳播次數(shù)日均達(dá) 500 萬余次。根據(jù)全球第二大市場(chǎng)研究機(jī)構(gòu)的調(diào)研報(bào)告,超過90%網(wǎng)絡(luò)安全事件都涉及惡意軟件的傳播和影響。以“永恒之藍(lán)”勒索軟件的惡意傳播影響分析,僅2018年因惡意軟件引起的全球經(jīng)濟(jì)損失超過4 000億美元。面對(duì)日益增長(zhǎng)的惡意程序的威脅,學(xué)術(shù)界和產(chǎn)業(yè)界也開展了大量的惡意程序分析技術(shù)的研究和實(shí)踐。
當(dāng)前多數(shù)惡意程序分析方法是基于簽名特征的分析方法,通過搜索和匹配未知樣本中的特定模式、統(tǒng)計(jì)特征以及簽名特征等,實(shí)現(xiàn)惡意程序的分析檢測(cè)[2-3]。目前的反病毒軟件通過收集和分析大規(guī)模的惡意程序樣本的靜態(tài)特征,不斷更新自身的惡意程序特征庫(kù),實(shí)現(xiàn)惡意程序的檢測(cè)與防御。但是,隨著惡意程序的動(dòng)態(tài)快速增長(zhǎng),惡意程序分析中的網(wǎng)絡(luò)對(duì)抗也在不斷升級(jí),惡意程序的新型變種呈現(xiàn)爆發(fā)式增長(zhǎng),傳統(tǒng)以靜態(tài)特征匹配為基礎(chǔ)的惡意程序分析方法受到極大的挑戰(zhàn)[4-7]。
(1)加密、加殼、混淆等反分析、反編譯的網(wǎng)絡(luò)對(duì)抗技術(shù)不斷發(fā)展,使得惡意程序的新型變種、多態(tài)越來越難以分析和檢測(cè)。
(2)主流的惡意程序分析的靜態(tài)特征以操作系統(tǒng)的系統(tǒng)調(diào)用行為和應(yīng)用程序接口行為為主,涉及更多底層的原始操作行為,不能有效描繪。
(3)惡意程序特征庫(kù)的建模和抽取以及惡意程序分析的方法的模型訓(xùn)練時(shí)間很長(zhǎng),對(duì)于新的惡意程序需要提取新的惡意程序特征用以檢測(cè)。
針對(duì)以上惡意程序分析存在的調(diào)整,惡意程序分析從底層的惡意程序的本質(zhì)特性出發(fā),惡意程序基因技術(shù)被提出,用以應(yīng)對(duì)惡意程序的動(dòng)態(tài)快速增長(zhǎng)。惡意程序基因受到生物基因技術(shù)的啟發(fā),從計(jì)算機(jī)程序體系結(jié)構(gòu)入手,構(gòu)建不同惡意程序行為的靜態(tài)元素構(gòu)成的惡意行為的動(dòng)態(tài)特征表達(dá)。面對(duì)惡意程序底層的靜態(tài)元素如何形式化建模,成為后續(xù)惡意程序基因萃取的關(guān)鍵。本文提出了一種惡意程序基因形式化的方法,可以有效解決目前惡意程序基因分析中的相似度計(jì)算的難題,本文的主要貢獻(xiàn)有:(1)提出一種惡意程序基因的六元組形式化模型,能夠有效完整地表達(dá)惡意程序基因的語義和行為信息;(2)針對(duì)惡意程序基因的形式化模型,提出了一種惡意程序基因相似度度量的方法,能夠有效刻畫和計(jì)算不同惡意程序基因間的相似程度;(3)基于以上形式化的方法,提出了一種惡意程序的檢測(cè)方法,經(jīng)過樣本集合的對(duì)比測(cè)試,惡意程序基因的方法有更好的檢測(cè)分類結(jié)果。
生物基因是一段用于表達(dá)生物特性的脫氧核糖核苷酸分子(DNA)組合序列片段,其中DNA是四種基本的生物大分子。類比于生物基因,從惡意程序的底層匯編指令角度,惡意程序的單個(gè)匯編指令類比于生物的單個(gè)生物DNA;匯編指令的執(zhí)行序列類比于生物的DNA序列片段,用于語義表達(dá)惡意程序的行為或者功能。進(jìn)一步地,惡意程序基因,即惡意程序的執(zhí)行匯編指令序列的片段,對(duì)應(yīng)惡意程序的某種行為或者功能。
針對(duì)惡意程序的匯編指令、惡意程序匯編指令序列以及惡意程序基因,為了后續(xù)形式化描述的統(tǒng)一性,本文采用通用的符號(hào)約定。本文定義,惡意程序采用符號(hào)M表示,從匯編指令層級(jí),一個(gè)惡意程序的執(zhí)行邏輯是由一組匯編指令序列組合完成的。一個(gè)匯編指令通過訪問和改變計(jì)算機(jī)的內(nèi)存和中央處理器(CPU)來完成相應(yīng)基本功能。本文采用符號(hào)M、C和I分別表示計(jì)算機(jī)所有可能的內(nèi)存狀態(tài)、所有可能的CPU狀態(tài)以及所有的匯編指令。特別地,每個(gè)匯編指令包含基本的操作數(shù)和操作碼,一個(gè)匯編指令的執(zhí)行語義可以看作是計(jì)算機(jī)狀態(tài)的變換映射σ,即
σ:I×M×C→I×M×C
惡意程序的執(zhí)行邏輯由一組匯編指令執(zhí)行序列來表達(dá)語義,即M={i1,…,in},其中每一個(gè)匯編指令代表一個(gè)計(jì)算機(jī)狀態(tài)遷移映射,即σP(il,ml,cl)=(il+1,ml+1,cl+1)。進(jìn)一步,計(jì)算機(jī)程序執(zhí)行的匯編指令集合是一個(gè)有限集合,本文針對(duì)惡意程序匯編指令集合標(biāo)示唯一的整數(shù)編號(hào),采用符號(hào)1,…,I標(biāo)示。
進(jìn)一步地,每一個(gè)惡意程序M在執(zhí)行時(shí)對(duì)應(yīng)一個(gè)匯編指令序列,即M={i1,…,in},這個(gè)序列,本文類比為惡意程序的DNA序列。為了對(duì)比不同惡意程序的相似程度,需要度量不同惡意程序的DNA序列的相似度。類比生物基因,本文把匯編指令稱作惡意程序的DNA分子。為了有效度量惡意程序DNA序列相似度,本文針對(duì)匯編指令,即惡意程序的單個(gè)DNA分子進(jìn)行形式化建模。
計(jì)算兩個(gè)惡意程序DNA序列的相似度,首先需要確定DNA分子,即匯編指令間的相似度度量算法。本文采用符號(hào)ii表示第i(i=1,…,I)個(gè)惡意程序的DNA分子,利用六元組記錄一個(gè)匯編指令,即i=
根據(jù)匯編指令六元組
SimC=Similarity(
元素
表1 匯編指令六元組的形式化表示
SimB=Similarity(
SimS=Similarity(
根據(jù)匯編指令六元組
SimI=SimC×(λbSimB+λsSimS)
由于指令操作碼包含了最高程度的語義信息,因此SimC作為公式的乘法因子。同時(shí),公式需要滿足如下要求:
λb+λs=1,1≥SimC≥0,1≥SimB≥0,1≥SimS≥0
SimIE滿足1≥SimIE≥0,描述了兩條匯編指令間的語義、行為和結(jié)構(gòu)的歸一化相似度。
惡意程序DNA序列,即匯編指令序列相似度度量算法采用雙序列比對(duì)算法原理,計(jì)算兩個(gè)匯編指令流對(duì)應(yīng)的抽象編碼序列的歸一化相似度。雙序列比對(duì)算法一般使用動(dòng)態(tài)規(guī)劃方法,用來從兩個(gè)字符串或其他類似單元素序列中選出相似度最高的有序公共元素序列。
針對(duì)惡意程序DNA序列的相似度計(jì)算,假設(shè)有兩個(gè)長(zhǎng)度分別為N1和N2的指令序列,指令序號(hào)下標(biāo)從1開始。其中M1=(i1,1,i1,2,…,i1,N1),M2=(i2,1,i2,2,…,i2,N2),定義序列相似度SimI(i,j)表示序列1的前i條匯編指令和序列2的前j條匯編指令的序列相似度,其計(jì)算公式如下:
SimIES(i,0)=0, 0
(1)
SimIES(0,j)=0, 0 (2) SimIES(i,j)= 0 0 (3) SimI(i,j)是對(duì)兩個(gè)惡意程序DNA序列的非歸一化全局序列相似度。為了對(duì)相似度進(jìn)行歸一化表示,并且能夠計(jì)算兩個(gè)惡意程序DNA序列的局部序列相似度。定義歸一化的局部子序列相似度SimI(i1,i2,j1,j2)用以表示局部子序列(i1,i1,…,i1,j1)和局部子序列(i2,i2,…,i2,j2)的歸一化相似度,其計(jì)算公式如下: cmpSimI(i1,i2,j1,j2)=SimI(i2,j2)-SimI(i1-1,j1-1) (4) MaxIESLen(i1,i2,j1,j2)=max(i2-i1+1,j2-j1+1) (5) (6) 其中,公式(4)計(jì)算了兩個(gè)局部序列的非歸一化相似度,公式(5)則選出了兩個(gè)局部序列中最長(zhǎng)的長(zhǎng)度,通過公式(6)計(jì)算的局部子序列相似度可以保證歸一化。要計(jì)算兩條指令序列的歸一化全局相似度,只需要計(jì)算SimI(1,N1,1,N2)即可。 根據(jù)SimI(i,j)計(jì)算公式可以繪制一個(gè)二維矩陣,i,j分別表示兩個(gè)序列中匯編指令的下標(biāo)。以N1=N2=3的兩個(gè)惡意程序DNA序列為例,繪制的二維矩陣如圖1所示。矩陣中每個(gè)單元格中,箭頭表示局部路徑繼承選擇方向,右下角的數(shù)值代表最大相似度SimI(i,j),淺灰格表示選定的子序列路徑,深灰格表示選定的i。以圖1為例,兩條匯編指令流的相似度為: 圖1 序列相似度比對(duì)矩陣示意圖 本文針對(duì)一個(gè)惡意程序樣本的樣本集合,可以通過提取每個(gè)惡意程序運(yùn)行時(shí)對(duì)應(yīng)的匯編指令流序列i(即惡意程序DNA序列)。 一個(gè)惡意程序集合包含N個(gè)惡意程序樣本,每個(gè)惡意程序?qū)?yīng)一個(gè)惡意程序DNA序列。因此,該惡意程序樣本集合對(duì)應(yīng)一個(gè)惡意程序的DNA序列集合,表示為i∈IN×Q,其中表示有N個(gè)惡意程序DNA序列,每個(gè)DNA序列長(zhǎng)度為Q,因?yàn)镈NA序列長(zhǎng)度是不定長(zhǎng)度的,為了建模方便,統(tǒng)一為相同長(zhǎng)度。 如圖2所示,根據(jù)惡意程序基因的定義,惡意程序基因是具有相同行為或者功能的惡意程序DNA序列片段。 圖2 惡意程序基因提取示意圖 針對(duì)每一類惡意程序DNA行為序列,目標(biāo)是提取每一類惡意程序DNA序列集合中K個(gè)相同的平凡子序列片段,即提取一個(gè)長(zhǎng)度為L(zhǎng)(L?Q)的惡意程序DNA序列片段,即惡意程序基因序列,表示為GK×L。不同長(zhǎng)度的序列之間的距離采用如下公式計(jì)算: (7) 其中Mn,k表示第n個(gè)惡意程序DNA序列與第k個(gè)惡意程序基因的距離,J=:Q-L+1。因此對(duì)于惡意程序基因序列的提取,轉(zhuǎn)化成對(duì)于k個(gè)平凡子序列的計(jì)算,即: (8) 針對(duì)一組惡意程序的DNA序列組合,計(jì)算不同DNA序列之間的最長(zhǎng)的平凡子序列(相同攻擊行為基因),本項(xiàng)目采用最優(yōu)化的方式,計(jì)算得到最優(yōu)的惡意程序基因信息,計(jì)算公式如下: (9) 計(jì)算Fn針對(duì)變量W的偏微分使其等于0,即: 通過計(jì)算具有相同功能或者行為的惡意程序的DNA序列中相同的DNA序列片段,用于語義表達(dá)攻擊行為,同時(shí)通過映射能夠定位具體的攻擊行為的匯編指令的位置、調(diào)用參數(shù)等,便于后續(xù)分析。 本文將惡意程序基因的提取方法應(yīng)用到惡意程序的分類,與現(xiàn)有主流方法的分類結(jié)果作對(duì)比。本文采用的數(shù)據(jù)樣本是惡意程序樣本集合,一共包含惡意程序1 014例,被分為8類族群。 在實(shí)驗(yàn)中,本文采用了三種主流的分類方法作為基線對(duì)比方法: (1)HMM方法[8]:采用隱馬爾可夫模型作用于惡意程序樣本的系統(tǒng)調(diào)用圖上,利用識(shí)別惡意程序不同行為的系統(tǒng)調(diào)用子圖識(shí)別和檢測(cè)不同類型的惡意程序。 (2)N-GRAM方法[9]:采用N-GRAM方法作用于惡意程序樣本的系統(tǒng)調(diào)用圖,利用識(shí)別N-GRAM的系統(tǒng)調(diào)用關(guān)系圖,用以識(shí)別和檢測(cè)不同類型的惡意程序。 (3)DTW-SVM方法:采用動(dòng)態(tài)時(shí)間游走(DTW)計(jì)算兩個(gè)惡意程序DNA序列的相似度;采用支持向量機(jī)分類方法識(shí)別與檢測(cè)不同類型的惡意程序樣本。 實(shí)驗(yàn)采用交叉驗(yàn)證,隨機(jī)抽取80%的惡意程序樣本用以訓(xùn)練,20%的惡意程序樣本用以測(cè)試,反復(fù)訓(xùn)練與測(cè)試100次,計(jì)算平均的準(zhǔn)確率(precision)、召回率(recall)以及F值(F-measure)用以評(píng)測(cè)方法,其中F值的計(jì)算是準(zhǔn)確率與召回率的調(diào)和平均數(shù),即: (10) 實(shí)驗(yàn)結(jié)果如圖3所示,利用文本的MGeT方法在所有的評(píng)價(jià)參數(shù)上都取得了最優(yōu)的結(jié)果。 圖3 實(shí)驗(yàn)結(jié)果 進(jìn)一步分析實(shí)驗(yàn)結(jié)果,分別采取20%、40%、60%以及80%的惡意程序樣本數(shù)據(jù)規(guī)模,本文提出的惡意程序基因的形式化方法有較強(qiáng)的魯棒性,能夠提高惡意程序分類和檢測(cè)效率。 本文從惡意程序的底層匯編指令入手,借鑒生物基因的提取思路,從操作語義、行為語義、結(jié)構(gòu)語義三個(gè)維度形式化定義了單個(gè)匯編指令的形式化信息。進(jìn)一步,采用序列匹配的建模方法,將惡意程序基因的形式化轉(zhuǎn)化為惡意程序DNA序列的最平凡子序列的提取問題,通過剪枝的方法,實(shí)現(xiàn)不同行為或者功能的惡意程序基因的快速提取與形式化描述。通過實(shí)驗(yàn)證明,利用惡意程序基因的手段,能夠很好地反映惡意程序的分類語義信息,提高惡意程序的識(shí)別效率。本文下一步的工作包括惡意程序基因的深度分類學(xué)習(xí)、惡意程序基因的語義映射、惡意程序追蹤分析等。2 惡意程序基因形式化
2.1 惡意程序集合形式化
2.2 惡意程序基因形式化問題描述
2.3 惡意程序基因形式化推導(dǎo)
3 實(shí)驗(yàn)分析
3.1 對(duì)比方法
3.2 實(shí)驗(yàn)結(jié)果分析
4 結(jié)論