1.簡(jiǎn)介
之前我們介紹了VBA腳本文件的重定向,修改文件中的加載結(jié)構(gòu)并將腳本的二進(jìn)制文件進(jìn)行偽裝,達(dá)到宏代碼隱藏的目的。該技術(shù)具有一定的局限性,只使用腳本重定向技術(shù)無(wú)法繞過(guò)Microsoft OLE分析工具的檢測(cè)。因此再介紹一種VBA隱藏技術(shù)"VBA stomping",stomping 是指破壞 Microsoft Office 文檔中的 VBA 源代碼,對(duì)Microsoft OLE分析工具進(jìn)行欺騙,干擾其分析結(jié)果。
2.OLE分析工具原理
介紹OLE分析工具原理之前,我們使用OLE分析工具"oletools"來(lái)分析一份使用了VBA重定向腳本技術(shù)的OFFICE文檔,該文檔內(nèi)嵌了自動(dòng)執(zhí)行彈窗功能的VB腳本。
SubAutoOpen() MsgBox "Hello World" End Sub
我們使用oletools對(duì)該文件進(jìn)行分析,oletools將宏源碼完整的還原了出來(lái),因自動(dòng)運(yùn)行是敏感操作,oletools標(biāo)注了IOC。
因此,在實(shí)現(xiàn)欺騙這類工具前,我們需要了解OLE解析工具是如何將我們的宏代碼提取出來(lái)的,通過(guò)查看oletools的源碼,找到宏檢測(cè)部分,可以發(fā)現(xiàn)檢測(cè)工具是通過(guò)搜索"Attribut"這個(gè)特征來(lái)定位宏的位置。
根據(jù)該信息,我們打開VBA腳本的二進(jìn)制文件,然后搜索"Attribut"字符,在該字符附近,我們可以看到VBA宏的源碼相關(guān)字符,OLE分析工具便是將這些內(nèi)容進(jìn)行提取,并展示出來(lái),然后對(duì)其中的敏感字符進(jìn)行匹配,提示IOC。
3.stomping
因此我們需要stomping的部分便是VBA二進(jìn)制腳本中Attribute附近的字符,但是,如果我們破壞了這部分字符,宏代碼是否能夠正常執(zhí)行?
在回答這個(gè)問(wèn)題之前,需要引入P-Code這個(gè)知識(shí)點(diǎn),P-code,即Pseudo Code(偽代碼),這一概念最早出現(xiàn)在Pascal編譯器中,它是為了提供跨平臺(tái)可移植性而產(chǎn)生的,實(shí)現(xiàn)這一編譯機(jī)制的Pascal編譯器被稱為"Pascal P Compiler"。
VBA二進(jìn)制腳本文件中即包含了源碼字符,又包含了P-Code,VBA中的P-Code,其本質(zhì)是對(duì)源碼字符的編譯壓縮,因此實(shí)現(xiàn)的功能是相同的,即VBA二進(jìn)制腳本中存在兩份功能一致的代碼,只是存在的形式不同,而oletools不會(huì)去解析P-Code。
需要注意的是,執(zhí)行P-Code的條件的前提條件是編譯腳本的VBA版本需要與運(yùn)行時(shí)版本一致,因?yàn)椴煌姹綱BA編譯的P-Code代碼存在差異,解釋器無(wú)法解析不同版本的P-Code,因此會(huì)讀取源代碼并重新編譯當(dāng)前版本可執(zhí)行的P-Code。
如果滿足腳本編譯環(huán)境和執(zhí)行環(huán)境的VBA版本一致,可以修改源碼部分,這樣oletools解析的結(jié)果就是我們修改后的代碼,而解釋器依舊會(huì)執(zhí)行舊代碼,我們將腳本二進(jìn)制中的源碼部分進(jìn)行修改,修改代碼如下。
Subshowdata() getnum "12345 67890" End Sub
修改后,打開文件,可以發(fā)現(xiàn)宏執(zhí)行結(jié)果沒(méi)有改變,證明修改源碼部分不會(huì)影響宏的執(zhí)行。
接下來(lái),我們使用工具檢測(cè)一下該文件。發(fā)現(xiàn)工具檢測(cè)出的代碼為我們修改后的代碼,解析結(jié)果與實(shí)際執(zhí)行內(nèi)容不同,到達(dá)欺騙目的,因?yàn)闆](méi)有了自動(dòng)執(zhí)行函數(shù)AutoOpen,工具沒(méi)找到IOC指標(biāo),認(rèn)為該文件正常。
4.總結(jié)
由于各種工具對(duì)VBA的檢測(cè)角度不同,單一宏隱藏技術(shù)不能不能滿足我們的要求,因此在對(duì)抗檢測(cè)工具時(shí),我們需要打出一套組合拳,將文件重定向與VBA stomping相結(jié)合,使其無(wú)法通過(guò)解析源碼方式分析腳本,也無(wú)法通過(guò)找到腳本的二進(jìn)制文件來(lái)提取P-Code。
審核編輯:劉清
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
805瀏覽量
42224 -
VBA
+關(guān)注
關(guān)注
0文章
19瀏覽量
12048 -
編譯器
+關(guān)注
關(guān)注
1文章
1658瀏覽量
50020 -
OLE
+關(guān)注
關(guān)注
0文章
14瀏覽量
11748
原文標(biāo)題:VBA隱藏技術(shù)stomping
文章出處:【微信號(hào):蛇矛實(shí)驗(yàn)室,微信公眾號(hào):蛇矛實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何實(shí)現(xiàn)VBA編譯器崩潰

請(qǐng)求ENA VBA援助
空間域LSB的信息隱藏檢測(cè)技術(shù)研究
基于Turbo碼的信息隱藏技術(shù)的研究
VBA開發(fā)手冊(cè)
VBA 基礎(chǔ)及與VB的區(qū)別
密文域可逆信息隱藏技術(shù)發(fā)展

評(píng)論