漏洞文件使用了混淆技術(shù)怎么辦?
漏洞文件使用了混淆技術(shù)怎么辦?我們下面就以PDF文件為例:
對(duì)于PDF文件的解析,必須先要熟悉PDF文件各式,貌似所有官方的PDF文件各式文檔都是英文的。這樣就沒辦法了,硬著頭皮去讀唄,如果你對(duì)自己的英語(yǔ)夠自信那就到這里看吧參考。除此之外就只能找一些國(guó)內(nèi)撰寫的相關(guān)資料了。熟悉了PDF文件各式之后,怎么解析PDF文件呢?我目前的辦法是查 找PDF文件里面的關(guān)鍵字段,這樣做的弊端是對(duì)于Obj對(duì)象里的數(shù)據(jù)流對(duì)象(stream)包含的內(nèi)容是沒辦法查找的 。另外也有一些PDF漏洞文件使用了一些混淆技術(shù),這樣的PDF文件暫時(shí)就沒有什么好辦法解析了。如下面的情況:
%PDF-1.5
1 0 obj
<</#54#79P#65 R 0 5 O#70e#6e#41c#74i#6fn 3 Pages C#61ta#6c#6f#67>>
endobj
關(guān)鍵字這里就考慮一般的惡意PDF文件,主要是對(duì)以下關(guān)鍵字段(個(gè)人認(rèn)為和漏洞不牽扯關(guān)系的就不考慮了)進(jìn)行查找和解析,如下面所示:
·obj
·endobj
·stream
·endstream
·xref
·trailer
·startxref
·/Page
·/Encrypt
·/ObjStm
·/JS
·/JavaScript
·/AA
·/OpenAction
·/AcroForm
·/URI
·/Filter
·/JBIG2Decode
·/RichMedia
·/Launch
解析思路:
這里要說(shuō)的是幾乎每一個(gè)PDF文件都包含有前7個(gè)字段,也有可能會(huì)不包含stream和endstream。據(jù)說(shuō)也有一些PDF文件沒有xref或 者trailer,但是這種情況比較少見。如果一個(gè)PDF文件沒有xref或者trailer關(guān)鍵字段,那么可以確定它不是惡意的PDF文件。
/xref 交叉引用表,描述每個(gè)間接對(duì)象的編號(hào)、版本和絕對(duì)的文件位置。PDF文檔中的第一個(gè)索引必須從版本為65535的0號(hào)對(duì)象開始,標(biāo)識(shí)符/xref后面的第一個(gè)數(shù)字是第一個(gè)間接對(duì)象(即0號(hào)對(duì)象)的編號(hào),第二個(gè)數(shù)字是/xref (交叉引用表)的大小。
/Page 指明PDF文件的頁(yè)數(shù),大多數(shù)惡意PDF文件僅僅只有一頁(yè)
/Encrypt 指明PDF文件有數(shù)字水印或者是被加密過的
/ObjStm是object streams的數(shù)量。這里要明白o(hù)bject streams是一個(gè)可以包含其它Object對(duì)象的數(shù)據(jù)流對(duì)象
/JS與/JavaScript 指明PDF文件中含嵌有JavaScript代碼。我所見過的PDF惡意文件幾乎全部嵌有JavaScript代碼,這里一般都是利用 JavaScript 的解析漏洞或者使用JavaScript 來(lái)實(shí)現(xiàn)堆噴射(heap spray)。當(dāng)然要注意,在很多正常的PDF文件里也可以發(fā)現(xiàn)含有JavaScript 代碼
/AA、/OpenAction和/AcroForm 指明當(dāng)查看PDF文件或者PDF的某頁(yè)時(shí)會(huì)有自動(dòng)的動(dòng)作隨其執(zhí)行,幾乎所有嵌有JavaScript代碼的惡意PDF文件都有自動(dòng)執(zhí)行 JavaScript代碼的動(dòng)作(action )。如果一個(gè)PDF文件包含/AA或/OpenAction 自動(dòng)執(zhí)行動(dòng)作的關(guān)鍵字段,而且又含有JavaScript 代碼,那么這個(gè)PDF文件就極可能是惡意的PDF文件
/URI 如果你要在PDF文件中執(zhí)行打開網(wǎng)頁(yè)的動(dòng)作的話就需要這個(gè)關(guān)鍵字段
/Filter 一般為FlateDecode即使用zlib壓縮解壓縮算法,
/JBIG2Decode 指明PDF文件使用了JBIG2壓縮。雖然JBIG2壓縮本身可能會(huì)存在漏洞(CVE-2010-1297)。但/JBIG2Decode關(guān)鍵字段并不能說(shuō)明PDF文件是否可疑
/RichMedia Flash文件
/Launch 執(zhí)行動(dòng)作(action)數(shù)量
最后的工作就是檢查PDF文件的各個(gè)對(duì)象以及對(duì)象之間是否符合Adobe的PDF文件格式規(guī)范。并綜合上面描述的各關(guān)鍵字段信息分析該P(yáng)DF文件是否可能為惡意文件。