文章总结: 本文介绍红队工具DllShimmer,可自动化生成DLL代理实现劫持。工具通过解析目标DLL导出表生成C++代码与def文件,将调用透明转发至原始DLL。用户插入代码并编译即可利用DLL劫持。文中提供了具体命令及编译步骤,适用于红队持久化或权限维持场景。 综合评分: 82 文章分类: 红队,渗透测试,安全工具
红队技巧:自动生成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代理实现劫持》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论