例項講解如何繞過 Office 文件的反分析技術

2021-09-23 03:16:32 字數 2240 閱讀 7719

本文講的是例項講解如何繞過 office 文件的反分析技術

今天我們來試著分析乙個使用word文件的惡意vba專案。該文件的作者對檔案中的vba專案進行了密碼保護,以防止對惡意**的檢查,同時也使用了一些防止密碼刪除的技術。因此自動分析工具就基本不起作用了,但我們還是展示了如何跨越所有這些反分析障礙的技術,下面我們開始。

我們首先開啟文件,然後就會接到乙個釣魚訊息,聲稱該文件是使用早期版本的microsoft office建立的,想要檢視內容的話我們必須啟用巨集。

當我們啟用巨集時,文件開始指向cfai66.fr

要了是解什麼使文件傳送到乙個法國網域名稱,我們必須在「開發人員」選項卡中檢查文件的巨集。但是,作者用密碼保護著vba專案,來防止我們檢查。這就限制了我們從microsoft office內部準確分析vba指令碼的能力。

要繼續分析,我們可以嘗試使用office檔案的一些常見的十六進製制編輯技術手動刪除密碼。首先,我們在文件中搜尋字串「dpb」並將其更改為「dpx」。office的某些版本會將其解釋為損壞的密碼雜湊。但是,這對我們的文件不起作用,我們仍然收到密碼提示。

接下來,我們嘗試用我們建立的受密碼保護的vba啟用文件替換我們文件的「cmg」,「dpb」和「gc」值。遺憾的是,我們的檔案的作者有意地搞砸了「cmg」的價值,以摒棄這個領域的長度。我們嘗試將我們的新cmg複製到惡意文件也失敗了。此外,我們還嘗試了在cmg的引號內外填充資料以保留檔案的長度,但也失敗了。左邊的是新檔案,右邊的是惡意檔案。

由於我們的密碼刪除嘗試都失敗了,我們只能繼續使用受歡迎的office產品分析工具officemalscanner檢查我們的文件。使用scan / brute選項執行該工具並沒有產生任何結果:

使用info 選項重新執行該工具可以顯示3個vba物件:

要動態分析這些vba物件,我們可以使用乙個名為vipermonkey的新工具。vipermonkey是用python編寫的vba**引擎,旨在分析和解組microsoft office檔案(word,excel,powerpoint,publisher等)中包含的惡意vba巨集。

然而,vipermonkey無法完全分析vba,因為

1.)不會識別vba函式ubound

2.)無法評估「i = userform1.t.top」的變數賦值,因為它無法定位userform1.t.top的值。

看來我們必須手動逆向module1 的vba指令碼。首先,我們將指令碼載入到新的word文件中,以便我們可以使用內建的vba偵錯程式進行除錯。除錯指令碼後,我們很快就發現了導致vipermonkey失敗的**。

此**無法執行,因為form1無法使用officemalscanner工具轉儲,除非form1的元資料被轉儲,並且form1.t.top的值無法找到。這是乙個阻止自動vba分析的好方法,因為不能獲取密碼保護形式的變數(我所知道的)。我們將不得不手動跟蹤**並逆向使用此變數的函式來嘗試確定什麼它的價值應該是。

跟蹤i = form1.t.top的變數賦值最終將i分配給變數t,之後將我們帶到第56行。

第62行指出,如果wet = 0,則rd將是變數rd的字元表示。

如果我們以相反的邏輯順序取這些語句,我們得到以下內容:

如果rd作為char,wet必須等於0:

wet= 0

wet= 1  -  fr(1)= 0

fr = t(12)-11 = 1

t(12)= i(12)= userform1.t.top(12)

userform1.t.top == 12

如果我們用12的值替換userform1.t.top並除錯指令碼,我們慢慢地就會看到可讀的文字填充變數onearm。這時,我們已經成功地逆向了vba的邏輯,並在變數中顯示了以下批處理檔案:

刪除檔案

i.bat

npzdi.exe

網路通訊

檢測

結論

這是乙個有趣的使用word文件來進行的vba專案,並且採用了密碼保護來阻礙分析。經過幾次密碼刪除嘗試,使用officemalscanner和vipermonkey自動進行工具分析,我們最終手動逆向了vba函式從而發現了在除錯過程中導致指令碼失敗的缺失值。

原文發布時間為:2023年8月20日

給開發處理office文件的經驗

1.從內部試題 上提取試題到excel中,做為題庫 內部試題 不能通過提取 的方法來直接得到 只能複製到excel 但是複製過來的資料分行顯示在單元格裡,一合併就只顯示第乙個單元格的內容 進一步解決 解決excel 自動篩選時只顯示合併單元格的第一行問題 問題1 有一行資料的行高不能調整,原因是達到...

Makefile的例項講解

makefile,顧名思義,它的作用是來生成檔案的。makefile可以對源 進行管理,可以完成編譯,鏈結,執行等階段。當編寫完成後,在終端執行make命令就可以執行makefile檔案中的行為,一鍵完成編譯,鏈結,執行等操作。非常的方便。makefile有自己的檔案規則,它可以定義和使用變數,他也...

OFFICE 2003 開啟RMS保護的文件出錯

症狀從 2009 年 12 月 11 日開始,使用 office 2003 的客戶將無法開啟由 active directory rights management service ad rms 或 rights management services rms 保護的 office 2003 文件。...