郝晨曦 方 勇
(四川大學信息安全研究所 成都 610065)
?
基于頻譜分析的PDF文件惡意代碼檢測方法
郝晨曦 方 勇
(四川大學信息安全研究所 成都 610065)
(hcx3630@sina.com)
在對基于頻譜分析的復合文檔惡意代碼檢測方法研究的基礎上,提出了一種基于機器學習的頻譜分析PDF文件惡意代碼檢測方法,首先介紹了PDF文件惡意代碼檢測系統.并且在原有基礎上進一步優化了改進后的實數序列FFT算法;通過從PDF文件儲存結構中提取出全部字段的內容進行頻譜變換,對變換后的頻譜圖進行分析,通過使用機器學習中的算法提取頻譜圖的特征屬性,再根據機器學習后形成的算法對PDF文件是否感染惡意代碼進行檢測,最后,通過實驗分析,驗證了所用方法的正確性和有效性,并給出了整個系統的實現方案與檢驗結果數據.
便攜式文檔格式;惡意代碼檢測;頻譜變換;機器學習;特征提取
便攜式文檔格式(portable document format, PDF)是由Adobe Systems用于與應用程序、操作系統、硬件無關的方式進行文件交換所發展出的文件格式.PDF文件因其文件格式在各個操作系統上的通用性、便捷性而被用戶廣泛使用.隨著PDF文件的廣泛使用,PDF文件成為許多網絡攻擊者攻擊的目標,因此對PDF植入惡意代碼的攻擊技術和攻擊方法也越來越多.存在PDF中的惡意代碼多是跟隨用戶點擊打開PDF文件自行啟動,因此與其他類型惡意代碼相比,這種攻擊方式更加隱蔽,危害性更大.
縱觀國內外有關PDF惡意代碼檢測的技術研究現狀,在當前現狀下,各國研究者對PDF文件惡意代碼的檢測展開了很多深入細致的研究工作,已提出了一些富有創意的解決方案.
Vatamanu等人[1]提出了1種基于機器學習中聚類算法的PDF文件惡意代碼檢測方法,通過標記PDF文件中的JavaScript代碼很好地解決了攻擊者通過混淆技術對檢測帶來的干擾.Huang等人[2]提出了基于樸素貝葉斯算法的PDF檢測模型,該模型能夠對比正常PDF文件和含有惡意樣本PDF之間的區別,并通過樸素貝葉斯算法進行分類. Maiorca等人[3]提出1種較為高效的插件,很好地結合了針對PDF結構的特征匹配模型和高效分類器.Lu等人[4]提出了MPScan系統,該系統結合了JavaScript代碼動態和靜態2種檢測方式,具體通過Hook技術獲取本地Adobe Reader中的JavaScript引擎信息,從而獲取PDF中Java腳本的運行情況,并對此進行檢測.Smulz等人[5]提出了1種從文檔數據和結構中提取特征的檢測方法,并通過對現有真實數據進行檢測,驗證了該系統的耐用性.Schmitt等人[6]提出了1種PDF檢測工具,該工具基于傳統檢測方式,在模擬環境中通過靜態和動態方式檢測惡意行為.Kang等人[7]提出了1種自動的惡意軟件分析系統,自動執行PDF格式的動態、靜態分析并提供結果.
以上各項研究與實驗展示了當前針對PDF惡意代碼檢測研究情況,然而綜合來看以上研究均存在局限性和針對性不強的問題,如動態監測和靜態檢測相結合的檢測方法僅是對傳統惡意代碼檢測思路進行延續,對現在新出現的PDF惡意代碼針對檢測性不強.通過檢測是否掛載了JavaScript腳本的PDF惡意代碼檢測方法,雖然針對性強且準確性高,但是其應用范圍有限.
隨著針對PDF惡意代碼檢測方法的不斷研究, Han等人[8]提出了在進行熵度量的基礎上進行小波分析的方法,對PDF惡意代碼進行檢測,然后對結果通過相似度算法進行區分比較.劉林等人[9]在此基礎上提出的基于頻譜分析的復合文檔惡意代碼檢測方法,通過對復合文檔進行FFT變換進行惡意代碼檢測是對變換檢測方法的進一步研究,同時也說明了對PDF文件進行變換檢測惡意代碼的可行性.
在以上研究基礎上,本文提出了基于機器學習的頻譜分析PDF文件惡意代碼的檢測方法研究方式,將文件二進制數據的順序看作時間軸,正常PDF文件與掛載了惡意代碼的PDF文件差異在時域上并不明顯,但是經過FFT變換后,在相位、頻率分布和能量上就會表現出差異,對于存在差異的結果通過機器學習進行分類就能相對精準地找到正常PDF文件與加載了惡意代碼的PDF文件之間的差異點,通過差異點便可對加載了惡意代碼的PDF文件進行高效檢測.
本文以下部分將通過四大部分進行詳盡說明:第1節介紹PDF文件進行FFT 變換的原理;第2節介紹基于機器學習的頻譜分析系統的具體結構;第3節將展示實驗驗證思路,設計方法,展示實驗結果;第4節對本文內容進行總結.
PDF文件結構即物理結構包括4個部分:頭文件(Header)、文件體(Body)、交叉引用表(cross-reference table)和文件尾(Trailer),具體結構如圖1所示:

HeaderBodyxrefTableTrailer

圖1 PDF文件格式
其中Header指明了該文件所遵從PDF規范的版本號,它出現在PDF文件的第1行; Body由一系列的PDF間接對象組成,這些間接對象構成了PDF文件的具體內容如字體、頁面、圖像等等;xref Table則是為了能對間接對象進行隨機存取而設立的一個間接對象地址索引表; Trailer聲明了交叉引用表的地址,指明文件體的根對象,還保存了加密等安全信息.
本文將使用1種經過改進的實數序列FFT算法,該改進算法是通過實驗優化得來,利用FFT的頻域變換性質將實數序列轉化為復數序列.將N點的實數序列按照式(1)分解:
(1)
在式(1)中:
將N個實數序列分解重構為N2個復數序列,運算量沒有增加,得到的表達式如下:
(2)
對z(n′)進行N2個序列的復數傅里葉變換:
Z(k)=FFTN2(k,z),k=0,1,…,N2-1,
(3)
之后通過fe(n′)和fo(n′)的傅里葉變換將z(n′)的FFT還原,這樣就可以獲得原始序列即N個點實數序列的FFT.推導過程如下:
(4)
由表達式F(k)=Fe(k)+e-j2πkNFo(k)可以推導出下面的結果:

je-j2πkN((Z(k)-Z(N2-k)*)},
N=0,1,…,N2-1,
(5)
關于序列的第N2項,其計算方法如式(6):
F(N
j(Z(0)-Z(0)*)},
(6)
關于序列中后N2項,可通過FFT變換的頻率對稱性F(k)=F(N-k)*求解,這樣就將N個實數序列轉換為N2個復序列運算,達到優化算法的目的.
在針對PDF文件結構研究的基礎上,通過對全文件二進制數據進行提取,將其轉換為相應實數序列,然后利用Python(x,y)中的NumPy和SciPy庫實現上述改進的FFT算法,具體核心代碼如下所示:
fh=open(filename, "rb")
raw=fh.read()
x=[]
for ch in raw:
x.append(ord(ch))
fft_size=len(x)
fh.close()
sampling_rate=131072
xs=x[:fft_size]
freqs=np.linspace(0, sampling_rate2,
set_printoptions(threshold="nan")
xfp=20*np.log10(np.clip(np.abs(xf),
1e-20, 1e100))
將實數序列變換成復序列,最后利用matplotlib庫繪制頻譜圖如圖2、圖3所示:

圖2 正常PDF文件頻譜圖

圖3 綁定了惡意代碼后的PDF文件頻譜圖
圖4為本文提出的檢測方法的原理圖,首先需要整理收集大量的惡意PDF樣本及非惡意的PDF樣本.之后對這兩大樣本集分別進行頻譜變換,頻譜變換的部分根據本文第1節介紹的改進后的FFT算法進行,并生成相應頻譜圖集.通過人為對比生成的2個頻譜圖集,分析出惡意PDF樣本集和非惡意PDF樣本集的特征屬性.最后通過機器學習中監督學習的JRip算法提取數據規則對2組特征點進行分類,并從中提取出相應判斷規則,根據提取規則書寫判斷代碼.在檢測階段,我們運用相同的方法,先對未知PDF文件進行頻譜變換,之后提取變換后的相應特征點,對特征點進行判斷后分析其是否為含有惡意代碼的PDF文件.

圖4 檢測方法原理圖
為了更好地闡述本文所提出的基于機器學習的頻譜分析PDF文件惡意代碼檢測方法,下面將介紹基于本文思路所研發的基于機器學習的頻譜分析PDF文件惡意代碼檢測系統.整個系統共包括四大模塊,分別為管理模塊、PDF文件數據讀取模塊、數據處理計算模塊、分析模塊,系統架構如圖5所示:

圖5 檢測系統框架圖
其中,管理模塊主要是面向用戶使用,用戶可已通過管理模塊輸入需要檢測的未知PDF文件,并通過管理模塊獲得最終檢測結果,同時也要求管理模塊具備較好的用戶界面設計.PDF文件讀取模塊細分為3個部分:讀入待檢測PDF文件部分,用于讀取用戶輸入的PDF文件;提取有效二進制數據部分,負責將讀入的PDF文件轉換為二進制序列,并將無用字段剔除;最后一部分將提取出的二進制文件轉換為有效的實數數列并傳送至數據處理計算模塊.數據處理計算模塊主要負責進行數據的FFT變換,將數據以改進過的FFT運算法則進行轉換得到我們需要的數據形式,最終以頻譜圖的方式展示給用戶.分析模塊的功能是對進行轉換后的文件數據結果進行分析,通過使用機器學習后的判斷算法對提取出的數據特征值進行分析,判斷其是否為惡意PDF文件,并將結果反饋給用戶.同時隨著惡意PDF樣本文件的不斷擴充,技術人員可以通過進一步機器學習分類判斷的方式提高判斷算法的準確性.
本節將對本文提出的檢測方法進行驗證,檢測樣本均是通過綁定工具對正常PDF文件進行惡意工具綁定,從而作為檢測樣本.

圖6 正常PDF文件檢測結果
本次檢測樣本選取了大量不同內容不同大小的PDF文件,之后通過對這些正常PDF文件進行惡意代碼綁定,從而得到待檢測的惡意PDF文件樣本,惡意代碼綁定是通過綁定工具將諸如下載器等的惡意代碼進行綁定到正常PDF樣本中.
圖6是對正常PDF文件檢測所得到的圖譜.
圖7是對圖5所示正常PDF文件進行惡意帶綁定之后的檢測結果.

圖7 惡意PDF文檔檢測結果
從圖6、圖7不難看出,本檢測方法針對正常PDF文件和惡意PDF文件的檢測結果具有顯著差別,也證明了基于機器學習的頻譜分析PDF惡意代碼檢測技術具有研究價值.
本次驗證實驗共選取40個樣本進行判斷統計,其統計結果如表1所示:

表1 實驗驗證結果表
表1中數據充分說明了本檢測方法對于檢測PDF惡意代碼的有效性,同時也不可否認,隨著今后惡意代碼的推陳出新,檢測能力必須緊隨其變,這也要求我們收集更多更新的含有惡意代碼的PDF樣本.
本文立足于基于頻譜分析的惡意代碼檢測技術,針對PDF文件提出了相應可行的檢測方法,并對相關理論進行了具體實現.
本文所提出的基于頻譜分析的PDF文件惡意代碼檢測技術不僅可針對PDF文件進行檢測,從理論上判斷,同時也可以針對大部分二進制復合文檔進行檢測.
在具有廣闊應用前景的同時,本文所闡述的PDF文檔檢測技術也具有一定的檢測局限性:1)本文針對惡意代碼特殊屬性判斷的機制,是依據對大量含有惡意代碼的PDF文件進行分析統計得來,可能存在因樣本數量不足的原因所造成的判斷不準問題;2)現階段惡意代碼更新頻率過快,造成檢測過程中會出現誤報或者漏報的可能;3)本系統只考慮了針對含有惡意代碼的PDF文件檢測功能,并不具有對惡意文件進行攔截的能力.
在未來的研究工作中,將從以下幾個方面解決上述問題:通過增加樣本數量與新出現的惡意代碼樣本種類,增強本系統的檢測能力,減少誤報和漏報概率;通過擴展檢測文件類型增大本系統的檢測范圍;通過增加針對惡意文件進行處理的功能模塊,提高本系統的實用性.
[1]Vatamanu C, Dragos G, Benchea R. A practical approach on clustering malicious PDF documents[J]. Journal in Computer Virology, 2012, 8(4): 151-163
[2]Huang Cheng, Fang Yong, Liu Liang, et al. A static detection model of malicious PDF documents based on Na?ve Bayesian classifier technology[OL]. [2015-12-12]. http:ieeexplore.ieee.orgxpllogin.jsp?tp=&arnumber=6413432&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6413432
[3]Maiorca D, Giacinto G, Corona I. A pattern recognition system for malicious PDF files detection[OL]. [2015-12-12]. http:link.springer.comchapter10.1007%2F978-3-642-31537-4_40
[4]Lu Xun, Zhuge Jianwei, Wang Ruoyu, et al. De-obfuscation and detection of malicious PDF files with high accuracy[OL].[2015-12-12]. http:ieeexplore.ieee.orgxpllogin.jsp?tp=&arnumber=6480434&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6480434
[5]Smutz C, Stavrou A. Malicious PDF detection using metadata and structural features[C]Proc of Computer Security Applications Conf. New York: ACM, 2012
[6]Schmitt F, Gassen J, Gerhards-Padilla E. PDF scrutinizer: Detecting javascript-based attacks in PDF documents[OL]. [2015-12-12]. http:ieeexplore.ieee.orgxplarticleDetails.jsp?tp=&arnumber=6297926
[7]Kang H, Kim J, Kim B, et al. Development of an automatic document malware analysis system[OL]. [2015-12-12]. http:link.springer.comchapter10.1007%2F978-94-007-5860-5_1
[8]Han S, Lee K, Lee S. Packed PE file detection for malware forensics[OL]. [2015-12-12]. http:ieeexplore.ieee.orgxpllogin.jsp?tp=&arnumber=5404211&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F5403362%2F5404169%2F05404211.pdf%3Farnumber%3D5404211
[9]劉林, 趙向輝, 姚原崗, 等. 基于頻譜分析的復合文檔惡意代碼檢測[J]. 清華大學學報: 自然科學版, 2013, 53(12): 1713-1718

郝晨曦
碩士,主要研究方向為信息安全.
hcx3630@sina.com

方 勇
博士,教授,主要研究方向為信息安全、網絡信息對抗.
yfang@scu.edu.cn
PDF File Malicious Code Detection Method Based on Spectrum Analysis
Hao Chenxi and Fang Yong
(InstituteofInformationSecurity,SichuanUniversity,Chengdu610065)
In basic research based on compound documents malicious code detection method of spectrum analysis, a spectrum analysis method based on machine learning is proposed to detect the malicious code in PDF file, firstly, we introduced the PDF file malicious code detection system and make a further optimization of the improved real sequence FFT algorithm based on the original ; we made the spectrum transformation of all the field contents extracted from the PDF file storage structure, and analyzed the transformed spectrum map, extracted feature attributes of those spectrum maps by using machine learning algorithms, then formed whether PDF files infected with malicious code is detected according to the machine learning algorithm ,and finally, through experimental analysis , to verify the correctness and validity of the method used , and gives the implementation of the whole system and test result data.
portable document format (PDF); malicious code detection; spectrum transform; machine learning; feature extraction
2016-01-03
TP399