標籤:

利用xwizard.exe載入dll

0x00 前言

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

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

參考鏈接:

hexacorn.com/blog/2017/

0x01 簡介

本文將要介紹以下內容:

· xwizard.exe簡介

· 利用思路

· 實際測試

0x02 xwizard.exe簡介

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

· 支持Win7及以上操作系統

· 位於%windir%system32下

雙擊運行,彈出操作說明,如下圖

支持參數如下:

· 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長度固定,否則彈框報錯,如下圖

0x03 利用思路

本節對Adam@Hexacorn的思路進行驗證,文章地址:

hexacorn.com/blog/2017/

xwizard.exe的同級目錄存在一個特別的文件xwizards.dll

使用IDA查看xwizards.dll的導出函數,如下圖

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

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

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

對於函數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工程,在case DLL_PROCESS_ATTACH下添加彈框代碼

過程及優化方法不再贅述,可參考文章《Use Office to maintain persistence》

編譯好的dll下載地址如下:

github.com/3gstudent/te

該dll成功載入後會彈框

3、測試

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

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

如下圖

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

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

xwizard processXMLFile 1.txt

查看Process Monitor輸出結果

如下圖

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

接下來,將msg.dll重命名為xwizards.dll,保存在C:x

命令行執行:

xwizard processXMLFile 1.txt

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

如下圖

測試成功

0x05 補充

64位系統:

%windir%system32對應64位xwizard.exe,只能載入64位xwizards.dll

測試如下圖

%windir%SysWOW64對應32位xwizard.exe,只能載入32位xwizards.dll

測試如下圖

0x06 小結

本文介紹了利用xwizard.exe載入dll的技巧,特別的地方在於xwizard.exe包含微軟簽名,因此在某種程度上說,能夠繞過應用程序白名單的攔截。

本文為 3gstudent 原創稿件, 授權嘶吼獨家發布,如若轉載,請註明原文地址: 4hou.com/technology/696 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

專家教你利用深度學習檢測惡意代碼
「點開我的鏈接我就能控制你的電腦」之Facebook Messenger版(需安裝軟體)
「世界末日」級蠕蟲永恆之石 利用7個NSA漏洞
淺談爬蟲及繞過網站反爬取機制
怎樣理解GeekPwn上來自玄武實驗室的手機蠕蟲隔空竊密項目?攻擊過程不依賴互聯網?

TAG:信息安全 |