[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):
有時 PDF 裡會包含上百個物件,真是難以下手檢視…
這時可以用 Search_For 這邊的特殊搜尋功能,像我想找的是 Javascript 的物件:
右邊中間會出現 Search Results,點下去就會在上面顯示物件的資訊。
例如第一筆是物件 10,內容看不是很懂,
不過 /JS 11 0 R 看起來是說 JS 的內容放在 11 這個物件上:
直接點物件 11 來瞧瞧,果真看到 JavaScript 的程式碼了:
按下上方的 Javascript_UI 鈕,可以開啟 JavaScript 的專用視窗,
這邊有針對 JavaScript 設計的一些功能:
像是程式碼看起來亂亂的,可以先用 Format_Javascript 將程式碼排整齊:
至於要看這 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 最終是想要執行什麼東西…
只是不知道為什麼裡面有一堆問號 ???,因此只能看個大概,
大略知道這個程式在做些什麼,但要精準知道的話,會有點困難:
PDFStreamDumper 是個蠻方便的 PDF 分析工具,
不過 UI 設計上真的是有些問題,可能也需要仔細查看 Help 文件之類的,
不然看不太懂它的一些功能是在做什麼…
但光是搜尋 JavaScript 與自動編排程式碼、執行等等功能就已經很強大囉~^^