DLL攻击漫谈

星夢妙者
发布: 2025-09-27 09:08:22
原创
789人浏览过

动态链接库(dll)可以作为执行任意代码的接口,并帮助恶意行为者实现其目标。dll是microsoft共享库的实现方式,通常以dll为文件扩展名,并且它们也是pe文件,与exe文件结构相同。

DLL可以包含PE文件支持的任何类型的内容,这些内容可能包括代码、资源或数据的任意组合。DLL的主要用途是在系统上的应用程序和进程之间共享这些内容,为Windows应用程序开发者提供高度的灵活性。

DLL在调用进程的内存中以相同的访问权限执行。这意味着,如果DLL包含任何异常,调用EXE不会得到任何保护。恶意攻击者可以通过DLL劫持或DLL代理等方法利用这一特性来执行恶意代码。

DLL搜索顺序简介

在日常工作中,我们会加载大量进程到系统中。使用Windows操作系统时,进程加载算法的一个关键步骤是将动态链接库(DLL)加载到内存中,以利用其功能并满足进程与DLL之间的依赖关系。每当启动进程时,都会发生此操作。

Windows操作系统可能包含同一DLL的多个版本。由于一个系统可能承载许多需要同一个DLL的进程,因此需要一种系统来确保从正确的路径加载所需的DLL,并确保加载的是最相关的版本。

应用程序开发者通过使用LoadLibraryExA或LoadLibraryA函数来加载特定库。这些函数接收一个路径参数,该参数指向所请求的DLL,并向调用进程返回模块的句柄。

  1. 当前目录
  2. 启动进程的目录
  3. C:\ Windows \ System32
  4. C:\ Windows \ System
  5. C:\ Windows
  6. SYSTEM环境变量“PATH”中包含的目录
  7. USER环境变量“PATH”中包含的目录

DLL攻击

DLL包含要由加载进程执行的代码,这可能会导致利用缺失的DLL或不安全实现的DLL来诱导系统执行恶意负载的情况,利用本机DLL搜索顺序。恶意行为者可能使用此技术来加载自己的DLL,该DLL可能包含任何类型的代码。

攻击利用过程

确定某个进程按特定搜索顺序搜索DLL,并且缺少DLL或错误实现的DLL之后,才能够进行下一步攻击。

第一步:确定DLL

首先,我们使用Sysinternals的ProcMon来筛选未找到以DLL结尾的路径的任何操作:

DLL攻击漫谈ProcMon下载:https://www.php.cn/link/b5146481a245e50255f5b24319c2711a

可以看到“Bginfo64.exe”找不到的对应DLL。

DLL攻击漫谈

第二步:查找DLL和利用

在查找这些DLL时,我们得出Riched32.DLL是非本地DLL,因此,注册表中没有该DLL的默认搜索路径。但是如果我们正确配置它,系统最终也会加载它。

现在所需要做的就是在请求的路径中创建该DLL:

DLL攻击漫谈

我们在请求路径中创建该DLL(Riched32.dll),为了方便演示,我们的DLL执行后,会弹出“hello HBT黑白天”的消息框来证明我们的DLL可以执行命令。

#define WIN32_LEAN_AND_MEAN
#include
extern "C" __declspec(dllexport) DWORD WINAPI MessageBOXThread(LPVOID lpParam) {
    MessageBox(NULL, "hello hbt 黑白天", "hello hbt 黑白天", NULL);
    return 0;
}
extern "C" __declspec(dllexport) BOOL APIENTRY DllMain(HMODULE hModule,
          DWORD ul_reason_for_call,
          LPVOID lpReserved) {
    switch (ul_reason_for_call) {
        case DLL_PROCESS_ATTACH:
            CreateThread(NULL, NULL, MessageBOXThread, NULL, NULL, NULL);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
登录后复制

我们将这个DLL命名为Riched32.dll并放入Bginfo64.exe的DLL文件夹中。

然后重新打开进程“Bginfo64.exe”。

DLL攻击漫谈

啵啵动漫
啵啵动漫

一键生成动漫视频,小白也能轻松做动漫。

啵啵动漫 298
查看详情 啵啵动漫

出现该消息框,并且我们可以观察到该进程加载了DLL:

DLL攻击漫谈

如果我们的DLL中包含恶意代码,是不是可以继承Bginfo64.exe执行命令?

最后一步:拿一个shell

确定了进程和易受攻击的路径之后,所缺少的就是创建我们希望执行的DLL有效负载。

我们可以使用“DLLicious”工具https://www.php.cn/link/e3423656a3520cb9a9825048b5cb59aa

用法

用法非常简单,只需使用Python3或“.\DLLicous.py”运行脚本。

我们可以:

  1. 用C语言将反向Shell编写DLL。
  2. 使用Base64nc.exe对NC二进制文件进行编码和解码,然后将其写入DLL的工作目录中,然后从该目录中发起攻击。另一个新功能是:nc.exe在DLL中也包含base64代码,而不是从Web下载或从SMB服务器复制它。

DLL攻击漫谈

通过使用PowerShell和DLL代码中包含的NetCat的反向Shell,并尝试与kali上的侦听器联系,然后使用PowerShell打开shell。

我们可以看到执行劫持的进程后,将加载DLL并打开shell:

DLL攻击漫谈

https://www.php.cn/link/1721075016476163d0405fdfe93667c1

https://www.php.cn/link/6ef43ab936ea0c3ff156b0e099c783ba

https://www.php.cn/link/b5146481a245e50255f5b24319c2711a

渗透测试、红队攻防、免杀、权限维持等技术,以及及时分享最新漏洞复现及EXP,国内外最新技术分享!

进来一起学习吧。

以上就是DLL攻击漫谈的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号