文章总结: BOF_ExecuteAssembly是一款CobaltStrike的BOF工具,用于在内存中执行.NET程序集以绕过杀软检测。它通过提供栈欺骗和定时器回调等多种代理执行机制来隐藏API调用,并内置AMSI_PATCH和AMSI_HWBP两种方案绕过Windows的AMSI动态扫描。该工具作为原生BOF运行,无需额外进程注入,执行后会通过卸载自定义AppDomain来彻底清理资源,减少内存痕迹,从而提升红队渗透测试的隐蔽性和成功率。 综合评分: 91 文章分类: 免杀,红队,内网渗透,渗透测试,安全工具
BOF_ExecuteAssembly 执行.NET 再也不用担心被杀软杀了
原创
json
实战攻防安全
2025年12月22日 15:09 广东
亲测 截止到目前可以绕过360核晶和国内外卡巴 赛门 def等杀软
在红队工具链中,execute-assembly作为在内存中执行.NET 程序集的经典手段,已被广泛用于规避静态文件检测。但传统实现往往存在规避机制单一、与 Cobalt Strike 集成度有限、资源清理不彻底等问题。而 BOF_ExecuteAssembly项目,作为一款基于 Beacon Object File(BOF)的扩展工具,在继承内存执行核心优势的基础上,通过深度优化对抗性与集成性,形成了显著差异与优势。
与传统execute-assembly相比,其核心区别与优势集中在三点:
-
更隐蔽的执行链路
:传统工具可能直接调用系统 API 加载程序集,易被 EDR 通过 API 挂钩检测;而该工具提供
PROXY_DRAUGR(栈欺骗)、PROXY_TIMER(定时器回调)等多种代理执行机制,通过伪造调用栈或借助系统回调间接执行,大幅降低 API 调用链的暴露风险。 -
更强的对抗能力
:针对 Windows 自带的 AMSI 扫描,传统方式可能缺乏有效规避或仅依赖单一方法;该工具内置
AMSI_PATCH(内存补丁禁用)与AMSI_HWBP(硬件断点绕过)两种方案,可根据环境灵活选择,显著提升.NET 程序集绕过动态扫描的成功率。 -
更轻量的集成与清理
:作为 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管理系统调用(如NtProtectVirtualMemory、NtContinue等),可能用于直接调用系统调用绕过用户态 API 挂钩; - 严格的资源释放流程,确保执行后清理 CLR 接口、AppDomain、安全数组等资源,减少内存残留。
适用场景与注意事项
BOF_ExecuteAssembly 主要适用于红队渗透测试中需要执行.NET 代码的场景,尤其适合:
- 规避基于文件的静态检测(如杀毒软件对磁盘文件的扫描);
- 绕过 AMSI 等动态扫描机制;
- 在 Cobalt Strike 会话中扩展.NET 代码执行能力。
项目地址:https://github.com/NtDallas/BOF_ExecuteAssembly
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:实战攻防安全 json《BOF_ExecuteAssembly 执行.NET 再也不用担心被杀软杀了》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论