BOF_ExecuteAssembly执行.NET再也不用担心被杀软杀了

admin 2025-12-23 01:37:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: BOF_ExecuteAssembly是一款CobaltStrike的BOF工具,用于在内存中执行.NET程序集以绕过杀软检测。它通过提供栈欺骗和定时器回调等多种代理执行机制来隐藏API调用,并内置AMSI_PATCH和AMSI_HWBP两种方案绕过Windows的AMSI动态扫描。该工具作为原生BOF运行,无需额外进程注入,执行后会通过卸载自定义AppDomain来彻底清理资源,减少内存痕迹,从而提升红队渗透测试的隐蔽性和成功率。 综合评分: 91 文章分类: 免杀,红队,内网渗透,渗透测试,安全工具


cover_image

BOF_ExecuteAssembly 执行.NET 再也不用担心被杀软杀了

原创

json

实战攻防安全

2025年12月22日 15:09 广东

亲测 截止到目前可以绕过360核晶和国内外卡巴 赛门 def等杀软

在红队工具链中,execute-assembly作为在内存中执行.NET 程序集的经典手段,已被广泛用于规避静态文件检测。但传统实现往往存在规避机制单一、与 Cobalt Strike 集成度有限、资源清理不彻底等问题。而 BOF_ExecuteAssembly项目,作为一款基于 Beacon Object File(BOF)的扩展工具,在继承内存执行核心优势的基础上,通过深度优化对抗性与集成性,形成了显著差异与优势。

与传统execute-assembly相比,其核心区别与优势集中在三点:

  1. 更隐蔽的执行链路

    :传统工具可能直接调用系统 API 加载程序集,易被 EDR 通过 API 挂钩检测;而该工具提供PROXY_DRAUGR(栈欺骗)、PROXY_TIMER(定时器回调)等多种代理执行机制,通过伪造调用栈或借助系统回调间接执行,大幅降低 API 调用链的暴露风险。

  2. 更强的对抗能力

    :针对 Windows 自带的 AMSI 扫描,传统方式可能缺乏有效规避或仅依赖单一方法;该工具内置AMSI_PATCH(内存补丁禁用)与AMSI_HWBP(硬件断点绕过)两种方案,可根据环境灵活选择,显著提升.NET 程序集绕过动态扫描的成功率。

  3. 更轻量的集成与清理

    :作为 Cobalt Strike 原生 BOF 模块,它无需额外进程注入,直接在 Beacon 会话中运行,资源占用更低;同时通过创建自定义 AppDomain 加载程序集,执行后自动卸载该域并清理 CLR 接口、安全数组等资源,减少内存残留痕迹,规避基于内存特征的检测。

核心功能解析

1. .NET 程序集的内存加载与执行

项目的核心函数ExecuteAssembly实现了完整的.NET 程序集加载流程:

  • 通过 CLR(公共语言运行时)宿主 API 与目标系统的.NET 运行时交互,支持自动检测程序集所需的 CLR 版本(v2.0.50727 或 v4.0.30319);
  • 创建自定义 AppDomain(应用程序域)作为隔离环境,将.NET 程序集加载到该域中,避免污染系统默认域;
  • 调用程序集的入口点(EntryPoint)并传递可选参数,执行完成后自动卸载自定义 AppDomain,清理资源,减少痕迹。

2. 多样化的代理执行机制

为了进一步提升执行过程的隐蔽性,项目设计了多种代理执行方式(PROXY),避免直接调用敏感 API 被检测:

  • PROXY_NONE

    :直接调用LoadLibraryA,适用于无严格检测的环境;

  • PROXY_DRAUGR

    :通过栈欺骗(spoofed stack)技术调用 API,规避基于栈痕迹的检测;

  • PROXY_TIMER

    :利用CreateTimerQueue创建定时器回调,在回调中执行操作;

  • PROXY_REGWAIT

    :通过RegisterWaitForSingleObject注册事件回调,在事件触发时执行代码。

3. AMSI 规避机制

针对 Windows 自带的反恶意软件扫描接口(AMSI),项目集成了两种规避方案:

  • AMSI_PATCH

    :通过修改 AMSI 相关函数的前 4 字节(备份后覆盖),暂时禁用 AMSI 扫描;

  • AMSI_HWBP

    :添加 VEH(向量异常处理)处理器,利用硬件断点绕过 AMSI 对程序集的扫描。

4. 细节处理与对抗优化

项目在技术实现上注重对抗性细节:

  • 定义了SYNTHETIC_STACK_FRAME等结构体处理栈帧信息,配合DRAUGR_API实现栈欺骗,隐藏调用链;
  • 通过VX_TABLE管理系统调用(如NtProtectVirtualMemoryNtContinue等),可能用于直接调用系统调用绕过用户态 API 挂钩;
  • 严格的资源释放流程,确保执行后清理 CLR 接口、AppDomain、安全数组等资源,减少内存残留。

适用场景与注意事项

BOF_ExecuteAssembly 主要适用于红队渗透测试中需要执行.NET 代码的场景,尤其适合:

  • 规避基于文件的静态检测(如杀毒软件对磁盘文件的扫描);
  • 绕过 AMSI 等动态扫描机制;
  • 在 Cobalt Strike 会话中扩展.NET 代码执行能力。

项目地址:https://github.com/NtDallas/BOF_ExecuteAssembly


免责声明:

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

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

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

本文转载自:实战攻防安全 json《BOF_ExecuteAssembly 执行.NET 再也不用担心被杀软杀了》

评论:0   参与:  5