[Mac/Windows] 手動破解 Office 2003 (.doc, .xls) 文件中的 VBA 密碼保護
今天想要來分析一個 Office 2003 文件 (.doc) 中,所包含的巨集程式~
當然我們可以用 oletools 工具取出巨集的部分,
不過又有點想直接用 Office 提供的 VB 工具,直接看巨集的內容…
先用 Office 2007 開啟這個 .doc 檔案後,選擇 View > Macros > View Macros:
可以看到這檔案裡有個 autoopen 的巨集,這正是我們想檢視的東西,
按下 Edit 鈕來編輯看看:
結果跳出了密碼輸入的對話框,原來這 VBA 巨集是可以加密碼保護的!
但問題是,我當然不會知道這病毒樣本裡的 VBA 密碼是多少呀:
先上網試用了幾個破密碼保護的軟體,
如 VBA Password Recovery Master、Reset VBA Password 等等,
但這些軟體全都是要付費才能使用,線上只能下載 demo 版本,並不能真的解出密碼…
繼續搜尋了一下,發現要破解 Office 2003 版本 (.doc, .xls) 的 VBA 密碼,
其實相當的容易,只要修改 Office 檔案的幾個地方就行了,
那就來試試看吧,省省荷包~
(但若是 Office 2007 版本以上的格式像 .docx, .xlsx 的話,就不能套用這個方法了)
1. 編輯 Office 檔案
可以參考 使用 hexcurse 來編輯二進位 (binary) 檔案 這篇,
用 hexcurse 打開 .doc 檔案,搜尋 CMG 這個 ASCII 字串,
應該可以看到 CMG=…, DPB=…, GC=… 這幾個字串:
將這三個 = 都改成句號 “.” 後儲存 (最好是儲存成新的 .doc 檔,不要破壞原檔):
上面這個動作可以改用 sed 完成,不過只能用 Linux 的 GNU sed,
用 Mac 內附的 sed 是不行的~
假設輸入檔名是 input.doc,輸出檔名是 crack.doc,可以執行下面指令:
sed -e 's/CMG=/CMG./' -e 's/DPB=/DPB./' -e 's/GC=/GC./' input.doc > crack.doc
2. 開啟修改後的 Office 檔案
在 Windows 上使用 Office 來開啟修改過的 .doc 檔案,
選擇 View > Macros > View Macros,會跳出一個視窗,
說這個 VBA 專案被我們改過的那幾個 key 是無效的,但可以按 Yes 繼續載入這個檔案:
接著一樣會看到 Macros 視窗,但這時選擇 autoopen 巨集並按下 Edit 後,
密碼保護消失了!不需要輸入密碼,就可以看到 VBA 巨集的內容了:
這邊要注意的是必須用 Windows 版本的 Office 來開啟才行,Mac 版的 Office 是不行的~
(我用的是 Windows 的 Office 2007 版本)
不過話說回來,倒是有點好奇像 oletools 工具 是怎麼避開密碼保護,
直接取出 VBA 巨集的呢?有空再來研究看看吧~
參考資料:
stackoverflow: Is there a way to crack the password on an Excel VBA Project?
Unix Sed Tutorial: How To Execute Multiple Sed Commands