Sharp4BypassAMSI:一款通过 Patch 内存绕过 AMSI 检测的工具
字数 2071 2025-08-29 22:41:24
Sharp4BypassAMSI:通过内存Patch绕过AMSI检测的详细指南
1. AMSI简介
AMSI(Antimalware Scan Interface)是微软开发的一套反恶意软件扫描接口,主要功能包括:
- 提供应用程序与反恶意软件产品的标准接口
- 允许反恶意软件产品对脚本、宏、PowerShell等进行扫描
- 在内存中检测恶意行为,而不仅依赖静态特征
2. Sharp4BypassAMSI工具概述
Sharp4BypassAMSI是一款专门设计用于绕过AMSI检测的.NET工具,其核心原理是通过内存Patch技术修改AMSI的关键函数。
主要特点:
- 纯.NET实现,无需依赖外部库
- 支持多种AMSI绕过技术
- 可针对不同版本的AMSI进行适配
- 低检测率,适合红队操作
3. 技术原理详解
3.1 AMSI工作流程
- 应用程序调用AMSI接口(如AmsiScanBuffer)
- AMSI将扫描请求传递给注册的反恶意软件引擎
- 引擎返回扫描结果(恶意/非恶意)
- 应用程序根据结果决定是否阻止执行
3.2 关键函数Patch
Sharp4BypassAMSI主要通过修改以下关键函数实现绕过:
-
AmsiScanBuffer:
- AMSI核心扫描函数
- 工具会修改其内存中的指令,使其直接返回"干净"结果
-
AmsiInitialize:
- AMSI初始化函数
- Patch后可导致AMSI初始化失败
-
AmsiOpenSession:
- 会话管理函数
- 修改后可破坏扫描会话的建立
3.3 具体实现步骤
-
获取函数地址:
- 通过GetProcAddress获取AMSI相关函数地址
- 使用.NET的P/Invoke调用Windows API
-
修改内存保护:
- 使用VirtualProtect修改目标内存区域为可写
- 绕过内存保护机制(PAGE_EXECUTE_READ等)
-
写入Patch代码:
- 根据不同Windows版本写入特定指令
- 常见Patch方式:
- 直接返回S_OK (0x00000000)
- 修改跳转指令绕过检测逻辑
- NOP关键判断指令
-
恢复内存保护:
- 将内存属性恢复为原始状态
- 避免引起异常或检测
4. 使用教程
4.1 环境准备
- .NET Framework 4.0+ 或 .NET Core 3.1+
- Windows 7及以上系统
- 管理员权限(部分技术需要)
4.2 基本使用
// 实例化Bypass类
var bypass = new Sharp4BypassAMSI();
// 执行标准绕过
bypass.Bypass();
// 检查是否绕过成功
if(bypass.IsBypassed())
{
// 执行后续操作
}
4.3 高级选项
// 指定绕过技术(根据目标系统选择)
bypass.Bypass(AMSI_BYPASS_METHOD.PatchAmsiScanBuffer);
// 持久化绕过(需要管理员权限)
bypass.Persist();
// 恢复原始AMSI功能
bypass.Restore();
4.4 支持的绕过方法
-
PatchAmsiScanBuffer:
- 直接修改AmsiScanBuffer函数
- 适用于大多数Windows 10/11版本
-
PatchAmsiOpenSession:
- 针对会话机制的绕过
- 对某些EDR产品特别有效
-
HeapPatch:
- 修改AMSI使用的堆内存
- 更隐蔽,但兼容性较差
-
ContextPatch:
- 修改AMSI上下文结构
- 需要深入了解AMSI内部结构
5. 防御与检测
5.1 如何检测此类绕过
- 监控关键AMSI函数的内存修改
- 检查AMSI.dll的完整性
- 使用受保护进程轻量级(PPL)技术
- 实施控制流保护(CFG)
5.2 防御建议
-
应用程序防御:
- 实现多层检测机制
- 不依赖单一AMSI结果
-
系统加固:
- 启用Device Guard
- 配置Windows Defender攻击面减少规则
- 使用Credential Guard
-
监控措施:
- 记录AMSI初始化失败事件
- 监控异常进程行为
6. 高级技巧与注意事项
6.1 绕过技术选择
- 针对Windows 10 1903+:优先使用HeapPatch
- 针对EDR产品:结合多种Patch技术
- 在受限环境:尝试ContextPatch
6.2 规避检测的技巧
-
时序混淆:
- 延迟执行Patch操作
- 在合法操作后执行
-
间接Patch:
- 通过ROP链间接修改内存
- 避免直接调用敏感API
-
内存伪装:
- 使用合法的内存操作掩盖Patch
- 结合.NET JIT编译特性
6.3 常见问题解决
-
权限不足:
- 确保以管理员身份运行
- 尝试使用不同技术
-
兼容性问题:
- 检查Windows版本
- 更新工具到最新版本
-
检测触发:
- 降低Patch频率
- 使用更隐蔽的技术
7. 工具获取与更新
- 官方GitHub仓库(需自行搜索最新地址)
- 定期检查更新以适应新Windows版本
- 建议自行编译以减少静态检测
8. 法律与道德声明
- 本技术仅限合法授权测试使用
- 未经授权使用可能违反法律
- 使用者需自行承担相关责任
9. 扩展阅读
- 微软AMSI官方文档
- 《Windows内部原理》相关章节
- 最新AMSI绕过技术研究论文
- .NET内存操作高级技巧
10. 版本历史
- v1.0:基础Patch功能
- v1.2:增加多种绕过技术
- v1.5:支持Windows 11
- v2.0:全面重构,降低检测率
本文档提供了Sharp4BypassAMSI工具的全面技术解析,从原理到实践,涵盖了关键技术和注意事项。实际使用时请根据目标环境选择适当的技术组合,并注意规避检测机制。