李濤
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
近年來,PDF文檔格式作為一種電子文件的格式,由于它的方便性、高效性、穩(wěn)定性,已經(jīng)在市場上廣泛的應(yīng)用。PDF文檔的格式是標(biāo)準(zhǔn)化的,并且是公開的,這就有不同的廠商實(shí)現(xiàn)自己的PDF閱讀器。但是它的廣泛流行,在安全性上受到了極大的挑戰(zhàn)。
PDF文檔的攻擊方法主要通過3種形式達(dá)到目標(biāo)。第一種是通過PDF閱讀器的API漏洞,通過API漏洞實(shí)現(xiàn)攻擊,第二種是編寫有害的JavaScript植入PDF文檔中,達(dá)到攻擊目的,第三種是通過PDF標(biāo)準(zhǔn)提供的間接引用、加密等形式來隱藏攻擊向量。攻擊者可以通過3種攻擊形式的有效結(jié)合,更大程度的實(shí)現(xiàn)攻擊成功率。目前研究PDF檢測方面,重點(diǎn)是研究惡意文檔中JavaScript的檢測,其中大部分嵌入的Ja?vaScript代碼在一定程度上進(jìn)行了混淆編碼,不但增加了分析的復(fù)雜度,同時(shí)殺毒軟件很難檢測出來。
本文通過N-gram算法提取PFD中JavaScript的特征,組成特征向量,通過機(jī)器學(xué)習(xí)算法的學(xué)習(xí),最后得到PDF的靜態(tài)檢測模型。在其中引入反混淆的處理機(jī)制,從而能夠建立更為完善的機(jī)器學(xué)習(xí)模型。
本文PDF文檔檢測模型是基于機(jī)器學(xué)習(xí)的模型靜態(tài)檢測模型,模型主要解決的問題是,PDF文檔中Ja?vaScript的準(zhǔn)確的提取,再利用N-gram算法提取惡意特征,最后使用機(jī)器學(xué)習(xí)算法建立模型。
故此,模型劃分為3個(gè)模塊,其一,提取PDF中Ja?vaScript代碼;其二,分析JavaScript特征向量;其三,通過機(jī)器學(xué)習(xí)建立模型。
圖1 PDF文檔檢測模型流程圖
一個(gè)基本的PDF文檔都是由以下4部分組成:文件頭(header),文件內(nèi)容(body),交叉引用表(cross-ref?erence table)和文件尾(trailer)。文件內(nèi)容是由一些對象(Objects)組成的,這些對象可以直接和間接引用,對象有8種不同的類型,如表1。
JavaScript一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。在PDF中也廣泛應(yīng)用。在JavaScript的幫助下,PDF提供了一些除展示圖片和文字以外的其他功能。對PDF的文檔批處理,還用出來PDF中的表格,以及控制多媒體事件等。
表1 PDF中的8種不同類型
在PDF文檔中,JavaScript的代碼數(shù)據(jù)可以通過直接引用,和間接引用兩種方式去處理,一般在惡意PDF中,JavaScript都是通過間接引用,來簡單的繞過檢測工具的檢測。通過使用開源的JavaScript提取工具,可以提取是直接顯式的嵌入/JS中的,也可找出通過查詢/JS關(guān)鍵字,找出應(yīng)用的JavaScript代碼。
從PDF文檔中提取JavaScript代碼后,通過N-gram方法來處理,N-gram是基于馬爾科夫鏈的文本處理方法,提取出惡意的JavaScript特征作為多維向量的數(shù)據(jù),建立模型。為了增加提取特征的有效性,反混淆,提出如下措施:
(1)惡意PDF為了躲避殺毒軟件對它的查殺,它會(huì)隱藏JavaScript代碼,它不會(huì)直接使用/JavaScript和/JS這種對象,這些對象會(huì)暴露它們的JavaScript代碼。取而代之的是如下對象名:
在特征對象中添加這類特征,可直接判斷它為惡意代碼。
(2)在惡意的JavaScript中會(huì)出現(xiàn)較多的特殊函數(shù)。eval()函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的JavaScript代碼;escape()對字符串加密和 unescape()函數(shù)對字符串解密。
(3)在惡意 PDF 中出現(xiàn) for,while,if,else等關(guān)鍵字的個(gè)數(shù)一般都是有一定規(guī)律的,把它們的個(gè)數(shù)加入到惡意PDF的特征向量中;在利用漏洞,使用堆噴射技術(shù)會(huì)需要大量的填充無意義的NOP語句,其中含有%u9090特征字符出現(xiàn)。
本文使用的PDF文檔靜態(tài)檢測模型是單一類別支持向量機(jī)(OCSVM),其優(yōu)點(diǎn)是當(dāng)分類問題中最典型的的二分類問題,遇到樣本中有一種分類中的樣本數(shù)量非常稀少,不能形成二分類的模型,就要考慮單一類別支持向量機(jī)。在惡意PDF文檔的檢測中,含有JavaS?cript的PDF文檔要遠(yuǎn)遠(yuǎn)大于含有JavaScript的正常文檔。所以只需要獲取惡意PDF文檔特征,建立單一類別支持向量機(jī)模型,進(jìn)行PDF檢測。
這種單一類別支持向量機(jī)模型對數(shù)據(jù)的分類方法過程為:通過學(xué)習(xí)大量的惡意PDF樣本,建立模型M,對于需要檢測的PDF樣本,計(jì)算它提取出的特征向量和模型M中原點(diǎn)兩者之間的歐氏距離,設(shè)置合適的R值,當(dāng)此距離在R之內(nèi)時(shí),認(rèn)為此PDF屬于類別M中的,歸類為惡意PDF文檔,否則文檔是非惡意的。
對檢測系統(tǒng)的評估使用的數(shù)據(jù)時(shí)來自惡意數(shù)據(jù)收集網(wǎng)站contagio,提供的數(shù)據(jù)其中包括10982個(gè)惡意PDF文檔,和9000個(gè)正常的PDF文檔。下載的文檔通過抽樣檢測,通過virustotal網(wǎng)站的檢測,得到數(shù)據(jù)的正確性,可對本文提出的檢測系統(tǒng)進(jìn)行檢測。為了測試需要,把惡意樣本分成訓(xùn)練集樣本,和測試集樣本兩部分,其中訓(xùn)練集樣本個(gè)數(shù)為10509個(gè),測試集樣本為473個(gè),因?yàn)槭褂玫哪P褪菃我幌蛄繖C(jī),所以正常PDF文檔就全部為測試集。
表2 本檢測系統(tǒng)對473個(gè)惡意文檔的檢測結(jié)果
表3 本檢測系統(tǒng)對9000個(gè)正常文檔的檢測結(jié)果
經(jīng)過查看未檢出的惡意PDF文檔,可以看出大部分是不含JavaScript的文檔,即便是包含JavaScript的文檔,腳本本身也沒有攻擊性,這給我們以啟示,在以后的工作,我們還要收集除JavaScript外的其他的特征。對于正常的PDF文檔而言,由于收集到的文檔中絕大多數(shù)都不含有JavaScript代碼,含有JavaScript代碼的正常PDF樣本也多為表格,對PDF文檔集合進(jìn)行批處理,控制多媒體事件等,例如使用的是判斷表格中填寫的是否為日期是否為合適的數(shù)字等簡單的Java-Script代碼,所以被誤報(bào)的可能就非常小。
在表4,使用了ClamAV與NOD32與本系統(tǒng)進(jìn)行比較,ClamAV是用于檢測木馬,病毒,惡意軟件和其他惡意威脅的一個(gè)開源殺毒引擎,NOD32是ESET公司旗下的一款防病毒軟件。從對惡意PDF的檢出率情況,可以看出本文系統(tǒng)檢出率高于ClamAV和NOD32,說明了實(shí)驗(yàn)的有效性,實(shí)驗(yàn)結(jié)果達(dá)到了預(yù)期效果。
表4 和近年其他檢測工具比較
本文介紹了PDF中包含JavaScript的基本知識(shí),通過提取PDF中JavaScript特征,形成特征向量,再通過基于的支持向量機(jī)的機(jī)器學(xué)習(xí)算法學(xué)習(xí)訓(xùn)練,提出了一種PDF的靜態(tài)檢測模型。在處理JavaScript時(shí)候,增加了反混淆的簡單機(jī)制,使特征分析更為精確,并建立更為完善的機(jī)器學(xué)習(xí)模型。在接下來的研究中,重點(diǎn)放在靜態(tài)與動(dòng)態(tài)模型相結(jié)合的思路上,增加惡意PDF的檢出率。
參考文獻(xiàn):
[1]孫本陽,王軼駿,薛質(zhì).一種改進(jìn)的惡意PDF文檔靜態(tài)檢測方案[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(3):308-313.
[2]周可政,施勇,薛質(zhì).基于惡意PDF文檔的APT檢測[J].信息安全與通信保密,2016(1):131-136.
[3]李玲曉,伍淳華.基于結(jié)構(gòu)特征的惡意PDF文檔檢測[C].中國通信學(xué)會(huì)學(xué)術(shù)年會(huì),2014.
[4]林楊東,杜學(xué)繪,孫奕.惡意PDF文檔檢測技術(shù)研究進(jìn)展[J/OL].計(jì)算機(jī)應(yīng)用研究,2018(08):1-7[2018-01-17].
[5]文偉平,王永劍,孟正.PDF文件漏洞檢測[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2017(1):33-38.
[6]胡江,周安民.針對JavaScript攻擊的惡意PDF文檔檢測技術(shù)研究[J].現(xiàn)代計(jì)算機(jī),2016(1):36-40.
[7]Laskov P.Static Detection of Malicious JavaScript-bearing PDF Documents[C]Twenty-Seventh Computer Security Applications Conference,ACSAC 2011,Orlando,Fl,USA,5-9 December.DBLP,2011:373-382.