利用xwizard.exe載入dll
0x00 前言
在之前的文章介紹了利用Excel.Application object』s RegisterXLL()載入dll的技巧。本文繼續,介紹最近學習到的一種更為通用的方法——利用xwizard.exe載入dll。
該方法最大的特點是xwizard.exe自帶微軟簽名,在某種程度上說,能夠繞過應用程序白名單的攔截。
參考鏈接:
http://www.hexacorn.com/blog/2017/07/31/the-wizard-of-x-oppa-plugx-style/
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的思路進行驗證,文章地址:
http://www.hexacorn.com/blog/2017/07/31/the-wizard-of-x-oppa-plugx-style/
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下載地址如下:
https://github.com/3gstudent/test/blob/master/msg.dll
該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 原創稿件, 授權嘶吼獨家發布,如若轉載,請註明原文地址: http://www.4hou.com/technology/6969.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※專家教你利用深度學習檢測惡意代碼
※「點開我的鏈接我就能控制你的電腦」之Facebook Messenger版(需安裝軟體)
※「世界末日」級蠕蟲永恆之石 利用7個NSA漏洞
※淺談爬蟲及繞過網站反爬取機制
※怎樣理解GeekPwn上來自玄武實驗室的手機蠕蟲隔空竊密項目?攻擊過程不依賴互聯網?
TAG:信息安全 |