2008年7月19日 星期六

分析 Javascript 的方法 暗黑篇章

最近的 isc sans diary 還蠻有料的,講了幾篇
Javascript 的暗黑篇章供有需要解析惡意網址
的人參考。

第一篇:
系統化的解譯 Javascript 惡意程式:
Javascript Decoding round-up
首先建議你使用 wget/curl/lynx 等文字模式並
包含惡意 Javascript 的 html 完整檔案,接著
列出四個可以試用的方向:

1.1 將 document.write() 跟 eval() 改成 alert()
來進行利用跳出的視窗解析。通常只能解析到
第一步,仍需要後續工作。

1.2 使用 document.write("") 把
eval(), docuemnt.write(evil code) 的部份包起
來就可以在 textarea 讀解譯完的程式碼
參考,跟 1.1 一樣比較快完成,但要小心 typo
你的 browser 還是會執行惡意程式

1.3 將 Javascript 改寫成 Perl 來找 Xor, 或字
元排列組合的編碼比較快速,前提是你要對
Perl 夠熟,還有先看懂原先的 Javascript 程
式碼...也是比較安全的做法

1.4 將 Javascript 中的 document.write(txt)
代換成 print(txt) 後,使用 "SpiderMonkey"
Javascript engine 執行。
缺點是無法解譯專門對付 IE 的 Javascript
程式。

或是你也可以參考 Daniel Wesemann 的詳細實
作步驟來完成
, 2

第二篇
進階的 Javascript 混淆程式碼解析:
Advanced obfuscated Javascript Analysis

除了第一篇提到的方法以外,還有編碼的
在 Javascript 中的加密金鑰,使用 Microsoft
Script Editor 在 script 中設 breakpoint 可以很
方便解譯程式碼。

另外也找出該木馬程式有使用 function
prototype 避免自動程式檢查,也會對中毒的
使用者設定 Cookie, Cookie 在 SpiderMonkey
上無法設定,因此無法檢查,然後再用 Cookie
自我檢查是否已經重複感染同樣的惡意程式,
木馬程式還會很好心的要你 patch 微軟在 2006
年的安全更新 MS06-014,才執行真正的木馬
植入動作,最後解出 referer 是指到中國的 :P

第三篇
使用 VBscript 混合 Javascript 的惡意程式,
其中的 Javascript 還需要經過 VBscript 解出
才執行真正的惡意程式:
Mixed(VBScript and Javascript) Obfuscation

第四篇
使用 SpiderMonkey 解析混淆過的 Javascript
惡意程式:
Obfuscated Javascript Redux

第五篇
如何找出隱藏在 PDF 檔案中的 javascript 惡意
程式:
Extracting scripts and data from suspect PDF
files