本發(fā)明涉及,尤其涉及。本發(fā)明涉及惡意代碼分析技術(shù),具體涉及一種基于半監(jiān)督學(xué)習(xí)的惡意代碼分析方法和系統(tǒng)。
背景技術(shù):
惡意軟件是指任何對計(jì)算機(jī)和網(wǎng)絡(luò)存在著潛在危害的計(jì)算機(jī)軟件。目前,惡意代碼的數(shù)量和種類逐年增加,并且制作技術(shù)發(fā)展迅速,對全球網(wǎng)絡(luò)環(huán)境安全帶來巨大威脅。在商業(yè)領(lǐng)域廣泛使用的是模式匹配方法,但是其對惡意代碼的變種檢測卻無能為力。如今基于監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)以及半監(jiān)督的學(xué)習(xí)方式已經(jīng)被采納用于解決惡意代碼變種的檢測問題并在算法上已有成熟的研究成果,本發(fā)明從特征提取與特征降維的角度研究惡意代碼的家族分類,而現(xiàn)有的研究成果中特征提取主要集中在單一特征的提取或一類特征(靜態(tài)特征或動態(tài)行為特征)提取,并且對惡意代碼特征的降維研究較少。
在kaggle上微軟發(fā)起的惡意代碼分類大賽[https://www.kaggle.com/c/malware-classification]中,一組獲獎(jiǎng)選手利用反匯編文件與字節(jié)碼文件提取靜態(tài)特征包括:文件屬性特征和pesection、操作碼序列、字節(jié)碼序列等代碼特征,并利用數(shù)據(jù)挖掘技術(shù)先用隨機(jī)森林算法對特征進(jìn)行選擇,再利用nmf算法降維,最后用監(jiān)督學(xué)習(xí)分類算法對樣本分類。王毅等[王毅,唐勇,盧澤新,等.惡意代碼聚類中的特征選取研究[j].信息網(wǎng)絡(luò)安全,2016(9):64-68]人對惡意代碼聚類中的特征選取展開了研究,提取opcode序列、函數(shù)調(diào)用圖、系統(tǒng)調(diào)用三類特征,并基于dbscan對多特征向量聚類,證明了單一特征中使用系統(tǒng)調(diào)用序列的效果最好,并且采用多特征向量進(jìn)行聚類的結(jié)果要優(yōu)于單一特征。另外,igorsantos等人[santosi,sanzb,laordenc,etal.opcode-sequence-basedsemi-supervisedunknownmalwaredetection[j].lecturenotesincomputerscience,2011,6694(11):50-57.]提出采用llgc(局部與全局一致性算法)來檢測基于操作碼序列特征的未知惡意軟件。
可見,現(xiàn)有的關(guān)于惡意代碼分類技術(shù)研究成果中,大多提取單一的特征類型,會導(dǎo)致難以描述惡意軟件的代碼與行為的全部性質(zhì)與特點(diǎn)。另外,對于提取了多特征的惡意代碼分類研究中,對特征選擇與特征抽取部分沒有詳細(xì)討論,高維特征會使分類效率下降,并易出現(xiàn)過擬合現(xiàn)象。除此之外,目前基于監(jiān)督學(xué)習(xí)的惡意代碼分類無法解決標(biāo)記樣本數(shù)量較少的問題。
基于上述原因,本發(fā)明研究并提出了基于多維特征的分析方法,提取惡意代碼的靜態(tài)特征與動態(tài)特征,并對高維特征的降維提出了行之有效的處理方法,最后運(yùn)用半監(jiān)督學(xué)習(xí)方式,解決了對少量標(biāo)記惡意代碼樣本的分類問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種基于半監(jiān)督學(xué)習(xí)的惡意代碼分析方法和系統(tǒng),其基于多維特征進(jìn)行分析,提取惡意代碼的靜態(tài)特征與動態(tài)特征,通過降維減少后續(xù)處理難度,并運(yùn)用半監(jiān)督學(xué)習(xí)方式,解決了對少量標(biāo)記惡意代碼樣本的分類問題。
為了解決上述技術(shù)問題,本發(fā)明是這樣實(shí)現(xiàn)的:
一種基于半監(jiān)督學(xué)習(xí)的惡意代碼分析方法,包括:
步驟1、獲取惡意代碼樣本集中每個(gè)樣本的反匯編文件和動態(tài)行為報(bào)告;
步驟2、從每個(gè)樣本的所述反匯編文件和動態(tài)行為報(bào)告中提取原始特征數(shù)據(jù),包括4種靜態(tài)特征與4種動態(tài)特征;所需提取的原始特征數(shù)據(jù)是通過分析惡意代碼的反匯編文件和行為所確定的有效區(qū)分惡意代碼家族的特征;所述靜態(tài)特征包括:加殼信息、操作碼序列、pe節(jié)以及關(guān)鍵字function后的函數(shù)名稱;加殼信息包括是否加殼與加殼類型;
所述動態(tài)特征包括:系統(tǒng)調(diào)用序列、釋放文件信息、ip地址和注冊表路徑;釋放文件信息包括釋放文件類別數(shù)、釋放文件總數(shù)和各個(gè)類型的釋放文件對應(yīng)數(shù)量;
步驟3、將所述原始特征數(shù)據(jù)進(jìn)行序列化,每一種特征均產(chǎn)生多維度的特征項(xiàng);
步驟4、對所述特征項(xiàng)進(jìn)行降維處理,得到較低維度的特征項(xiàng):使用特征打分器對每一維的特征項(xiàng)進(jìn)行打分,分?jǐn)?shù)的高低反映特征數(shù)據(jù)的重要性;特征打分器集成信息增益、隨機(jī)森林和l1/l2邏輯回歸三項(xiàng)特征選擇標(biāo)準(zhǔn),對三項(xiàng)特征選擇標(biāo)準(zhǔn)的得分進(jìn)行歸一化處理,然后取平均分作為特征打分器的打分結(jié)果;篩選掉分?jǐn)?shù)較低的特征項(xiàng),最后得到用于訓(xùn)練分類模型的特征項(xiàng);
步驟5、基于降維后的特征項(xiàng),利用半監(jiān)督分類算法訓(xùn)練得到用于區(qū)分惡意代碼所屬種群的特征分類器;利用該特征分類器對待分析的惡意代碼進(jìn)行處理,得到預(yù)測的惡意代碼所屬種群的分析結(jié)果。
優(yōu)選地,所述步驟1在獲取動態(tài)行為報(bào)告時(shí),通過搭建的cuckoosandbox安全環(huán)境執(zhí)行惡意代碼,提取json格式的動態(tài)行為報(bào)告。
優(yōu)選地,所述加殼信息的序列化方式為:用1維特征項(xiàng)表示樣本是否加殼,并用0,1標(biāo)記;統(tǒng)計(jì)所有樣本加殼類型共n1種,是否加某種殼也用0,1標(biāo)記,產(chǎn)生n1維特征項(xiàng);加殼信息序列化后得到m×(n1+1)的0、1矩陣,其中m為樣本數(shù)量;
所述操作碼的序列化方式為:使用n-gram模型進(jìn)行序列化處理,其中n=3,4,5;
所述pe節(jié)的序列化方式為:統(tǒng)計(jì)所有樣本中出現(xiàn)的分節(jié)共n5個(gè),計(jì)算每個(gè)樣本出現(xiàn)這n5個(gè)分節(jié)的次數(shù),序列化后得到的是m×n5的數(shù)值矩陣;
所述關(guān)鍵字function后函數(shù)名稱的序列化方式為:tf-idf轉(zhuǎn)化為詞頻矩陣;
所述系統(tǒng)調(diào)用序列的提取和序列化方式為:提取動態(tài)行為分析報(bào)告中字段category為‘registry’、‘process’、‘file’、‘system’、‘services’和‘network’的api函數(shù)和時(shí)間點(diǎn);再根據(jù)時(shí)間點(diǎn)的大小對api函數(shù)排序,得到具有執(zhí)行先后順序的api函數(shù)序列即為系統(tǒng)調(diào)用序列;使用n-gram模型對api函數(shù)序列進(jìn)行序列化處理;
所述ip地址的提取和序列化方式為:提取動態(tài)行為分析報(bào)告中的ip地址,判斷ip地址所屬區(qū)域;統(tǒng)計(jì)所有樣本的區(qū)域類型n2種,每個(gè)樣本使用0,1標(biāo)記是否屬某區(qū)域;序列化后得到的是m×n2的0、1矩陣;
所述釋放文件信息的序列化方式為:統(tǒng)計(jì)所有樣本的釋放文件類型共n3個(gè),計(jì)算每個(gè)樣本各類型的數(shù)量;序列化后得到m×(n3+2)的矩陣,其中兩維記載樣本中釋放文件的總數(shù)和釋放文件的類型總數(shù);
所述注冊表路徑的提取和序列化方式為:當(dāng)調(diào)用的api函數(shù)名包含regcreatekey、regdeletekey、regsetvalue、regdeletevalue、regreplacekey、regunloadkey中的任何一個(gè),則對此api對應(yīng)的注冊表操作路徑‘regkey’的值進(jìn)行提?。唤y(tǒng)計(jì)路徑字符串個(gè)數(shù)n4,每個(gè)樣本使用0,1標(biāo)記是否修改某注冊表路徑;序列化后得到的是m×n4的0、1矩陣。
優(yōu)選地,使用n-gram模型對特征進(jìn)行序列化處理為:
令n-gram模型中的n分別取3,4,5,針對每一種取值,按照公式(1)獲得的g值從大到小提取n-gram序列的前1000個(gè)序列;
g=(每個(gè)n-gram總個(gè)數(shù))/(包含該n-gram的樣本數(shù))(1)。
優(yōu)選地,所述步驟4的降維過程進(jìn)一步包括:對篩選后的特征項(xiàng)集合進(jìn)一步運(yùn)用主成分分析法pca進(jìn)行抽取特征,得到更低維度的用于訓(xùn)練分類模型的特征項(xiàng)。
優(yōu)選地,步驟5的半監(jiān)督分類算法采用局部與全局一致性算法llgc。
本發(fā)明提供的基于半監(jiān)督學(xué)習(xí)的惡意代碼分析系統(tǒng)包括:原始特征文件獲取模塊、特征提取模塊、預(yù)處理模塊、特征選擇模塊和分析模塊;
原始特征文件獲取模塊,用于獲取惡意代碼樣本集中每個(gè)樣本的反匯編文件和動態(tài)行為報(bào)告;
特征提取模塊,用于從每個(gè)樣本的所述反匯編文件和動態(tài)行為報(bào)告中提取原始特征數(shù)據(jù),包括4種靜態(tài)特征與4種動態(tài)特征;所需提取的原始特征數(shù)據(jù)是通過分析惡意代碼的反匯編文件和行為所確定的有效區(qū)分惡意代碼家族的特征;
所述靜態(tài)特征包括:加殼信息、操作碼序列、pe節(jié)以及關(guān)鍵字function后的函數(shù)名稱;加殼信息包括是否加殼與加殼類型;
所述動態(tài)特征包括:系統(tǒng)調(diào)用序列、釋放文件信息、ip地址和注冊表路徑;釋放文件信息包括釋放文件類別數(shù)、釋放文件總數(shù)和各個(gè)類型的釋放文件對應(yīng)數(shù)量;
預(yù)處理模塊,用于將所述原始特征數(shù)據(jù)進(jìn)行序列化,每一種特征均產(chǎn)生多維度的特征項(xiàng);
特征選擇模塊,用于對所述特征項(xiàng)進(jìn)行降維處理,得到較低維度的特征項(xiàng):使用特征打分器對每一維的特征項(xiàng)進(jìn)行打分,分?jǐn)?shù)的高低反映特征數(shù)據(jù)的重要性;特征打分器集成信息增益、隨機(jī)森林和l1/l2邏輯回歸三項(xiàng)特征選擇標(biāo)準(zhǔn),對三項(xiàng)特征選擇標(biāo)準(zhǔn)的得分進(jìn)行歸一化處理,然后取平均分作為特征打分器的打分結(jié)果;篩選掉分?jǐn)?shù)較低的特征項(xiàng),最后得到用于訓(xùn)練分類模型的特征項(xiàng);
分析模塊,用于基于降維后的特征項(xiàng),利用半監(jiān)督分類算法訓(xùn)練得到用于區(qū)分惡意代碼所屬種群的特征分類器;利用該特征分類器對待分析的惡意代碼進(jìn)行處理,得到預(yù)測的惡意代碼所屬種群的分析結(jié)果。
優(yōu)選地,所述預(yù)處理模塊的序列化為:
對于加殼信息的序列化方式:用1維特征項(xiàng)表示樣本是否加殼,并用0,1標(biāo)記;統(tǒng)計(jì)所有樣本加殼類型共n1種,是否加某種殼也用0,1標(biāo)記,產(chǎn)生n1維特征項(xiàng);加殼信息序列化后得到m×(n1+1)的0、1矩陣,其中m為樣本數(shù)量;
對于操作碼的序列化方式:使用n-gram模型進(jìn)行序列化處理,其中n=3,4,5;
對于pe節(jié)的序列化方式:統(tǒng)計(jì)所有樣本中出現(xiàn)的分節(jié)共n5個(gè),計(jì)算每個(gè)樣本出現(xiàn)這n5個(gè)分節(jié)的次數(shù),序列化后得到的是m×n5的數(shù)值矩陣;
對于關(guān)鍵字function后函數(shù)名稱的序列化方式:tf-idf轉(zhuǎn)化為詞頻矩陣;
對于系統(tǒng)調(diào)用序列的序列化方式為:使用n-gram模型對api函數(shù)序列進(jìn)行序列化處理;
對于ip地址的序列化方式為:判斷ip地址所屬區(qū)域,統(tǒng)計(jì)所有樣本的區(qū)域類型n2種,每個(gè)樣本使用0,1標(biāo)記是否屬某區(qū)域;序列化后得到的是m×n2的0、1矩陣;
對于釋放文件信息的序列化方式為:統(tǒng)計(jì)所有樣本的釋放文件類型共n3個(gè),計(jì)算每個(gè)樣本各類型的數(shù)量;序列化后得到m×(n3+2)的矩陣,其中兩維記載樣本中釋放文件的總數(shù)和釋放文件的類型總數(shù);
對于注冊表路徑的序列化方式為:統(tǒng)計(jì)路徑字符串個(gè)數(shù)n4,每個(gè)樣本使用0,1標(biāo)記是否修改某注冊表路徑;序列化后得到的是m×n4的0、1矩陣。
優(yōu)選地,所述特征提取模塊的提取方式為:
對于所述系統(tǒng)調(diào)用序列的提取過程為:提取動態(tài)行為分析報(bào)告中字段category為‘registry’、‘process’、‘file’、‘system’、‘services’和‘network’的api函數(shù)和時(shí)間點(diǎn);再根據(jù)時(shí)間點(diǎn)的大小對api函數(shù)排序,得到具有執(zhí)行先后順序的api函數(shù)序列,即為系統(tǒng)調(diào)用序列;
對于注冊表路徑的提取過程為:當(dāng)調(diào)用的api函數(shù)名包含regcreatekey、regdeletekey、regsetvalue、regdeletevalue、regreplacekey、regunloadkey中的任何一個(gè),則對此api對應(yīng)的注冊表操作路徑‘regkey’的值進(jìn)行提取,作為提取的注冊表路徑。
優(yōu)選地,所述預(yù)處理模塊使用n-gram模型對特征進(jìn)行序列化處理為:
令n-gram模型中的n分別取3,4,5,針對每一種取值,按照公式(1)獲得的g值從大到小提取n-gram序列的前1000個(gè)序列;
g=(每個(gè)n-gram總個(gè)數(shù))/(包含該n-gram的樣本數(shù))(1)。
有益效果:
(1)本發(fā)明基于多維特征進(jìn)行分析,提取惡意代碼的靜態(tài)特征與動態(tài)特征,通過降維減少后續(xù)處理難度,并運(yùn)用半監(jiān)督學(xué)習(xí)方式,解決了對少量標(biāo)記惡意代碼樣本的分類問題。
(2)本發(fā)明基于靜態(tài)和動態(tài)特征進(jìn)行惡意代碼族群分類,通過分析大量惡意代碼樣本提取能體現(xiàn)惡意代碼之間差異性與相似性的4類靜態(tài)特征和4類動態(tài)特征。4類靜態(tài)特征包括加殼信息、pe分節(jié)、操作碼序列和關(guān)鍵字function后函數(shù)名稱,均能夠體現(xiàn)開發(fā)者在制作惡意軟件中的編程習(xí)慣,例如同一家族的惡意代碼通常會使用同種加殼算法疊加殼;4類動態(tài)特征包括:系統(tǒng)調(diào)用序列、釋放文件、ip地址和注冊表路徑,能夠反映惡意代碼執(zhí)行期間行為的共同特征,例如本發(fā)明提出的釋放文件特征,勒索軟件在執(zhí)行期間會釋放jpg格式文件而分析蠕蟲軟件釋放文件類型均為可執(zhí)行文件。
(3)本發(fā)明基于信息增益、隨機(jī)森林和l1/l2的邏輯回歸構(gòu)建特征打分器,能夠有效改善基于單一特征選擇方法對特征重要性評估的局限性。由于本發(fā)明提取及預(yù)處理后得到的特征數(shù)據(jù)集,存在噪音、有關(guān)聯(lián)與無關(guān)聯(lián)等情況。對于相關(guān)聯(lián)的特征項(xiàng),使用l1/l2的邏輯回歸方法,優(yōu)化了僅使用l1邏輯回歸時(shí),只能保留多個(gè)對目標(biāo)值具有同等相關(guān)性的特征中的一個(gè)的缺陷;而對于不相關(guān)特征,使用隨機(jī)森林方法能夠得到一個(gè)近似最優(yōu)解;使用過濾式特征選擇方法信息增益用來平衡了隨機(jī)森林與l1/l2邏輯回歸對特征打分的誤判。并且,實(shí)驗(yàn)也證明使用隨機(jī)森林與特征打分器分別選擇后的特征集合在分類驗(yàn)證時(shí),其準(zhǔn)確率分別為0.50與0.94,分類準(zhǔn)確率有顯著提升。
(4)本發(fā)明使用n-gram處理操作碼與系統(tǒng)調(diào)用序列時(shí),選取n為3,4,5,并根據(jù)公式計(jì)算得到n-gram序列平均出現(xiàn)頻率g,選取g值大小前1000的n-gram序列;在這個(gè)處理過程中,把n-gram序列特征維度進(jìn)行約束,提高了特征選擇時(shí)的處理效率。
附圖說明
圖1為本發(fā)明惡意代碼分析方法的具體實(shí)施方式流程圖。
具體實(shí)施方式
下面結(jié)合附圖并舉實(shí)施例,對本發(fā)明進(jìn)行詳細(xì)描述。
本發(fā)明提供了一種基于半監(jiān)督學(xué)習(xí)的惡意代碼分析系統(tǒng),按照惡意代碼分析流程,主要包含了原始特征文件獲取模塊、特征提取模塊、預(yù)處理模塊、特征選擇模塊和分析模塊五個(gè)部分。如圖1所示。
原始特征文件獲取惡意代碼樣本集中每個(gè)樣本的反匯編文件和動態(tài)行為報(bào)告。特征提取模塊主要通過分析惡意代碼的反匯編文件和行為,找到可以有效區(qū)分惡意代碼家族的靜態(tài)特征與動態(tài)特征,并從每個(gè)樣本的反匯編文件和動態(tài)行為報(bào)告中提取這些原始特征數(shù)據(jù),其包括多種靜態(tài)特征與多種動態(tài)特征。預(yù)處理模塊實(shí)現(xiàn)了利用自然語言處理的思想及模型等方式,將原始特征數(shù)據(jù)進(jìn)行序列化,每一種特征均產(chǎn)生多維度的特征項(xiàng),從而轉(zhuǎn)化為可以直接用于特征選擇的數(shù)據(jù)集。特征選擇模塊使用特征打分器對每一維的特征項(xiàng)進(jìn)行分?jǐn)?shù)計(jì)算,分?jǐn)?shù)的高低反映了該項(xiàng)特征數(shù)據(jù)的重要性,特征打分器集成多種特征選擇標(biāo)準(zhǔn),對各項(xiàng)特征選擇標(biāo)準(zhǔn)的得分進(jìn)行歸一化處理,然后取平均分作為特征打分器的打分結(jié)果;篩選掉分?jǐn)?shù)較低的特征項(xiàng),從而實(shí)現(xiàn)降維,最后得到了可以用于訓(xùn)練分類模型的、較低維度的特征向量。分析模塊是實(shí)現(xiàn)惡意代碼分析的核心部分,其基于降維后的特征項(xiàng),通過訓(xùn)練模型得到用于區(qū)分惡意代碼所屬種群的特征分類器;利用該特征分類器對待分析的惡意代碼進(jìn)行處理,得到預(yù)測的惡意代碼所屬種群的分析結(jié)果,從而實(shí)現(xiàn)對未知代碼的家族化,并給出分析結(jié)果報(bào)告。
下面針對每一個(gè)環(huán)節(jié)進(jìn)行詳細(xì)描述。
步驟(1):原始特征文件獲取
反匯編文件與動態(tài)行為報(bào)告的獲取參考現(xiàn)有的靜態(tài)與動態(tài)分析技術(shù)。獲取反匯編文件時(shí),首先分析文件類型即文件是否加殼;若查殼結(jié)果為加殼,則需要先進(jìn)行脫殼處理再反匯編,否則直接進(jìn)行反匯編。動態(tài)行為報(bào)告的獲取,通過搭建的cuckoosandbox安全環(huán)境執(zhí)行惡意代碼,提取其json格式的動態(tài)分析報(bào)告。
步驟(2):特征提取
特征提取部分提取了4類靜態(tài)特征,分別是加殼信息、操作碼序列、pesection(節(jié))、關(guān)鍵字function后函數(shù)名稱;和4類動態(tài)特征,分別為系統(tǒng)調(diào)用序列、釋放文件信息、ip地址、注冊表路徑。靜態(tài)特征與動態(tài)特征的提取要分別讀取反匯編文件和解析json文件。本發(fā)明在研究中證明了以下特征均為可有效區(qū)分惡意代碼族群的特征。具體提取方法如下:
加殼特征:包括是否加殼與加殼類型;本發(fā)明使用c++腳本模擬peid的查殼原理,實(shí)現(xiàn)對惡意軟件的查殼分析。
pesection特征:以行為單位遍歷反匯編文件,提取每行冒號前的字符串。提取處理后,每一個(gè)惡意代碼樣本得到一個(gè)與其對應(yīng)的pe節(jié)字符串文件。
操作碼特征:遍歷讀取反匯編文件中的操作碼,提取處理后,每個(gè)惡意代碼樣本得到一個(gè)與其對應(yīng)的操作碼序列文件。
關(guān)鍵字function后函數(shù)名稱:提取反匯編文件中關(guān)鍵字function與press之間的函數(shù)名稱字符串,提取處理后,每個(gè)樣本對應(yīng)一個(gè)函數(shù)名稱特征文件。
系統(tǒng)調(diào)用序列:提取json報(bào)告中字段category=‘registry’、‘process’、‘file’、‘system’、‘services’、‘network’的api函數(shù)和時(shí)間點(diǎn)(time字段);再根據(jù)時(shí)間點(diǎn)的大小對api函數(shù)排序,排序后得到具有執(zhí)行先后順序的api函數(shù)序列,也稱系統(tǒng)調(diào)用序列。提取處理后,每一個(gè)惡意代碼樣本得到一個(gè)與其對應(yīng)的系統(tǒng)調(diào)用序列文件。
釋放文件信息:將釋放文件類型數(shù)、釋放文件總數(shù)、各個(gè)類型的釋放文件數(shù)量作為一類區(qū)分惡意代碼的動態(tài)特征。提取時(shí),獲取json文件中‘dropped’字段內(nèi)關(guān)鍵字‘type’的值即為釋放文件類型,然后對所有的類型進(jìn)行處理。
ip地址:提報(bào)json報(bào)告中的建立連接的目的ip地址,使用接口判斷ip地址所屬區(qū)域,將“區(qū)域”字符串去重后,作為一類動態(tài)特征。
注冊表路徑:對json報(bào)告內(nèi)注冊表特征提取時(shí),首先篩選category=‘registry’的api調(diào)用;若調(diào)用的api函數(shù)名包含regcreatekey、regdeletekey、regsetvalue、regdeletevalue、regreplacekey、regunloadkey中的任何一個(gè),則對此api對應(yīng)的注冊表操作路徑‘regkey’的值進(jìn)行提取。
步驟(3):預(yù)處理(序列化)
預(yù)處理主要完成特征的序列化,將其轉(zhuǎn)化為可以直接用于特征選擇的數(shù)據(jù)類型。具體處理方法與處理結(jié)果如表1。
表1預(yù)處理方法與結(jié)果
如表中所述的預(yù)處理方法中,有5種特征使用簡單的數(shù)學(xué)統(tǒng)計(jì)方法預(yù)處理;使用n-gram(n=3,4,5)的方法對操作碼與系統(tǒng)調(diào)用序列進(jìn)行劃分;對function函數(shù)字符串利用詞袋模型結(jié)合統(tǒng)計(jì)方法tf-idf進(jìn)一步處理特征。
系統(tǒng)調(diào)用和操作碼的n-gram序列數(shù)量龐大,需要進(jìn)行篩選,篩選規(guī)則如公式(1),令n-gram模型中的n分別取3,4,5,針對每一種取值,按照公式(1)獲得的g值從大到小提取n-gram序列的前1000個(gè)序列。
g=(每類n-gram總個(gè)數(shù))/(包含該n-gram的樣本數(shù))(1)
例如:樣本a的api的3-gram序列有(1,2,3)、(3,1,4)、(4,7,9),樣本b的api的3-gram序列有(1,2,3)、(8,9,2)、(1,2,3);其中,3-gram序列(1,2,3)的總個(gè)數(shù)為3,包含序列(1,2,3)的樣本數(shù)為2;因此,計(jì)算得到的g=3/2。
按照上述的篩選規(guī)則,n-gram序列對應(yīng)的n取3、4、5時(shí),各分別得到了1000個(gè)特征序列,一共有3000個(gè),并統(tǒng)計(jì)每個(gè)樣本中這3000個(gè)n-gram序列出現(xiàn)的次數(shù);最終對系統(tǒng)調(diào)用序列n-gram預(yù)處理的結(jié)果是m*3000的特征矩陣,其中m為樣本數(shù)量。
步驟(4):特征選擇
特征選擇部分提出了特征打分器,該打分器由信息增益、隨機(jī)森林和l1/l2正則項(xiàng)的邏輯回歸共三項(xiàng)特征選擇標(biāo)準(zhǔn)構(gòu)成,其中:信息增益則使用信息增益公式計(jì)算得到的數(shù)值作為分?jǐn)?shù);隨機(jī)森林是利用訓(xùn)練模型中得到的特征重要性作為得分;使用l1/l2正則項(xiàng)的邏輯回歸,由于僅使用l1邏輯回歸選擇時(shí),只能保留多個(gè)對目標(biāo)值具有同等相關(guān)性的特征中的一個(gè),即l1中系數(shù)為0的特征不代表不重要,所以,使用l2正則項(xiàng)來優(yōu)化。因此,使用l1與l2正則項(xiàng)的邏輯回歸進(jìn)行打分時(shí),若一個(gè)特征項(xiàng)在l1中的權(quán)值是非0的,那么在l2中選擇權(quán)值與其差別不大且在l1中權(quán)值是0的特征項(xiàng)構(gòu)成同類集合,最后,將這個(gè)集合中的特征平分l1的權(quán)值,平分后的權(quán)值作為l1與l2邏輯回歸模型的打分值。另外,對上述三項(xiàng)的得分進(jìn)行歸一化處理,使其得分范圍都在[0,1]之間;最后計(jì)算三項(xiàng)分?jǐn)?shù)的平均分作為特征打分器的打分結(jié)果,范圍區(qū)間是[0,1]。
根據(jù)特征選擇的打分器的結(jié)果,對特征項(xiàng)得分由大到小排序;選擇得分在前25%的特征項(xiàng),得到特征項(xiàng)集合a;最后,運(yùn)用pca(主成分分析)算法對a進(jìn)行特征抽取,得到特征項(xiàng)集合b。
步驟(5):分析
惡意代碼分析模塊基于上述4個(gè)研究內(nèi)容,利用得到的較低維度的特征向量,結(jié)合llgc(learningwithlocalandglobalconsistent)半監(jiān)督分類算法訓(xùn)練得到分類器;當(dāng)有新增的惡意代碼需要分析時(shí),先將該樣本經(jīng)前期處理得到特征向量,再輸入分類器,得到預(yù)測的該樣本所屬族群的報(bào)告。
綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。