俞遠(yuǎn)哲,王金雙,鄒 霞
(陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京210001)
PDF(Portable Document Format)文檔的使用非常廣泛,但隨著版本的更新?lián)Q代,PDF文檔包含的功能也變得多種多樣,其中一些鮮為人知的功能(如文件嵌入、JavaScript代碼執(zhí)行、動(dòng)態(tài)表單等)越來(lái)越多地被不法分子利用,來(lái)實(shí)施惡意網(wǎng)絡(luò)攻擊行為[1]。APT(Advanced Persistent Threat)攻擊[2]常常借助惡意PDF文檔這一媒介,通過(guò)社會(huì)工程學(xué)、水坑攻擊、釣魚(yú)攻擊等手段,構(gòu)造巧妙偽裝的惡意文檔,誘騙受害者下載,從而侵入或破壞計(jì)算機(jī)系統(tǒng)。相比傳統(tǒng)的可執(zhí)行惡意程序攻擊,惡意文檔攻擊具有更強(qiáng)的迷惑性。
近年來(lái),基于機(jī)器學(xué)習(xí)的惡意PDF文檔檢測(cè)技術(shù)被廣泛使用。相比于傳統(tǒng)簽名匹配檢測(cè),它能夠及時(shí)發(fā)現(xiàn)新型惡意文檔且檢測(cè)模型更新方便迅速。其中基于靜態(tài)檢測(cè)的機(jī)器學(xué)習(xí)方法,具有高效、成本低、解釋性強(qiáng)等特點(diǎn)。而深度學(xué)習(xí)相較于機(jī)器學(xué)習(xí)算法,更強(qiáng)調(diào)學(xué)習(xí)數(shù)據(jù)中的隱藏信息,如特征的相關(guān)性。
前期研究利用傳統(tǒng)的機(jī)器學(xué)習(xí)模型如SVM、隨機(jī)森林等,對(duì)小規(guī)模的數(shù)據(jù)分類(lèi)效果較好,但是當(dāng)數(shù)據(jù)維度(包括特征維度及樣本維度)過(guò)大時(shí),需要耗費(fèi)大量的資源進(jìn)行學(xué)習(xí)。而卷積神經(jīng)網(wǎng)絡(luò)通過(guò)卷積核來(lái)實(shí)現(xiàn)高維數(shù)據(jù)的處理,提取局部特征;通過(guò)池化操作,來(lái)提取一塊區(qū)域內(nèi)的主要特征,能降低參數(shù)數(shù)量,減少冗余,防止模型的過(guò)擬合;最后通過(guò)全連接層,將局部特征根據(jù)權(quán)值整合成完整的特征。但是實(shí)際應(yīng)用中,文檔特征與圖像特征不同,因?yàn)槲臋n特征提取的順序不同,不相鄰的兩類(lèi)特征之間也存在一定的相關(guān)性,而卷積核提取的是局部相鄰特征,損失了部分全局信息,降低了文檔特征的表征能力。
因此,本文設(shè)計(jì)了一個(gè)基于特征集聚和卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練模型。首先通過(guò)特征集聚來(lái)挖掘特征間的潛在相似度,提升特征的表征能力。同時(shí)實(shí)現(xiàn)了特征降維,提高了模型訓(xùn)練的效率。再利用卷積神經(jīng)網(wǎng)絡(luò)挖掘聚合特征之間的關(guān)系,自動(dòng)地從數(shù)據(jù)中學(xué)習(xí)訓(xùn)練得到一個(gè)成熟的檢測(cè)模型。
本文的主要工作如下:
(1)以靜態(tài)檢測(cè)技術(shù)為基礎(chǔ),提取文檔的常規(guī)特征和結(jié)構(gòu)特征進(jìn)行集聚,以Ward最小方差聚類(lèi)方法評(píng)估兩類(lèi)特征間的潛在相似度。Ward方法是一種層次聚類(lèi)算法,它較于其他聚類(lèi)的優(yōu)勢(shì)在于不依賴(lài)于聚類(lèi)初始點(diǎn)的選擇,并能最小化兩類(lèi)特征合并時(shí)導(dǎo)致的平方誤差,使得每次合并的都是最相似的兩類(lèi)特征。通過(guò)將潛在的相似特征以迭代的方式合并得到聚合特征,實(shí)現(xiàn)了特征的聚類(lèi),降低了特征空間維度,提升了模型的訓(xùn)練效率和特征的表征能力。
(2)將文檔的特征值送入CNN模型,利用三個(gè)不同大小的卷積核來(lái)發(fā)掘特征空間里不同范圍的特征向量所包含的隱藏信息。將三者得到的特征圖合并,并采用最大值池化的方法將特征值整合,最后通過(guò)全連接輸出得到結(jié)果。同時(shí)在池化層與全連接層之間加入了Dropout層,起到減少特征冗余避免過(guò)擬合的發(fā)生。
傳統(tǒng)的惡意PDF文檔檢測(cè)方法主要基于簽名識(shí)別和啟發(fā)式規(guī)則匹配[3],優(yōu)點(diǎn)是誤報(bào)率低,但局限于對(duì)病毒庫(kù)中已有的惡意樣本進(jìn)行檢測(cè),面對(duì)未知惡意文檔反應(yīng)遲緩,攻擊者可以通過(guò)偽造新的惡意文檔來(lái)繞過(guò)檢測(cè)。2003年,Goel[4]提出了基于Kolmogorov復(fù)雜度度量的簽名匹配技術(shù),通過(guò)計(jì)算信息距離,用于惡意文檔的相似性度量,從而對(duì)未知文檔進(jìn)行檢測(cè);2010年,Baccas[5]通過(guò)分析惡意 PDF樣本,根據(jù)對(duì)象標(biāo)簽建立了一個(gè)規(guī)則和特征庫(kù),以篩選過(guò)濾惡意文檔。但是這類(lèi)方法維護(hù)成本和周期長(zhǎng),制定的規(guī)則過(guò)于依賴(lài)專(zhuān)家經(jīng)驗(yàn),容易漏報(bào)變異較大的或是新型惡意文檔。
基于機(jī)器學(xué)習(xí)的靜態(tài)檢測(cè)技術(shù)主要利用元數(shù)據(jù)[6]、JavaScript腳本特征[7]、文檔結(jié)構(gòu)[8]等特征進(jìn)行識(shí)別。它主要可以分為三類(lèi):
(1)對(duì)文檔進(jìn)行二進(jìn)制分析,使用N-gram方法提取特征送入分類(lèi)器模型訓(xùn)練預(yù)測(cè)。2013年P(guān)areek等人[6]提出了基于熵和N-gram分析的PDF文檔檢測(cè)方法,通過(guò)將文檔轉(zhuǎn)化為一個(gè)二進(jìn)制序列,計(jì)算其熵值,對(duì)于熵值不在置信區(qū)間內(nèi)的可疑文檔進(jìn)行N-gram分析檢測(cè)。研究表明惡意文檔的熵值普遍較低,該方法優(yōu)勢(shì)在于無(wú)需解析文檔內(nèi)容,但是對(duì)文檔的特征分析不夠,攻擊者可以通過(guò)在良性文檔嵌入惡意腳本的方式構(gòu)造惡意文檔,使得文檔的熵值變化不大,從而逃避檢測(cè)。2018年,Kumar等人[9]提出使用圖像相似性技術(shù)將文件先轉(zhuǎn)化為二進(jìn)制代碼,再轉(zhuǎn)化為灰度圖像使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分析。2020年Fettaya等人[10]將文檔字節(jié)序列特征送入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行檢測(cè)。該類(lèi)方法無(wú)需任何預(yù)處理和特征提取,但是由于文檔大小不固定,文檔的二進(jìn)制序列長(zhǎng)度也不一致,當(dāng)長(zhǎng)度差異較大時(shí),容易出現(xiàn)語(yǔ)義截?cái)嗟膯?wèn)題。
(2)對(duì)文檔內(nèi)容中的標(biāo)簽、頁(yè)數(shù)、編碼、JavaScript腳本等進(jìn)行解析,如2018年Jason Zhang提出了MLPdf[11],它同時(shí)選取了PDF內(nèi)容特征和結(jié)構(gòu)特征,送入多層感知器(MLP)中進(jìn)行學(xué)習(xí)檢測(cè)。
(3)根據(jù)文檔結(jié)構(gòu)特征進(jìn)行分析,如Srndic和Laskov提出了 Hidost[12],通過(guò)對(duì)象之間的引用關(guān)系構(gòu)造了PDF結(jié)構(gòu)樹(shù),然后從PDF的結(jié)構(gòu)樹(shù)中提取每個(gè)對(duì)象的最短結(jié)構(gòu)路徑,并將這些路徑的二進(jìn)制計(jì)數(shù)作為特征,送入決策樹(shù)模型和SVM模型進(jìn)行訓(xùn)練評(píng)估。
靜態(tài)檢測(cè)無(wú)需執(zhí)行文檔程序,具有特征提取方便、檢測(cè)效率高的特點(diǎn),但同時(shí)文檔的靜態(tài)信息也容易被攻擊者所混淆[13],影響分類(lèi)器的檢測(cè)結(jié)果。
本文提出了一種基于特征集聚和卷積神經(jīng)網(wǎng)絡(luò)的惡意PDF文檔檢測(cè)方法CNN-FAG,其整體框架如圖1所示。首先,特征提取模塊使用PeePDF[14]對(duì)PDF文件進(jìn)行結(jié)構(gòu)解析,得到結(jié)構(gòu)特征;使用PDFid[15]解析文檔獲得常規(guī)特征。其次,特征集聚模塊將兩大類(lèi)特征依據(jù)Ward方法合并,得到特征向量。最后,學(xué)習(xí)檢測(cè)模塊基于CNN模型對(duì)特征學(xué)習(xí)檢測(cè),并進(jìn)行模型評(píng)價(jià)。
本文所選用的特征包括常規(guī)特征和結(jié)構(gòu)特征,常規(guī)特征指描述PDF文檔本身的內(nèi)容特征,如對(duì)象標(biāo)簽、JavaScript代碼、壓縮數(shù)據(jù)等。這些特征能直接從文檔的靜態(tài)信息中抽取得到,無(wú)需分析代碼邏輯。
2.2.1 常規(guī)特征
基于對(duì)PDF格式的分析,本文涉及的常規(guī)特征主要包括 14個(gè),包括 Page、Encrypt等,其含義及安全相關(guān)性如表1所示。這些特征單獨(dú)一個(gè)無(wú)法完全對(duì)惡意PDF文檔進(jìn)行分類(lèi),但是綜合所有特征就會(huì)更容易進(jìn)行分類(lèi)。例如,大多數(shù)惡意文檔通常只包含一頁(yè),惡意文檔越小越容易在網(wǎng)絡(luò)上進(jìn)行快速的大規(guī)模擴(kuò)散,但是也有一部分惡意文檔為了進(jìn)行針對(duì)性的攻擊,通過(guò)在正常文檔的基礎(chǔ)上嵌入惡意腳本,使得具有惡意行為的特征很難被發(fā)現(xiàn)。因此需要綜合分析多個(gè)特征,來(lái)對(duì)文檔進(jìn)行更有效的分類(lèi)。
表1 14個(gè)常規(guī)數(shù)據(jù)特征的含義及其安全相關(guān)性
2.2.2 結(jié)構(gòu)特征
PDF結(jié)構(gòu)樹(shù)是以/Catalog標(biāo)簽為根節(jié)點(diǎn),根據(jù)引用對(duì)象號(hào)指向子對(duì)象節(jié)點(diǎn),以此層層遞進(jìn)直到?jīng)]有引用對(duì)象號(hào),即到達(dá)葉子節(jié)點(diǎn),最后形成的樹(shù)或森林結(jié)構(gòu)如圖2所示。
圖2 PDF結(jié)構(gòu)樹(shù)
結(jié)構(gòu)特征反映了PDF文檔中各對(duì)象的相關(guān)性,但是無(wú)法像常規(guī)特征一樣直接反映文檔的惡意屬性,且特征分析相對(duì)復(fù)雜。本文依靠PeePDF工具得到文檔的結(jié)構(gòu)樹(shù),然后提取得到結(jié)構(gòu)路徑,在此基礎(chǔ)上,設(shè)計(jì)了3類(lèi)特征來(lái)標(biāo)識(shí)文檔的屬性,具體如表2所示。
表2 3個(gè)結(jié)構(gòu)特征的含義及其安全相關(guān)性
通過(guò)分析前表提到的各特征的安全相關(guān)性,可知單一特征并不足以證明文檔的惡意性,比如含JavaScript標(biāo)簽的路徑占比高可能是惡意文檔只包含了惡意JavaScript代碼,占比低也可能是正常文檔被嵌入了惡意代碼。考慮到各特征之間存在一定的內(nèi)在相似性,通過(guò)相似性度量合并相似特征,有助于特征降維及消除冗余。因此,本文合并常規(guī)和結(jié)構(gòu)兩大類(lèi)特征進(jìn)行集聚處理。本文使用的特征集聚方法是以各類(lèi)特征作為聚類(lèi)對(duì)象,使用層次聚類(lèi)中的Ward方法評(píng)估兩類(lèi)特征間的潛在相似度,來(lái)得到聚合特征。Ward方法將每一個(gè)特征看作一類(lèi)簇,以?xún)蓚€(gè)簇合并后其離差平方和(ESS)的增量作為兩個(gè)簇間合并成本C,合并成本C最小的兩個(gè)簇生成新的簇,迭代直到得到所需數(shù)目的特征簇。ESS的計(jì)算如下:
兩個(gè)簇x和y的合并成本C,是由合并后的總ESS減去合并前的總ESS得到的,計(jì)算公式如下:
Ward方法的算法偽代碼如下:
本文使用的CNN模型結(jié)構(gòu)如圖3所示,輸入層是樣本中提取得到的N維特征向量,然后使用3個(gè)不同的卷積層對(duì)特征向量矩陣進(jìn)行卷積操作。每個(gè)卷積層都由128個(gè)寬度為N的卷積核構(gòu)成,卷積核的深度分別為 8、16、32。通過(guò)三個(gè)擁有不同大小卷積核的卷積層,來(lái)發(fā)掘特征空間里不同范圍的特征向量所包含的隱藏信息。然后將三者得到的特征圖合并,并選擇最大值池化的方法將特征值整合,最后通過(guò)全連接輸出得到結(jié)果。為了防止模型的過(guò)擬合,采用了ReLU作為激活函數(shù),減輕了參數(shù)之間的相互依賴(lài)關(guān)系。同時(shí)在池化層與全連接層之間加入了Dropout層,以減少特征冗余,避免過(guò)擬合的發(fā)生。
圖3 CNN模型結(jié)構(gòu)
實(shí)驗(yàn)環(huán)境為CPU Intel(R)i7-9750H,32 GB內(nèi)存,GPU為 GTX2060,硬盤(pán)為 120 GB SSD,使用 Ubuntu-16.04操作系統(tǒng)。實(shí)驗(yàn)數(shù)據(jù)集中惡意PDF文檔來(lái)自于 VirusTotal[16]病毒數(shù)據(jù)庫(kù)以及 Contagio數(shù)據(jù)集[17],良性樣本來(lái)源于Contagio數(shù)據(jù)集。使用的良性樣本數(shù)為9 093個(gè),惡意樣本數(shù)為 21 598個(gè),統(tǒng)計(jì)樣本數(shù)為30 691個(gè)。
本文的分類(lèi)模型使用了準(zhǔn)確率Accuracy、精確率Precision、召回率 Recall、F-score以及模型訓(xùn)練耗時(shí)time五個(gè)指標(biāo)進(jìn)行綜合衡量,前四個(gè)指標(biāo)的計(jì)算方法如下:
其中tp為真正例,fp為假正例,tn為真反例,fn為假反例。
考慮到樣本比例失衡以及數(shù)據(jù)集樣本量小的情況,會(huì)更容易導(dǎo)致模型訓(xùn)練不佳,因此,以樣本容量為2 000的數(shù)據(jù)集為基礎(chǔ),在三組不同的樣本比例條件下,通過(guò)改變特征向量維度N的值,即N=2,4,6,8,10,12,17 時(shí), 對(duì)分類(lèi)器的分類(lèi)準(zhǔn)確率Accuracy、精確率Precision、召回率 Recall、F-score以及模型訓(xùn)練耗時(shí)time五項(xiàng)參數(shù)進(jìn)行統(tǒng)計(jì),檢驗(yàn)?zāi)P偷木C合性能。
首先對(duì)樣本總數(shù)為 1 800,良性惡意樣本比例為1:1的數(shù)據(jù)集進(jìn)行測(cè)試,測(cè)試結(jié)果如表3所示。
表3 樣本比1:1各指標(biāo)數(shù)值表
對(duì)樣本總數(shù)為1 350,良性惡意樣本比例為2:1的數(shù)據(jù)集進(jìn)行測(cè)試,測(cè)試結(jié)果如表4所示。
表4 樣本比2:1各指標(biāo)數(shù)值表
對(duì)樣本總數(shù)為1 000,良性惡意樣本比例為9:1的數(shù)據(jù)集進(jìn)行測(cè)試,測(cè)試結(jié)果如表5所示。
表5 樣本比9:1各指標(biāo)數(shù)值表
F-score對(duì)于二分類(lèi)模型的結(jié)果具有較為客觀(guān)的評(píng)價(jià),為了更為直觀(guān)地呈現(xiàn)結(jié)果,本文基于表3、表4和表5中的 F-score結(jié)果繪制了圖4。
圖4 F-score對(duì)比
對(duì)圖4中的數(shù)據(jù)進(jìn)行分析,可以發(fā)現(xiàn)隨著聚合特征數(shù)N的增加,F(xiàn)-score呈下降趨勢(shì),且不同的良惡比下,聚合特征 N=2時(shí),F(xiàn)-score值最高,說(shuō)明模型的綜合性能最高,與N=17,即未聚合特征的分類(lèi)模型相比,大約有20%的顯著提升。當(dāng)N=10時(shí),F(xiàn)-score發(fā)生了突變,為了深層次地探究影響F-score的因素,基于表 3、表 4和表 5,繪制了 Precision折線(xiàn)圖和 Recall折線(xiàn)圖,如圖 5、圖 6所示。
圖5 Precision對(duì)比
圖6 Recall對(duì)比
對(duì)圖5進(jìn)行分析可知,在三種不同的樣本比例之下,Precision變化趨勢(shì)幾乎相同,幾乎均為 95%,說(shuō)明Precision幾乎不受樣本比例的影響。當(dāng)N=10時(shí),各樣本比例下的Precision都有明顯下降,說(shuō)明聚合特征數(shù)為10時(shí),特征對(duì)模型預(yù)測(cè)的貢獻(xiàn)比較弱,導(dǎo)致 Precision偏低。
對(duì)圖6進(jìn)行分析可知,Recall受樣本比例的影響較大,當(dāng)良性樣本數(shù)多于惡意樣本數(shù)時(shí),Recall明顯下降,也導(dǎo)致了F-score下降。同時(shí)可以看出,樣本比例失衡容易導(dǎo)致模型欠擬合。當(dāng)良性惡意樣本比例為9:1時(shí),初始模型的召回率只有甚至達(dá)到了5%,但是通過(guò)特征集聚,召回率提升到了 95%,說(shuō)明該方法提升了模型的靈敏度和分類(lèi)能力,有效緩解了模型的欠擬合問(wèn)題。當(dāng)聚合特征數(shù)為10,樣本比例為9:1時(shí),圖像出現(xiàn)了拐點(diǎn),召回率低則模型的分類(lèi)能力差。說(shuō)明此時(shí)得到的聚合特征使得模型產(chǎn)生了比較嚴(yán)重的欠擬合問(wèn)題,樣本比例越失衡,該問(wèn)題越明顯。同時(shí)因?yàn)檎倩芈蕵O低,導(dǎo)致了表5中N=10對(duì)應(yīng)的F-score比較異常。綜上分析可得,當(dāng)訓(xùn)練良性惡意樣本比例為1:1,聚合特征數(shù)N為2時(shí),分類(lèi)模型的效果最好??v向比較來(lái)看,分析表3數(shù)據(jù)可得,特征集聚前后模型的準(zhǔn)確度提升了18%,召回率提升了 36%,F(xiàn)-score提升了 0.22,說(shuō)明特征集聚的方法提高了特征的表征能力,緩解了模型的欠擬合問(wèn)題,并提升了模型的綜合性能。
為檢測(cè)本模型的性能,本文使用樣本總數(shù)為30 691的數(shù)據(jù)集進(jìn)行測(cè)試,將結(jié)果與近年來(lái)其他模型對(duì)比,如表6所示。對(duì)比可以得到,本文提出的分類(lèi)模型較前人提出的方法在各指標(biāo)上都有所提升。
表6 各方法指標(biāo)比較
針對(duì)PDF惡意文檔的傳統(tǒng)靜態(tài)檢測(cè)方法特征維度高、數(shù)據(jù)集樣本少導(dǎo)致過(guò)擬合等問(wèn)題,提出了一種基于特征集聚和卷積神經(jīng)網(wǎng)絡(luò)的惡意PDF文檔檢測(cè)方法CNN-FAG:通過(guò)整合常規(guī)特征和結(jié)構(gòu)特征,將特征數(shù)據(jù)正則化,提高模型的泛化能力,以此構(gòu)造一個(gè)初始特征集,然后使用層次聚類(lèi)中的Ward最小方差聚類(lèi)方法得到聚合特征,最后送入CNN模型進(jìn)行訓(xùn)練與檢測(cè)。通過(guò)縱向比較和橫向?qū)Ρ鹊姆绞綄?duì)模型的檢測(cè)效果進(jìn)行了驗(yàn)證,取得了較為滿(mǎn)意的結(jié)果。CNN-FAG實(shí)現(xiàn)了特征降維,緩解了模型的過(guò)擬合問(wèn)題,提升了模型的綜合性能。
下一步亟待改進(jìn)的工作:選取更多的混淆不變特征加入初始特征集中,提高特征空間的表征能力;根據(jù)實(shí)際檢測(cè)偏好需要,改變F-score中的偏好值β;增加特征維度,進(jìn)一步完善分類(lèi)器模型,提升分類(lèi)模型的魯棒性和綜合效能。