基于文檔的攻擊方式目前仍舊是黑客們比較喜歡使用的攻擊方式。通過文檔軟件的漏洞觸發(fā)惡意代碼或者通過誘使用戶啟用宏執(zhí)行惡意的宏文件來執(zhí)行惡意代碼,,這是比較常用的兩種基于文檔的攻擊方法,。在文檔中嵌入惡意宏的方式雖然比較傳統(tǒng),,但是由于其操作的簡單,并且可以通過流行的代碼混淆技術(shù)繞過典型的殺軟,,因此被攻擊者廣泛使用,。近幾個月發(fā)現(xiàn)的勒索軟件大部分都是基于文檔惡意宏觸發(fā)的。 相信大部分的安全分析人員每天可能會面對很多惡意的宏文件,,因此如何快速的分析這些惡意宏文件顯得很有必要,。試想一下如果可以模擬文檔中宏VBA的執(zhí)行,并且在VBA執(zhí)行的過程中記錄下其行為的話,,那么是不是就能夠快速分析該宏文件了,。而事實(shí)上也存在這么一款開源的VBA模擬器,我們不僅可以很簡單的使用它,,而且可以在該VBA模擬器的基礎(chǔ)上定制我們需要的行為分析,,本文將在實(shí)戰(zhàn)中利用它快速分析惡意宏文件。 項(xiàng)目地址:https://github.com/decalage2/ViperMonkey ViperMonkey是基于python開發(fā)的VBA模擬器,,可以分析并反混淆MS Office中的惡意VBA宏,。其工作原理如下: 1. VBA的源碼是使用olevba從MS Office中提取出來的。 2. 代碼是使用pyparsing定義的VBAgrammar解析的,,VBA grammar來源于官方的說明文檔MS-VBAL,。 3. 解析器將VBA代碼轉(zhuǎn)換成一個結(jié)構(gòu)化的對象模型(python對象)。 4. 自定義VBA解析引擎模擬代碼執(zhí)行,,模擬MS Office功能,,ActiveX對象和DLL等大多數(shù)惡意宏的使用。 5. 如果存在特殊的執(zhí)行動作,,比如調(diào)用DLL,,運(yùn)行代碼,下載或者寫入文件,,那么這些動作將會被捕獲并記錄下來,。 6. 解析的結(jié)果可以幫助快速分析惡意文件,可以更好的了解惡意宏的行為并且可以提取出混淆的字符串或者IOC,。 ViperMonkey下載和安裝 壓縮包下載地址:https://github.com/decalage2/ViperMonkey/archive/master.zip Linux/Mac安裝完依賴后,,運(yùn)行sudo -H pip install -U -r requirements.txt Widows下運(yùn)行pip install -U -rrequirements.txt 使用方法 解析文檔中的VBA宏代碼使用vmonkey腳本: pythonvmonkey.py <file> 如果輸出時間過長或者結(jié)果過于冗長,可以使用-l選項(xiàng)減少日志的級別: python vmonkey . py -1 warning <file> 下面通過幾個真實(shí)的案例說明如何分析惡意宏文件,。 樣本1 DIAN_caso-5415.doc 是2009年的一個比較老的樣本,。內(nèi)部的VBA宏代碼混淆不明顯,但是這個樣本可以作為一個例子來分析,。 運(yùn)行vmonkey腳本: python vmonkey.py DIAN_caso-5415.doc.zip-z infected 首先顯示從文件中提取出來的VBA源碼: 隨后,解析VBA代碼,,顯示出代碼流程包括子程序,,函數(shù)以及DLL函數(shù): 接著vmonkey使用VBA引擎模擬宏代碼執(zhí)行,入口點(diǎn)為“Auto_Open”: 在執(zhí)行完成后,,vmonkey顯示出宏運(yùn)行過程的記錄信息: 樣本2 下面看一個最近的樣本(2016年9月),。該樣本的混淆程度比較嚴(yán)重,。仔細(xì)看一下會發(fā)現(xiàn),多處調(diào)用一個JTCKC()函數(shù)片段,,這個函數(shù)是用來解碼混淆的字符串的,。 該算法是簡單而有效:它提取兩個字符,忽略第三個字符,。兩個字符形成一個十六進(jìn)制數(shù),。通過“&H”連接,再使用CHR()解碼字符,。例如,,返回“d”。其余字符串同樣使用該算法,。 在官方VBA規(guī)范中未記錄如何使用CHR(“&H 64”),。CHR()函數(shù)的參數(shù)默認(rèn)是一個整數(shù)而不是字符串,。因此,,必須要修改ViperMonkey引擎來匹配MS Office的實(shí)際行為。 現(xiàn)在我們知道解碼算法,,其實(shí)是可以手動進(jìn)行反混淆的。但是,,這里同樣可以使用vmonkey自動做,。最終得到的結(jié)果: 可以看到真正的payload是Jscript代碼,,目的是從hXXP://216.170.126.3/wfil/file.exe下載文件并執(zhí)行,。 仔細(xì)看這個VBA代碼還可以發(fā)現(xiàn),Jscript代碼并沒有向磁盤寫文件,,而是使用ActiveX對象調(diào)用”ScriptControl”直接在內(nèi)存中運(yùn)行,。 樣本3 2016年9月份的一個樣本: scan_092016_9534905854.docm (SHA2569eebae3cce1e63f01eaa6867ae8537cf19162527bb7e7d752282f0e20dc03a66) 同樣是一個經(jīng)過復(fù)雜混淆的樣本,但是使用的確實(shí)另一種方法:代碼中存在非常多級別很小的函數(shù),,看起來像是提供比較小的字符串: 隨后,其他函數(shù)將這些字符串串聯(lián)起來構(gòu)成payload,,接著運(yùn)行: 所以我們可以使用vmonkey記錄代碼執(zhí)行的結(jié)果: 和之前的樣本類似,它采用ScriptControl對象來運(yùn)行JScript代碼,。從hxxp://northsidecollisiona2.com/load5.exe下載payload,,并使用cmd.exe的運(yùn)行。 可以看出使用ViperMonkey可以快速幫助我們分析惡意宏文件,,但是其解析引擎仍然是不完整的,,還沒有經(jīng)歷過更多的在野樣本檢測,但是這是一個開源的項(xiàng)目還在不斷的完善中,,我們當(dāng)然也可以根據(jù)不同的需要去定制分析的樣本,。
本文為嘶吼編輯整理,如若轉(zhuǎn)載,,請注明來源于嘶吼: https://www./technology/1646.html
|
|