亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于API序列和預(yù)訓(xùn)練模型的惡意軟件檢測(cè)

        2024-04-23 04:34:42竇建民師智斌于孟洋張舒娟
        關(guān)鍵詞:掩碼語義動(dòng)態(tài)

        竇建民,師智斌,于孟洋,霍 帥,張舒娟

        (中北大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030051)

        0 引 言

        隨著惡意軟件的急劇增加,自動(dòng)化檢測(cè)成為主流方法。靜態(tài)分析方法易受代碼混淆、加殼等影響[1]。而動(dòng)態(tài)分析通過軟件的實(shí)際運(yùn)行狀態(tài)來提取其行為特征實(shí)現(xiàn)檢測(cè),如API(application program interface)函數(shù)調(diào)用等行為[2],特別是敏感API調(diào)用直接反映了軟件的良性或不良意圖[3],能有效解決代碼混淆等技術(shù)的影響。

        目前在軟件行為特征的提取方法中,機(jī)器學(xué)習(xí)依賴人工提取特征且需要有完備的先驗(yàn)知識(shí)[4]。而深度學(xué)習(xí)方法能實(shí)現(xiàn)特征的自動(dòng)提取,但不能捕獲API序列全局語義信息,特別是API函數(shù)在不同序列的多種語義問題[5,6],同時(shí)深度學(xué)習(xí)方法依賴大量有標(biāo)注數(shù)據(jù),而惡意軟件數(shù)據(jù)集通常包含大量無標(biāo)注數(shù)據(jù),無法直接進(jìn)行有監(jiān)督學(xué)習(xí)。

        本文基于BERT模型,在大量無標(biāo)注API序列上利用無監(jiān)督學(xué)習(xí)構(gòu)建動(dòng)態(tài)掩碼序列模型,使模型會(huì)考慮API序列的上下文和語義關(guān)系,獲得API序列的全局編碼表示,從而有效解決無法捕獲API序列全局語義信息和和處理API函數(shù)在不同序列的多種語義問題以及帶標(biāo)注數(shù)據(jù)不足的問題。主要工作如下:①為避免其它領(lǐng)域不相關(guān)的分詞干擾,重新定義詞級(jí)編碼器和規(guī)范器等組件構(gòu)建分詞器,將API序列解析為模型可識(shí)別的數(shù)值表示;②基于BERT模型,使用無監(jiān)督學(xué)習(xí)在大量無標(biāo)注API序列數(shù)據(jù)上利用動(dòng)態(tài)掩碼機(jī)制構(gòu)建惡意軟件動(dòng)態(tài)掩碼序列模型(malware dynamic mask sequence model,MDMSM),從零訓(xùn)練模型學(xué)習(xí)API序列的語義關(guān)系,獲取API序列的全局動(dòng)態(tài)編碼表示,實(shí)現(xiàn)動(dòng)態(tài)挖掘API序列的語義特征;③將該編碼作為檢測(cè)模型的詞嵌入,在少量有標(biāo)注的API序列數(shù)據(jù)上微調(diào)模型完成檢測(cè)。

        1 相關(guān)工作

        機(jī)器學(xué)習(xí)方法通過人工特征工程提取靜態(tài)和動(dòng)態(tài)特征后訓(xùn)練模型實(shí)現(xiàn)檢測(cè)[7,8]。PektaA等[9]通過n-gram算法樹提取惡意軟件常見API子序列用于檢測(cè),也驗(yàn)證了動(dòng)態(tài)分析能更有效地獲取軟件的行為特征。Han H等[10]基于Android程序運(yùn)行時(shí)的API調(diào)用序列,使用支持SVM來進(jìn)行惡意軟件檢測(cè)。田東海等[11]使用n-gram算法優(yōu)化惡意代碼中的操作碼特征,然后使用詞袋模型和TF-IDF算法優(yōu)化API調(diào)用序列特征,最后使用決策樹進(jìn)行分類。雖然機(jī)器學(xué)習(xí)方法通過學(xué)習(xí)淺層樣本特征能實(shí)現(xiàn)對(duì)惡意軟件進(jìn)行自動(dòng)化檢測(cè),但該方法會(huì)依賴人工提取特征,存在特征表達(dá)受限等因素影響。

        深度學(xué)習(xí)在模型構(gòu)建和特征提取方面效果更好,深層神經(jīng)網(wǎng)絡(luò)具有自動(dòng)學(xué)習(xí)樣本特征的能力,有較高的準(zhǔn)確率[12,13]。Li C等[14]提取軟件API調(diào)用序列,利用詞嵌入獲得序列的向量表示并將其輸入LSTM進(jìn)行軟件分類。唐永旺等[15]使用Bi-LSTM學(xué)習(xí)樣本字節(jié)流序列并利用注意力機(jī)制獲取序列的深層特征完成分類任務(wù)。Cui Z等[16]將惡意軟件的特征用灰度圖像表示,然后利用卷積神經(jīng)網(wǎng)絡(luò)提取惡意軟件的圖像特征進(jìn)行分類。深度學(xué)習(xí)方法在一定程度上能提高任務(wù)性能,但該方法需要大量有標(biāo)注數(shù)據(jù),在小數(shù)據(jù)集上模型不易收斂且捕獲API序列的特征不全面。

        對(duì)API函數(shù)進(jìn)行語義特征提取及編碼表示,即詞嵌入方法,也是目前研究熱點(diǎn),其特征表示和編碼方式將直接影響惡意軟件的檢測(cè)效果。Cakir B等[17]基于操作碼序列使用Word2vec作為特征提取方法表示軟件樣本,然后使用梯度提升機(jī)搜索算法實(shí)現(xiàn)分類任務(wù)。Zhang J等[18]利用Glove表征從程序中提取信息,然后使用CNN分析詞嵌入表示的特征圖進(jìn)行分類。Feng L等[19]使用FastText作為序列表示方法,提取API序列特征實(shí)現(xiàn)軟件的分類任務(wù)。但傳統(tǒng)詞嵌入方法提取的詞向量不能根據(jù)上下文的不同而發(fā)生變化,無法解決API函數(shù)在不同調(diào)用序列中的多種語義問題。

        以上方法雖然在一定程度上能提高任務(wù)效率,但都無法解決API函數(shù)的全局語義信息和處理API函數(shù)在不同序列的多種語義問題以及有標(biāo)注數(shù)據(jù)集不足的問題。BERT是NLP任務(wù)中較最先進(jìn)的語言模型[20],通過預(yù)訓(xùn)練機(jī)制對(duì)大量無標(biāo)注數(shù)據(jù)利用無監(jiān)督學(xué)習(xí)獲得通用編碼表示,因?yàn)槲谋拘蛄凶陨淼捻樞蛐跃褪且环N天然的標(biāo)注,目前該方法也被應(yīng)用到軟件檢測(cè)中。Oak R等[21]利用BERT模型在安卓軟件數(shù)據(jù)集上進(jìn)行軟件分類任務(wù)。Alvares J等[22]通過BERT模型生成API序列的詞向量進(jìn)行分類。由于現(xiàn)有方法都直接使用NLP領(lǐng)域的BERT模型[23],而API序列包含的是與系統(tǒng)調(diào)用相關(guān)的詞匯和標(biāo)識(shí)符,與NLP領(lǐng)域文本序列的分詞規(guī)則有所差異,在軟件分類的應(yīng)用中效果不佳,無法高效完成檢測(cè)任務(wù)。

        2 惡意軟件動(dòng)態(tài)掩碼模型結(jié)構(gòu)

        本文基于BERT模型架構(gòu),在大量無標(biāo)注API序列上使用動(dòng)態(tài)掩碼序列機(jī)制,構(gòu)建惡意軟件動(dòng)態(tài)掩碼序列模型MDMSM,重新構(gòu)造預(yù)訓(xùn)練任務(wù),實(shí)現(xiàn)對(duì)API序列的全局動(dòng)態(tài)編碼表示,可有效解決動(dòng)態(tài)編碼和帶標(biāo)注數(shù)據(jù)不足的問題。模型結(jié)構(gòu)如圖1所示,該模型由多種詞編碼組合的輸入和12個(gè)編碼層疊加的編碼器所組成。

        圖1 惡意軟件動(dòng)態(tài)掩碼序列模型結(jié)構(gòu)

        MDMSM的輸入是由符號(hào)嵌入、片段嵌入和位置嵌入3個(gè)不同層級(jí)詞向量組成。符號(hào)嵌入是用分詞器對(duì)API序列分詞后的結(jié)果,而片段嵌入和位置嵌入由模型隨機(jī)初始化。

        采用Word2vec、Glove、FastText等傳統(tǒng)模型獲取的編碼表示通常忽略了API上下文關(guān)系,而同一個(gè)API函數(shù)在不同序列中往往會(huì)表征出不同的語義信息。MDMSM結(jié)構(gòu)是由12個(gè)編碼層串聯(lián)疊加組成的編碼器,其中每個(gè)編碼層是由多頭注意力層、殘差連接、層歸一化、前饋層組成,前饋層的激活函數(shù)和自注意力的計(jì)算提供整個(gè)網(wǎng)絡(luò)模型的非線性變換。

        MDMSM的核心是多頭注意力機(jī)制,它類似CNN中多個(gè)卷積核的概念,通過多個(gè)不同的Head分別進(jìn)行注意力計(jì)算,從不同角度抽取API序列的特征使得信息表征更豐富,實(shí)現(xiàn)全局信息的采集。設(shè)頭數(shù)為i, 分頭后輸入矩陣為Ii, 3個(gè)中間變量矩陣為Qi、Ki、Vi, 其第2個(gè)維度分別為dq、dk、dv。 注意力機(jī)制公式為

        (1)

        3個(gè)中間變量矩陣公式為

        (2)

        (3)

        (4)

        (5)

        其中,WO∈Rhdv×dmodel, 在模型中用h=8構(gòu)建多頭自注意力模塊且限定dk=dv=dmodel/h, 使用多頭注意力的好處是相較原來dmodel的高維空間,每個(gè)Head都經(jīng)過降維,可以利用矩陣并行化處理使得計(jì)算效率更高。

        對(duì)于一條API序列,每經(jīng)過一層多頭注意力,每個(gè)API的詞向量都是該序列中所有API函數(shù)詞向量的加權(quán)平均,即融合該序列所有的關(guān)鍵信息。因此,對(duì)于同一個(gè)API函數(shù),不同上下文會(huì)讓該API融合不同的語義信息,從而更好地捕獲序列的上下文語義關(guān)系,使得該API在不同的上下文中有著不同的詞向量去表征不同的語義,從而解決API函數(shù)在不同序列的多種語義問題。采用以上機(jī)制,MDMSM模型可獲得API序列全局語義的編碼表示,能夠彌補(bǔ)傳統(tǒng)模型的不足。

        3 基于預(yù)訓(xùn)練模型的惡意軟件檢測(cè)方法

        本文基于API序列,利用預(yù)訓(xùn)練的MDMSM進(jìn)行惡意軟件檢測(cè)。該方法分以下4個(gè)步驟實(shí)現(xiàn):首先進(jìn)行數(shù)據(jù)預(yù)處理工作,將API序列進(jìn)行數(shù)據(jù)清洗和剪枝;其次為了將數(shù)據(jù)解析為模型可識(shí)別的數(shù)值表示,需要重新定義字符編碼器和規(guī)范器等組件,構(gòu)建分詞器MalTokenizer(malware tokenizer);然后基于BERT模型,利用動(dòng)態(tài)掩碼機(jī)制在大量無標(biāo)注API序列上構(gòu)建惡意軟件動(dòng)態(tài)掩碼序列模型進(jìn)行無監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練,同時(shí)獲取API序列的全局動(dòng)態(tài)編碼表示;最后將該編碼作為檢測(cè)模型的詞嵌入,通過微調(diào)技術(shù)完成檢測(cè)任務(wù)。雖然預(yù)訓(xùn)練的計(jì)算成本比較昂貴,但預(yù)訓(xùn)練后的模型可以用在各種基于API序列的計(jì)算成本低的下游任務(wù)。整體設(shè)計(jì)流程如圖2所示。

        圖2 惡意軟件檢測(cè)模型流程

        3.1 數(shù)據(jù)預(yù)處理

        軟件行為分析報(bào)告中的API調(diào)用序列字段中包含很多無關(guān)的噪音信息和冗余數(shù)據(jù),如圖3所示給出一份從分析報(bào)告中提取的原始API調(diào)用序列信息。

        圖3 原始API調(diào)用序列

        為了使API序列可直接用于模型的訓(xùn)練,減少無關(guān)字段和噪音數(shù)據(jù)對(duì)模型效果的影響,需要對(duì)其進(jìn)行數(shù)據(jù)清洗和剪枝。首先將加載的原始API序列數(shù)據(jù)使用data_clea-ning()函數(shù)按照指定的過濾規(guī)則從API序列中去除各種無關(guān)噪音并使用空格符號(hào)作為每個(gè)API之間的分割標(biāo)識(shí);然后使用deduplication()函數(shù)對(duì)過濾后的序列數(shù)據(jù)進(jìn)行剪枝處理并將較短的序列固定為指定長度length。其中剪枝是指從某條API序列中去除位置相鄰且相同的冗余API函數(shù),只保留最后一個(gè)。算法1為數(shù)據(jù)預(yù)處理的偽代碼。

        算法1:數(shù)據(jù)預(yù)處理

        輸入:原始API序列S

        輸出:預(yù)處理后的API序列

        (1)files=open(S)

        (2)api_filter={‘#’,‘-’,…}

        (3)length=fixed_length

        (4)last_api=‘’

        (5)forlineinfilesdo

        (6)content=data_cleaning(line,api_filter)

        (7)apis=deduplication(content,last_api,length)

        (8)endfor

        (9)returnapis

        對(duì)圖3所示的API調(diào)用序列經(jīng)過數(shù)據(jù)清洗和剪枝處理后,得到如圖4所示的序列數(shù)據(jù)。

        圖4 預(yù)處理后的API序列

        3.2 構(gòu)建分詞器

        為了讓模型能處理API序列,需要使用分詞器將其解析為模型可識(shí)別的數(shù)值表示,因此分詞器需要完成分詞、初始編碼等功能。由于本文研究對(duì)象特定于軟件API序列,而不是普通文本,數(shù)據(jù)中包含與程序描述相關(guān)的詞匯和標(biāo)識(shí)符,同時(shí)避免來自其它不相關(guān)領(lǐng)域通用詞匯的分詞干擾,因此需要重新構(gòu)建基于API序列的分詞器,方法如下:

        首先定義標(biāo)記器Tokenizer,并使用詞層級(jí)WordLevel的字符編碼器;接著定義訓(xùn)練器WordLevelTrainer,并重新制定針對(duì)API序列的規(guī)范化器、預(yù)標(biāo)記器等組件;然后將訓(xùn)練語料和訓(xùn)練器傳入標(biāo)記器中;最終訓(xùn)練完成會(huì)生成vocab.json和merges.txt,即詞典文件。后續(xù)在模型中使用分詞器時(shí),只需加載詞典文件,分詞器會(huì)將經(jīng)過數(shù)據(jù)預(yù)處理的API序列拆分成詞典中對(duì)應(yīng)的字段,然后通過查找表將其轉(zhuǎn)換為數(shù)值并進(jìn)行標(biāo)記化處理。算法2為構(gòu)建分詞器的偽代碼。

        算法2:構(gòu)建分詞器

        輸入:預(yù)處理后的apis

        輸出:生成的vocab.json、merges.txt

        (1)MalTokenizer=Tokenizer(WordLevel(unk_token))

        (2)trainer=WordLevelTrainer(special_tokens)

        (3)MalTokenizer.normalize&post_processor

        (4)MalTokenizer.train(apis,trainer)

        (5)MalTokenizer.save()

        對(duì)圖4的API序列進(jìn)行分詞后得到如圖5所示的結(jié)果??梢钥吹紸PI序列已被解析為數(shù)值序列,后面將被直接輸入到MDMSM預(yù)訓(xùn)練模型中。

        圖5 分詞后的API序列

        3.3 惡意軟件動(dòng)態(tài)掩碼序列模型的預(yù)訓(xùn)練

        MDMSM模型通過在大量無標(biāo)注API序列上構(gòu)建動(dòng)態(tài)掩碼序列任務(wù)進(jìn)行預(yù)訓(xùn)練,實(shí)現(xiàn)動(dòng)態(tài)生成包含API序列上下文語義信息的編碼,并捕獲數(shù)據(jù)內(nèi)部結(jié)構(gòu)。動(dòng)態(tài)掩碼序列任務(wù)是指隨機(jī)掩蓋API序列中一些API函數(shù),然后訓(xùn)練模型來預(yù)測(cè)這些被掩蓋的API函數(shù),實(shí)現(xiàn)無監(jiān)督學(xué)習(xí)。在模型預(yù)訓(xùn)練的每輪次中,動(dòng)態(tài)地把輸入的無標(biāo)注API序列隨機(jī)掩蓋掉15%讓模型去預(yù)測(cè),實(shí)現(xiàn)動(dòng)態(tài)掩碼。由于預(yù)訓(xùn)練階段采用[MASK]遮擋API函數(shù),但在微調(diào)階段是沒有[MASK]的,因此為了解決該問題,對(duì)于被隨機(jī)掩蓋的API函數(shù)有80%的概率會(huì)被替換為[MASK],10%的概率被替換為其它API函數(shù),10%的概率保持不變,其中較短的序列用[PAD]進(jìn)行填充并在序列開頭添加[CLS]標(biāo)志位。步驟如下:

        首先使用3.2節(jié)中的詞典文件載入分詞器MalTokenizer,在每輪模型預(yù)訓(xùn)練的過程中使用generate_positions()函數(shù),根據(jù)API序列動(dòng)態(tài)生成掩碼位置的索引值,在每輪訓(xùn)練時(shí)會(huì)不斷更新被掩碼的位置,并用MalTokenizer的tokenize()方法把經(jīng)過數(shù)據(jù)清洗的API序列做分詞處理,同時(shí)根據(jù)分詞后的數(shù)據(jù)使用generate_mlm_tokens()函數(shù)分別生成被掩碼的序列M、被填充的序列P和原始的序列T,從而完成對(duì)動(dòng)態(tài)掩碼序列任務(wù)的構(gòu)建;然后使用batch_samples()函數(shù)將M、P、T數(shù)據(jù)劃分批次,輸入到模型中進(jìn)行預(yù)訓(xùn)練,模型通過預(yù)測(cè)序列中[MASK]位置最有可能被替換的API函數(shù)來不斷擬合原有序列;最終獲得預(yù)訓(xùn)練的惡意軟件動(dòng)態(tài)掩碼序列模型。算法3為模型預(yù)訓(xùn)練的偽代碼。

        算法3:惡意軟件動(dòng)態(tài)掩碼序列模型預(yù)訓(xùn)練

        輸入:預(yù)處理后的apis

        輸出:預(yù)訓(xùn)練后的MDMSM

        (1)vocab=dictionary_file

        (2)epoch=training_number

        (3)MDMSM=Malware Dynamic Mask Sequence Model

        (4)MalTokenizer=PreTrainedTokenizerFast(vocab)

        (5)forindexinepochdo

        (6)forapiinapisdo

        (7)pos=generate_positions(api)

        (8)tokens=MalTokenizer.tokenize(api)

        (9)M,P,T=generate_mlm_tokens(tokens,pos)

        (10)endfor

        (11)batchs=batch_samples(M,P,T)

        (12)MDMSM_file,loss=MDMSM(batchs)

        (13)loss.backward()

        (14)endfor

        (15)returnMDMSM_file

        模型預(yù)訓(xùn)練采用交叉熵?fù)p失函數(shù),公式為

        (6)

        其中,yi表示樣本i真實(shí)標(biāo)簽,即真實(shí)的API函數(shù),pi表示模型預(yù)測(cè)的API函數(shù),兩者做交叉熵進(jìn)行梯度更新。

        3.4 模型微調(diào)和惡意軟件檢測(cè)

        模型微調(diào)是指通過無監(jiān)督學(xué)習(xí)從大量無標(biāo)注數(shù)據(jù)中訓(xùn)練一個(gè)深層的預(yù)訓(xùn)練模型后,得到一組預(yù)訓(xùn)練的模型參數(shù);然后針對(duì)不同的下游任務(wù),把預(yù)訓(xùn)練模型的輸出添加相應(yīng)的網(wǎng)絡(luò)模型組成用于解決特定目標(biāo)任務(wù)的新模型;最后在少量有標(biāo)注數(shù)據(jù)上對(duì)模型進(jìn)行有監(jiān)督地微調(diào)來完成指定任務(wù)。在微調(diào)的過程中,預(yù)訓(xùn)練模型的權(quán)重可以選擇更新或者凍結(jié)部分網(wǎng)絡(luò)層,以減少資源開銷。

        在3.3節(jié)的預(yù)訓(xùn)練模型基礎(chǔ)上,針對(duì)下游的軟件分類任務(wù)進(jìn)行檢測(cè)模型的微調(diào)。步驟如下:首先在惡意軟件動(dòng)態(tài)掩碼序列模型后面添加檢測(cè)模型,將MDMSM最后一層輸出的動(dòng)態(tài)詞向量作為下游檢測(cè)模型的詞嵌入,從而構(gòu)建出惡意軟件檢測(cè)模型;然后使用batch_samples()函數(shù)把少量有標(biāo)注API序列劃分批次,輸入到惡意軟件檢測(cè)模型中進(jìn)行有監(jiān)督地微調(diào),在微調(diào)的過程中選擇凍結(jié)一部分預(yù)訓(xùn)練模型的參數(shù)防止模型過擬合;最終在小規(guī)模的API序列上訓(xùn)練檢測(cè)模型完成分類任務(wù)。下游檢測(cè)模型是在MDMSM之上單獨(dú)添加的網(wǎng)絡(luò)結(jié)構(gòu),其中的權(quán)重參數(shù)是模型隨機(jī)初始化并需要從頭開始訓(xùn)練,微調(diào)時(shí)MDMSM本身繼續(xù)訓(xùn)練,預(yù)訓(xùn)練模型的部分權(quán)重參數(shù)也被不斷更新從而更好地適應(yīng)軟件分類任務(wù)。檢測(cè)模型仍然采用交叉熵?fù)p失函數(shù)。其中標(biāo)簽0為良性,標(biāo)簽非0為惡意。算法4為模型微調(diào)的偽代碼。

        算法4:檢測(cè)模型微調(diào)

        輸入:預(yù)訓(xùn)練后的MDMSM,少量有標(biāo)注API序列datasets

        輸出:檢測(cè)模型和評(píng)價(jià)指標(biāo)

        (1)vocab=dictionary_file

        (2)epoch=training_number

        (3)model=MDMSM and Classification Model

        (4)MalTokenizer=PreTrainedTokenizerFast(vocab)

        (5)datas=MalTokenizer(datasets)

        (6)forindexinepochdo

        (7)batchs=batch_samples(datas)

        (8)model_file,loss=model(batchs)

        (9)loss.backward()

        (10)endfor

        (11)evaluation=evaluate(model,datas)

        (12)returnmodel_file,evaluation

        4 實(shí) 驗(yàn)

        4.1 實(shí)驗(yàn)數(shù)據(jù)

        為了驗(yàn)證惡意軟件動(dòng)態(tài)掩碼序列模型預(yù)訓(xùn)練和檢測(cè)模型微調(diào)的有效性,本文首先進(jìn)行軟件API序列數(shù)據(jù)集的收集和整理工作。目前單一的API序列數(shù)據(jù)集都比較小,本文收集了8個(gè)不同來源的數(shù)據(jù)集,見表1。因?yàn)楹罄m(xù)要和其它方法進(jìn)行性能比較,本文全部采用了帶標(biāo)簽數(shù)據(jù),實(shí)際中可采用無標(biāo)簽的數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練。由于收集到大部分?jǐn)?shù)據(jù)集提供的是軟件行為分析報(bào)告或是所提供數(shù)據(jù)集中存在很多無關(guān)噪音干擾字段,因此需要對(duì)收集的數(shù)據(jù)篩選與整理,并盡可能平衡不同類別樣本的比例來排除數(shù)量不一致對(duì)實(shí)驗(yàn)結(jié)果的影響。表1中前7個(gè)數(shù)據(jù)集總共包含61 381條API序列,共同構(gòu)成本文的數(shù)據(jù)集1,進(jìn)行惡意軟件動(dòng)態(tài)掩碼序列模型的預(yù)訓(xùn)練和二分類任務(wù)的驗(yàn)證,最后一個(gè)數(shù)據(jù)集來源于阿里云天池大賽惡意程序檢測(cè)的數(shù)據(jù)集,共有13 887條樣本,構(gòu)成本文的數(shù)據(jù)集2,用于多分類任務(wù)的驗(yàn)證。

        表1 數(shù)據(jù)集來源

        在本文數(shù)據(jù)集1上,分別選取20 000條惡意和良性API序列樣本用于惡意軟件動(dòng)態(tài)掩碼模型的預(yù)訓(xùn)練,再分別選取2000條用于檢測(cè)模型的微調(diào)做二分類任務(wù),最后再選取1000條用于模型測(cè)試,共計(jì)46 000條數(shù)據(jù)。數(shù)據(jù)集1上的劃分見表2。

        表2 數(shù)據(jù)集1劃分

        在本文數(shù)據(jù)集2上,不同種類的惡意樣本分別選取500條,良性樣本選取1000條,共計(jì)4500條數(shù)據(jù),然后將80%的數(shù)據(jù)作為訓(xùn)練集,剩余20%的數(shù)據(jù)作為測(cè)試集做多分類任務(wù)。數(shù)據(jù)集2的劃分見表3。

        表3 數(shù)據(jù)集2劃分

        4.2 評(píng)估方法和標(biāo)準(zhǔn)

        評(píng)價(jià)指標(biāo)對(duì)分析模型有著至關(guān)重要的作用,通過計(jì)算Accuracy、Precision、Recall和F1評(píng)估模型的性能。當(dāng)惡意樣本被檢測(cè)為惡意則標(biāo)記為TP;當(dāng)惡意樣本被識(shí)別為良性則標(biāo)記為FN。當(dāng)良性樣本被檢測(cè)為良性則標(biāo)記為TN;當(dāng)良性樣本被識(shí)別為惡意則標(biāo)記為FP。公式如下

        (7)

        (8)

        (9)

        (10)

        Precision和Recall是一對(duì)矛盾的指標(biāo),引入F1值能有效地平衡兩者,F(xiàn)1值越接近1代表模型性能越好。

        4.3 實(shí)驗(yàn)結(jié)果和對(duì)比

        本文選取4種機(jī)器學(xué)習(xí)、3種傳統(tǒng)詞嵌入和原始BERT作為對(duì)照實(shí)驗(yàn)方法,其中機(jī)器學(xué)習(xí)方法選取K近鄰算法、決策樹、支持向量機(jī)、樸素貝葉斯,在評(píng)價(jià)指標(biāo)中用K-NN、DT、SVM、NB表示,傳統(tǒng)詞嵌入方法為Word2Vec、Glove、FastText。為驗(yàn)證MDMSM的效果。在數(shù)據(jù)集1中,將用于MDMSM預(yù)訓(xùn)練和微調(diào)的數(shù)據(jù)樣本組合為對(duì)照實(shí)驗(yàn)的訓(xùn)練集,用于模型測(cè)試的數(shù)據(jù)樣本作為對(duì)照實(shí)驗(yàn)的測(cè)試集,盡可能平衡訓(xùn)練集和測(cè)試集所帶來的差異。

        4.3.1 不同分詞器進(jìn)行模型預(yù)訓(xùn)練對(duì)比

        由于NLP領(lǐng)域的通用語言序列和網(wǎng)絡(luò)安全領(lǐng)域軟件API序列的分詞規(guī)則有所不同,按照3.2小節(jié)所述,根據(jù)API序列的特點(diǎn)重新構(gòu)建分詞器,在數(shù)據(jù)集1上,采用原始BERT模型的分詞器BertTokenizer和本文MDMSM的分詞器MalTokenizer分別對(duì)模型重新進(jìn)行預(yù)訓(xùn)練,然后進(jìn)行二分類任務(wù)的實(shí)驗(yàn)結(jié)果對(duì)比。

        通過表4可知,采用MalTokenizer作為分詞器的預(yù)訓(xùn)練模型進(jìn)行分類任務(wù)要遠(yuǎn)高于采用BertTokenizer作為分詞器的預(yù)訓(xùn)練模型的檢測(cè)效果。主要是因?yàn)樵糂ERT模型的分詞器主要是針對(duì)通用NLP領(lǐng)域的通用語言樣本進(jìn)行編碼的,而API函數(shù)幾乎不存在于BertTokenizer的詞典文件,并且API函數(shù)不存在子詞或者詞根詞綴,每一個(gè)API函數(shù)所具備的系統(tǒng)功能也不盡相同,實(shí)驗(yàn)結(jié)果表明,基于API序列采用預(yù)訓(xùn)練模型完成惡意軟件分類任務(wù)時(shí),需要先重新訓(xùn)練分詞器對(duì)API序列進(jìn)行編碼的必要性。

        表4 不同分詞器的結(jié)果對(duì)比/%

        在數(shù)據(jù)集1上,采用不同分詞器的預(yù)訓(xùn)練模型進(jìn)行動(dòng)態(tài)掩碼序列任務(wù)的預(yù)訓(xùn)練,如圖6所示,其中橫坐標(biāo)的數(shù)據(jù)進(jìn)行了縮放,一個(gè)單位代表實(shí)際5000的步長??梢钥闯?,MalTokenizer模型的損失值隨著訓(xùn)練步長很快減小,在一定步數(shù)后開始趨于穩(wěn)定狀態(tài)接近0。然而MalTokenizer模型的損失值降至4后不再變化,表明該模型無法很好地收斂。

        圖6 不同分詞器進(jìn)行模型預(yù)訓(xùn)練的loss曲線

        4.3.2 與現(xiàn)有方法作二分類對(duì)比

        針對(duì)不同檢測(cè)模型在二分類任務(wù)上的實(shí)驗(yàn)結(jié)果進(jìn)行分析,各項(xiàng)指標(biāo)見表5。

        表5 不同方法在數(shù)據(jù)集1上的實(shí)驗(yàn)結(jié)果對(duì)比/%

        由表5可知,本文方法在二分類問題上,相較于其它方法有著更高的準(zhǔn)確率達(dá)到97.57%,通過對(duì)比發(fā)現(xiàn)F1值也是高于其它方法。與BERT相比,本文提出基于API序列利用動(dòng)態(tài)掩碼序列任務(wù)針對(duì)BERT模型重新進(jìn)行無監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練,同時(shí)獲得API序列的全局動(dòng)態(tài)編碼表示,然后將該編碼表示作為檢測(cè)模型詞嵌入用于軟件檢測(cè)的方法,結(jié)果顯示準(zhǔn)確率提高了25.09%,其它指標(biāo)也有較高的提升,驗(yàn)證基于API序列,對(duì)BERT模型利用動(dòng)態(tài)掩碼序列任務(wù)進(jìn)行無監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練,然后進(jìn)行惡意軟件分類任務(wù)的可行性;該方法也優(yōu)于現(xiàn)有機(jī)器學(xué)習(xí)方法的結(jié)果,在準(zhǔn)確率上比分類效果最好的K-NN算法高出5.84%,間接驗(yàn)證該模型能更準(zhǔn)確地捕捉到API序列的上下文語義特征并為軟件分類提供有力依據(jù);雖然本文方法也屬于詞嵌入模型的范疇,但相較于傳統(tǒng)詞嵌入模型,其準(zhǔn)確率平均提升了8.17%,驗(yàn)證本文方法在捕獲API序列特征時(shí)會(huì)考慮到樣本數(shù)據(jù)的全局信息,不再只局限于利用滑動(dòng)窗口捕獲局部信息,有效地解決API函數(shù)在不同調(diào)用序列中的語義表示問題,使得惡意軟件分類任務(wù)更加有效地完成。本文方法在捕獲API序列特征方面表現(xiàn)出色,充分考慮全局信息使得分類準(zhǔn)確率顯著提高。

        4.3.3 與現(xiàn)有方法作多分類對(duì)比

        在數(shù)據(jù)集2上直接使用已經(jīng)預(yù)訓(xùn)練的MDMSM做多分類任務(wù),雖然準(zhǔn)確率等指標(biāo)相較于二分類有所降低,但仍優(yōu)于其它算法。各項(xiàng)指標(biāo)見表6。

        表6 不同方法在數(shù)據(jù)集2上的實(shí)驗(yàn)結(jié)果對(duì)比

        由表6可知,本文方法在各項(xiàng)指標(biāo)上仍均高于其它模型。圖7為不同方法的多分類和二分類準(zhǔn)確率變化曲線。

        圖7 多分類和二分類的準(zhǔn)確率對(duì)比

        在對(duì)比實(shí)驗(yàn)中,使用機(jī)器學(xué)習(xí)方法進(jìn)行多分類任務(wù)比二分類任務(wù)的各項(xiàng)指標(biāo)波動(dòng)較大,這是因?yàn)閿?shù)據(jù)集2中不同種類的樣本數(shù)據(jù)量較少,而多分類任務(wù)需要更多的特征數(shù)量和和更全面的特征表達(dá),而且數(shù)據(jù)噪聲也容易影響模型性能。這使得模型在多分類任務(wù)中難以準(zhǔn)確地提取用于軟件分類的特征,從而導(dǎo)致效果不佳。相比之下,使用傳統(tǒng)詞嵌入方法的準(zhǔn)確率變化不大,但整體效果仍不盡如人意。這是因?yàn)閿?shù)據(jù)集2的多分類任務(wù)需要更復(fù)雜的模型和特征表示以及更多的數(shù)據(jù)標(biāo)簽,而在數(shù)據(jù)量有限的情況下,復(fù)雜的模型可能導(dǎo)致過擬合,降低多分類任務(wù)的性能,也無法有效地捕獲API函數(shù)的全局語義信息和處理API函數(shù)在不同序列的多種語義問題。本文方法是基于大量無標(biāo)注的API調(diào)用序列,通過模型預(yù)訓(xùn)練的過程來擬合原始API序列的目標(biāo)任務(wù),從而使預(yù)訓(xùn)練后的模型能夠準(zhǔn)確關(guān)注序列中每個(gè)API的關(guān)鍵特征,并提取到融入API序列全局語義信息的編碼表示用于分類任務(wù)。該方法的優(yōu)勢(shì)在于能夠更好地捕獲API序列的上下文語義關(guān)系,從而有效地提取到軟件分類相關(guān)的特征,使得檢測(cè)效果顯著提升。

        5 結(jié)束語

        本文通過動(dòng)態(tài)掩碼機(jī)制在大量無標(biāo)注API序列上構(gòu)建惡意軟件動(dòng)態(tài)掩碼模型,獲取API序列的動(dòng)態(tài)編碼表示,解決了傳統(tǒng)方法無法捕獲API序列全局語義信息和帶標(biāo)注數(shù)據(jù)不足的問題,然后在少量有標(biāo)注API序列上微調(diào)模型完成檢測(cè)。該方法在二分類和多分類任務(wù)中均優(yōu)于其它方法,顯著提高軟件檢測(cè)的準(zhǔn)確率。然而在軟件分析報(bào)告中只利用到API調(diào)用序列的字段,在后續(xù)中將嘗試結(jié)合其它數(shù)據(jù)展開工作,此外本文用于模型預(yù)訓(xùn)練的數(shù)據(jù)量仍然有限,接下來計(jì)劃搜集更大規(guī)模的軟件樣本進(jìn)行分析。

        猜你喜歡
        掩碼語義動(dòng)態(tài)
        國內(nèi)動(dòng)態(tài)
        國內(nèi)動(dòng)態(tài)
        國內(nèi)動(dòng)態(tài)
        語言與語義
        動(dòng)態(tài)
        低面積復(fù)雜度AES低熵掩碼方案的研究
        基于布爾異或掩碼轉(zhuǎn)算術(shù)加法掩碼的安全設(shè)計(jì)*
        “上”與“下”語義的不對(duì)稱性及其認(rèn)知闡釋
        基于掩碼的區(qū)域增長相位解纏方法
        認(rèn)知范疇模糊與語義模糊
        亚洲是图一区二区视频| 国产精品毛片无遮挡| a级毛片免费观看在线| 国产欧美日产久久| 亚洲精品中文字幕二区| 日本黄色影院一区二区免费看| 在线播放真实国产乱子伦| 天天干夜夜操| 国语憿情少妇无码av| 毛片成人18毛片免费看| 草草地址线路①屁屁影院成人| 吃奶还摸下面动态图gif| 亚洲无线码一区在线观看| 国产一区二区在线免费视频观看| 久久偷看各类wc女厕嘘嘘偷窃| 国产成人vr精品a视频| 欧洲人体一区二区三区| 日本加勒比精品一区二区视频| 亚洲av无码av在线播放| 国产精品露脸视频观看| 亚洲视频在线播放免费视频 | 国产精品一区二区在线观看| 久久av无码精品一区二区三区| 日韩av在线不卡一二三区| 日本在线观看一区二区三| 变态 另类 欧美 大码 日韩| 免费高清日本中文| 久久综合伊人有码一区中文字幕 | 一本到无码AV专区无码| 亚洲一区二区三区ay| 麻豆国产精品久久人妻| 亚洲欧洲无码av不卡在线| 制服丝袜人妻中出第一页| 国产免费一区二区在线视频| 久久久老熟女一区二区三区| 亚洲国产精品久久久久秋霞1| 国产一区二区三区探花 | 日韩成人无码| 亚洲阿v天堂2018在线观看| 精品国产精品三级精品av网址| 国产乱子伦农村叉叉叉|