Rust中的VectoredOverloading加载一个合法的DLL文件,并利用向量化异常处理机制,将动态替换为恶意

admin 2025-12-27 01:51:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了Rust实现的VectoredOverloading技术,该技术利用向量化异常处理和硬件断点,在合法DLL加载过程中动态将其替换为恶意PE载荷。通过模拟系统调用并替换参数,让Windows加载器负责处理恶意代码的导入与执行,以此实现隐蔽加载和规避检测。 综合评分: 78 文章分类: 恶意软件,免杀,威胁情报,红队,漏洞分析


cover_image

Rust 中的 VectoredOverloading 加载一个合法的 DLL 文件,并利用向量化异常处理机制,将动态替换为恶意

Ots安全

2025年12月26日 16:18 广东

威胁简报

恶意软件

漏洞攻击

总结:

这个概念验证程序来自 YouTube Ghost Network,这是一个恶意软件分发网络,它利用被盗用的帐户来推广恶意视频和传播恶意软件,例如信息窃取程序。

Checkpoint Research:https://research.checkpoint.com/2025/gachiloader-node-js-malware-with-api-tracing/ 记录并破解了此次攻击活动,发现 GachiLoader 的一个变种会部署名为 Kidkadi 的第二阶段恶意软件,该软件采用了一种新颖的可移植可执行文件 (PE) 注入技术。这项技术会加载一个合法的 DLL 文件,并利用向量化异常处理机制,将其动态替换为恶意载荷。

这是在 Rust 中实现 Kidkadi(又名 VectoredOverloading)的概念验证。

它通过使用硬件断点 (HWBP) 和向量化异常处理 (VEH) 来操纵合法 DLL 的加载,从而动态地更改 DLL 节对象。

本质上,该技术执行以下操作:

  • SEC_IMAGE从合法的 DLL创建映射(例如wmp.dll)
  • 将有效载荷 PE 映射到此映像内存上
  • 将其入口点设置为0并强制字段DLL中的标志FileHeader->Characteristics
  • 设置硬件保护程序 (HWBP)NtOpenSection并加载任何合法的 DLL 文件。
  • 当 Windows 加载器调用时NtOpenSection,VEH 会模拟该系统调用,跳过它并替换OUT参数,从而使该节对象变为有效载荷的节对象。VEH 还会设置一个新的 HWBP。NtMapViewOfSection
  • 装载机尝试将该部分映射到内存中,然后触发车辆。NtMapViewOfSection
  • VEH 会替换OUT系统调用的参数并跳过其执行,从而模拟恶意 PE 视图的映射。
  • 加载过程继续进行,Windows 加载程序现在负责处理恶意 PE 映像的导入和后续处理。
  • 入口点被调用,执行有效载荷。

鸣谢及参考文献:

  • https://github.com/CheckPointSW/VectoredOverloading/tree/main
  • https://research.checkpoint.com/2025/gachiloader-node-js-malware-with-api-tracing/

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


免责声明:

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

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

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

本文转载自:Ots安全 《Rust 中的 VectoredOverloading 加载一个合法的 DLL 文件,并利用向量化异常处理机制,将动态替换为恶意》

评论:0   参与:  2