1.簡介
之前我們介紹了VBA腳本文件的重定向,修改文件中的加載結(jié)構(gòu)并將腳本的二進制文件進行偽裝,達到宏代碼隱藏的目的。該技術(shù)具有一定的局限性,只使用腳本重定向技術(shù)無法繞過Microsoft OLE分析工具的檢測。因此再介紹一種VBA隱藏技術(shù)"VBA stomping",stomping 是指破壞 Microsoft Office 文檔中的 VBA 源代碼,對Microsoft OLE分析工具進行欺騙,干擾其分析結(jié)果。
2.OLE分析工具原理
介紹OLE分析工具原理之前,我們使用OLE分析工具"oletools"來分析一份使用了VBA重定向腳本技術(shù)的OFFICE文檔,該文檔內(nèi)嵌了自動執(zhí)行彈窗功能的VB腳本。
SubAutoOpen() MsgBox "Hello World" End Sub
我們使用oletools對該文件進行分析,oletools將宏源碼完整的還原了出來,因自動運行是敏感操作,oletools標注了IOC。
因此,在實現(xiàn)欺騙這類工具前,我們需要了解OLE解析工具是如何將我們的宏代碼提取出來的,通過查看oletools的源碼,找到宏檢測部分,可以發(fā)現(xiàn)檢測工具是通過搜索"Attribut"這個特征來定位宏的位置。
根據(jù)該信息,我們打開VBA腳本的二進制文件,然后搜索"Attribut"字符,在該字符附近,我們可以看到VBA宏的源碼相關(guān)字符,OLE分析工具便是將這些內(nèi)容進行提取,并展示出來,然后對其中的敏感字符進行匹配,提示IOC。
3.stomping
因此我們需要stomping的部分便是VBA二進制腳本中Attribute附近的字符,但是,如果我們破壞了這部分字符,宏代碼是否能夠正常執(zhí)行?
在回答這個問題之前,需要引入P-Code這個知識點,P-code,即Pseudo Code(偽代碼),這一概念最早出現(xiàn)在Pascal編譯器中,它是為了提供跨平臺可移植性而產(chǎn)生的,實現(xiàn)這一編譯機制的Pascal編譯器被稱為"Pascal P Compiler"。
VBA二進制腳本文件中即包含了源碼字符,又包含了P-Code,VBA中的P-Code,其本質(zhì)是對源碼字符的編譯壓縮,因此實現(xiàn)的功能是相同的,即VBA二進制腳本中存在兩份功能一致的代碼,只是存在的形式不同,而oletools不會去解析P-Code。
需要注意的是,執(zhí)行P-Code的條件的前提條件是編譯腳本的VBA版本需要與運行時版本一致,因為不同版本VBA編譯的P-Code代碼存在差異,解釋器無法解析不同版本的P-Code,因此會讀取源代碼并重新編譯當前版本可執(zhí)行的P-Code。
如果滿足腳本編譯環(huán)境和執(zhí)行環(huán)境的VBA版本一致,可以修改源碼部分,這樣oletools解析的結(jié)果就是我們修改后的代碼,而解釋器依舊會執(zhí)行舊代碼,我們將腳本二進制中的源碼部分進行修改,修改代碼如下。
Subshowdata() getnum "12345 67890" End Sub
修改后,打開文件,可以發(fā)現(xiàn)宏執(zhí)行結(jié)果沒有改變,證明修改源碼部分不會影響宏的執(zhí)行。
接下來,我們使用工具檢測一下該文件。發(fā)現(xiàn)工具檢測出的代碼為我們修改后的代碼,解析結(jié)果與實際執(zhí)行內(nèi)容不同,到達欺騙目的,因為沒有了自動執(zhí)行函數(shù)AutoOpen,工具沒找到IOC指標,認為該文件正常。
4.總結(jié)
由于各種工具對VBA的檢測角度不同,單一宏隱藏技術(shù)不能不能滿足我們的要求,因此在對抗檢測工具時,我們需要打出一套組合拳,將文件重定向與VBA stomping相結(jié)合,使其無法通過解析源碼方式分析腳本,也無法通過找到腳本的二進制文件來提取P-Code。
審核編輯:劉清
-
二進制
+關(guān)注
關(guān)注
2文章
801瀏覽量
41767 -
VBA
+關(guān)注
關(guān)注
0文章
19瀏覽量
11939 -
編譯器
+關(guān)注
關(guān)注
1文章
1642瀏覽量
49318 -
OLE
+關(guān)注
關(guān)注
0文章
14瀏覽量
11634
原文標題:VBA隱藏技術(shù)stomping
文章出處:【微信號:蛇矛實驗室,微信公眾號:蛇矛實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
如何實現(xiàn)VBA編譯器崩潰
![如何實現(xiàn)<b class='flag-5'>VBA</b>編譯器崩潰](https://file1.elecfans.com/web2/M00/8C/CC/wKgZomSx_tKAIYMsAAAyRAda5zU862.png)
請求ENA VBA援助
空間域LSB的信息隱藏檢測技術(shù)研究
VBA開發(fā)手冊
VBA 基礎(chǔ)及與VB的區(qū)別
密文域可逆信息隱藏技術(shù)發(fā)展
![密文域可逆信息<b class='flag-5'>隱藏</b><b class='flag-5'>技術(shù)</b>發(fā)展](https://file.elecfans.com/web2/M00/49/79/poYBAGKhwLqAchXNAAAQOjdJgJw588.jpg)
虹科CANEasy的開發(fā)-VBA篇
![虹科CANEasy的開發(fā)-<b class='flag-5'>VBA</b>篇](https://file.elecfans.com/web2/M00/6D/3D/pYYBAGMyZjiAPPNIAABJONaTdK8049.png)
評論