红队技巧:自动生成DLL代理实现劫持

admin 2025-12-26 01:43:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍红队工具DllShimmer,可自动化生成DLL代理实现劫持。工具通过解析目标DLL导出表生成C++代码与def文件,将调用透明转发至原始DLL。用户插入代码并编译即可利用DLL劫持。文中提供了具体命令及编译步骤,适用于红队持久化或权限维持场景。 综合评分: 82 文章分类: 红队,渗透测试,安全工具


cover_image

红队技巧:自动生成DLL代理实现劫持

原创

z1

Z1sec

2025年12月25日 10:21 安徽

免责声明: 由于传播、利用本公众号Z1sec所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

项目地址: https://github.com/Print3M/DllShimmer

这个项目主要可以自动化生成代理dll,工作逻辑如下:

1、解析原始 DLL:工具首先分析目标 DLL 的导出地址表(EAT),提取所有导出函数的名称、序号(Ordinal)以及转发信息。

2、生成 C++ 模板代码:基于提取的信息,DllShimmer 会生成一个 .cpp 源文件。该文件为每个导出函数创建了一个“包装器”函数。

3、生成模块定义文件(.def):生成一个 .def 文件,确保编译后的代理 DLL 拥有与原始 DLL 完全一致的导出函数名和序号。

4、透明转发:在代理 DLL 中,所有未被用户修改的函数都会通过 LoadLibrary 和 GetProcAddress(动态链接)或 IAT 转发(静态链接)的方式,将调用请求传递给真正的原始 DLL。

使用案例: 先复制version.dll出来,运行命令:

DllShimmer.exe  -i version.dll -o project/ -x "C:/Windows/System32/version.dll" -m #需要自行在当前目录创建project文件夹

-i:指定原始 DLL 路径。 -o:指定生成的源代码存放目录。 -x:指定代理 DLL 在目标系统上寻找原始 DLL 的路径。 -m:启用互斥锁,确保自定义代码只运行一次。

生成后,你只需在 .cpp 文件中的 // Put your code here… 位置插入你的自定义代码即可,然后使用 mingw-w64 工具链进行编译即可。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Z1sec z1《红队技巧:自动生成DLL代理实现劫持》

评论:0   参与:  6