0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

VBA腳本文件重定向簡析

蛇矛實驗室 ? 來源:蛇矛實驗室 ? 2023-05-15 10:24 ? 次閱讀

1. 簡介0017898e-f10e-11ed-90ce-dac502259ad0.png

通過Office文檔進行宏攻擊是一種非常常見的手段,宏的功能十分強大,將Office文檔中嵌入以VBA(Visual Basic for Applications)編寫的宏代碼腳本,當(dāng)運行Office文檔時,便可以執(zhí)行各種命令。但是宏代碼通常很難隱藏,分析人員可以直接打開宏編輯器查看宏的源碼,分析腳本的功能。雖然微軟提供了工程加密工具對腳本進行保護,在打開編輯器時需要輸入密碼進行驗證后才能查看腳本,但是這種加密可以通過替換腳本中的加密模塊進行驗證繞過。VBA腳本文件重定向能夠?qū)⒛_本默認(rèn)文件vbaProject.bin進行替換,在打開文本時加載其他文件,增加分析者的分析復(fù)雜程度。

2. vbaProject.bin

在 Office 2007 之后的 Office 文檔格式采用的是 OOXML 標(biāo)準(zhǔn)格式。那什么是 OOXML 標(biāo)準(zhǔn)?這里的 OOXML 的全稱是 Office Open XML File Formats 或被稱為 OpenXML 格式,這是一個基于 zip+xml 定義的文檔格式。簡單的說就是Office文檔是一些xml文檔壓縮文件,因此我們將一個word文檔進行zip解壓,可以獲得一些xml文件,其解壓結(jié)果如下。

0065ecd2-f10e-11ed-90ce-dac502259ad0.png

當(dāng)文檔中包含宏時,在word目錄下會有一個二進制文件,其名字為vbaProject.bin,該文件保存了宏代碼。

00824fda-f10e-11ed-90ce-dac502259ad0.png

vbaProject是宏默認(rèn)工程的名字,那如果我們修改宏工程的名字,Office文檔的解壓文件是否會改變?答案是不會,即使改了工程名,在Office文檔中依然使用vbaProject.bin作為腳本的名字。例:我們創(chuàng)建一個新的Office文檔,編寫宏代碼,將宏代碼工程的名字名為為myproj,之后將Office文檔解壓,發(fā)現(xiàn)解壓后vbaProject.bin的名字沒有變化。

00a2bf04-f10e-11ed-90ce-dac502259ad0.png

3. 腳本重定向

假設(shè)我們有這樣的需求,將vbaProject.bin文件進行偽裝,如一個WORD文檔中有styles.xml的文件,我們將vbaProject.bin替換為styIes.xmI(使用大寫的i來偽裝小寫L),用以欺騙分析者的眼睛,使其很難找到腳本文件,無法進行密碼替換,這便是腳本重定向。

00f2e7f4-f10e-11ed-90ce-dac502259ad0.png

要實現(xiàn)腳本重定向,需要將vbaProject.bin的名稱修改為styIes.xmI,之后還需要再修改三個文件,保證該文件可以被正常打開,其中一個文件是根目錄的[Content_Types].xml,另外兩個文件在解壓目錄的word\_rels文件夾中。

011deeb8-f10e-11ed-90ce-dac502259ad0.png

[Content_Types].xml中需要添加一個標(biāo)簽,內(nèi)容為:

這一步是為了讓Office文檔去讀取xmI(I是大寫的i)文件來獲取宏代碼,在添加時我們可以觀察原始配置信息,WORD文檔是通過讀取.bin為后綴的文件來獲取宏代碼。

012b82e4-f10e-11ed-90ce-dac502259ad0.png

完成標(biāo)簽添加后,打開word\_rels文件夾,修改vbaProject.bin.rles文件的名字,將其修改為styIes.xmI.rels,然后打開document.xml.rels,搜索vbaProject.bin,找到后將其修改為styIes.xmI,與文件進行關(guān)聯(lián)。

017affea-f10e-11ed-90ce-dac502259ad0.png

上訴內(nèi)容修改完成后,將word文件重新壓縮,并修改后綴即可,打開文件發(fā)現(xiàn)文件可以正常打開,宏也可以正常運行,在做重定向時文件名和配置信息可以根據(jù)個人需求進行替換。

4. 總結(jié)

VBA腳本文件重定向通過修改Office文件加載宏方式,替換腳本文件來達(dá)到偽裝的目的,反之,我們可以通過查看[Content_Types].xml和document.xml.rels文件查看Office文檔是否對腳本文件進行重定向來發(fā)現(xiàn)其中的威脅。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • XML
    XML
    +關(guān)注

    關(guān)注

    0

    文章

    187

    瀏覽量

    33022
  • VBA
    VBA
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    11892

原文標(biāo)題:VBA腳本文件重定向

文章出處:【微信號:蛇矛實驗室,微信公眾號:蛇矛實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MATLAB函數(shù)和腳本文件的詳細(xì)解釋

    MATLAB中的函數(shù)和腳本文件是用來組織和執(zhí)行代碼的兩種不同方式。下面是對MATLAB函數(shù)和腳本文件的詳細(xì)解釋。
    發(fā)表于 07-05 12:24 ?4451次閱讀

    嵌入式 學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之輸入輸出重定向

    shell腳本編寫之輸入輸出重定向shell輸出重定向通常是指將執(zhí)行命令的輸出信息從默認(rèn)的標(biāo)準(zhǔn)輸出(即當(dāng)前終端)重新定向到指定文件中。輸入
    發(fā)表于 09-24 10:06

    printf重定向怎么做

    要求顯示效果:分析過程:1.printf重定向怎么做?翻書找到2.邏輯怎么寫?紙**3.自己生成源代碼,添加代碼,測試邏輯添加的代碼#ifdef _GNUC_#define
    發(fā)表于 08-11 07:51

    實現(xiàn)printf函數(shù)的重定向

    目錄重定向函數(shù)屬性設(shè)置重定向函數(shù)在配置好串口之后需要在相關(guān)文件中添加以下函數(shù)以實現(xiàn)printf函數(shù)的重定向//注意添加頭文件#include
    發(fā)表于 08-24 07:09

    單片機printf重定向的函數(shù)免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機printf重定向的函數(shù)免費下載。
    發(fā)表于 07-03 17:42 ?0次下載
    單片機printf<b class='flag-5'>重定向</b>的函數(shù)免費下載

    管道符、重定向與環(huán)境變量

    1.標(biāo)準(zhǔn)輸入重定向(STDIN,文件描述符為0):默認(rèn)從鍵盤輸入,也可從其他文件或命令中輸入。 3.錯誤輸出重定向(STDERR,文件描述符
    發(fā)表于 04-29 08:48 ?600次閱讀

    ADV7182A評估板腳本文件

    ADV7182A評估板腳本文件
    發(fā)表于 05-28 11:19 ?5次下載
    ADV7182A評估板<b class='flag-5'>腳本文件</b>

    ADV7281A-M評估板腳本文件

    ADV7281A-M評估板腳本文件
    發(fā)表于 05-29 12:53 ?3次下載
    ADV7281A-M評估板<b class='flag-5'>腳本文件</b>

    ADV7280A-M評估板腳本文件

    ADV7280A-M評估板腳本文件
    發(fā)表于 06-01 21:36 ?9次下載
    ADV7280A-M評估板<b class='flag-5'>腳本文件</b>

    Keil下使用STlink重定向printf的配置

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默認(rèn)下使用Micro LIB庫,該庫調(diào)用 fputs 實現(xiàn) printf,所以需要重新定義fputs函數(shù),以重定向
    發(fā)表于 12-27 18:43 ?18次下載
    Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置

    shell腳本基礎(chǔ):重定向和管道符

    標(biāo)準(zhǔn)輸出的目標(biāo)位置通常指向的是終端屏幕。可以使用>符號修改標(biāo)準(zhǔn)輸出的目標(biāo)位置。比如下面的示例就會將ps命令的輸出重定向到result.txt文件。描述符和>之間不能有空格
    的頭像 發(fā)表于 05-04 11:09 ?1133次閱讀
    shell<b class='flag-5'>腳本</b>基礎(chǔ):<b class='flag-5'>重定向</b>和管道符

    Linux I/O重定向詳解

    Linux I/O重定向可以定義為,更改從命令讀取輸入到命令發(fā)送輸出的方式。你可以重定向命令的輸入和輸出。對于重定向符號,可以是 或者 | 。
    的頭像 發(fā)表于 05-04 14:34 ?799次閱讀

    在bash中如何進行各種文件重定向呢?

    本文會用以下測試程序,來演示在bash中,如何進行各種文件重定向
    的頭像 發(fā)表于 08-25 09:31 ?1161次閱讀
    在bash中如何進行各種<b class='flag-5'>文件</b><b class='flag-5'>重定向</b>呢?

    Oracle如何執(zhí)行sql腳本文件

    Oracle是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可用于存儲、查詢和管理大量的數(shù)據(jù)。在Oracle中,可以通過執(zhí)行SQL腳本文件來一次性地執(zhí)行多個SQL語句或者批量處理數(shù)據(jù)。在下面的文章中,我將詳細(xì)介紹
    的頭像 發(fā)表于 12-06 10:51 ?6280次閱讀

    2分鐘搞懂輸出重定向

    視頻最后我們通過重定向把標(biāo)準(zhǔn)輸出寫到了文件中,但是錯誤輸出還是留在了屏幕上。
    的頭像 發(fā)表于 01-15 16:41 ?519次閱讀