孫本陽 王軼駿 薛 質(zhì)
(上海交通大學(xué)電子信息與電氣工程學(xué)院 上海 200240)
?
一種改進(jìn)的惡意PDF文檔靜態(tài)檢測方案
孫本陽王軼駿薛質(zhì)
(上海交通大學(xué)電子信息與電氣工程學(xué)院上海 200240)
隨著PDF文件的使用日益廣泛,惡意的PDF文檔不斷涌現(xiàn)。現(xiàn)有的惡意PDF文檔的檢測方案有一定的缺陷,靜態(tài)檢測的準(zhǔn)確度較低并且易混淆。提出一種基于改進(jìn)的N-gram文本提取機(jī)制和增強(qiáng)的單一類別支持向量機(jī)的機(jī)器學(xué)習(xí)模型的靜態(tài)檢測方案。實(shí)驗(yàn)結(jié)果表明,該方案提高了靜態(tài)檢測方案的準(zhǔn)確率,增加了一定的功能性和擴(kuò)展性。
惡意PDF文檔靜態(tài)檢測單一類別支持向量機(jī)
自2008年AdobeReader被發(fā)現(xiàn)出第一例關(guān)鍵漏洞以來,PDF已經(jīng)成為了攻擊者的主要目標(biāo)。針對(duì)PDF的攻擊方法可以分為三類。第一類是針對(duì)AdobeJavaScriptAPI的攻擊,這種方法也是發(fā)現(xiàn)最早并使用最廣的一種。第二類是利用AdobeReader的非JavaScript的漏洞,但是需要使用JavaScript來觸發(fā),例如使用堆噴射技術(shù)等。第三類是使用嵌入PDF文檔中的一些TrueType的漏洞,這一類的攻擊方式和JavaScript無關(guān),也很少被使用。與其他的JavaScript的攻擊方式相比,例如“由下載驅(qū)動(dòng)”,SQL注入或者跨站腳本,這些JavaScript的攻擊方式由于和瀏覽器,尤其是微軟的InternetExploerer直接相關(guān),得到了更為廣泛的重視,但基于PDF的攻擊在研究中并沒有引起大量的關(guān)注。目前,針對(duì)PDF的攻擊絕大多數(shù)是與JavaScript相關(guān)聯(lián)的,其檢測模式主要有三種:純靜態(tài)的檢測模式;純動(dòng)態(tài)的檢測模式和動(dòng)靜結(jié)合的模式。純靜態(tài)的檢測模式,是基于PDF的某些特征,比如結(jié)構(gòu)或內(nèi)容,通過靜態(tài)提取出文檔當(dāng)中的結(jié)構(gòu)或字符,分析對(duì)比,確定是否為惡意。純動(dòng)態(tài)的方法則是通過構(gòu)建一個(gè)JavaScript的運(yùn)行環(huán)境,檢測PDF中嵌入的JavaScript的運(yùn)行過程,看是否有已知惡意的或敏感的調(diào)用過程,從而判斷PDF是否為惡意的。動(dòng)靜結(jié)合的檢測模式則充分利用了靜態(tài)檢測和動(dòng)態(tài)檢測的優(yōu)點(diǎn),對(duì)于大批量的PDF文件,先使用純靜態(tài)的檢測方法,找出確定的惡意文檔和非惡意文檔,對(duì)于可疑部分,使用動(dòng)態(tài)檢測的方法來確定文檔的類別。這種方法是要建立在靜態(tài)檢測和動(dòng)態(tài)檢測的基礎(chǔ)上的,一個(gè)良好的靜態(tài)檢測的方法會(huì)大大提高初步篩選的效率,能夠快速準(zhǔn)確地對(duì)文檔進(jìn)行惡意、正常或可疑的分類,一個(gè)良好的動(dòng)態(tài)檢測的方法會(huì)使得對(duì)可疑文檔的檢測更為可靠。所以,從研究角度上講,仍需要從靜態(tài)檢測和動(dòng)態(tài)檢測具體的方面來出發(fā)。本文主要從靜態(tài)方面入手,提出一種改進(jìn)的靜態(tài)檢測方案,提高了惡意PDF文檔的檢測準(zhǔn)確率,并能提供更詳盡的攻擊模式信息。
1.1PDF文檔格式的介紹
PDF即為便攜式文檔格式。這種文檔格式是Adobe公司在1993年用于文件交換而發(fā)展出的文件格式,這種方案的優(yōu)點(diǎn)在于跨平臺(tái),由于字體會(huì)嵌入文檔,在不同的設(shè)備上,文件會(huì)得到統(tǒng)一的顯示,因而得到廣泛使用。一個(gè)典型的PDF文檔通常由Header,Body,Cross-referencetable和Trailer四個(gè)部分構(gòu)成。在一般情況下,PDF的文檔解析過程大都首先進(jìn)行的是查看Header中的版本號(hào)和Trailer中的cross-referencetable。通過查看版本號(hào)來確認(rèn)用于分析文檔的合適的API等信息,通過查看cross-referencetable,對(duì)文檔的架構(gòu)有了一個(gè)整體的了解。然后通過cross-referencetable中的文檔模塊和交叉引用的信息,展示整個(gè)PDF文檔的內(nèi)容。
1.2PDF中的JavaScript
PDF文檔除了可以展示文字和圖片信息之外,還提供了較為復(fù)雜的動(dòng)態(tài)表格等功能。這些較為復(fù)雜的功能需要使用JavaScript代碼來實(shí)現(xiàn),例如有些PDF表格,能夠自動(dòng)檢查填寫的內(nèi)容是否符合數(shù)據(jù)要求,是否為正確合理的日期等數(shù)值范圍,或是自動(dòng)在表格填寫完成后發(fā)送給服務(wù)器等。PDF文檔標(biāo)準(zhǔn)為實(shí)現(xiàn)這些功能提供了豐富的基于JavaScript的API接口。
在PDF文檔中,主要用來標(biāo)明是JavaScript的代碼的數(shù)據(jù)類型是通過/JS關(guān)鍵字,還有一種方式是利用引用的方式,通過/JS關(guān)鍵字指明另一模塊是JavaScript代碼,這兩種方案的對(duì)比如表1所示。
表1 兩種PDF嵌入JavaScript的方式
表1中的左邊的部分定義了一個(gè)OpenAction的JavaScript代碼,在文檔打開時(shí),會(huì)輸出“HellofromJavaScriptinPDF!”,右邊的部分定義了一個(gè)OpenAction的JavaScript代碼,但執(zhí)行的內(nèi)容是在Obj16中,并沒有直接顯示JavaScript代碼的內(nèi)容,這種方式可以將JavaScript封裝在其他的文檔模塊中,并可能通過加密等手段,隱藏需要執(zhí)行的內(nèi)容。除此之外,PDF中的JavaScript還可以用于動(dòng)態(tài)代碼的執(zhí)行,例如eval()函數(shù),也可以重定向至其他頁面,例如使用/URL或/GoTo關(guān)鍵字,這些也可以作為一些文檔中嵌入的惡意代碼執(zhí)行的入口。
在現(xiàn)有的研究中,針對(duì)惡意PDF文檔的檢測方法可以分為三種,純靜態(tài)檢測、純動(dòng)態(tài)檢測以及動(dòng)態(tài)檢測和靜態(tài)檢測結(jié)合的模式。
2.1純靜態(tài)檢測模式
這種檢測模式是通過提取PDF文檔中的JavaScript代碼,分析這些JavaScript代碼的特征,依據(jù)這些特征來判斷是否為惡意的,由于這種檢測模式不涉及PDF中JavaScript代碼的執(zhí)行,僅僅從代碼本身做判斷,不需要構(gòu)建JavaScript解析引擎,檢測所需要的時(shí)間也是比較短的。例如PJScan[14],這種方法直接提取PDF文檔中的JavaScript代碼,在語意分析過程中,設(shè)置了一些TOKEN,例如,TOK_STR_10,TOK_STR_100,TOK_STR_1000指代碼中出現(xiàn)了長度小于10,100,1000的string類型的數(shù)據(jù),TOK_LP指代碼中出現(xiàn)了左括號(hào)。用這些TOKEN建立數(shù)學(xué)模型,從而判斷文檔是否為惡意文檔。這種方法的缺點(diǎn)是,并沒有對(duì)JavaScript中的代碼做具體的分析,準(zhǔn)確度比較低。例如,對(duì)于兩份完全不同的JavaScript代碼,一份代碼中有一個(gè)String變量的名稱有8字節(jié),但存儲(chǔ)的數(shù)據(jù)僅僅是一個(gè)“0”,另一份代碼中的String變量名稱為a,但存儲(chǔ)的內(nèi)容有8字節(jié),在這種檢測模式下,兩份代碼提取出的和該String相關(guān)的TOKEN是一樣的,均為TOK_STR_10,從而導(dǎo)致這種純文本的分析易混淆,差錯(cuò)率相對(duì)較高。在2013年SrndicN.等提出了一種利用PDF文檔結(jié)構(gòu)來判斷惡意文檔的方法[16],這種方案對(duì)PDF的各個(gè)模塊結(jié)構(gòu)進(jìn)行分析,將惡意PDF文檔結(jié)構(gòu)上的特征作為分析的依據(jù),從而對(duì)未知文檔進(jìn)行判斷。這種思路較為新穎,但對(duì)于攻擊者來說,可通過改變結(jié)構(gòu)但不用改變攻擊模式即可躲避檢測,繞過難度較低。
2.2純動(dòng)態(tài)檢測模式
純動(dòng)態(tài)方法往往采用多種多樣的技術(shù)來檢測PDF文檔打開后的運(yùn)行情況,通過使用第三方的JavaScript解析引擎,多為瀏覽器中的JavaScript解析引擎,例如MoziliaFirefox的Spidermokey,Rhino,TraceMonkey和JaegerMonkey,或GoogleChrome中的V8等,并加入堆的監(jiān)視器,設(shè)置合適的監(jiān)控范圍,能夠探測到絕大多數(shù)的惡意JavaScript代碼,具有很高的準(zhǔn)確度。但是,這樣的檢測方法需要較多的時(shí)間和空間資源,檢測速度比較慢。并且,純動(dòng)態(tài)檢測的基礎(chǔ)是嵌入PDF文檔的JavaScript代碼得到執(zhí)行,對(duì)于一些惡意代碼來說,如果設(shè)置了版本或其他對(duì)應(yīng)的環(huán)境檢測,或是因?yàn)槠渌?,在不符合條件的情況下,并不觸發(fā)執(zhí)行惡意代碼,從而逃避檢測,也不能實(shí)現(xiàn)百分之百的檢測率。所以,對(duì)于純動(dòng)態(tài)的檢測而言,需要盡可能的模擬環(huán)境,讓每一步跳轉(zhuǎn)指令都盡可能的執(zhí)行,這樣的話需要模擬仿真的參數(shù)就非常多,而且同一份文件要在多個(gè)環(huán)境下檢測,所帶來的時(shí)間上消耗也是非常大的。CWSandbox[15]是純動(dòng)態(tài)檢測中較為典型的例子。CWSandbox使用的是基于行為檢測的惡意代碼分析模式,對(duì)于PDF文檔,CWSandbox中加載了一個(gè)AdobeReader,在沙箱模式中加載該文件,通過監(jiān)測系統(tǒng)調(diào)用和文檔打開的過程來判斷文檔是否嵌入惡意代碼。這種模式的優(yōu)點(diǎn)是,對(duì)于符合環(huán)境條件的檢測是非常準(zhǔn)確的,對(duì)于一般的正常的文檔來說,不會(huì)產(chǎn)生對(duì)應(yīng)的可疑的調(diào)用,所以不會(huì)被標(biāo)記為惡意文檔。缺點(diǎn)也十分明顯,在批量監(jiān)測中,所花費(fèi)的時(shí)間等成本是比較顯著的。
2.3動(dòng)靜結(jié)合的檢測模式
這種方案結(jié)合了動(dòng)態(tài)檢測和靜態(tài)檢測的優(yōu)點(diǎn),充分利用靜態(tài)檢測的高效和動(dòng)態(tài)檢測的高準(zhǔn)確度,制定合適的檢測方案。由于這種方案是建立在動(dòng)態(tài)檢測過程和靜態(tài)檢測過程兩個(gè)部分的基礎(chǔ)上的,所以這種方案的瓶頸仍然存在于尋找一種更為高效的動(dòng)態(tài)檢測方案和更準(zhǔn)確的靜態(tài)檢測方案。目前最新的MPScan[6]的方案中,采用了對(duì)AdobeReader自身的JavaScript引擎直接掛鉤,得到代碼在執(zhí)行過程中的op-code,進(jìn)行對(duì)比和分析,和其他方案相比,這種方案由于使用了AdobeReader的JavaScript引擎,而非其他第三方的JavaScript引擎,不需要仿真模擬許多API,減少了搭建JavaScript引擎的復(fù)雜度,并且提供了真實(shí)完整的PDF格式中的JavaScriptAPI,在獲得了op-code以后,對(duì)op-code進(jìn)行靜態(tài)和動(dòng)態(tài)兩方面的檢測。這種方案由于利用了某些漏洞,掛鉤非開源軟件AdobeReader的技術(shù),檢測效果是非常出色的,但一旦Adobe公司修補(bǔ)了該漏洞,那么這種掛鉤技術(shù)就無法實(shí)現(xiàn),后續(xù)的操作就無法開展,可持續(xù)使用性較低。
PDF文檔檢測的主要影響因素有:PDF文檔中JavaScript的代碼提取是否完整;對(duì)提取出的JavaScript代碼的特征分析是否準(zhǔn)確;檢測模型是否能夠?qū)阂釶DF文檔和正常PDF文檔區(qū)別開來。本節(jié)主要闡述了改進(jìn)的惡意PDF文檔的檢測方案,基于已有的PDF文檔檢測方案的缺陷,提出了基于靜態(tài)檢測的改進(jìn)思路,并建立了更為完善的機(jī)器學(xué)習(xí)模型,從而能夠更準(zhǔn)確地檢測惡意文檔。
整個(gè)模型建立和檢測的思路如圖1所示。系統(tǒng)可以分為三個(gè)大的模塊,為JavaScript代碼的提取,JavaScript特征分析和模型建立。通過分析一定量的樣本,建立模型之后,將這個(gè)模型用于對(duì)未知文檔的分析中,通過設(shè)定一定的權(quán)值,來比較未知文檔和建立的模型的相似程度,從而判斷文檔是否為惡意的。
圖1 改進(jìn)的PDF文檔檢測方案模型
3.1PDF文檔中JavaScript代碼的提取
由于JavaScript的代碼在PDF中的存在模式有兩種方式,直接顯式的嵌入在/JS模塊中和在/JS模塊中使用引用的方式,標(biāo)明另一模塊是JavaScript的代碼。
通過使用開源的PDF解析引擎和編寫的Python腳本,對(duì)于直接顯示的嵌入在/JS模塊中的JavaScript代碼,采用直接提取的方式,將模塊中的JavaScript代碼導(dǎo)出。對(duì)于采用引用模式嵌入了JavaScript代碼,則查找到/JS關(guān)鍵字后,將引用的模塊中的內(nèi)容導(dǎo)出,作為從文檔中提取出的JavaScript代碼。
3.2PDF文檔提取的JavaScript代碼的特征分析
從PDF文檔中提取出對(duì)應(yīng)的JavaScript代碼后,對(duì)于這些代碼的分析采用的是改進(jìn)的N-gram的方法。N-gram是一種基于馬爾科夫鏈的一種常用的文本或語言分析算法,在惡意文檔的檢測中,提取出連續(xù)的長度為N的JavaScript代碼,分析這些代碼中是否具有某些特征,作為多維向量的數(shù)據(jù),用于模型建立。為了防止混淆,提高特征提取的準(zhǔn)確度,采用以下改進(jìn)的措施:
(1) 對(duì)JavaScript中的代碼進(jìn)行合理的處理
在原有的靜態(tài)檢測的方法中,大量使用了簡單的N-gram方法,從代碼中直接提取連續(xù)的長度為N的數(shù)據(jù)進(jìn)行分析,這些在惡意文檔中查找到JavaScript代碼中,已經(jīng)采用了一些混淆的措施,如原有的檢測方案是查看代碼中是否有String.fromCharCode()關(guān)鍵字,許多比較新的惡意PDF文檔中提取的代碼中采用的方案是:”Str”+”in”+”g.”+…,類似的混淆方法有很多,大都是采用JavaScript中的加法操作,在原有的分析方法中就難以找到匹配的字符串。對(duì)此,改進(jìn)的方法是利用類似于程序設(shè)計(jì)語言中編譯器檢測括號(hào)的匹配的算法,用棧來實(shí)現(xiàn),遇到str,就壓入棧中,接下來查找到加號(hào),跳過,繼續(xù)查找到in,壓入棧中,重復(fù)該過程。使用這種簡單的操作,將拆分的關(guān)鍵字合并,從而準(zhǔn)確地提取出特征。
類似的混淆的變量還有被大量采用的分段賦值給變量的的shellcode,分多次賦值的用于溢出的var變量,這些大都通過加法操作合并數(shù)據(jù)的,通過采用合適的入棧出棧操作,將這些代碼進(jìn)行處理,以實(shí)現(xiàn)反混淆。
(2) 跳過無關(guān)變量名和函數(shù)名
在惡意PDF文檔提取的JavaScript代碼中,還有些常見的混淆代碼,給靜態(tài)檢測增加難度的方法是使用較長的隨機(jī)的字符串作為變量名和函數(shù)名,例如functionasdbdafregaeeateageg(),varqewrfabaoijaoijteijngiaodsjfo,如果對(duì)這些名稱進(jìn)行匹配和分析,是得不到任何有效的數(shù)據(jù),會(huì)大大增加文本分析的所消耗的時(shí)間,降低模型建立的準(zhǔn)確度。所以在實(shí)際分析中,直接跳過這些命名,給定一些簡單的名稱代替進(jìn)行分析,例如對(duì)于var變量,直接跳到等號(hào)以后的賦值部分,對(duì)于函數(shù),直接跳到括號(hào)和函數(shù)體,從而提高代碼靜態(tài)分析的有效性。
(3) 加入重復(fù)字符串的檢測
在分析樣本中,有一類比較常見的特征是使用大量重復(fù)的字符作為溢出操作的切入點(diǎn),如申請(qǐng)長變量a=129999999 99999999888888888888887777777777777…等,在shellcode中,也會(huì)大量的填充u9090,對(duì)于這些特征,可以加入重復(fù)字符串的檢測,將重復(fù)的字符串合并,例如將變量a=129999999999 8888888887777777777…標(biāo)記為12987…,作為重點(diǎn)的比對(duì)特征加以使用。
(4) 針對(duì)使用replace()的方法的檢測
另外,還有一種惡意代碼使用的替換的方法來混淆代碼,在申請(qǐng)變量時(shí),使用的是無意義的字符串來代表,在程序運(yùn)行時(shí),使用replace()函數(shù),將這些無意義的字符串替換為有特殊用意的惡意代碼。例如,在申請(qǐng)變量時(shí),給變量賦值為TYCAE,TYCBE等,在代碼執(zhí)行中,使用replace函數(shù),把T替換為%u,這樣的方法在動(dòng)態(tài)檢測中是可以檢測出的,但對(duì)于傳統(tǒng)的靜態(tài)檢測的方法,是難以分析的。在改進(jìn)的方案中,檢測這種方法,可以和上文中的(3)結(jié)合起來,因?yàn)檫@種方法通常是shellcode堆噴射中使用的,如果要實(shí)現(xiàn)堆噴射,就需要大量的填充無意義的NOP語句,使得在申請(qǐng)變量時(shí),會(huì)出現(xiàn)大量的重復(fù)字符串,最后再使用replace函數(shù)將這些字符串進(jìn)行替換。在實(shí)際檢測中,首先標(biāo)記出大量重復(fù)的字符串,如果后文中有replace關(guān)鍵字,則直接替換掉重復(fù)字符串的內(nèi)容,從而準(zhǔn)確地提取出特征。
一些特征關(guān)鍵字如表2所示,將這些特征用多維向量標(biāo)識(shí)出,對(duì)每一份PDF文檔可以提取出一個(gè)特征向量,利用這些向量進(jìn)行數(shù)學(xué)運(yùn)算和分析。
表2 一些惡意PDF靜態(tài)分析特征
3.3檢測模型的建立
本方案使用的惡意PDF文檔模型是改進(jìn)的單一類別支持向量機(jī),其優(yōu)點(diǎn)在于只需要單一類別的數(shù)據(jù)來建立一個(gè)模型,這種方案在惡意PDF文檔檢測的模型建立過程中是非常適用的,因?yàn)榻^大多數(shù)使用JavaScript代碼的PDF文檔都是惡意的。正常使用了JavaScript代碼的PDF文檔的數(shù)目與惡意文檔相比是微乎其微的,不足以產(chǎn)生足夠的數(shù)據(jù)用于建立模型,所以利用惡意文檔中收集到的特征,建立模型,進(jìn)行檢測。
這種單一類別支持向量機(jī)模型對(duì)數(shù)據(jù)的分類方法過程為:通過學(xué)習(xí)一定量的樣本,建立模型O,對(duì)于未知樣本,計(jì)算未知樣本提取出的向量和模型O中原點(diǎn)兩者之間的歐式距離,設(shè)置一定的權(quán)值R,當(dāng)距離在R之內(nèi)時(shí),認(rèn)為屬于類別O中的,歸類為惡意文檔,否則為不屬于,認(rèn)為文檔是非惡意的。數(shù)學(xué)描述為:對(duì)于樣本{xi|xi∈Rm,i=1,2,…,n},選用高斯核函數(shù)映射到高維空間,求解最優(yōu)化問題:
s.t.‖φ(xi)-Oc‖2≤R2+ξi
v∈(0,1)ξi≥0i=1,2,…,n
即將數(shù)據(jù)點(diǎn)映射到高維空間上,求解出能夠包含數(shù)據(jù)樣本的最小超球體的球心Oc和半徑R,ξi為松弛因子,v為控制參數(shù),φ(x)為映射函數(shù),又稱核函數(shù)(對(duì)于此類非線性問題,選用高斯函數(shù)),m為用于訓(xùn)練的樣本數(shù)。將惡意PDF文檔對(duì)應(yīng)的數(shù)據(jù)點(diǎn)映射并求解出球心和半徑后,未知文檔的判別公式為:
f(x)=‖φ(xi)-Oc‖2-R2
當(dāng)f(x)≤0時(shí),文檔被歸類為惡意,當(dāng)f(x)>0時(shí),文檔被分類為非惡意。
在實(shí)際的分析惡意文檔的樣本的過程中,發(fā)現(xiàn)有些惡意文檔的攻擊模式具有很大的相似性,類似于病毒的變種。但不同類型的攻擊模式之間差異較大,在歸一化建立模型的過程中,會(huì)損失一部分?jǐn)?shù)據(jù),從而降低檢測的準(zhǔn)確度。
圖2 單一類別支持向量機(jī)衍生模型
如圖2所示,傳統(tǒng)的分析模式下,在建立模型的過程中,將A,B,C歸一化為O,檢測過程中,通過計(jì)算未知文檔D和O的距離來判定是否為惡意文檔。如果采用這種模式,結(jié)合惡意文檔特有的情況,在設(shè)置了某個(gè)合適的閾值后,D和O的距離很遠(yuǎn),被分類為非惡意的文檔,但如果具體分析D和A的距離,那么就會(huì)被歸類為惡意文檔。所以,改進(jìn)的方案應(yīng)該是不僅僅建立一個(gè)統(tǒng)一的模型O,而且針對(duì)可歸類的數(shù)據(jù)建立模型A,B,C。這樣,在分析對(duì)比時(shí),加入了ABC的模型,準(zhǔn)確度會(huì)相應(yīng)的提高,同時(shí)可以看出D最有可能是哪一類的攻擊模式。在簡單情況下,認(rèn)為只要有一個(gè)子模型將樣本文檔歸類為惡意即認(rèn)為該文檔為惡意文檔,此時(shí)可選擇判別函數(shù)為:
g(x)=min{fO(x),fA(x),fB(x),…}
則當(dāng)g(x)≤0時(shí),文檔被歸類為惡意,當(dāng)g(x)>0時(shí),文檔被分類為非惡意。對(duì)于復(fù)雜情況,可選擇判別函數(shù)為:
g(x)=kOfO(x)+kAfA(x)+kOfB(x)+…
此時(shí)kO,kA,…為針對(duì)子模型設(shè)置的權(quán)值,當(dāng)g(x)≤0時(shí),文檔被歸類為惡意,當(dāng)g(x)>0時(shí),文檔被分類為非惡意。對(duì)不同類型不同年份的PDF文檔,合理設(shè)置權(quán)值可以調(diào)整子模型的判別函數(shù)值對(duì)整體的判別函數(shù)的影響,從而使檢測結(jié)果更準(zhǔn)確。
在添加樣本分類的過程中,可以根據(jù)不同的類別,設(shè)置不同的距離計(jì)算方法,提高某些顯著符合該類別的特征在計(jì)算距離時(shí)的影響因子,充分利用不同類別的攻擊方法的特殊性,提高檢測的正確率。例如,對(duì)于堆噴射攻擊模型,將有spray,%u9090,%930930等關(guān)鍵字在計(jì)算距離時(shí)所占有的權(quán)重提高,從而更精確地表達(dá)出堆噴射的攻擊模型,如果含有這些關(guān)鍵字,那么在分析過程中,極易被分入堆噴射的攻擊模型中,從而提高了整體的分析正確率。同時(shí),添加新的樣本分類也可以保證較為良好的可擴(kuò)展性,當(dāng)新的攻擊模式出現(xiàn)時(shí),分析合適的樣本,在已有的模型中添加新的分類,靜態(tài)檢測的過程會(huì)更加準(zhǔn)確。
本小結(jié)所使用的數(shù)據(jù)是從網(wǎng)絡(luò)中收集的在2010年至2013年的時(shí)間段內(nèi)的294個(gè)惡意文檔的樣本建立模型。分析測試的樣本是網(wǎng)絡(luò)中收集的從2008年至2013年的4966個(gè)惡意的PDF文檔和從網(wǎng)絡(luò)中隨機(jī)下載的4800個(gè)正常的PDF文檔進(jìn)行試驗(yàn)得到的結(jié)果。具體結(jié)果如表3和表4所示。
表3 對(duì)4 966個(gè)惡意文檔的檢測結(jié)果
表4 對(duì)4 800個(gè)正常文檔的檢測結(jié)果
從表3可以看出,對(duì)于樣本惡意文檔的檢測正確率為83.81%。從表4可以看出對(duì)于正常文檔,由于收集到的文檔中絕大多數(shù)都不含有JavaScript代碼,含有JavaScript代碼的正常PDF樣本也多為表格,使用的是判斷表格中填寫的是否為日期是否為合適的數(shù)字等簡單的JavaScript代碼,所以被誤報(bào)的可能性非常小。
如果采用傳統(tǒng)的單一模型,檢測結(jié)果見表5所示。從表3和表5的對(duì)比可以看出,如果使用了單一的模型進(jìn)行檢測,惡意文檔的檢出率是78.39%,比改進(jìn)模型的檢出率83.81%低,這說明在使用了分類的模型后,能夠較好地提高檢出率。與傳統(tǒng)的病毒分析模式不同,惡意PDF的攻擊模式相對(duì)較為單一,研究人員通過一定時(shí)間的分析,通過手動(dòng)設(shè)置更為精確的特征,不斷地添加和修改分類,能夠使靜態(tài)分析更為準(zhǔn)確,檢出率還可以進(jìn)一步提高。
表5 單一模型檢測結(jié)果
由于其他大多數(shù)PDF靜態(tài)檢測方案適用的模型多為2009年之前的方案,對(duì)近年來惡意PDF文檔的檢出率很低,不具有對(duì)比意義。其中PJScan是較為典型的使用的是純靜態(tài)的檢測方案,因此,對(duì)同樣的樣本數(shù)據(jù),與PJScan進(jìn)行對(duì)比,對(duì)檢測率和時(shí)間進(jìn)行分析。結(jié)果如表6所示。從表6中可以看出,由于對(duì)JavaScript的特征提取更為準(zhǔn)確并且加入了子模型的檢測,檢出率要高于PJScan。但同時(shí)由于增加了多模型的檢測過程,檢測時(shí)間多了約5%,但檢出率提升了9.77%,對(duì)于純靜態(tài)的檢測方案,檢出率的提升是較為明顯的。增加了子模型需要更多的模型建立時(shí)間,但對(duì)檢測過程的影響是較少的。
表6 和近年靜態(tài)方案檢測效果對(duì)比
除了能夠提高準(zhǔn)確率外,這種檢測方式也能夠提供更多的有效信息。例如可以將樣本文檔按照年份進(jìn)行分類,利用子模型的檢測模式來研究PDF文檔的攻擊趨勢信息,使用其他檢測方案不具有該功能。對(duì)于樣本惡意文檔,各個(gè)子模型后的檢測結(jié)果在所有惡意文檔中的比例如表7所示。該部分選擇19個(gè)相對(duì)比較顯著的子模型,并將不顯著的和未能歸類的文檔標(biāo)記為其他。從表7可以看出,對(duì)于不同的分類,有些分類的在檢測時(shí)所占的比例比較高,有些類別的檢測結(jié)果所占比例非常小,這和建立子模型時(shí)選擇的模型特征和參數(shù)有很大的關(guān)系,同時(shí)也反映了不同類型的惡意代碼在樣本中所占的比例,如果在某一時(shí)期某種特定的攻擊方式特別流行,那么該時(shí)期的文檔檢測結(jié)果會(huì)集中于該子模型。表7中類型A是利用變量溢出的攻擊模式,類型B是利用堆噴射的攻擊模式,這兩種方式在收集的惡意PDF文檔的樣本中較為顯著。
表7 子模型檢測結(jié)果
實(shí)驗(yàn)中分析的樣本PDF文檔收集的時(shí)間是在2013年,選擇其中能夠確定年份時(shí)間的有3511份。這其中,屬于類型A的有328份,占9.34%。將這些可以確定樣本時(shí)間的和CVE漏洞信息庫[6]中的和PDF有關(guān)的漏洞數(shù)目進(jìn)行對(duì)比,A類型的對(duì)比結(jié)果如圖3和圖4所示。
圖3 近五年CVE網(wǎng)站統(tǒng)計(jì)的A類型值溢出漏洞數(shù)目(單位:個(gè))
圖4 近五年A類型值溢出惡意文檔在樣本中所占比例
在圖3中,A類型值溢出CVE漏洞數(shù)目在2009年時(shí)最多,有CVE-2009-0193、CVE-2009-1861等31個(gè)和值溢出相關(guān)的漏洞,從圖4可以看出,該類型漏洞的涌現(xiàn)在收集到的惡意文檔樣本中也得到了很好的體現(xiàn),在2009年和2010年的惡意文檔樣本中,利用值溢出漏洞的惡意PDF文檔數(shù)目最多。隨著時(shí)間的推進(jìn),Adobe公司發(fā)布了一系列修補(bǔ)漏洞的補(bǔ)丁,在2011年之后,利用值溢出的攻擊方式的惡意文檔顯著減少。
這種添加了子模型的檢測模式也增加了可擴(kuò)展性。針對(duì)新出現(xiàn)的樣本,可以在收集到一定的信息之后在檢測模型中加入新的模型信息。例如,在2009-2010年間,利用堆噴射技術(shù)和shellcode攻擊相關(guān)的惡意PDF文檔大量出現(xiàn),從收集到的樣本來看,2008年堆噴射相關(guān)的惡意文檔占該年份所有樣本的6%,2009年增至27%,2010年達(dá)32%。對(duì)2010年的樣本PDF文檔,增加了2009年堆噴射相關(guān)的模型信息和未增加2009年堆噴射相關(guān)的模型信息檢測結(jié)果對(duì)比見表8所示。從表中可以看出,對(duì)2010年樣本PDF文檔的檢測,在增加了2009年堆噴射模型的信息之后,檢測率有了較為顯著的提高。在實(shí)際應(yīng)用中,一段時(shí)期內(nèi)大量涌現(xiàn)了一種新的基于惡意PDF文檔的攻擊模式,可以針對(duì)這種模式建立新的子模型數(shù)據(jù),從而提高靜態(tài)檢測的準(zhǔn)確率。
表8 針對(duì)2010年樣本文檔檢測結(jié)果
從上述實(shí)驗(yàn)結(jié)果對(duì)比可以看出,如果在網(wǎng)絡(luò)上搭建爬蟲系統(tǒng),采用這種改進(jìn)的模型,在一定的時(shí)間段內(nèi)對(duì)網(wǎng)絡(luò)中傳播的PDF文檔進(jìn)行收集、統(tǒng)計(jì)和分析,不僅有較高的準(zhǔn)確率,而且能夠?qū)τ谡莆諓阂馕臋n代碼攻擊方式的流行趨勢以及針對(duì)特定的攻擊模式制定相應(yīng)的檢測及防護(hù)手段提供很大的幫助。
本文簡要介紹了PDF和PDF中的JavaScript的基本理論知識(shí),并提出了一種改進(jìn)的基于機(jī)器學(xué)習(xí)的模型靜態(tài)檢測方案。通過改進(jìn)PDF中嵌入的JavaScript代碼的分析過程,引入反混淆和簡單的處理機(jī)制,使特征分析更為精確,并建立更為完善的機(jī)器學(xué)習(xí)模型。通過設(shè)置子模型,能夠?qū)阂釶DF的攻擊模式進(jìn)行分類,提高了靜態(tài)檢測的準(zhǔn)確度,并能提供更多的有效信息。在接下來的研究中,可以加入合適的動(dòng)態(tài)檢測的方案,提出一種更為完善的、檢測準(zhǔn)確率和檢測效率都較為滿意的動(dòng)態(tài)檢測和靜態(tài)檢測相結(jié)合的檢測系統(tǒng)。
[1] 王清.0day安全:軟件漏洞分析技術(shù)[M].2版.北京:電子工業(yè)出版社,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。中國信息安全測評(píng)中心科研項(xiàng)目(CNITSEC-KY-2013-009/2)。孫本陽,碩士生,主研領(lǐng)域:信息安全。王軼駿,講師。薛質(zhì),教授。
TP393
ADOI:10.3969/j.issn.1000-386x.2016.03.073