讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

updream

一键生成高质量推广成片

Laper
Laper

剧本策划到成片协作

DLL攻击漫谈

雨静吖_7984

雨静吖_7984

发布时间:2025-09-27 09:08:22

|

819人浏览过

|

来源于php中文网

原创

动态链接库(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”。

github-desktop-汉化插件
github-desktop-汉化插件

Github Desktop 汉化工具 — 自动探测安装目录(支持 loose 与 asar 打包模式),使用内置词典对 JS 源文件执行字符串字面量替换,完成界面汉化。支持预览、部署、回滚、语法校验。

下载

DLL攻击漫谈

出现该消息框,并且我们可以观察到该进程加载了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,国内外最新技术分享!

进来一起学习吧。

热门AI工具

更多
创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3228

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5369

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3889

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

506

2026.01.19

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

8805

2026.01.21

GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

958

2026.04.02

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3439

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2998

2023.07.27

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn