介紹
DLL(Dynamic Link Library)文件為動態(tài)鏈接庫文件,又稱“應(yīng)用程序拓展”,是軟件文件類型。在Windows中,許多應(yīng)用程序并不是一個完整的可執(zhí)行文件,它們被分割成一些相對獨立的動態(tài)鏈接庫,即DLL文件,放置于系統(tǒng)中。當(dāng)我們執(zhí)行某一個程序時,相應(yīng)的DLL文件就會被調(diào)用。一個應(yīng)用程序可使用多個DLL文件,一個DLL文件也可能被不同的應(yīng)用程序使用,這樣的DLL文件被稱為共享DLL文件。
DLL劫持是一種漏洞,這個漏洞存在于所有版本的Windows操作系統(tǒng)之中。當(dāng)用戶進行了非法操作時,就有可能觸發(fā)這個漏洞。很多人認(rèn)為,這是Windows操作系統(tǒng)的一個功能,而非一個漏洞。因為這一機制是由微軟公司專門設(shè)計出來的。
簡單來說,你可以創(chuàng)建一個自定義的惡意dll文件,并將這個文件與一個正常的文件一同放在一個目錄下。當(dāng)這個正常的文件被一個存在漏洞的應(yīng)用程序打開之后,你自定義的dll文件將會被加載,你嵌入其中的代碼將會被執(zhí)行。我們必須針對每一款存在漏洞的應(yīng)用程序來指定這種惡意dll文件專用的文件名。別擔(dān)心,我們只要使用任何一款調(diào)試工具就可以輕易完成這一步操作。
測試環(huán)境
1、TIM2.3.2
2、劫持工具(backdoor-factory)
3、增強型任務(wù)管理器(Process Explorer)
測試過程
運行Process Explorer查詢運行程序加載的dll。

調(diào)用的dll很多,對AFUtil.dll進行測試
使用backdoor-factory生成惡意的dll

一共就兩個選項,如果1不行就選擇2,我這里選擇1


會在backdoored的目錄下生成一個惡意的dll

替換原始的dll(先備份原始的dll)
進行msf的配置

運行TIM反彈shell

預(yù)防
1、DLL劫持利用系統(tǒng)未知DLL的搜索路徑方式,使得程序加載當(dāng)前目錄下的系統(tǒng)同名DLL。所以可以告訴系統(tǒng)DLL的位置,改變加載系統(tǒng)DLL的順序不是當(dāng)前目錄,而是直接到系統(tǒng)目錄下查找。
這個想法可以通過修改注冊表實現(xiàn)。
在注冊表鍵值:>#####HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs
是調(diào)用系統(tǒng)DLL的首要查找目錄。例如里面有RE_SZ類型的"ntdll"="ntdll.dll"項,則系統(tǒng)載入"ntdll"時會直接從系統(tǒng)目錄加載。
由此,添加"LPK"="LPK.DLL"即可防止LPK被劫持,同理可以阻止一些其他DLL被劫持,例如"USP10"。
在Windows NT系統(tǒng),XP默認(rèn)只有少數(shù)關(guān)鍵DLL在此鍵值下,Win7下面此鍵值已經(jīng)相當(dāng)齊全,在Win7系統(tǒng)下發(fā)生DLL劫持的概率要比XP小很多。 (借用百度的預(yù)防知識點)
2、還可以通過第三方工具進行dll劫持檢測。DllHijackAuditor能夠防止木馬病毒劫持系統(tǒng)中的dll文件加載運行,是一款很不錯的dll文件保護工具。
3、堅持從官方下載軟件,拒絕第三方。萬一有后門呢?