孫本陽 王軼駿 薛 質
(上海交通大學電子信息與電氣工程學院 上海 200240)
?
一種改進的惡意PDF文檔靜態檢測方案
孫本陽王軼駿薛質
(上海交通大學電子信息與電氣工程學院上海 200240)
隨著PDF文件的使用日益廣泛,惡意的PDF文檔不斷涌現。現有的惡意PDF文檔的檢測方案有一定的缺陷,靜態檢測的準確度較低并且易混淆。提出一種基于改進的N-gram文本提取機制和增強的單一類別支持向量機的機器學習模型的靜態檢測方案。實驗結果表明,該方案提高了靜態檢測方案的準確率,增加了一定的功能性和擴展性。
惡意PDF文檔靜態檢測單一類別支持向量機
自2008年AdobeReader被發現出第一例關鍵漏洞以來,PDF已經成為了攻擊者的主要目標。針對PDF的攻擊方法可以分為三類。第一類是針對AdobeJavaScriptAPI的攻擊,這種方法也是發現最早并使用最廣的一種。第二類是利用AdobeReader的非JavaScript的漏洞,但是需要使用JavaScript來觸發,例如使用堆噴射技術等。第三類是使用嵌入PDF文檔中的一些TrueType的漏洞,這一類的攻擊方式和JavaScript無關,也很少被使用。與其他的JavaScript的攻擊方式相比,例如“由下載驅動”,SQL注入或者跨站腳本,這些JavaScript的攻擊方式由于和瀏覽器,尤其是微軟的InternetExploerer直接相關,得到了更為廣泛的重視,但基于PDF的攻擊在研究中并沒有引起大量的關注。目前,針對PDF的攻擊絕大多數是與JavaScript相關聯的,其檢測模式主要有三種:純靜態的檢測模式;純動態的檢測模式和動靜結合的模式。純靜態的檢測模式,是基于PDF的某些特征,比如結構或內容,通過靜態提取出文檔當中的結構或字符,分析對比,確定是否為惡意。純動態的方法則是通過構建一個JavaScript的運行環境,檢測PDF中嵌入的JavaScript的運行過程,看是否有已知惡意的或敏感的調用過程,從而判斷PDF是否為惡意的。動靜結合的檢測模式則充分利用了靜態檢測和動態檢測的優點,對于大批量的PDF文件,先使用純靜態的檢測方法,找出確定的惡意文檔和非惡意文檔,對于可疑部分,使用動態檢測的方法來確定文檔的類別。這種方法是要建立在靜態檢測和動態檢測的基礎上的,一個良好的靜態檢測的方法會大大提高初步篩選的效率,能夠快速準確地對文檔進行惡意、正常或可疑的分類,一個良好的動態檢測的方法會使得對可疑文檔的檢測更為可靠。所以,從研究角度上講,仍需要從靜態檢測和動態檢測具體的方面來出發。本文主要從靜態方面入手,提出一種改進的靜態檢測方案,提高了惡意PDF文檔的檢測準確率,并能提供更詳盡的攻擊模式信息。
1.1PDF文檔格式的介紹
PDF即為便攜式文檔格式。這種文檔格式是Adobe公司在1993年用于文件交換而發展出的文件格式,這種方案的優點在于跨平臺,由于字體會嵌入文檔,在不同的設備上,文件會得到統一的顯示,因而得到廣泛使用。一個典型的PDF文檔通常由Header,Body,Cross-referencetable和Trailer四個部分構成。在一般情況下,PDF的文檔解析過程大都首先進行的是查看Header中的版本號和Trailer中的cross-referencetable。通過查看版本號來確認用于分析文檔的合適的API等信息,通過查看cross-referencetable,對文檔的架構有了一個整體的了解。然后通過cross-referencetable中的文檔模塊和交叉引用的信息,展示整個PDF文檔的內容。
1.2PDF中的JavaScript
PDF文檔除了可以展示文字和圖片信息之外,還提供了較為復雜的動態表格等功能。這些較為復雜的功能需要使用JavaScript代碼來實現,例如有些PDF表格,能夠自動檢查填寫的內容是否符合數據要求,是否為正確合理的日期等數值范圍,或是自動在表格填寫完成后發送給服務器等。PDF文檔標準為實現這些功能提供了豐富的基于JavaScript的API接口。
在PDF文檔中,主要用來標明是JavaScript的代碼的數據類型是通過/JS關鍵字,還有一種方式是利用引用的方式,通過/JS關鍵字指明另一模塊是JavaScript代碼,這兩種方案的對比如表1所示。

表1 兩種PDF嵌入JavaScript的方式
表1中的左邊的部分定義了一個OpenAction的JavaScript代碼,在文檔打開時,會輸出“HellofromJavaScriptinPDF!”,右邊的部分定義了一個OpenAction的JavaScript代碼,但執行的內容是在Obj16中,并沒有直接顯示JavaScript代碼的內容,這種方式可以將JavaScript封裝在其他的文檔模塊中,并可能通過加密等手段,隱藏需要執行的內容。除此之外,PDF中的JavaScript還可以用于動態代碼的執行,例如eval()函數,也可以重定向至其他頁面,例如使用/URL或/GoTo關鍵字,這些也可以作為一些文檔中嵌入的惡意代碼執行的入口。
在現有的研究中,針對惡意PDF文檔的檢測方法可以分為三種,純靜態檢測、純動態檢測以及動態檢測和靜態檢測結合的模式。
2.1純靜態檢測模式
這種檢測模式是通過提取PDF文檔中的JavaScript代碼,分析這些JavaScript代碼的特征,依據這些特征來判斷是否為惡意的,由于這種檢測模式不涉及PDF中JavaScript代碼的執行,僅僅從代碼本身做判斷,不需要構建JavaScript解析引擎,檢測所需要的時間也是比較短的。例如PJScan[14],這種方法直接提取PDF文檔中的JavaScript代碼,在語意分析過程中,設置了一些TOKEN,例如,TOK_STR_10,TOK_STR_100,TOK_STR_1000指代碼中出現了長度小于10,100,1000的string類型的數據,TOK_LP指代碼中出現了左括號。用這些TOKEN建立數學模型,從而判斷文檔是否為惡意文檔。這種方法的缺點是,并沒有對JavaScript中的代碼做具體的分析,準確度比較低。例如,對于兩份完全不同的JavaScript代碼,一份代碼中有一個String變量的名稱有8字節,但存儲的數據僅僅是一個“0”,另一份代碼中的String變量名稱為a,但存儲的內容有8字節,在這種檢測模式下,兩份代碼提取出的和該String相關的TOKEN是一樣的,均為TOK_STR_10,從而導致這種純文本的分析易混淆,差錯率相對較高。在2013年SrndicN.等提出了一種利用PDF文檔結構來判斷惡意文檔的方法[16],這種方案對PDF的各個模塊結構進行分析,將惡意PDF文檔結構上的特征作為分析的依據,從而對未知文檔進行判斷。這種思路較為新穎,但對于攻擊者來說,可通過改變結構但不用改變攻擊模式即可躲避檢測,繞過難度較低。
2.2純動態檢測模式
純動態方法往往采用多種多樣的技術來檢測PDF文檔打開后的運行情況,通過使用第三方的JavaScript解析引擎,多為瀏覽器中的JavaScript解析引擎,例如MoziliaFirefox的Spidermokey,Rhino,TraceMonkey和JaegerMonkey,或GoogleChrome中的V8等,并加入堆的監視器,設置合適的監控范圍,能夠探測到絕大多數的惡意JavaScript代碼,具有很高的準確度。但是,這樣的檢測方法需要較多的時間和空間資源,檢測速度比較慢。并且,純動態檢測的基礎是嵌入PDF文檔的JavaScript代碼得到執行,對于一些惡意代碼來說,如果設置了版本或其他對應的環境檢測,或是因為其他原因,在不符合條件的情況下,并不觸發執行惡意代碼,從而逃避檢測,也不能實現百分之百的檢測率。所以,對于純動態的檢測而言,需要盡可能的模擬環境,讓每一步跳轉指令都盡可能的執行,這樣的話需要模擬仿真的參數就非常多,而且同一份文件要在多個環境下檢測,所帶來的時間上消耗也是非常大的。CWSandbox[15]是純動態檢測中較為典型的例子。CWSandbox使用的是基于行為檢測的惡意代碼分析模式,對于PDF文檔,CWSandbox中加載了一個AdobeReader,在沙箱模式中加載該文件,通過監測系統調用和文檔打開的過程來判斷文檔是否嵌入惡意代碼。這種模式的優點是,對于符合環境條件的檢測是非常準確的,對于一般的正常的文檔來說,不會產生對應的可疑的調用,所以不會被標記為惡意文檔。缺點也十分明顯,在批量監測中,所花費的時間等成本是比較顯著的。
2.3動靜結合的檢測模式
這種方案結合了動態檢測和靜態檢測的優點,充分利用靜態檢測的高效和動態檢測的高準確度,制定合適的檢測方案。由于這種方案是建立在動態檢測過程和靜態檢測過程兩個部分的基礎上的,所以這種方案的瓶頸仍然存在于尋找一種更為高效的動態檢測方案和更準確的靜態檢測方案。目前最新的MPScan[6]的方案中,采用了對AdobeReader自身的JavaScript引擎直接掛鉤,得到代碼在執行過程中的op-code,進行對比和分析,和其他方案相比,這種方案由于使用了AdobeReader的JavaScript引擎,而非其他第三方的JavaScript引擎,不需要仿真模擬許多API,減少了搭建JavaScript引擎的復雜度,并且提供了真實完整的PDF格式中的JavaScriptAPI,在獲得了op-code以后,對op-code進行靜態和動態兩方面的檢測。這種方案由于利用了某些漏洞,掛鉤非開源軟件AdobeReader的技術,檢測效果是非常出色的,但一旦Adobe公司修補了該漏洞,那么這種掛鉤技術就無法實現,后續的操作就無法開展,可持續使用性較低。
PDF文檔檢測的主要影響因素有:PDF文檔中JavaScript的代碼提取是否完整;對提取出的JavaScript代碼的特征分析是否準確;檢測模型是否能夠將惡意PDF文檔和正常PDF文檔區別開來。本節主要闡述了改進的惡意PDF文檔的檢測方案,基于已有的PDF文檔檢測方案的缺陷,提出了基于靜態檢測的改進思路,并建立了更為完善的機器學習模型,從而能夠更準確地檢測惡意文檔。
整個模型建立和檢測的思路如圖1所示。系統可以分為三個大的模塊,為JavaScript代碼的提取,JavaScript特征分析和模型建立。通過分析一定量的樣本,建立模型之后,將這個模型用于對未知文檔的分析中,通過設定一定的權值,來比較未知文檔和建立的模型的相似程度,從而判斷文檔是否為惡意的。

圖1 改進的PDF文檔檢測方案模型
3.1PDF文檔中JavaScript代碼的提取
由于JavaScript的代碼在PDF中的存在模式有兩種方式,直接顯式的嵌入在/JS模塊中和在/JS模塊中使用引用的方式,標明另一模塊是JavaScript的代碼。
通過使用開源的PDF解析引擎和編寫的Python腳本,對于直接顯示的嵌入在/JS模塊中的JavaScript代碼,采用直接提取的方式,將模塊中的JavaScript代碼導出。對于采用引用模式嵌入了JavaScript代碼,則查找到/JS關鍵字后,將引用的模塊中的內容導出,作為從文檔中提取出的JavaScript代碼。
3.2PDF文檔提取的JavaScript代碼的特征分析
從PDF文檔中提取出對應的JavaScript代碼后,對于這些代碼的分析采用的是改進的N-gram的方法。N-gram是一種基于馬爾科夫鏈的一種常用的文本或語言分析算法,在惡意文檔的檢測中,提取出連續的長度為N的JavaScript代碼,分析這些代碼中是否具有某些特征,作為多維向量的數據,用于模型建立。為了防止混淆,提高特征提取的準確度,采用以下改進的措施:
(1) 對JavaScript中的代碼進行合理的處理
在原有的靜態檢測的方法中,大量使用了簡單的N-gram方法,從代碼中直接提取連續的長度為N的數據進行分析,這些在惡意文檔中查找到JavaScript代碼中,已經采用了一些混淆的措施,如原有的檢測方案是查看代碼中是否有String.fromCharCode()關鍵字,許多比較新的惡意PDF文檔中提取的代碼中采用的方案是:”Str”+”in”+”g.”+…,類似的混淆方法有很多,大都是采用JavaScript中的加法操作,在原有的分析方法中就難以找到匹配的字符串。對此,改進的方法是利用類似于程序設計語言中編譯器檢測括號的匹配的算法,用棧來實現,遇到str,就壓入棧中,接下來查找到加號,跳過,繼續查找到in,壓入棧中,重復該過程。使用這種簡單的操作,將拆分的關鍵字合并,從而準確地提取出特征。
類似的混淆的變量還有被大量采用的分段賦值給變量的的shellcode,分多次賦值的用于溢出的var變量,這些大都通過加法操作合并數據的,通過采用合適的入棧出棧操作,將這些代碼進行處理,以實現反混淆。
(2) 跳過無關變量名和函數名
在惡意PDF文檔提取的JavaScript代碼中,還有些常見的混淆代碼,給靜態檢測增加難度的方法是使用較長的隨機的字符串作為變量名和函數名,例如functionasdbdafregaeeateageg(),varqewrfabaoijaoijteijngiaodsjfo,如果對這些名稱進行匹配和分析,是得不到任何有效的數據,會大大增加文本分析的所消耗的時間,降低模型建立的準確度。所以在實際分析中,直接跳過這些命名,給定一些簡單的名稱代替進行分析,例如對于var變量,直接跳到等號以后的賦值部分,對于函數,直接跳到括號和函數體,從而提高代碼靜態分析的有效性。
(3) 加入重復字符串的檢測
在分析樣本中,有一類比較常見的特征是使用大量重復的字符作為溢出操作的切入點,如申請長變量a=129999999 99999999888888888888887777777777777…等,在shellcode中,也會大量的填充u9090,對于這些特征,可以加入重復字符串的檢測,將重復的字符串合并,例如將變量a=129999999999 8888888887777777777…標記為12987…,作為重點的比對特征加以使用。
(4) 針對使用replace()的方法的檢測
另外,還有一種惡意代碼使用的替換的方法來混淆代碼,在申請變量時,使用的是無意義的字符串來代表,在程序運行時,使用replace()函數,將這些無意義的字符串替換為有特殊用意的惡意代碼。例如,在申請變量時,給變量賦值為TYCAE,TYCBE等,在代碼執行中,使用replace函數,把T替換為%u,這樣的方法在動態檢測中是可以檢測出的,但對于傳統的靜態檢測的方法,是難以分析的。在改進的方案中,檢測這種方法,可以和上文中的(3)結合起來,因為這種方法通常是shellcode堆噴射中使用的,如果要實現堆噴射,就需要大量的填充無意義的NOP語句,使得在申請變量時,會出現大量的重復字符串,最后再使用replace函數將這些字符串進行替換。在實際檢測中,首先標記出大量重復的字符串,如果后文中有replace關鍵字,則直接替換掉重復字符串的內容,從而準確地提取出特征。
一些特征關鍵字如表2所示,將這些特征用多維向量標識出,對每一份PDF文檔可以提取出一個特征向量,利用這些向量進行數學運算和分析。

表2 一些惡意PDF靜態分析特征
3.3檢測模型的建立
本方案使用的惡意PDF文檔模型是改進的單一類別支持向量機,其優點在于只需要單一類別的數據來建立一個模型,這種方案在惡意PDF文檔檢測的模型建立過程中是非常適用的,因為絕大多數使用JavaScript代碼的PDF文檔都是惡意的。正常使用了JavaScript代碼的PDF文檔的數目與惡意文檔相比是微乎其微的,不足以產生足夠的數據用于建立模型,所以利用惡意文檔中收集到的特征,建立模型,進行檢測。
這種單一類別支持向量機模型對數據的分類方法過程為:通過學習一定量的樣本,建立模型O,對于未知樣本,計算未知樣本提取出的向量和模型O中原點兩者之間的歐式距離,設置一定的權值R,當距離在R之內時,認為屬于類別O中的,歸類為惡意文檔,否則為不屬于,認為文檔是非惡意的。數學描述為:對于樣本{xi|xi∈Rm,i=1,2,…,n},選用高斯核函數映射到高維空間,求解最優化問題:
s.t.‖φ(xi)-Oc‖2≤R2+ξi
v∈(0,1)ξi≥0i=1,2,…,n
即將數據點映射到高維空間上,求解出能夠包含數據樣本的最小超球體的球心Oc和半徑R,ξi為松弛因子,v為控制參數,φ(x)為映射函數,又稱核函數(對于此類非線性問題,選用高斯函數),m為用于訓練的樣本數。將惡意PDF文檔對應的數據點映射并求解出球心和半徑后,未知文檔的判別公式為:
f(x)=‖φ(xi)-Oc‖2-R2
當f(x)≤0時,文檔被歸類為惡意,當f(x)>0時,文檔被分類為非惡意。
在實際的分析惡意文檔的樣本的過程中,發現有些惡意文檔的攻擊模式具有很大的相似性,類似于病毒的變種。但不同類型的攻擊模式之間差異較大,在歸一化建立模型的過程中,會損失一部分數據,從而降低檢測的準確度。

圖2 單一類別支持向量機衍生模型
如圖2所示,傳統的分析模式下,在建立模型的過程中,將A,B,C歸一化為O,檢測過程中,通過計算未知文檔D和O的距離來判定是否為惡意文檔。如果采用這種模式,結合惡意文檔特有的情況,在設置了某個合適的閾值后,D和O的距離很遠,被分類為非惡意的文檔,但如果具體分析D和A的距離,那么就會被歸類為惡意文檔。所以,改進的方案應該是不僅僅建立一個統一的模型O,而且針對可歸類的數據建立模型A,B,C。這樣,在分析對比時,加入了ABC的模型,準確度會相應的提高,同時可以看出D最有可能是哪一類的攻擊模式。在簡單情況下,認為只要有一個子模型將樣本文檔歸類為惡意即認為該文檔為惡意文檔,此時可選擇判別函數為:
g(x)=min{fO(x),fA(x),fB(x),…}
則當g(x)≤0時,文檔被歸類為惡意,當g(x)>0時,文檔被分類為非惡意。對于復雜情況,可選擇判別函數為:
g(x)=kOfO(x)+kAfA(x)+kOfB(x)+…
此時kO,kA,…為針對子模型設置的權值,當g(x)≤0時,文檔被歸類為惡意,當g(x)>0時,文檔被分類為非惡意。對不同類型不同年份的PDF文檔,合理設置權值可以調整子模型的判別函數值對整體的判別函數的影響,從而使檢測結果更準確。
在添加樣本分類的過程中,可以根據不同的類別,設置不同的距離計算方法,提高某些顯著符合該類別的特征在計算距離時的影響因子,充分利用不同類別的攻擊方法的特殊性,提高檢測的正確率。例如,對于堆噴射攻擊模型,將有spray,%u9090,%930930等關鍵字在計算距離時所占有的權重提高,從而更精確地表達出堆噴射的攻擊模型,如果含有這些關鍵字,那么在分析過程中,極易被分入堆噴射的攻擊模型中,從而提高了整體的分析正確率。同時,添加新的樣本分類也可以保證較為良好的可擴展性,當新的攻擊模式出現時,分析合適的樣本,在已有的模型中添加新的分類,靜態檢測的過程會更加準確。
本小結所使用的數據是從網絡中收集的在2010年至2013年的時間段內的294個惡意文檔的樣本建立模型。分析測試的樣本是網絡中收集的從2008年至2013年的4966個惡意的PDF文檔和從網絡中隨機下載的4800個正常的PDF文檔進行試驗得到的結果。具體結果如表3和表4所示。

表3 對4 966個惡意文檔的檢測結果

表4 對4 800個正常文檔的檢測結果
從表3可以看出,對于樣本惡意文檔的檢測正確率為83.81%。從表4可以看出對于正常文檔,由于收集到的文檔中絕大多數都不含有JavaScript代碼,含有JavaScript代碼的正常PDF樣本也多為表格,使用的是判斷表格中填寫的是否為日期是否為合適的數字等簡單的JavaScript代碼,所以被誤報的可能性非常小。
如果采用傳統的單一模型,檢測結果見表5所示。從表3和表5的對比可以看出,如果使用了單一的模型進行檢測,惡意文檔的檢出率是78.39%,比改進模型的檢出率83.81%低,這說明在使用了分類的模型后,能夠較好地提高檢出率。與傳統的病毒分析模式不同,惡意PDF的攻擊模式相對較為單一,研究人員通過一定時間的分析,通過手動設置更為精確的特征,不斷地添加和修改分類,能夠使靜態分析更為準確,檢出率還可以進一步提高。

表5 單一模型檢測結果
由于其他大多數PDF靜態檢測方案適用的模型多為2009年之前的方案,對近年來惡意PDF文檔的檢出率很低,不具有對比意義。其中PJScan是較為典型的使用的是純靜態的檢測方案,因此,對同樣的樣本數據,與PJScan進行對比,對檢測率和時間進行分析。結果如表6所示。從表6中可以看出,由于對JavaScript的特征提取更為準確并且加入了子模型的檢測,檢出率要高于PJScan。但同時由于增加了多模型的檢測過程,檢測時間多了約5%,但檢出率提升了9.77%,對于純靜態的檢測方案,檢出率的提升是較為明顯的。增加了子模型需要更多的模型建立時間,但對檢測過程的影響是較少的。

表6 和近年靜態方案檢測效果對比
除了能夠提高準確率外,這種檢測方式也能夠提供更多的有效信息。例如可以將樣本文檔按照年份進行分類,利用子模型的檢測模式來研究PDF文檔的攻擊趨勢信息,使用其他檢測方案不具有該功能。對于樣本惡意文檔,各個子模型后的檢測結果在所有惡意文檔中的比例如表7所示。該部分選擇19個相對比較顯著的子模型,并將不顯著的和未能歸類的文檔標記為其他。從表7可以看出,對于不同的分類,有些分類的在檢測時所占的比例比較高,有些類別的檢測結果所占比例非常小,這和建立子模型時選擇的模型特征和參數有很大的關系,同時也反映了不同類型的惡意代碼在樣本中所占的比例,如果在某一時期某種特定的攻擊方式特別流行,那么該時期的文檔檢測結果會集中于該子模型。表7中類型A是利用變量溢出的攻擊模式,類型B是利用堆噴射的攻擊模式,這兩種方式在收集的惡意PDF文檔的樣本中較為顯著。

表7 子模型檢測結果
實驗中分析的樣本PDF文檔收集的時間是在2013年,選擇其中能夠確定年份時間的有3511份。這其中,屬于類型A的有328份,占9.34%。將這些可以確定樣本時間的和CVE漏洞信息庫[6]中的和PDF有關的漏洞數目進行對比,A類型的對比結果如圖3和圖4所示。

圖3 近五年CVE網站統計的A類型值溢出漏洞數目(單位:個)

圖4 近五年A類型值溢出惡意文檔在樣本中所占比例
在圖3中,A類型值溢出CVE漏洞數目在2009年時最多,有CVE-2009-0193、CVE-2009-1861等31個和值溢出相關的漏洞,從圖4可以看出,該類型漏洞的涌現在收集到的惡意文檔樣本中也得到了很好的體現,在2009年和2010年的惡意文檔樣本中,利用值溢出漏洞的惡意PDF文檔數目最多。隨著時間的推進,Adobe公司發布了一系列修補漏洞的補丁,在2011年之后,利用值溢出的攻擊方式的惡意文檔顯著減少。
這種添加了子模型的檢測模式也增加了可擴展性。針對新出現的樣本,可以在收集到一定的信息之后在檢測模型中加入新的模型信息。例如,在2009-2010年間,利用堆噴射技術和shellcode攻擊相關的惡意PDF文檔大量出現,從收集到的樣本來看,2008年堆噴射相關的惡意文檔占該年份所有樣本的6%,2009年增至27%,2010年達32%。對2010年的樣本PDF文檔,增加了2009年堆噴射相關的模型信息和未增加2009年堆噴射相關的模型信息檢測結果對比見表8所示。從表中可以看出,對2010年樣本PDF文檔的檢測,在增加了2009年堆噴射模型的信息之后,檢測率有了較為顯著的提高。在實際應用中,一段時期內大量涌現了一種新的基于惡意PDF文檔的攻擊模式,可以針對這種模式建立新的子模型數據,從而提高靜態檢測的準確率。

表8 針對2010年樣本文檔檢測結果
從上述實驗結果對比可以看出,如果在網絡上搭建爬蟲系統,采用這種改進的模型,在一定的時間段內對網絡中傳播的PDF文檔進行收集、統計和分析,不僅有較高的準確率,而且能夠對于掌握惡意文檔代碼攻擊方式的流行趨勢以及針對特定的攻擊模式制定相應的檢測及防護手段提供很大的幫助。
本文簡要介紹了PDF和PDF中的JavaScript的基本理論知識,并提出了一種改進的基于機器學習的模型靜態檢測方案。通過改進PDF中嵌入的JavaScript代碼的分析過程,引入反混淆和簡單的處理機制,使特征分析更為精確,并建立更為完善的機器學習模型。通過設置子模型,能夠對惡意PDF的攻擊模式進行分類,提高了靜態檢測的準確度,并能提供更多的有效信息。在接下來的研究中,可以加入合適的動態檢測的方案,提出一種更為完善的、檢測準確率和檢測效率都較為滿意的動態檢測和靜態檢測相結合的檢測系統。
[1] 王清.0day安全:軟件漏洞分析技術[M].2版.北京:電子工業出版社,2011.
[2]MaiorcaD,GiacintoG,CoronaI.ApatternrecognitionsystemformaliciousPDFfilesdetection[C]//MachineLearningandDataMininginPatternRecognition.Proceedings8thInternationalConference,2012:510-524.
[3]RobledoHG.AnalyzingCharacteristicsofMaliciousPDFs[J].IEEELatinAmericaTransactions,2012,10(3SI):1767-1773.
[4]ShawR.AnalyzingMaliciousPDFs-InfoSecInstitute[EB/OL].2013.http://resources.infosecinstitute.com/analyzing-malicious-pdf/.
[5]TzermiasZ,SykiotakisG,PolychronakisM,etal.Combiningstaticanddynamicanalysisforthedetectionofmaliciousdocuments[C]//ACM,2011.
[6]CVE-CommonVulnerabilitiesandExposures(CVE)[EB/OL].http://cve.mitre.org/.
[7]LuX,ZhugeJ,WangR,etal.De-obfuscationandDetectionofMaliciousPDFFileswithHighAccuracy[C]//SystemSciences(HICSS),2013 46thHawaiiInternationalConferenceon.2013.
[8]CovaM,KruegelC,VignaG.Detectionandanalysisofdrive-by-downloadattacksandmaliciousJavaScriptcode[C]//ACM,2010.
[9]MitchellTM.Machinelearning[M].McGrawHill,1997.
[10]StevensD.MaliciousPDFDocumentsExplained[J].IEEESecurity&Privacy,2011,9(1):80-82.
[11]Adobe.PDFReferenceandAdobeExtensionstothePDFSpecification[EB/OL].2014.http://www.adobe.com/devnet/pdf/pdf_reference.html.
[12]SchmittF,GassenJ,Gerhards-PadillaE.PDFscrutinizer:detectingJavaScript-basedattacksinPDFdocuments[C]//2012TenthAnnualInternationalConferenceonPrivacy,SecurityandTrust(PST).2012:104-111.
[13]PortableDocumentFormat-Wikipedia,thefreeencyclopedia[EB/OL].2014.http://en.wikipedia.org/wiki/Portable_Document_Format.
[14]LaskovP,?rndicN.StaticdetectionofmaliciousJavaScript-bearingPDFdocuments[C]//ACM,2011.
[15]WillemsC,HolzT,FreilingF.Towardautomateddynamicmalwareanalysisusingcwsandbox[J].IEEESecurityandPrivacy,2007,5(2):32-39.
[16]SrndicN,LaskovP.DetectionofMaliciousPDFFilesBasedonHierarchicalDocumentStructure[C]//Proceedingsofthe20thAnnualNetwork&DistributedSystemSecuritySymposium,2013.
ANIMPROVEDSTATICDETECTIONSCHEMEFORMALICIOUSPDFDOCUMENTS
SunBenyangWangYijunXueZhi
(School of Electronic Information and Electrical Engineering,Shanghai Jiao Tong University,Shanghai 200240,China)
WiththeincreasinglywidespreaduseofPDF,maliciousPDFdocumentsareconstantlyemerging.ExistingdetectingschemesofmaliciousPDFdocumentsallhavecertaindefects.Thestaticdetectionisinlowaccuracyandiseasilygarbledaswell.Thispaperpresentsastaticdetectionscheme,itisbasedonimprovedN-gramtextextractionmechanismandenhancedOCSVM(one-classsupportvectormachine)machinelearningmodels.Experimentalresultsshowthattheschemeimprovestheaccuracyofstaticdetectionscheme,andaddssomefunctionalityandscalability.
MaliciousPDFdocumentsStaticdetectionOCSVM
2014-05-19。中國信息安全測評中心科研項目(CNITSEC-KY-2013-009/2)。孫本陽,碩士生,主研領域:信息安全。王軼駿,講師。薛質,教授。
TP393
ADOI:10.3969/j.issn.1000-386x.2016.03.073