go-buena-clr加载.NET工具的实验记录:CLR托管机制与AMSI检测盲区"

admin 2026-10-24 03:17:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

go-buena-clr加载.NET工具的实验记录:CLR托管机制与AMSI检测盲区

原创

陆安予
陆安予

白帽子安全笔记2.0

2026年6月21日 19:10
江苏

在小说阅读器读本章

去阅读

免责声明:本文仅供网络安全研究与技术交流,所有实验均在本地虚拟化环境中完成,不涉及任何真实目标系统。严禁将文中技术用于未经授权的网络、系统或数据。

一、简要介绍

go-buena-clr[1] 是一个在 Go 语言中实现的自定义 CLR 宿主,能够在加载 .NET 程序集时规避 AMSI 扫描。其核心在于 CLR 托管机制中的加载路径差异:

  • • 常规反射加载:从字节数组加载程序集,此路径会触发 AMSI 扫描
  • • 按标识加载:按程序集标识加载,此路径不触发 AMSI 扫描

go-buena-clr 通过自定义 CLR 宿主,接管程序集加载过程,使用按标识加载的方式完成加载,从而避开触发扫描的路径。

二、实验环境与过程

2.1 实验环境

组件 配置
编译环境 Windows系统
执行环境 Windows-11-x64-25H2虚拟机(NAT模式),Windows Defender实时防护开启
相关工具 go-buena-clr、SharpCollection[2](Rubeus.exe等)、Garble[3]、Astral-PE[4]

2.2 实验过程与结果

2.2.1 原始Rubeus.exe

将原始Rubeus.exe下载至Windows 11系统后,Windows Defender实时防护立即将其隔离并告警。

Windows Defender拦截Rubeus.exe

结果:被拦截

2.2.2 通过go-buena-clr加载

使用go-buena-clr将Rubeus.exe嵌入Go加载器并编译生成可执行文件。在目标环境中执行,程序成功运行,Windows Defender未产生告警。

go-buena-clr加载Rubeus执行成功

结果:执行成功,未触发告警

2.2.3 结合Garble混淆

为进一步降低二进制文件的可读性,引入 Garble[3] 进行编译混淆。在测试环境中,Garble 编译后的文件被标记为 Trojan:Win32/Gracing.I,这是 Garble 混淆编译的已知特征。

该特征与 Go 编译器在二进制文件中残留的特定元数据有关。通过调整Astral-PE[4] 的处理逻辑,对以下静态特征进行清理:

  • • 清理 \"Go build ID:\" 字符串
  • • 清理 \"Go buildinf:\" 结构
  • • 清理运行时字符串
  • • 重命名 Go 节区

调整后,二进制文件中的静态特征明显减少。

结果:执行成功,未触发告警

三、结论

go-buena-clr 是一个可用的自定义 CLR 宿主方案,适用于需要以独立 EXE 方式加载 .NET 程序集的场景。它通过利用 CLR 托管机制中的加载路径差异,在不修改 amsi.dll 或 clr.dll 内存的前提下规避 AMSI 扫描。

本次实验仅在特定环境下进行,结果不代表所有场景。

引用链接

[1] go-buena-clr项目仓库: https://github.com/almounah/go-buena-clr
[2] SharpCollection项目仓库: https://github.com/Flangvik/SharpCollection
[3] Garble Go代码混淆工具: https://github.com/burrowers/garble
[4] Astral-PE PE结构修改工具: https://github.com/DosX-dev/Astral-PE


账户2FA重置机制导致账户接管" 网络安全文章

账户2FA重置机制导致账户接管"

本文披露HackerOne平台双因素认证重置机制缺陷。攻击者获密码后发起重置,若受害者一天内未点取消邮件,2FA即自动禁用致账户被接管。根因为系统采用取消即阻止而非确认执行模式。建议敏感操作须以主动确认为生效前提,核心重置需经独立二次验证。
评论:0   参与:  0