專利名稱:確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)反惡意程序類軟件領(lǐng)域,尤其涉及一種確定計(jì) 算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)和方法。
背景技術(shù):
目前,計(jì)算機(jī)反惡意程序軟件對(duì)惡意程序文件處理的基本原理 是首先對(duì)可疑文件進(jìn)行鑒定,判定其屬于正常程序或者惡意程序; 對(duì)確認(rèn)為惡意程序的樣本文件分家族,然后分析同家族惡意程序的特 性,提取其"通殺"特征;剩余無(wú)法提取"通殺"特征的樣本提取"自 動(dòng)"特征,生成相應(yīng)的惡意程序特征庫(kù)。根據(jù)所生成的惡意程序特征 庫(kù),計(jì)算機(jī)反惡意程序軟件掃描客戶端計(jì)算機(jī)中的文件,并判斷每個(gè) 文件是否與特征庫(kù)中的惡意程序特征相匹配,如果匹配則為惡意程 序。這里,"同家族惡意程序"指?jìng)鞑ネ緩?、功能、?nèi)容或行為相同 或相似的惡意程序集合;"通殺"特征指能夠匹配同家族所有惡意程 序的特征;"自動(dòng)"特征指匹配單一惡意程序的二進(jìn)制特征。通常, 一個(gè)"通殺"特征能査殺的惡意程序要遠(yuǎn)高于一個(gè)"自動(dòng)"特征所能 匹配的惡意程序。
隨著計(jì)算機(jī)技術(shù)的發(fā)展和軟件的多樣性,惡意代碼的數(shù)量急劇增 長(zhǎng),惡意代碼的種類也呈現(xiàn)多樣化發(fā)展的態(tài)勢(shì)。但是,這些新出現(xiàn)的 惡意代碼并不是完全沒有共性有部分惡意程序是在原有代碼基礎(chǔ)上 修改生成的,病毒作者根據(jù)原有惡意程序的源代碼,為了繞過(guò)反惡意 程序軟件的査殺(即"免殺"),在其基礎(chǔ)上做出了一定的修改;而 且這些新生成的惡意程序之間也是具有共性的。如果能將惡意程序快 速、準(zhǔn)確地進(jìn)行分類(分家族),將極大地提高計(jì)算機(jī)反惡意程序軟件處理這些新惡意程序的效率,從而縮短對(duì)新惡意程序的處理時(shí)間, 同時(shí)有利于提高每個(gè)特征的查殺能力,從而縮小惡意特征庫(kù)的大小。
對(duì)于計(jì)算機(jī)反惡意程序軟件廠商所收集的惡意程序樣本集中到 底有多少個(gè)家族,不同的反惡意程序軟件給出的結(jié)果各不相同,要對(duì) 惡意程序正確分類和處理,首先必須正確確定惡意程序家族數(shù)。因此, 惡意程序家族數(shù)的確定成為計(jì)算機(jī)反惡意程序軟件在計(jì)算機(jī)惡意程 序處理領(lǐng)域中的重要內(nèi)容。
近年來(lái),數(shù)據(jù)挖掘技術(shù)的不斷發(fā)展在一定程度上解決了人們處理
海量數(shù)據(jù)的難題。數(shù)據(jù)挖掘就是從大量、不完全、有噪聲、模糊和隨 機(jī)的應(yīng)用數(shù)據(jù)中抽取隱含在其中人們事先不知道,但又是潛在有價(jià)值 的信息和知識(shí)(模型或規(guī)則)的過(guò)程。聚類算法是數(shù)據(jù)挖掘領(lǐng)域研究 最廣泛的問題之一。聚類分析是把相似的目標(biāo)歸類的過(guò)程,其目的在 于把目標(biāo)對(duì)象劃分為一系列有意義的組(或稱類),使得每個(gè)組中的目 標(biāo)盡量"相似"或"接近",而不同組的目標(biāo)盡可能"相異"或"遠(yuǎn) 離"。把數(shù)據(jù)挖掘技術(shù)中的聚類算法應(yīng)用于計(jì)算機(jī)反惡意程序類軟件 中,可以把具有共性的同家族惡意程序分成一類,同時(shí)把差異較大的 惡意程序區(qū)分開來(lái)。但對(duì)于給定的惡意樣本集,到底該分成多少家族 是聚類分析的關(guān)鍵問題之一。
發(fā)明內(nèi)容
針對(duì)該問題,本發(fā)明提出基于數(shù)據(jù)挖掘技術(shù)的凝聚型層次聚類方 法的V^s聚類有效性指標(biāo)來(lái)自動(dòng)確定惡意程序家族數(shù),同時(shí)最大可 能地將同家族的惡意程序分成一個(gè)家族,而將差異較大的惡意程序區(qū) 分開來(lái)。本發(fā)明的第一 目的是提出一種確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)。
本發(fā)明的第二目的是提供一種使用上述系統(tǒng)確定計(jì)算機(jī)惡意程 序樣本家族數(shù)的方法。
為了實(shí)現(xiàn)上述第一目的,本發(fā)明采用如下技術(shù)方案 確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng),其包括 惡意程序樣本特征提取模塊,其提取惡意程序樣本的特征并通過(guò)
下述惡意程序樣本距離計(jì)算模塊計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,
得到距離矩陣D。
惡意程序樣本距離計(jì)算模塊,其對(duì)不同的惡意程序樣本特征采用 不同的計(jì)算公式,計(jì)算惡意程序樣本間的距離。
家族間距離計(jì)算模塊,其計(jì)算兩個(gè)家族之間的距離,計(jì)算公式為
'^^U^(W)公式(3);
在公式(3)中,DKL表示家族K與家族L間的距離,氛Y》表示 分別位于家族K與家族L的兩個(gè)惡意程序Xi和Yj特征之間的距離, Xi和Yj分別表示第L族中的第i個(gè)樣本和第K族中的第j個(gè)樣本,CK 表示家族K, Nk表示家族K中惡意程序樣本的個(gè)數(shù),Cl表示家族L, 隊(duì)表示家族L中惡意程序樣本的個(gè)數(shù)。
惡意程序樣本聚類模塊,逐層對(duì)惡意程序樣本進(jìn)行聚類(家族),
并根據(jù)下述V,計(jì)算模塊計(jì)算每層聚類結(jié)果(分家族結(jié)果)的Vwfs;
V^計(jì)算模塊,其計(jì)算每層分家族結(jié)果的VNFS,計(jì)算公式為 <formula>formula see original document page 9</formula>
公式(4);
在公式(4)中,c代表家族數(shù),m是家族i包含的樣本數(shù),xik是家族i的第k個(gè)樣本,是家族i的中心點(diǎn),Vi表示與該家族中所有 樣本點(diǎn)距離和最小的樣本點(diǎn)(惡意程序樣本),Vi的計(jì)算公式為
v/={^l Si^I] )2,%e。} 公式(5);
在公式(5)中,j^表示家族i中的第k個(gè)樣本,、表示家族i中 的第j個(gè)樣本,(^- )表示,樣本&與樣本、的距離,^表示家 族i中的樣本總數(shù);
是整個(gè)數(shù)據(jù)集的全局中心點(diǎn),7表示與全局所有樣本點(diǎn)距離和最 小的樣本點(diǎn),7的計(jì)算公式為
在公式(6)中,^表示全局的第k個(gè)樣本,、表示全局的第j個(gè)樣 本,n表示全局樣本的總數(shù)。
為了實(shí)現(xiàn)上述第二目的,本發(fā)明采用如下技術(shù)方案 使用上述系統(tǒng)確定計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其包括如
下步驟
第一步、惡意程序樣本數(shù)據(jù)處理
根據(jù)惡意程序樣本特征提取模塊提取惡意程序樣本的特征,初始 時(shí)將每個(gè)惡意程序樣本作為一個(gè)家族,并由惡意程序樣本距離計(jì)算模 塊采用合適的距離度量方法來(lái)計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得 到距離矩陣D,矩陣D中的每個(gè)元素代表兩兩家族之間的距離;
第二步、對(duì)惡意程序樣本進(jìn)行聚類,并計(jì)算各個(gè)聚類結(jié)果的VNFS: 當(dāng)家族數(shù)大于用戶設(shè)定值U時(shí),循環(huán)以下操作① 查找距離矩陣D,合并距離最近的兩個(gè)家族Cl和C2,得 到包含IC1I+IC21個(gè)樣本的新家族C;
② 家族間距離計(jì)算模塊根據(jù)公式(3)計(jì)算新家族C到其他 家族的距離;
③ 更新距離矩陣D,刪除與Cl和C2有關(guān)的距離,添加新 家族C到其他家族的距離。
VNFs計(jì)算模塊根據(jù)公式(4) 、 (5) 、 (6)計(jì)算當(dāng)前 層分家族結(jié)果的VNFS;
第三步、通過(guò)比較各個(gè)層次的V^s值,找到Vnfs値最小屋的分 家族結(jié)果,即可得到最優(yōu)家族個(gè)數(shù)。
聚類是將物理或抽象對(duì)象的集合分成相似的對(duì)象類的過(guò)程。簇是
數(shù)據(jù)對(duì)象的集合,這些對(duì)象與同一個(gè)簇中的對(duì)象彼此相似,而與其他
簇中的對(duì)象相異。本發(fā)明中,惡意程序的一個(gè)"家族"可以被看成是
一個(gè)"簇"。本發(fā)明中對(duì)樣本對(duì)象的聚類過(guò)程,即對(duì)惡意程序的分家
族過(guò)程采用的基本方法為將每個(gè)惡意程序樣本各自作為一個(gè)原子
簇,然后對(duì)這些原子簇逐層進(jìn)行聚合,直至滿足一定的終止條件(用
戶設(shè)定的最小家族數(shù)u或者l)。該方法稱為"凝聚型層次聚類"方法。
而如何選擇一個(gè)最佳的聚類數(shù)目,即對(duì)于給定的惡意樣本集,到底該
分成多少類本發(fā)明中采用聚類有效性指標(biāo)V^s進(jìn)行評(píng)價(jià),并最終得到
最佳的分家族數(shù)量。
圖1為本發(fā)明確定計(jì)算機(jī)惡意程序樣本家族數(shù)方法的流程簡(jiǎn)圖。
具體實(shí)施方式
確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng),其包括 惡意程序樣本特征提取模塊,其提取惡意程序樣本的特征并通過(guò) 下述惡意程序樣本距離計(jì)算模塊計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離, 得到距離矩陣D。惡意程序樣本的特征可以采用多種表征方式,如
基于N-Grams的字節(jié)內(nèi)容,Windows API序列,指令頻度等。
a) 基于N-Grams的字節(jié)內(nèi)容N-Grams指的是可執(zhí)行文件中的n 個(gè)連續(xù)字節(jié)子的序列。例如,串"text"可以由以下N-Grams組成
bi國(guó)grams: _T, TE, EX, XT, T一
tri腸grams: —TE, TEX, EXT, XT_, T—
quad-grams: 一TEX, TEXT, EXT一, XT_ —, T___
提取完N-Grams后,統(tǒng)計(jì)每個(gè)N-Grams出現(xiàn)的頻度,并以此
作為該惡意程序樣本的特征表征。
b) Windows API序列PE文件是微軟Windows操作系統(tǒng)上的 程序文件。Windows API序列是以PE文件對(duì)Win API函數(shù)調(diào)用的靜 態(tài)分析為基礎(chǔ),對(duì)樣本提取其所調(diào)用的Win API函數(shù)序列作為特征。
c) 指令頻度將惡意程序樣本反匯編,過(guò)濾可識(shí)別的庫(kù)代碼,然 后提取樣本的匯編指令,統(tǒng)計(jì)每個(gè)指令出現(xiàn)的頻度,構(gòu)造指令頻度向 量來(lái)表征惡意程序樣本。
除了適用于一般的惡意程序樣本集,也適用于復(fù)雜的惡意程序樣 本集
家族大小不一致在一個(gè)數(shù)據(jù)集里不同家族包含的樣本數(shù)差異較 大,例如,家族Trojan.Win32.Genetik包含300樣本,而家族 Win32.Hack.PcClient僅包含40個(gè)樣本。
形狀不規(guī)則數(shù)據(jù)集的空間分布可能構(gòu)成各種形狀。對(duì)于規(guī)則的 球形,橢球形,大部分聚類有效性指標(biāo)都能很好地描述聚類,正確確 定家族數(shù);但當(dāng)聚類的形狀不規(guī)則,很多聚類指標(biāo)就失效了。本發(fā)明提出的V^s聚類有效性指標(biāo)能很好處理形狀不規(guī)則的情況。
家族密度差異大不同家族的樣本在空間分布的密度不均勻的情況。
惡意程序樣本距離計(jì)算模塊,其對(duì)不同的惡意程序樣本特征采用 不同的計(jì)算公式,計(jì)算惡意程序樣本間的距離。針對(duì)指令頻度和 N-Grams兩種特征表征方式采用cosine距離度量;針對(duì)API序列特 征表征方式采用Jaccard距離度量,來(lái)計(jì)算每?jī)蓚€(gè)惡意程序樣本間的 距離,得到距離矩陣D。給定N個(gè)惡意程序樣本,其距離矩陣D就 是一個(gè)非負(fù)實(shí)數(shù)作為元素的NXN (N為惡意程序樣本總數(shù))的對(duì)稱 矩陣,矩陣中的每個(gè)元素代表兩兩家族之間的距離。
兩個(gè)樣本特征jc,和^的Cosine距離定義如下
&=r^7公式(1)
其中,分子表示兩個(gè)樣本特征向量的內(nèi)積,分母表示兩個(gè)樣本特征向 量長(zhǎng)度的乘積。在公式(1)中,《表示向量A的轉(zhuǎn)置,x'和^分別 表示第i個(gè)樣本的特征向量和第j個(gè)樣本的特征向量,^表示兩個(gè)樣 本間的距離。例如,向量^' = [1,0, 0, l],向量、二[1, 1,0, l],其Cosine 距離為
(1*1+0*1+0*0+1*1) / (V(i2 +02 +02 +12)*力2 +12 +02 +12))= 2/(々*西=0.82。
*兩個(gè)樣本特征x,.和^的Jaccard距離定義如下 J畫W-^+^。 公式(2)
其中,分子表示兩個(gè)樣本特征相異部分的長(zhǎng)度,分母表示兩個(gè)樣 本特征的總長(zhǎng)度。在公式(2)中,^表示向量《維度為0而向量、維 度為1的維度和,Ml。向量《維度為l而向量、維度為0的維度和,表示向量^和向量^維度均為1的維度和,Jaccard表示兩個(gè)樣本間 的距離。例如,向量《=[1,0,0,1],向量~=[1,1,0,1],其Jaccard 距離為(1+0) / (1+0+2) 二O. 33。
家族間距離計(jì)算模塊,其計(jì)算兩個(gè)家族之間的距離,計(jì)算公式為
&=^i:《i^^ )公式(3);
在公式(3)中,Da表示家族K與家族L間的距離,WXi,Yj)表示分別 位于家族K與家族L的兩個(gè)惡意程序Xi和Yj特征之間的距離,Xi和 Yj分別表示家族L中的第i個(gè)樣本和家族K中的第j個(gè)樣本,Ck表示 家族K, nk表示家族K中惡意程序樣本的個(gè)數(shù),a表示家族L,隊(duì)表示 家族L中惡意程序樣本的個(gè)數(shù)。
惡意程序樣本聚類模塊,采用逐層對(duì)惡意程序樣本進(jìn)行聚類,并 根據(jù)V^計(jì)算模塊計(jì)算每層聚類結(jié)果的VNFS; V^計(jì)算模塊,其計(jì)算每層分家族結(jié)果的V,,計(jì)算公式為
c 2 c ii _||2
F鵬=- = X S - v, I - Z卜,-v * (", -1) ,一
'=i "i w 公式(4);
在公式(4)中,c代表家族數(shù),ni是家族i包含的樣本數(shù),xik 是家族i的第k個(gè)樣本,Vi是家族i的中心點(diǎn),Vi的計(jì)算公式為
v,={^j EiiaZ!— )2,& e。}公式(5);
4=1""/^ 乂=1
在公式(5)中,^表示家族i中的第k個(gè)樣本,々表示家族i中
的第j個(gè)樣本, .)表示樣本Xw與樣本 .的距離,n。表示家族i
中的樣本總數(shù);公式(5)的含義是,家族i的中心點(diǎn)Vi是指距離家 族內(nèi)所有樣本點(diǎn)的距離之和最小的樣本點(diǎn)。7是整個(gè)數(shù)據(jù)集的全局中心點(diǎn),F(xiàn)的計(jì)算公式為
<formula>formula see original document page 15</formula>公式(6);
在公式(6)中,^表示全局的第k個(gè)樣本,^表示全局的第j個(gè)樣 本,n表示全局樣本的總數(shù)。公式(6)的含義是,整個(gè)數(shù)據(jù)集的全 局中心點(diǎn)7是指距離全局所有樣本點(diǎn)的距離之和最小的樣本。
參見圖l,為本發(fā)明方法的流程圖,本發(fā)明計(jì)算機(jī)惡意程序樣本 家族數(shù)的方法具體包括如下步驟
第一步、惡意程序樣本數(shù)據(jù)處理
根據(jù)惡意程序樣本特征提取模塊提取惡意程序樣本的特征,初始 時(shí)將每個(gè)惡意程序樣本作為一個(gè)家族,并由惡意程序樣本距離計(jì)算模 塊采用合適的距離度量方法來(lái)計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得 到距離矩陣D,矩陣D中的每個(gè)元素代表兩兩家族之間的距離(在初 始時(shí),矩陣D中的每個(gè)元素代表兩兩樣本之間的距離)。本發(fā)明中根 據(jù)不同的特征表征采用不同的聚類度量方法。針對(duì)指令頻度和 N-Grams采用cosine距離度量;針對(duì)API序列采用Jaccard距離度量, 來(lái)計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得到距離矩陣D。 cosine距離 度量公式為上述公式(1) , Jaccard距離度量公式為上述公式(2)。 第二步、采用"凝聚型層次聚類"構(gòu)造層次樹對(duì)惡意程序樣本進(jìn)行聚
類,并計(jì)算各層聚類結(jié)果的聚類有效性指標(biāo)VwFs。
當(dāng)家族數(shù)大于用戶設(shè)定值u(ii大于或等于1,如果用戶未設(shè)定該值11, 則u值取l)時(shí),循環(huán)以下操作
①查找距離矩陣D,合并距離最近的兩個(gè)家族Cl和C2,得 到包含1C1I+IC21個(gè)樣本的新家族C;② 家族間距離計(jì)算模塊根據(jù)公式(3)計(jì)算新家族C到其他 家族的距離;
③ 更新距離矩陣D,冊(cè)U除與Cl和C2有關(guān)的距離,添加新 家族C到其他家族的距離;
VNFs計(jì)算模塊根據(jù)公式(4) 、 (5) 、 (6)計(jì)算當(dāng)前 層分家族結(jié)果的VNFS。
第三步、通過(guò)比較各個(gè)層次的ls值,找到Vg值最小層的分家族結(jié)果, 即可得到最優(yōu)家族個(gè)數(shù)。
第四步、按照最優(yōu)的歸類結(jié)果,對(duì)每個(gè)樣本標(biāo)定家族編號(hào)。
上述第二步的過(guò)程實(shí)際是逐層合并距離最小的兩個(gè)家族,直到所 有的樣本都在一個(gè)家族中,或者某個(gè)終止條件(達(dá)到用戶設(shè)定的最小 分家族數(shù)u)被滿足,得到一棵或幾棵樹狀圖。對(duì)于每一層的合并結(jié) 果,本發(fā)明采用聚類有效性指標(biāo)V,來(lái)確定最佳惡意程序家族數(shù),從 而確定最佳分解點(diǎn)。隨著新生成家族的逐層合并,應(yīng)該合并成多少個(gè) 家族是最合理的,需要有一個(gè)指標(biāo)來(lái)衡量。這個(gè)指標(biāo)應(yīng)該使得在同一 個(gè)家族的惡意程序具有高度的相似性,而不在同一個(gè)家族的惡意程序 具有較大的差異性。這就要求家族內(nèi)部盡可能的緊湊,而家族與家族 之間的距離盡可能的遠(yuǎn)離。本發(fā)明中的V,聚類有效性指標(biāo)正是在類 內(nèi)緊湊度與類間分離度之間找到一個(gè)平衡點(diǎn),從而使聚類效果最佳。 在上述公式(6)中,函數(shù)scat(c)用來(lái)衡量類內(nèi)的緊湊度,值越小 越緊湊。函數(shù)s印(c)用來(lái)衡量類間的分離度,值越大,分離得越好。 本發(fā)明中聚類有效性指標(biāo)V^創(chuàng)新之一是采用距離該家族中其它點(diǎn)距 離和最小的點(diǎn)作為該家族的中心點(diǎn),使之能很好的處理形狀不規(guī)則的樣本集;該指標(biāo)的另一創(chuàng)新之處在于對(duì)s印(c)函數(shù)的定義,彌補(bǔ)了 "緊湊度"和"分離度"度量差別上的缺陷。s印(c)函數(shù)必須或盡可 能的做到對(duì)各種不同分類法,家族的不同大小不敏感,也就是說(shuō)要?dú)w 一到統(tǒng)一的共性上。很容易看到隨著層次聚類算法往上構(gòu)樹過(guò)程的進(jìn) 行,家族內(nèi)緊湊度越來(lái)越差,scat(c)的值從0開始逐漸遞增。與 傳統(tǒng)指標(biāo)的s印(c)不同,V,的s印(c)在初始時(shí)為O,然后迅速遞增, 達(dá)到一個(gè)峰值,再逐漸減小。對(duì)于家族和家族之間的距離,s印(c)比 scat(c)更敏感,當(dāng)合并兩個(gè)不該合并的家族時(shí),V,的值就會(huì)有重 大的改變。因此,V鵬能在家族內(nèi)緊湊度與家族間分離度之間找一個(gè) 平衡點(diǎn),從而獲得最佳聚類效果。
以上實(shí)施例描述僅用以說(shuō)明而非限制本發(fā)明的技術(shù)方案。不脫離 本發(fā)明精神和范圍的任何修改或局部替換,應(yīng)涵蓋在本發(fā)明的權(quán)利要 求范圍當(dāng)中。
權(quán)利要求
1、確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng),其特征在于,包括惡意程序樣本特征提取模塊,其提取惡意程序樣本的特征并通過(guò)下述惡意程序樣本距離計(jì)算模塊計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得到距離矩陣D;惡意程序樣本距離計(jì)算模塊,其對(duì)不同的惡意程序樣本特征采用不同的計(jì)算公式,計(jì)算惡意程序樣本間的距離。家族間距離計(jì)算模塊,其計(jì)算兩個(gè)家族之間的距離,計(jì)算公式為<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msub> <mi>D</mi> <mi>KL</mi></msub><mo>=</mo><mfrac> <mn>1</mn> <mrow><msub> <mi>N</mi> <mi>K</mi></msub><msub> <mi>N</mi> <mi>L</mi></msub> </mrow></mfrac><msub> <mi>Σ</mi> <mrow><mi>i</mi><mo>∈</mo><msub> <mi>C</mi> <mi>K</mi></msub> </mrow></msub><msub> <mi>Σ</mi> <mrow><mi>j</mi><mo>∈</mo><msub> <mi>C</mi> <mi>L</mi></msub> </mrow></msub><mi>d</mi><mrow> <mo>(</mo> <msub><mi>X</mi><mi>i</mi> </msub> <mo>,</mo> <msub><mi>Y</mi><mi>j</mi> </msub> <mo>)</mo></mrow> </mrow>]]></math> id="icf0001" file="A2009100409980002C1.tif" wi="60" he="10" top= "113" left = "26" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>公式(3);在公式(3)中,DKL表示家族K與家族L間的距離,d(Xi,Yj)表示分別位于家族K與家族L的兩個(gè)惡意程序Xi和Yj特征之間的距離,Xi和Yj分別表示第L族中的第i個(gè)樣本和第K族中的第j個(gè)樣本,CK表示家族K,NK表示家族K中惡意程序樣本的個(gè)數(shù),CL表示家族L,NL表示家族L中惡意程序樣本的個(gè)數(shù)。惡意程序樣本聚類模塊,逐層對(duì)惡意程序樣本進(jìn)行聚類(家族),并根據(jù)下述VNFS計(jì)算模塊計(jì)算每層聚類結(jié)果(分家族結(jié)果)的VNFS;VNFS計(jì)算模塊,其計(jì)算每層分家族結(jié)果的VNFS,計(jì)算公式為<maths id="math0002" num="0002" ><math><![CDATA[ <mrow><msub> <mi>V</mi> <mi>NFS</mi></msub><mo>=</mo><mi>scat</mi><mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo></mrow><mo>-</mo><mi>sep</mi><mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo></mrow><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>c</mi></munderover><munderover> <mi>Σ</mi> <mrow><mi>k</mi><mo>=</mo><mn>1</mn> </mrow> <msub><mi>n</mi><mi>i</mi> </msub></munderover><msup> <mrow><mo>|</mo><mo>|</mo><msub> <mi>x</mi> <mi>ik</mi></msub><mo>-</mo><msub> <mi>v</mi> <mi>i</mi></msub><mo>|</mo><mo>|</mo> </mrow> <mn>2</mn></msup><mo>-</mo><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>c</mi></munderover><msup> <mrow><mo>|</mo><mo>|</mo><msub> <mi>v</mi> <mi>i</mi></msub><mo>-</mo><mover> <mi>v</mi> <mo>‾</mo></mover><mo>|</mo><mo>|</mo> </mrow> <mn>2</mn></msup><mo>*</mo><mrow> <mo>(</mo> <msub><mi>n</mi><mi>i</mi> </msub> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow> </mrow>]]></math> id="icf0002" file="A2009100409980002C2.tif" wi="108" he="11" top= "217" left = "26" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>公式(4);在公式(4)中,c代表家族數(shù),ni是家族i包含的樣本數(shù),xik是家族i的第k個(gè)樣本,是家族i的中心點(diǎn),vi表示與該家族中所有樣本點(diǎn)距離和最小的樣本點(diǎn)(惡意程序樣本),vi的計(jì)算公式為 id="icf0003" file="A2009100409980003C1.tif" wi="74" he="12" top= "52" left = "42" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>公式(5);在公式(5)中,xik表示家族i中的第k個(gè)樣本,xij表示家族i中的第j個(gè)樣本,(xik-xij)表示,樣本xik與樣本xij的距離,nci表示家族i中的樣本總數(shù);是整個(gè)數(shù)據(jù)集的全局中心點(diǎn),<overscore>v</overscore>表示與全局所有樣本點(diǎn)距離和最小的樣本點(diǎn),<overscore>v</overscore>的計(jì)算公式為 id="icf0004" file="A2009100409980003C2.tif" wi="56" he="11" top= "130" left = "53" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>公式(6);在公式(6)中,xk表示全局的第k個(gè)樣本,xj表示全局的第j個(gè)樣本,n表示全局樣本的總數(shù)。
2、根據(jù)權(quán)利要求1所述的確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng), 其特征在于,惡意程序樣本特征提取模塊所提取惡意程序樣本的特征為N-Grams 或者指令頻度;惡意程序樣本距離計(jì)算模塊采用cosine距離度量,度量公式為在公式(1)中,《表示x,的轉(zhuǎn)制,《和 分別表示第i個(gè)樣本的特征向量和第j個(gè)樣本的特征向量,^表示兩個(gè)樣本間的距離。
3、根據(jù)權(quán)利要求1所述的確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng),其特征在于,惡意程序樣本特征提取模塊所提取惡意程序樣本的特征為API序列;惡意程序樣本距離計(jì)算模塊采用Jaccard距離度量,度量公式為 J"—= M。1 + Ml° 公式(2);在公式(2)中,^w表示向量x'維度為0而向量^維度為1的維度和,Mi。向量^維度為l而向量、維度為0的維度和,^表示向量^和向 量、維度均為1的維度和,Jaccard表示兩個(gè)樣本間的距離。
4、使用權(quán)利要求1所述確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)確定 計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其特征在于,包括如下步驟 第一步、惡意程序樣本數(shù)據(jù)處理根據(jù)惡意程序樣本特征提取模塊提取惡意程序樣本的特征,初始 時(shí)將每個(gè)惡意程序樣本作為一個(gè)家族,并由惡意程序樣本距離計(jì)算模 塊采用合適的距離度量方法來(lái)計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得到距離矩陣D,矩陣D中的每個(gè)元素代表兩兩家族之間的距離; 第二步、對(duì)惡意程序樣本進(jìn)行聚類,并計(jì)算各個(gè)聚類結(jié)果的V,:當(dāng)家族數(shù)大于用戶設(shè)定值U時(shí),循環(huán)以下操作① 查找距離矩陣D,合并距離最近的兩個(gè)家族C1和C2,得 到包含IC1I+IC21個(gè)樣本的新家族C;② 家族間距離計(jì)算模塊根據(jù)公式(3)計(jì)算新家族C到其他 家族的距離;③ 更新距離矩陣D,冊(cè)l腺與Cl和C2有關(guān)的距離,添加新 家族C到其他家族的距離; v^計(jì)算模塊根據(jù)公式(4) 、 (5) 、 (6)計(jì)算當(dāng)前層 分家族結(jié)果的vNFS;第三步、通過(guò)比較各個(gè)層次的V,值,找到Vws值最小層的分家族結(jié)果, 得到最優(yōu)家族個(gè)數(shù)。
5、 根據(jù)權(quán)利要求4所述確定計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其 特征在于,還包括第四步、按照最優(yōu)的歸類結(jié)果,對(duì)每個(gè)樣本標(biāo)定家族編號(hào)。
6、 根據(jù)權(quán)利要求5所述確定計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其 特征在于,第一步中,惡意程序樣本特征提取模塊所提取惡意程序樣本的特征為 N-Grams或者指令頻度;惡意程序樣本距離計(jì)算模塊采用cosine距離度量,度量公式為<formula>formula see original document page 5</formula> 公式(1);在公式(1)中,《表示;c,的轉(zhuǎn)制,x,.和s.分別表示第i個(gè)樣本的特 征向量和第j個(gè)樣本的特征向量,^表示兩個(gè)樣本間的距離。
7、 根據(jù)權(quán)利要求5所述確定計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其 特征在于,第一步中,惡意程序樣本特征提取模塊所提取惡意程序樣本的特征為API序列; 惡意程序樣本距離計(jì)算模塊采用Jaccard距離度量,度量公式為 <formula>formula see original document page 5</formula> 公式(2);在公式(2)中,Mw表示向量^維度為0而向量、維度為1的維度和, Ml。向量x(維度為1而向量、維度為0的維度和,Mn表示向量$和向量 維度均為1的維度和,Jaccard表示兩個(gè)樣本間的距離。
8、根據(jù)權(quán)利要求4-7中任意一項(xiàng)所述確定計(jì)算機(jī)惡意程序樣本家族數(shù)的方法,其特征在于,當(dāng)用戶未設(shè)定u值時(shí),u值為l。
全文摘要
本發(fā)明涉及確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)和方法。確定計(jì)算機(jī)惡意程序樣本家族數(shù)的系統(tǒng)包括惡意程序樣本特征提取模塊,其提取惡意程序樣本的特征并計(jì)算每?jī)蓚€(gè)惡意程序樣本間的距離,得到距離矩陣D。惡意程序樣本距離計(jì)算模塊,其計(jì)算惡意程序樣本間的距離。家族間距離計(jì)算模塊,其計(jì)算兩個(gè)家族之間的距離。惡意程序樣本聚類模塊,其逐層對(duì)惡意程序樣本進(jìn)行聚類,并計(jì)算每層聚類結(jié)果的V<sub>NFS</sub>;V<sub>NFS</sub>計(jì)算模塊,其計(jì)算每層分家族結(jié)果的V<sub>NFS</sub>。上述系統(tǒng)可通過(guò)比較各個(gè)層次的V<sub>NFS</sub>值,找到V<sub>NFS</sub>值最小層的分家族結(jié)果,即可得到最優(yōu)家族個(gè)數(shù)。
文檔編號(hào)G06F17/30GK101604365SQ200910040998
公開日2009年12月16日 申請(qǐng)日期2009年7月10日 優(yōu)先權(quán)日2009年7月10日
發(fā)明者里 萬(wàn), 葉艷芳, 王幼玉, 勇 陳 申請(qǐng)人:珠海金山軟件股份有限公司