◆陳文強(qiáng) 周安民 劉 亮
?
基于多尺度融合CNN的惡意軟件行為描述語(yǔ)句抽取模型
◆陳文強(qiáng) 周安民 劉 亮
(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 四川 610065)
惡意軟件是網(wǎng)絡(luò)空間安全的重要威脅之一,安全廠(chǎng)商和從業(yè)人員發(fā)布了大量的惡意軟件分析報(bào)告。從報(bào)告中自動(dòng)化識(shí)別并提取出惡意軟件行為與能力描述的相關(guān)文本語(yǔ)句,能夠幫助分析人員快速了解惡意軟件的關(guān)鍵信息。本文使用一種基于多尺度融合的卷積神經(jīng)網(wǎng)絡(luò)模型抽取上述信息,該模型僅使用預(yù)訓(xùn)練詞向量作為輸入,利用卷積層提取特征,減少對(duì)人工特征依賴(lài)?;赑handi等人構(gòu)建的數(shù)據(jù)集MalwareTextDBv2.0數(shù)據(jù)集進(jìn)行測(cè)試,準(zhǔn)確率為71.33%、F1值為66.48%。相對(duì)于該數(shù)據(jù)集上的其它識(shí)別方法,本模型具有更高準(zhǔn)確率和F1值。
惡意軟件;信息抽?。痪矸e神經(jīng)網(wǎng)絡(luò)
隨著世界聯(lián)系越來(lái)越緊密和高度數(shù)字化,網(wǎng)絡(luò)攻擊也越來(lái)越普遍,這給社會(huì)帶來(lái)嚴(yán)重問(wèn)題。2010年,破壞了伊朗核設(shè)施中離心機(jī)的Stuxnet蠕蟲(chóng)病毒是世界上首例專(zhuān)門(mén)針對(duì)工業(yè)控制系統(tǒng)的破壞性病毒[1]。2017年,WannaCry勒索病毒在短時(shí)間內(nèi)席卷全球,大量政府部門(mén)、企業(yè)單位及教育機(jī)構(gòu)受到病毒侵害[2]。這些攻擊影響范圍從個(gè)人電腦到工業(yè)設(shè)施。
互聯(lián)網(wǎng)中存在大量與惡意軟件相關(guān)的文本,例如賽門(mén)鐵克和Cylance等各種安全機(jī)構(gòu)發(fā)布的惡意軟件報(bào)告。研究人員可以方便地從此類(lèi)文本中快速了解惡意軟件的行為能力信息,而不是手工對(duì)各個(gè)惡意軟件樣本進(jìn)行分析。網(wǎng)絡(luò)安全研究人員經(jīng)常收集這類(lèi)文本,但是由于這些文本的龐大數(shù)量和多樣性使得研究人員難以快速獲得特定惡意軟件的行為或能力信息。因?yàn)椴煌踩珯C(jī)構(gòu)會(huì)對(duì)同一樣本發(fā)布分析報(bào)告,一篇報(bào)告中也只有少數(shù)語(yǔ)句是包含惡意軟件行為或者能力信息,圖1是一文本示例,該段文本中僅有一句包含此類(lèi)信息(圖示中加黑部分)。自然語(yǔ)言處理是網(wǎng)絡(luò)安全研究中的關(guān)鍵技術(shù)[3],可以幫助研究人員從惡意軟件報(bào)告中快速獲取這些信息。本文使用一種多尺度融合卷積神經(jīng)網(wǎng)絡(luò),僅使用詞嵌入作為輸入,從網(wǎng)絡(luò)安全相關(guān)文本中提取描述惡意軟件行為或者能力的語(yǔ)句。
The malicious DLL file that is dropped is hidden in a resource of the dropper binary. This is a relatively common technique used by malware dropper files to optimize the number of files required to infect a machine. The resource language of the malicious DLL is set to "Chinese (Simplified)", this is a compiler artifact which indicates the language setting on the compiler used by the person who built the binary was set to "Chinese (Simplified)" at the time the dropper was compiled.
從惡意軟件報(bào)告中提取描述惡意軟件行為或者能力的語(yǔ)句可以看作是文本分類(lèi)問(wèn)題。
高明霞等人首先訓(xùn)練維基百科語(yǔ)料庫(kù)并獲取word2vec 詞模型,然后建立基于此模型的短文本特征,通過(guò)SVM、貝葉斯等經(jīng)典分類(lèi)器對(duì)短文本進(jìn)行分類(lèi)[4]。任勉等人使用采用CBOW模型訓(xùn)練詞向量,基于雙向長(zhǎng)短時(shí)記憶循環(huán)神經(jīng)網(wǎng)絡(luò)模型(Bi-LSTM),結(jié)合棧式自編碼深度神經(jīng)網(wǎng)絡(luò)作為分類(lèi)器[5]。Kim首次提出將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用在文本分類(lèi)中[6],其模型使用詞嵌入層,卷積層,池化層和全連接層對(duì)輸出標(biāo)簽類(lèi)別進(jìn)行預(yù)測(cè)。Sikdar等人通過(guò)構(gòu)造詞性、是否為停用詞等特征使用樸素貝葉斯和條件隨機(jī)場(chǎng)對(duì)原始語(yǔ)句進(jìn)行建模[7],訓(xùn)練一個(gè)二元分類(lèi)器,用于檢測(cè)當(dāng)前語(yǔ)句是否與惡意軟件的行為和能力相關(guān)。Brew等人構(gòu)造詞性、二元語(yǔ)法和詞干化處理等特征后使用一種在線(xiàn)學(xué)習(xí)算法對(duì)用于描述惡意軟件行為語(yǔ)句分類(lèi)[8]。Padia等人使用詞袋模型訓(xùn)練詞嵌入,然后使用一個(gè)多層感知機(jī)模型對(duì)此類(lèi)文本分類(lèi)[9]。Loyola等人使用在維基百科文本上訓(xùn)練的Glove向量初始化詞嵌入,然后訓(xùn)練一個(gè)BiLSTM從惡意軟件報(bào)告中提取包含惡意軟件能力的語(yǔ)句[10],取得較好的結(jié)果。
以上方法在使用詞性等額外特征時(shí),容易造成誤差積累,降低文本分類(lèi)的準(zhǔn)確率。Loyola等人僅使用預(yù)訓(xùn)練詞向量,大大減少特征工程難度,但通用領(lǐng)域與特定領(lǐng)域下詞分布存在差異,需要根據(jù)特定任務(wù)對(duì)詞分布微調(diào)。本文使用一種多尺度融合卷積神經(jīng)網(wǎng)絡(luò)完成此文本分類(lèi)任務(wù)。本方法僅使用在維基百科文本預(yù)訓(xùn)練Glove向量初始化詞嵌入作為每個(gè)詞特征向量,并在學(xué)習(xí)過(guò)程中對(duì)詞向量微調(diào),通過(guò)卷積層提取特征經(jīng)池化操作由分類(lèi)器輸出結(jié)果。卷積層有優(yōu)秀的特征提取能力,減少對(duì)人工特征依賴(lài)性。通過(guò)融合不同窗口大小卷積結(jié)果使模型能夠關(guān)注不同距離詞匯信息。與其它方法比較,結(jié)果顯示本方法有更高準(zhǔn)確率和F1值。
模型結(jié)構(gòu)如圖2所示,嵌入層將one-hot詞向量線(xiàn)性變換到詞特征向量,將稀疏且不相關(guān)的one-hot向量轉(zhuǎn)換到稠密且相關(guān)的詞特征向量,利于神經(jīng)網(wǎng)絡(luò)特征提取。卷積層使用不同大小卷積核對(duì)整個(gè)語(yǔ)句滑動(dòng)掃描,每個(gè)卷積核生成對(duì)應(yīng)句子級(jí)特征向量。最大時(shí)序池化對(duì)每個(gè)卷積核生成的特征向量提取最大值,保留最重要特征值,池化層可在保留最重要信息同時(shí)減少時(shí)間復(fù)雜度。最后全連接層將所有特征向量池化結(jié)果拼接后采用全連接方式連接到輸出層,用以表示模型對(duì)當(dāng)前語(yǔ)句分類(lèi)的評(píng)分。
圖2 模型結(jié)構(gòu)
深度學(xué)習(xí)進(jìn)行文本分類(lèi)第一步是文本向量化,利用詞向量表示文本。傳統(tǒng)文本表示方法采用one-hot表示方式,one-hot表示方式雖然簡(jiǎn)單,但是忽略了詞與詞間相關(guān)性,并且當(dāng)詞庫(kù)擴(kuò)大時(shí)會(huì)面臨數(shù)據(jù)稀疏性和維度災(zāi)難問(wèn)題。
在使用卷積神經(jīng)網(wǎng)絡(luò)提取文本特征前,嵌入層使用一個(gè)嵌入矩陣將one-hot向量線(xiàn)性轉(zhuǎn)換為另一空間下的詞特征向量,詞特征向量由嵌入矩陣與one-hot向量的乘積表示。這種轉(zhuǎn)換能對(duì)數(shù)據(jù)進(jìn)行壓縮,將詞從高維稀疏one-hot向量轉(zhuǎn)換為低維稠密詞特征向量,并且語(yǔ)義相近詞語(yǔ)之間距離會(huì)更近,利于神經(jīng)網(wǎng)絡(luò)特征提取和學(xué)習(xí)。
嵌入矩陣可隨機(jī)初始化或由預(yù)訓(xùn)練生成詞特征向量初始化。采用隨機(jī)初始化方式,神經(jīng)網(wǎng)絡(luò)可自動(dòng)學(xué)習(xí)當(dāng)前數(shù)據(jù)集下的詞分布。但詞庫(kù)過(guò)小時(shí),隨機(jī)初始化嵌入矩陣在學(xué)習(xí)時(shí)可存在過(guò)擬合風(fēng)險(xiǎn)。預(yù)訓(xùn)練詞特征向量通常在較大文本集下訓(xùn)練生成,其詞分布泛化能力更好。因此本文使用維基百科文本語(yǔ)料上訓(xùn)練的Glove[11]向量初始化詞嵌入矩陣。
卷積過(guò)程使用卷積核掃描句中連續(xù)h個(gè)詞,得到這連續(xù)h個(gè)詞特征值,通過(guò)卷積核在整個(gè)語(yǔ)句滑動(dòng)生成句子級(jí)特征向量。假定xi表示一句話(huà)中第i個(gè)詞,一個(gè)包含n個(gè)詞的語(yǔ)句表示為:
x = x1⊕x2⊕x3⊕…⊕xn(1)
其中⊕表示連接符號(hào)。假設(shè)xi:i+j表示句中第i個(gè)詞到第j個(gè)詞,卷積則通過(guò)卷積核在一個(gè)窗口大小為h的詞上操作產(chǎn)生一個(gè)新特征ci,
ci= f(w·xi:i+h-1+b) (2)
其中b表示偏置項(xiàng),f是一個(gè)非線(xiàn)性函數(shù)。卷積核在語(yǔ)句上滑動(dòng)產(chǎn)生特征向量c,
c=[c1,c2,c3,…,cn-h+1] (3)
使用多窗口大小和數(shù)量卷積核,用以從句中提取多種不同特征。
在卷積核生成特征向量上應(yīng)用時(shí)序最大池化操作,將最大值
cmax= max{c} (4)
作為與該特定卷積對(duì)應(yīng)特征。最大池化操作在每個(gè)特征向量中捕獲最重要信息,同時(shí)降低數(shù)據(jù)維度,提高計(jì)算效率。這種池化方式也使神經(jīng)網(wǎng)絡(luò)能自然處理不同長(zhǎng)度語(yǔ)句。
采用最大池化操作后,每個(gè)特征向量?jī)H保留一個(gè)特征值,將所有特征值連接成一個(gè)向量,采用全連接方式,連接所有特征值到輸出層,輸出層結(jié)果表示模型對(duì)該語(yǔ)句的分類(lèi)評(píng)分。嵌入層、卷積層和池化層等操作是將原始數(shù)據(jù)映射到特征空間,全連接層則將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間。
本文所使用來(lái)自Phandi等人構(gòu)建的數(shù)據(jù)集MalwareTextDBv2.0[12],Lim等人首先選擇了39篇惡意軟件報(bào)告[13],對(duì)其中描述惡意軟件行為語(yǔ)句進(jìn)行標(biāo)注。Phandi等人在此基礎(chǔ)上,將標(biāo)注報(bào)告數(shù)量擴(kuò)充到85篇。實(shí)驗(yàn)數(shù)據(jù)分布如表1所示,訓(xùn)練集包含65篇文檔,共9424條語(yǔ)句,其中2204條語(yǔ)句是描述惡意軟件行為或者能力。
表 1 實(shí)驗(yàn)數(shù)據(jù)分布
本文選擇訓(xùn)練集所有數(shù)據(jù)以及驗(yàn)證集和測(cè)試集的正樣本作為實(shí)驗(yàn)數(shù)據(jù),選擇其中80%作為實(shí)驗(yàn)訓(xùn)練數(shù)據(jù),其余20%作為實(shí)驗(yàn)測(cè)試數(shù)據(jù)。
實(shí)驗(yàn)中使用rectified linear units(RELU)作為卷積操作中的非線(xiàn)性激活函數(shù),卷積核窗口大小分別設(shè)置為3,4,5,卷積核對(duì)應(yīng)數(shù)量分別為100,100,100。將各個(gè)特征向量池化結(jié)果連接成一個(gè)300維向量后隨機(jī)丟棄一半值,然后采用全連接方式連接到輸出層作為分類(lèi)結(jié)果。為應(yīng)對(duì)過(guò)擬合問(wèn)題,設(shè)置l2正則系數(shù)為0.001。選擇adam優(yōu)化器,設(shè)置學(xué)習(xí)速率為0.001,批量大小為64。在整個(gè)訓(xùn)練數(shù)據(jù)上迭代訓(xùn)練30次后停止,使用測(cè)試數(shù)據(jù)進(jìn)行測(cè)試。采用多次實(shí)驗(yàn)計(jì)算均值的方式降低誤差。
(1)評(píng)價(jià)標(biāo)準(zhǔn)
現(xiàn)有評(píng)價(jià)文本分類(lèi)方法是通過(guò)模型對(duì)文本標(biāo)簽預(yù)測(cè)正確情況來(lái)判斷,本文分類(lèi)效果評(píng)估主要是以精確率(precision),召回率(recall),F(xiàn)1值和準(zhǔn)確率(accuracy)來(lái)衡量。表2是根據(jù)分類(lèi)結(jié)果建立的矩陣,用來(lái)介紹評(píng)價(jià)標(biāo)準(zhǔn)的計(jì)算方式。這些評(píng)價(jià)標(biāo)準(zhǔn)計(jì)算方式如下。
precison = TP/(TP+FP) (5)
recall = TP/(TP+FN) (6)
F1 = 2*precison*recall/(precision+recall) (7)
accuracy = (TP+TN)/(TP+FP+FN+TN) (8)
表 2 評(píng)價(jià)指標(biāo)介紹
(2)非靜態(tài)的嵌入層
預(yù)訓(xùn)練詞向量是自然語(yǔ)言處理中常用方法。通常在訓(xùn)練時(shí)固定詞向量不變,但是往往不同領(lǐng)域的語(yǔ)言表達(dá)有其特殊性,詞向量需要進(jìn)行調(diào)整。本文在模型中初始化兩個(gè)相同詞嵌入層。在訓(xùn)練中固定其中一層參數(shù),即保持當(dāng)前層的詞特征向量不變。另一層隨訓(xùn)練進(jìn)行微調(diào),學(xué)習(xí)目標(biāo)域下詞分布。
(3)預(yù)訓(xùn)練詞向量維度的影響
向量維度增加造成模型復(fù)雜度成倍增長(zhǎng),因此,特征向量維度選擇對(duì)實(shí)驗(yàn)結(jié)果有重要影響。本文對(duì)4種維度的GloVe詞向量[50, 100, 200, 300]進(jìn)行實(shí)驗(yàn),結(jié)果如表3所示。不同維度GloVe初始化詞向量對(duì)本文分類(lèi)任務(wù)的精確率,召回率以及準(zhǔn)確率僅有較小影響。但是低維詞向量能較大提高模型訓(xùn)練和推斷速度。使用300維詞特征向量訓(xùn)練速度是50維3倍以上,因?yàn)樘幚砀呔S數(shù)據(jù)需要消耗更多資源。
表 3 不同維度詞向量的結(jié)果
(4)與其它模型對(duì)比
如表4所示,本模型對(duì)識(shí)別關(guān)于惡意代碼行為的語(yǔ)句有更好性能,雖然召回率有所降低,但是大大提高了識(shí)別的精確率和F1值。卷積神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征自提取能力,相較于人工選取特征具有明顯效率優(yōu)勢(shì)。通過(guò)使用不同窗口大小的卷積核,模型能夠同時(shí)關(guān)注不同范圍詞匯,捕捉不同距離詞語(yǔ)之間的特征。
表 4 實(shí)驗(yàn)結(jié)果及與其它模型比較
在不同領(lǐng)域下詞分布表示有偏差,非靜態(tài)的嵌入層能夠使詞分布表示向目標(biāo)域微調(diào)。例如在源域中哈希和加密可能表示相近語(yǔ)義,但在網(wǎng)絡(luò)安全領(lǐng)域中,這兩個(gè)詞應(yīng)該要有明顯區(qū)分,這在具體領(lǐng)域的分類(lèi)任務(wù)下特別重要。對(duì)于未出現(xiàn)在訓(xùn)練中(隨機(jī)初始化)的詞,這種微調(diào)方式允許模型學(xué)習(xí)更有意義的表示。
為了更好地理解模型的運(yùn)作,對(duì)模型分類(lèi)錯(cuò)誤語(yǔ)句進(jìn)行了抽樣。圖3是一些假陽(yáng)性結(jié)果,即被模型誤判為相關(guān)語(yǔ)句,主要原因是模型無(wú)法有效分清語(yǔ)句是用于描述惡意軟件屬性還是行為或其能力。
This sample is a packed 32-bit kernel driver extracted by the aforementioned DLL with an MD5 hash of: de7500fc1065a081180841f32f06a537, this sample will only function on a Windows 32-bit kernel. The backdoor is also capable of elevating its privileges on win7 and above using a method similar to the one described here: http://www.pretentiousname.com/misc/win7_uac_whitelist2.html. CozyDuke may use multiple techniques for establishing persistence; the following is one technique used.
圖4是漏報(bào)結(jié)果抽樣,表現(xiàn)出網(wǎng)絡(luò)安全中專(zhuān)業(yè)術(shù)語(yǔ)特征或一些特殊命名實(shí)體,由此可假設(shè)模型不能有效處理這些特征,當(dāng)這些特征出現(xiàn)頻率很少時(shí)這種影響更為嚴(yán)重。因此,模型需以其它方式或者額外信息來(lái)處理這種情況。
The configuration data for CozyDuke is stored as a separate RC4-encrypted file that is written to disk by the CozyDuke dropper during initial infection. In this context, DNS hijacking is done to subvert the resolution of Domain Name System (DNS) queries through modifying the behavior of DNS servers so that they serve fake DNS information. The encrypt method encrypts the data in the modified CBC-CTS-like mode .
本文使用了一種卷積神經(jīng)網(wǎng)絡(luò)的變體從網(wǎng)絡(luò)安全報(bào)告中進(jìn)行信息抽取。試圖不以語(yǔ)言學(xué)或者網(wǎng)絡(luò)安全相關(guān)知識(shí)為背景構(gòu)建信息抽取方法。相比其它模型,取得了一定的性能提升,但仍不能達(dá)到實(shí)用高度。在未來(lái)工作中,仍然試圖不斷提高模型性能,使其達(dá)到供研究人員可信賴(lài)程度。探索可以解決不同領(lǐng)域之間自適應(yīng)問(wèn)題的遷移學(xué)習(xí)也可能是一種處理標(biāo)記數(shù)據(jù)不足的辦法。
[1]Langner R. Stuxnet: Dissecting a Cyberwarfare Weapon[J]. IEEE Security & Privacy, 2011, 9(3):49-51.
[2]馬也, 吳文燦, 麥永浩.從WannaCry勒索病毒事件談高校網(wǎng)絡(luò)安全[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2018.
[3] Fu M, Zhao X, Yan Y. HCCL. An End-to-End System for Sequence Labeling from Cybersecurity Reports[C]// International Workshop on Semantic Evaluation. 2018:874-877.
[4]高明霞,李經(jīng)緯.基于word2vec詞模型的中文短文本分類(lèi)方法[J].山東大學(xué)學(xué)報(bào)(工學(xué)版),2018.
[5]任勉, 甘剛.基于雙向LSTM模型的文本情感分類(lèi)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2018.
[6]Kim Y. Convolutional Neural Networks for Sentence Classification[J]. Eprint Arxiv, 2014.
[7]Sikdar, Utpal & Barik, Biswanath & Gamb?ck. Identifying and Classifying Malware Text Using Conditional Random Fields and Na?ve Bayes Classifiers[C]// International Workshop on Semantic Evaluation. 2018:890-893. 10.18653/v1/S18-1144.
[8]Brew, Chris. Using dependency features for malware NLP[C]// International Workshop on Semantic Evaluation. 2018:894-897. 10.18653/v1/S18-1145.
[9]Padia, Ankur & Roy, Arpita & Satyapanich. Understanding Text about Malware[C]// International Workshop on Semantic Evaluation. 2018:878-884. 10.18653/v1/S18-1142.
[10]Loyola, Pablo & Gajananan, Kugamoorthy & Watanabe. Semantic Extraction from Cybersecurity Reports using Representation Learning[C]// International Workshop on Semantic Evaluation. 2018:885-889. 10.18653/v1/S18-1143.
[11]Jeffrey Pennington, Richard Socher, and Christopher Manning. Glove: Global vectors for word representation[C]// In Proc. of EMNLP. 2014:1532– 1543.
[12]Peter Phandi, Amila Silva, Wei Lu. Semantic Extraction from Cybersecurity Reports Using Natural Language Processing (SecureNLP)[C]//Proceedings of the 12th International Workshop on Semantic Evaluation (SemEval-2018). 2018:697–706
[13]Kiat Lim, Swee & Muis, Aldrian Obaja & Lu, Wei. MalwareTextDB: A Database for Annotated Malware Articles[C]// Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics . 2017:1557-1567. 10.18653/v1/ P17-1143