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