天天看點

利用xwizard.exe加載dll

本文講的是<b>利用xwizard.exe加載dll</b>,在之前的文章介紹了利用Excel.Application object’s RegisterXLL()加載dll的技巧。本文繼續,介紹最近學習到的一種更為通用的方法——利用xwizard.exe加載dll。 

該方法最大的特點是xwizard.exe自帶微軟簽名,在某種程度上說,能夠繞過應用程式白名單的攔截。

0x01 簡介

本文将要介紹以下内容:

· xwizard.exe簡介

· 利用思路

· 實際測試

0x02 xwizard.exe簡介

應該為Extensible wizard的縮寫,中文翻譯可擴充的向導主機程序,暫時無法獲得官方資料

· 支援Win7及以上作業系統

· 位于%windir%system32下

輕按兩下運作,彈出操作說明,如下圖

利用xwizard.exe加載dll

支援參數如下:

· xwizard processXMLFile

· xwizard RunWizard

· xwizard RunPropertySheet

示例:

· xwizard processXMLFile 1.txt

· xwizard RunWizard /u {11111111-1111-1111-1111-111111111111}

· xwizard RunPropertySheet /u {11111111-1111-1111-1111-111111111111}

注:

參數中的GUID長度固定,否則彈框報錯,如下圖

利用xwizard.exe加載dll

0x03 利用思路

xwizard.exe的同級目錄存在一個特别的檔案xwizards.dll

使用IDA檢視xwizards.dll的導出函數,如下圖

利用xwizard.exe加載dll

我們可以看到,xwizards.dll的導出函數名稱同xwizard.exe支援的參數名稱十分接近

猜測xwizard.exe的功能是通過調用xwizards.dll實作的

使用IDA逆向xwizard.exe來驗證我們的判斷,如下圖

利用xwizard.exe加載dll

對于函數LoadLibraryEx,由于未指定dll的絕對路徑,使用相對路徑,是以搜尋順序為:

1、程序目前目錄

2、通過SetDllDirectory所設定的路徑

3、Windows系統目錄+PATH,即c:windowssystem32

4、16位系統目錄,即c:windowssystem

5、Windows目錄,即c:windows

6、PATH環境變量中所列目錄

也就是說,如果将xwizard.exe複制到另一任意目錄,在該同級目錄再儲存一個自己編寫的xwizards.dll,那麼執行xwizard.exe時會優先調用同級目錄的xwizards.dll,不再加載%windir%system32下的xwizards.dll

這就實作了利用xwizard.exe加載我們自己編寫的dll

0x04 實際測試

測試系統: Win7 x86

1、複制xwizard.exe至新目錄C:x

2、編寫dll

使用vc 6.0,建立dll工程,在<code>case DLL_PROCESS_ATTACH</code>下添加彈框代碼

該dll成功加載後會彈框

3、測試

直接執行xwizard.exe,沒有彈出幫助對話框

使用Process Monitor監控系統,檢查xwizard.exe是否正常執行

如下圖

利用xwizard.exe加載dll

xwizard.exe正常執行,但是沒有嘗試加載xwizards.dll

再次測試,通過指令行執行,參數如下:

<code>xwizard processXMLFile 1.txt</code>

檢視Process Monitor輸出結果

利用xwizard.exe加載dll

xwizard.exe首先嘗試加載<code>C:xxwizards.dll</code>,加載失敗後再嘗試加載<code>C:windowssystem32xwizards.dll</code>(再次印證了對dll加載順序的判斷)

接下來,将msg.dll重命名為xwizards.dll,儲存在<code>C:x</code>

指令行執行:

成功加載C:xxwizards.dll,彈出對話框

利用xwizard.exe加載dll

測試成功

0x05 補充

64位系統:

<code>%windir%system32</code>對應64位xwizard.exe,隻能加載64位xwizards.dll

測試如下圖

利用xwizard.exe加載dll

<code>%windir%SysWOW64</code>對應32位xwizard.exe,隻能加載32位xwizards.dll

利用xwizard.exe加載dll

0x06 小結

本文介紹了利用xwizard.exe加載dll的技巧,特别的地方在于xwizard.exe包含微軟簽名,是以在某種程度上說,能夠繞過應用程式白名單的攔截。

原文釋出時間為:2017年8月24日

本文作者:3gstudent

本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。

<a href="http://www.4hou.com/technology/6969.html" target="_blank">原文連結</a>

繼續閱讀