一文淺析Office惡意宏代碼如何隱藏和破解

2020-12-25 IT168

  含有惡意宏的Office附件在APT攻擊、勒索病毒等攻擊事件中被廣泛使用,黑客在製作惡意宏時通常會使用一些技巧來隱藏宏代碼,防止安全人員對宏代碼直接進行分析。雖然可以通過雲沙箱或者是逆向動態調試的方法得到惡意宏的行為數據,但是一方面雲沙箱的數據可能不夠全面,並且也無法對失效的樣本進行調試,所以直接對宏代碼進行分析是最直接有效的方法。

  此前在分析APT組織TA505的攻擊活動時,追查到一個魚叉攻擊中含有惡意宏的Word附件樣本,嘗試了很多方法才查看到完整的VBA代碼。在此過程中發現網絡上關於宏代碼的隱藏和破解的內容大多都是對VBA工程密碼的破解,所以在此介紹一些Office宏代碼的隱藏及破解技巧。

  背景知識

Office宏

  Office宏是微軟為了讓人們在使用Office軟體時,避免一再地重複相同的動作而設計出來的一種功能。人們可以利用簡單的語法,把常用的動作寫成宏,實現一些重複工作的自動化。

  微軟最早是在1992年發布的Excel 4.0版本中開始支持宏功能,並在1996年發布的Office 97之後通過VBA(Visual Basic for Applications)將其取代(後續版本還都兼容Excel 4.0宏)。VBA是微軟基於Visual Basic語言設計的一種標準宏語言,可以在微軟所有可編程應用軟體(Word、Excel、PowerPoint、Access、Outlook、Project等)中通用。其支持Windows API、DLL、DDE、OLE、ODBC等技術,可以實現豐富的功能。

  複合二進位文檔(CFB)

  複合二進位文檔(以下簡稱CFB)是微軟開發的一種實現COM結構化存儲的文件格式,用於把文本、圖像、視頻等多個對象內容存放在一個文件中,Office97–2003文檔(.doc、.xls等)使用的即是此格式。

  CFB類似於FAT文件系統結構,將存儲空間劃分為若干個大小(通常為512位元組)相同的扇區,扇區還可以劃分短扇區,並形成一個樹形目錄結構,將數據分成若干個流和短流,無序的存儲在扇區和短扇區中,通過扇區(短扇區)配置表記錄存儲順序(扇區鏈),並通過主扇區配置表記錄扇區配置表的存儲位置,每個流的入口信息存儲在目錄中。在頭扇區中存儲主扇區配置表、短扇區配置表、根目錄入口等基礎信息。

  OVBA文件結構中的相關內容

  在Office VBA文件結構中定義了一些與VBA工程加密相關的內容,程序在加載VBA工程文件時會校驗相關參數的合法性,有問題就會報錯。

  ●ID(CLSID,全球唯一標識符),是一組32位16進位數表示的標識符,用於標識VBA工程的類型庫信息。由ole32.dll庫中的CoCreateGuid()函數生成,通過在生成過程中使用網卡MAC地址、納秒級時間、晶片ID碼、隨機數等信息確保CLSID的唯一性。

  ●CMG(ProjectProtectionState),定義VBA工程的訪問是否被限制,4位元組,前三位分別代表被用戶、VBA宿主程序、VBE限制,其餘為0(在VBA 5.0中為全0)。由加密模塊加密(Length=4),得到22-28位16進位數。

  ●GC(ProjectVisibilityState),定義VBA工程是否可見,默認值為0xFF,代表工程可見,工程不可見時值為0x00(CMG的第三位必須為1)。由加密模塊加密(Length=1),得到16-22位16進位數。

  ●DPB(ProjectPassword),定義VBA工程密碼的Hash(基於SHA-1的自定義哈希算法),未設置密碼時值為0x00;設置了密碼時值為密碼的Hash(在VBA 5.0中此值為明文密碼的多字節字符集編碼)。由加密模塊加密(未設置密碼Length=1,設置了密碼Length=29,VBA 5.0中Length=密碼長度)。同時設置密碼以後CLSID的值變為全0。

  ●加密模塊:使用原始值、Length、CLSID、Seed(隨機數,存儲在返回數據的第一個字節)作為參數的一種可逆加密算法。

宏代碼隱藏技巧

Excel 4.0宏

  Excel 4.0的宏代碼寫在工作表中,將宏代碼所在的行、列、工作表隱藏即可。此方法非常簡單,但是由於Excel 4.0宏存儲在Excel 97–2003格式(.xls,複合二進位文檔格式)的Workbook OLE流中,對殺毒軟體的解析檢測能力要求比較高,所以被廣泛使用。

  設置VBA工程密碼

  為VBA工程屬性設置密碼及查看時鎖定,這是最常見的一種方式。

  修改相關參數值

通過修改相關參數的值,使其校驗失敗,導致工程報錯無法查看。

  修改ID的值,打開VBA工程時會顯示「工程不可查看」

  修改CMG或DPB的值,可以看到VBA工程的結構,但是查看工程時仍然會顯示「工程不可查看」。

  修改GC的值,導致內存溢出,並且看不到VBA工程。

  修改相關參數值及CFB存儲結構

  在修改ID、CMG、DPB、GC值的基礎上,對CFB的存儲結構進行了修改,嚴格限制了CFB中扇區鏈及目錄入口的位置,使之後再替換ID、CMG、DPB、GC值時由於字節數的不一致導致CFB存儲結構錯誤,文檔損壞報錯。

  利用控制項屬性標籤隱藏參數

  在分析TA505的樣本時,使用oledump提取到的VBA代碼中,我們發現多處對TadaSHC的調用,但是TadaSHC模塊代碼中只包含一些基本的屬性設置,沒有具體的數據。

  這是由於oledump等工具只能提取到VBA流的元數據,無法提取到VBA流的屬性標籤數據,於是黑客利用VBA窗體控制項中的一些屬性標籤為字符串類型的特點,將關鍵參數隱藏於此,同時在VBA代碼中通過調用控制項的屬性標籤完成shellcode拼接。

  惡意宏代碼破解方法

  Excel 4.0宏

  對隱藏的Excel 4.0宏代碼,只需對隱藏的行、列、工作表取消隱藏即可。

  設置VBA工程密碼

  破解方法1:

  將加密後文件的「DPB」鍵名修改為任意值,再打開文檔時會提示工程文件包含無效的鍵,繼續加載工程後可以查看VBA代碼。

  破解方法2:

  用自己加密的VBA工程文件的ID、CMG、DPB、CG參數值替換待破解文件的參數值,待破解文檔的密碼就會變成自己設置的密碼。

  修改相關參數值

  將ID、CMG、DPB、GC替換為一組合法值,即可恢復。

  對於修改了相關參數以及CFB存儲結構的文件,可以使用oledump、OfficeMalScanner、oletools等工具,從CFB中提取到VBA流。

  如果黑客將關鍵參數隱藏到了VBA窗體控制項中的一些屬性標籤中,導致使用工具提取不到完整的VBA代碼時,可以打開一個正常的包含VBA工程文檔的VBA編譯環境,再打開經過特殊處理的樣本,即可查看VBA工程。

  可以看到窗體控制項Tag屬性標籤中存儲的惡意字符串。

  除TA505外,包括摩訶草,蔓靈花,海蓮花,Kimsuky在內的絕大部分APT組織都會在其攻擊活動中使用包含有惡意宏文檔的釣魚郵件作為其攻擊的入口,及時有效的分析惡意宏的代碼行為,能夠更好的掌握攻擊者的動向。

相關焦點

  • 如何錄製宏及如何利用已經錄製好的宏
    今日的內容是第一章「初識VBA代碼及應用VBA代碼」的第四節「如何錄製宏及如何利用已經錄製好的宏」,「VBA之EXCEL應用」從簡單的錄製宏實現一直講到窗體的搭建,大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。
  • CIS 2020 Hack 破解秀:如何用一行惡意代碼遠程入侵工業機械手臂
    為了揭示工控領域網絡安全的脆弱性,在本屆CIS大會的Hack Demo環節中,主辦方邀請來了國際工控廠商網絡安全負責人、工控安全紅隊IRTeam的聯合創始人劍思庭,以一場工控安全黑客技術破解秀,為在場的朋友們演示了遠程入侵並接管工業生產環境中所使用的智能機械手臂的全過程。
  • 《植物大戰殭屍》破解版隱藏代碼一覽 隱藏代碼是什麼
    導 讀 《植物大戰殭屍》中有著一些隱藏的代碼,在遊戲中輸入這些代碼就能達成一些特殊的效果,很多玩家還不清楚隱藏代碼有哪些
  • word使用技巧5(宏與VBA編程)
    野貓教學視頻第10期,本期視頻內容提要:1)域代碼;2)宏與VBA編程;3)新建功能區的選項卡;4)新建快速訪問工具。常見辦公問題:1、如何一鍵修改Word中100張圖片或表格的寬度、並使之居中?2、如何使Word內的編號與文末的參考文獻編號一一映射、並隨之「牽一髮而動全身」的自動刷新?3、如何一鍵切換Word論文投稿模板,使適用於A期刊的論文能直接改投B期刊?(樣式和模板)4、如何不用一個空格、不用一個數字編號,就實現複雜Word文章的精美排版?(多級列表和制表符)5、如何不用任何公式編輯器就能在Word中直接編寫精美而複雜的公式?
  • 你知道excel的宏可以事半功倍提升工作效率嗎
    這樣難免會有些許枯燥,這時候,如果你本身會excel的宏。那麼,就可以輕鬆實現固定的操作內容啦,這就是「宏」的魅力,接下來,跟著小超老師一起來學習下「宏」的知識點吧。我們以一道計算機二級office題目為例,帶領同學們來看下。我們首選是要進行錄製宏的操作,點擊【開發工具】選項卡下面的【代碼】命令組中「錄製宏」命令。
  • Excel用3行代碼編程實現任何功能——編寫宏
    也不怪你不低調,因為你那兩招和別人就不一樣,你上來就玩的是代碼,而且還3句代碼搞定人家搞不定的事情!並且我們想隨時各個Excel裡面使用,又不知道如何復用!Of cause! 我們編寫一個宏任務,給他定義上代碼,只需要3行代碼就可以搞定這個任務,並且由於有了宏任務的代碼,以後其他的Excel,隨時用!
  • 微軟Excel VBA宏的介紹及如何錄製宏
    宏是系列 Excel命令和指令組合在起,形成了個任務,以自動執行包含多個命令和指令的任務。可以極大提升Excel的效率。一,什麼是宏宏就是用VBA代碼保存下來的程序。宏的基本作就是:減少重複性的操作Excel宏是系列操作步驟的集合,如在單元格中輸數據,複製A3的數據到B4,對C1:D3求和等,這些操作步驟有簡單有複雜。當一些操作步驟需要不斷重複時,我們就要考慮錄製宏。現excel版本採的宏語是VBA(Visual Basic for Applications)。
  • Excel辦公自動化-宏_EXCEL宏入門教程
    所以宏最大的宏是VBA最簡單的應用,他可以讓Excel的多步操作錄製下來,用戶點擊一個命令,或點擊一個按鈕,就可以這些多步操作,也就意味著,我們以前要花二步,三步,或者更多步操作,才能看到的結果,現在,單擊一個命令,或單擊一個按鈕,就能快速完成。所以宏最大的優點,就是可以讓頻繁、繁瑣的操作實行自動化.....
  • 無需VBA代碼,巧用錄製宏,30秒製作一個Excel高級查詢小程序
    上面高大上的查詢系統,看起來需要很複雜的VBA編程才能實現,實際,只需要簡單的一個錄製宏就能輕輕鬆鬆的解決,下面是操作過程1、準備數據將原有的數據源下拉一行,然後在表格中複製原有數據源的標題行,粘貼在右邊空白列為什麼要把原始數據下拉一行, 因為我們會在右邊第2行輸入條件數據,如果篩選的時候第2行被隱藏了,後面沒法輸入條件了。
  • 比較Excel中的宏和VBA
    在Excel中可以錄製一個宏來快速製作學生成績的抬頭,我們簡單回顧一下這個宏是如何錄製的:1) 首先點擊「開發工具」選項卡;2) 點擊「使用相對引用」;3) 在錄製開始前選中第一行的抬頭;4) 點擊「錄製宏」;5) 複製第一行;6) 隔兩行,也就是在第3行右鍵滑鼠,選中「插入複製的單元格」;7) 點擊「
  • Google Play商店400款App藏惡意代碼:手機可變監聽站
    據外電報導,市場研究機構趨勢科技公司(Trend Micro)日前發布的一份報告顯示,在谷歌的應用商店Google Play裡,400多款App內隱藏了惡意代碼,這些藏有惡意代碼的應用可使感染手機變成監聽站,用戶敏感數據隨時都有外洩潛在風險。
  • Adobe,office這些常用辦公軟體為何總是那麼容易被破解
    寫在前面:理論上不存在無法破解的軟體,但並不是說破解軟體比開發容易一萬倍,naive,防破解的目的不是要做一個無法破解的軟體,而是:讓破解軟體的成本遠大於購買軟體的成本,知名軟體大多都有實力讓軟體破解難度大大加大,但出於市場需求和爭取用戶的角度考慮
  • Joker惡意軟體的最新攻擊技巧:使用Github隱藏有效載荷
    他們之前嘗試過的技術包括加密以隱藏字符串不被分析引擎發現,除此之外,開發者還經常對版本進行更新,即上傳一個乾淨版本的應用程式,然後通過更新添加惡意代碼。研究人員最近在Google Play的樣本中檢測到一個新的Joker惡意軟體版本,該版本利用Github頁面和存儲庫來逃避檢測。安全研究員Tatyana Shishkova還發現並分析了該樣本。
  • 錄製宏存在哪些致命的缺點|with|代碼|selection|end_網易訂閱
    通過前面的學習,我們可以錄製宏,指定宏按鈕,啟用宏,也可以刪除宏。  不是所有的操作都可以錄製,有時候,發現錄製了一個空空如也。  1.錄製宏會有大量多餘的代碼  如果錄製一個宏,將選擇的單元格,上下左右均加邊框。天呀,居然有以下如此長的代碼。
  • 使用yara檢測webshell後門程序和惡意代碼
    優點在於動態解析,能發現具體代碼如何工作, 準確性高,缺點是該方式的實現方式複雜,局限大,如果需要對不同的後端代碼程序進行檢測,需要實現不同的語言的語法樹解析,難度呈現指數級。Yara 規則快速匹配工具Yara是一款旨在幫助惡意軟體研究人員識別和分類惡意軟體樣本的開源工具(由 virustotal 的軟體工程師 Victor M. Alvarezk 開發),使用 Yara 可以基於文本或二進位模式創建惡意軟體家族描述信息,當然也可以是其他匹配信息。
  • Excel技能樹系列09:宏與VBA
    其實VBA最初設計出來就是為普通人解決重複性任務和工作的,非常簡單易學。通過簡單的學習了解,加上Excel本身的錄製宏代碼功能,應用上就完全沒問題了。本來VBA就是為普通人設計的,其實本系列並不是要講VBA,如果想要學習,這方面的教材不少。
  • FANUC 如何使用宏變量實現簡單控制
    用戶宏程序輸出信號F54~F55有時我們會遇到設備需要增加某一功能的情況,比如增加一組工件吹氣功能,實現加工完成後,工件表面自動清潔。這是一個比較簡單的功能,一般通過修改設備PMC程序,增加一組M代碼,用於控制吹氣功能打開及關閉即可。但是M代碼的增加對於有一定PMC基礎的人員來說可能比較簡單,但對於PMC程序比較薄弱的人員來說,可能操作起來就比較麻煩,那麼對於這種簡單的控制,有沒有另外一種簡便快捷的方法實現呢?
  • Excel技能樹系列10:拿來就用的宏代碼17條
    這裡有一部分拿來就用的宏代碼,可以先觀看目錄看看是否有需要的。取消隱藏所有的行和列對所有合併單元格取消合併以當前時間為名字保存工作簿將每張工作表單獨保存為一個PDF文件將工作簿保存為一個PDF文件保護所有帶公式的單元格給選定區域交替高亮顯示,增加可讀性高亮顯示所有帶評論的單元格在選定區域內高亮顯示所有的空單元格重新調整所有的圖表為同樣大小給當前工作簿創建備份一次性關掉所有打開的工作簿將選中區域保存為PDF文件刪除選中單元格區域的空格字符將選定區域內的空白單元格以
  • excel中重複製作圖表如何錄製宏
    excel中重複製作圖表如何錄製宏在工作中執行多次重複操作,可以使用宏功能簡化操作,提高工作效率,宏是一系列存儲在VBA模塊中的命令和函數,一旦編輯就可以隨時調用減少執行重複操作的時間,現在簡單的用圖文描述一下錄製宏操作流程這邊給大家以製作圖表設置表樣式進行錄製宏的具體操作方法
  • Microsoft Office Excel官方破解版下載
    Microsoft Office Excel官方破解版下載軟體介紹:MicrosoftExcel是微軟辦公套裝軟體office的一個重要的組成部分。Excel軟體操作簡單,使用便捷,你可以通過Excel軟體來製作表格、處理數據、統計分析等。