[VBA] 從 Excel xlsm 檔中取出 VBA 巨集程式
今天收到一個新的 case,說某個 Excel .xlsm 檔有問題,
看了一下,猜測裡面有巨集 (macro),
可是要怎麼確認這件事情,以及要如何取出巨集的內容呢?
後來找到 python-oletools 這套工具,可以很方便的解析 Office 檔案中 VBA 的資訊~
立刻來試試看它的效果吧~
1. 安裝 python-oletools
用 pip 就可以安裝 python-oletools:
sudo pip install -U oletools
裝好的 oletools 會在 python 的 site-packages 下面,
像是我的裝好是在 /Library/Python/2.7/site-packages/oletools~
2. 使用 oletools 擷取 VBA 資訊
oletools 裡面包含了許多的工具,其中 olevba 可以用來取出 VBA 的內容,
像我想取出 test.xlsm 裡的 VBA 內容的話,
可以執行 python -m oletools.olevba <filename>,例如:
testuser@localhost ~ $ python -m oletools.olevba ~/test.xlsm olevba 0.31 - http://decalage.info/python/oletools Flags Filename ----------- ----------------------------------------------------------------- OpX:MASI---- /Users/testuser/test.xlsm (Flags: OpX=OpenXML, XML=Word2003XML, MHT=MHTML, M=Macros, A=Auto-executable, S=Suspicious keywords, I=IOCs, H=Hex strings, B=Base64 strings, D=Dridex strings, V=VBA strings, ?=Unknown) =============================================================================== FILE: /Users/testuser/test.xlsm Type: OpenXML ------------------------------------------------------------------------------- VBA MACRO Module1.bas in file: xl/vbaProject.bin - OLE stream: u'VBA/Module1' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sub auto_open() ' http://excel.tips.net/T002003_Opening_an_HTML_Page_in_a_Macro.html Dim ie As Object Set ie = CreateObject("Internetexplorer.Application") ie.Visible = True ie.Navigate "www.google.com" End Sub ------------------------------------------------------------------------------- VBA MACRO ThisWorkbook.cls in file: xl/vbaProject.bin - OLE stream: u'VBA/ThisWorkbook' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (empty macro) ------------------------------------------------------------------------------- VBA MACRO Sheet1.cls in file: xl/vbaProject.bin - OLE stream: u'VBA/Sheet1' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (empty macro) +------------+----------------------+----------------------------------------+ | Type | Keyword | Description | +------------+----------------------+----------------------------------------+ | AutoExec | Auto_Open | Runs when the Excel Workbook is opened | | Suspicious | CreateObject | May create an OLE object | | IOC | http://excel.tips.ne | URL | | | t/T002003_Opening_an | | | | _HTML_Page_in_a_Macr | | | | o.html | |
從輸出裡可以看到 VBA macro 的內容,可以發現裡面有一個 auto_open() 函式,
因此這個 .xlsm 只要一被開啟,就會自動執行 auto_open(),
因此就會用 IE 瀏覽至 Google 網站~
最下面的部分還會有個分析結果,把一些比較可疑的行為標示出來,
像是有 Auto_Open() 函式,以及使用了 CreateObject() 建立 OLE 物件等等,
對於判斷這個 VBA 巨集是否是惡意病毒蠻有幫助的~
不過覺得最方便的還是可以取出 VBA 巨集內容這一點,
這樣一方面可以檢查 VBA 巨集是否有問題,一方面也可以看看別人的寫法囉~
(本頁面已被瀏覽過 1,894 次)