[Windows] 用 PDFStreamDumper 分析 PDF 中的惡意 JavaScript

[Windows] 用 PDFStreamDumper 分析 PDF 中的惡意 JavaScript

今天想要來分析一個可能潛藏惡意程式的 PDF,

不知道要從何下手,就先下網找找看有沒有相關的工具可以用…

有人推薦 Java 寫的 iText RUPS,試用一下還算 OK,

但我的其中幾個 PDF sample 沒能成功讀取到裡面的資料,程式當掉了 :O

 

後來在 Analyzing Malicious Documents Cheat Sheet 這篇,看到不少值得參考的工具~

其中一個是 PDFStreamDumper,來看看它怎麼用吧~

 

1. 安裝 PDFStreamDumper

在 PDFStreamDumper 首頁就可以下載 PDFStreamDumper_Setup.exe 安裝~

 

2. 用 PDFStreamDumper 檢視 PDF 中的可疑物件

執行 PDFStreamDumper 之後,可以看到如下面的畫面,

基本上覺得 UI 做得不是很好,有點混亂 (而且選單上用底線 _ 看起來很怪異),

有時按下某個按鈕是立刻執行功能,有時是跳出下拉選單,不太一致…

 

雖然 UI 上有些缺點,不過檢視可疑物件的功能還算方便,

按下 Load 鈕來載入 PDF 檔案後,左邊會列出這 PDF 裡包含的所有物件 (object):

20160816_020036

 

有時 PDF 裡會包含上百個物件,真是難以下手檢視…

這時可以用 Search_For 這邊的特殊搜尋功能,像我想找的是 Javascript 的物件:

20160816_020419

 

右邊中間會出現 Search Results,點下去就會在上面顯示物件的資訊。

例如第一筆是物件 10,內容看不是很懂,

不過 /JS 11 0 R 看起來是說 JS 的內容放在 11 這個物件上:

20160816_020141

 

直接點物件 11 來瞧瞧,果真看到 JavaScript 的程式碼了:

20160816_020201

 

按下上方的 Javascript_UI 鈕,可以開啟 JavaScript 的專用視窗,

這邊有針對 JavaScript 設計的一些功能:

20160816_020521

 

像是程式碼看起來亂亂的,可以先用 Format_Javascript 將程式碼排整齊:

20160816_020617  

 

至於要看這 JavaScript 做了什麼呢?

個人覺得如果有單步執行可以檢視變數內容會比較方便,

不過它似乎只提供了 Run 的功能,但直接執行還是太危險了,

真的要直接執行的話,一定要在 VM 隔離環境裡跑比較安全~

 

先稍微瞄一下程式碼吧~通常這種惡意 PDF 裡夾帶的 JavaScript,

裡面都會用一堆字串取代或是組合,來產生真正想要的字串,

最後通常是想辦法帶出 eval() 之類的函式,來執行想要的動作…

像下面這程式碼的最後一行是 readerSdsdf(),不曉得這 readerSdsdf 是什麼,

往上找把相關的程式碼都先列出來看看:

var sendEmail = ["al", "ev", ""];
arraySdftuf = new String(sendEmail[1] + sendEmail[0] + sendEmail[2]);
var readerSdsdf = this[arraySdftuf];
readerSdsdf(send);

 

arraySdftuf 是由 sendEmail 裡的幾個字串組起來的,

組起來正好是 “ev” + “al” + “” = “eval”,

接著 readerSdsdf = this[“eval”] 也就是 window.eval,

因此 readerSdsdf(send) 就是執行 eval(send),

至於 send 的內容就得再追了 (但通常很累,因為會有很長一串的程式碼用來產生 send 的內容)…

 

不想慢慢追的話,就直接按下 Run 跑跑看吧 (記得要在 VM 上執行),

下面的視窗似乎是會顯示出 eval() 裡帶的參數,

因此就可以看到這個 JavaScript 最終是想要執行什麼東西…

只是不知道為什麼裡面有一堆問號 ???,因此只能看個大概,

大略知道這個程式在做些什麼,但要精準知道的話,會有點困難:

20160816_030441  

 

PDFStreamDumper 是個蠻方便的 PDF 分析工具,

不過 UI 設計上真的是有些問題,可能也需要仔細查看 Help 文件之類的,

不然看不太懂它的一些功能是在做什麼…

但光是搜尋 JavaScript 與自動編排程式碼、執行等等功能就已經很強大囉~^^

 

(本頁面已被瀏覽過 776 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料