AV/EDR 完全致盲 - 清除6大内核回调实现
字数 2058 2025-08-23 18:31:08

内核回调清除技术:完全致盲AV/EDR的深入指南

概述

本文档详细介绍了如何通过清除6种关键内核回调机制来完全致盲或禁用AV/EDR(反病毒/终端检测与响应)系统。这些技术允许在保持AV/EDR进程运行的情况下使其失去监控能力,或永久关闭/杀死AV/EDR进程。

核心目标

  1. 致盲AV/EDR:使其无法监控进程/线程活动、文件操作、注册表修改等敏感行为
  2. 永久关闭AV/EDR:通过修改注册表或删除文件实现持久性禁用
  3. 杀死AV/EDR进程:以普通管理员权限结束AV/EDR进程

目标回调机制

1. 对象通知回调 (ObRegisterCallbacks)

功能:监控对象句柄操作
清除效果

  • 获取高权限句柄(如EDR进程句柄)
  • 结束EDR进程
  • 绕过对象访问监控

实现步骤

  1. 定位PsProcessTypePsThreadType全局变量
    • 通过NtDuplicateObject()PsProcessType
    • 通过NtOpenThreadTokenEx()PsThreadType
  2. 遍历OBJECT_TYPE结构的CallbackList(偏移:Win10+/Win11=0xC8,Win7=0xC0)
  3. 修改CALLBACK_ENTRY_ITEM中的PreOperation(0x28)和PostOperation(0x30)为0

2. 注册表通知回调 (CmRegisterCallback)

功能:监控注册表操作
清除效果

  • 修改EDR注册表配置
  • 永久禁用EDR服务
  • 绕过注册表操作监控

实现挑战:受PatchGuard保护,直接修改会蓝屏

绕过方法

  1. 定位CallbackListHead(通过CmUnRegisterCallback
  2. 修改双向链表结构,将第一个节点指向最后一个节点
  3. 避免直接修改回调函数地址

3. 文件系统微过滤器回调 (MiniFilter)

功能:监控文件操作
清除效果

  • 删除受保护文件
  • 绕过文件操作监控
  • 永久删除EDR文件

实现步骤

  1. 定位FrameList全局变量(FLTMGR.sys中)
  2. 通过FltEnumerateFilters获取_FLT_FILTER结构
  3. 遍历InstanceList找到_FLT_INSTANCE
  4. 定位CallbackNodes数组并清空

高级清除(针对Volume回调):

  1. 通过FLTP_FRAME找到FLT_VOLUMES链表
  2. 定位并修改_CALLBACK_NODE结构链表
  3. 将EDR节点从链表中摘除(而非直接清零)

4. 进程通知回调 (PsSetCreateProcessNotifyRoutine)

功能:监控进程创建/终止
清除效果:绕过进程创建监控

5. 线程通知回调 (PsSetCreateThreadNotifyRoutine)

功能:监控线程创建/终止
清除效果:绕过线程注入检测

6. Image加载通知回调 (PsSetLoadImageNotifyRoutine)

功能:监控DLL/驱动加载
清除效果:绕过模块加载监控

通用实现方法(4-6):

  1. 定位相应的通知例程数组
    • 进程:PspCreateProcessNotifyRoutine
    • 线程:PspCreateThreadNotifyRoutine
    • Image:PspLoadImageNotifyRoutine
  2. 清除数组中的回调函数指针

技术细节与注意事项

  1. PatchGuard绕过

    • 避免直接修改受保护的内存区域
    • 使用链表操作代替直接写入
    • 保持系统关键回调不被破坏
  2. 跨版本兼容性

    • 注意不同Windows版本的结构偏移差异
    • 使用动态偏移计算而非硬编码
  3. 稳定性考虑

    • 仅移除EDR相关回调,保留系统关键回调
    • 操作前验证内存地址有效性
  4. 持久性技术

    • 通过注册表修改实现永久禁用
    • 通过文件删除实现彻底清除

实现效果验证

  1. 进程终止:以普通管理员权限结束EDR进程
  2. 文件操作:删除受保护的系统文件
  3. 注册表修改:更改EDR服务配置
  4. 监控绕过:执行敏感操作而不触发警报

防御对抗建议

  1. EDR增强防护

    • 监控内核回调结构的完整性
    • 实施多层次的交叉检测机制
    • 保护关键驱动程序
  2. 检测指标

    • 异常的内核内存修改
    • 未签名的驱动程序加载
    • 关键回调函数的突然消失
  3. 架构改进

    • 使用虚拟化基础的安全技术
    • 实施基于行为的检测而非单纯依赖回调
    • 强化驱动程序保护机制

参考资源

  • GitHub项目:RealBlindingEDR(含演示视频)
  • ReactOS源码分析
  • Windows内核文档
  • 相关研究论文和技术博客

总结

内核回调清除技术代表了终端安全对抗的新前沿,使攻击者能够在系统最深层规避检测。防御方必须发展更高级的检测和保护机制,超越传统的回调依赖,构建更全面的安全监控体系。

注意:本文档仅用于安全研究目的,实际应用需遵守相关法律法规。

内核回调清除技术:完全致盲AV/EDR的深入指南 概述 本文档详细介绍了如何通过清除6种关键内核回调机制来完全致盲或禁用AV/EDR(反病毒/终端检测与响应)系统。这些技术允许在保持AV/EDR进程运行的情况下使其失去监控能力,或永久关闭/杀死AV/EDR进程。 核心目标 致盲AV/EDR :使其无法监控进程/线程活动、文件操作、注册表修改等敏感行为 永久关闭AV/EDR :通过修改注册表或删除文件实现持久性禁用 杀死AV/EDR进程 :以普通管理员权限结束AV/EDR进程 目标回调机制 1. 对象通知回调 (ObRegisterCallbacks) 功能 :监控对象句柄操作 清除效果 : 获取高权限句柄(如EDR进程句柄) 结束EDR进程 绕过对象访问监控 实现步骤 : 定位 PsProcessType 和 PsThreadType 全局变量 通过 NtDuplicateObject() 找 PsProcessType 通过 NtOpenThreadTokenEx() 找 PsThreadType 遍历 OBJECT_TYPE 结构的 CallbackList (偏移:Win10+/Win11=0xC8,Win7=0xC0) 修改 CALLBACK_ENTRY_ITEM 中的 PreOperation (0x28)和 PostOperation (0x30)为0 2. 注册表通知回调 (CmRegisterCallback) 功能 :监控注册表操作 清除效果 : 修改EDR注册表配置 永久禁用EDR服务 绕过注册表操作监控 实现挑战 :受PatchGuard保护,直接修改会蓝屏 绕过方法 : 定位 CallbackListHead (通过 CmUnRegisterCallback ) 修改双向链表结构,将第一个节点指向最后一个节点 避免直接修改回调函数地址 3. 文件系统微过滤器回调 (MiniFilter) 功能 :监控文件操作 清除效果 : 删除受保护文件 绕过文件操作监控 永久删除EDR文件 实现步骤 : 定位 FrameList 全局变量( FLTMGR.sys 中) 通过 FltEnumerateFilters 获取 _FLT_FILTER 结构 遍历 InstanceList 找到 _FLT_INSTANCE 定位 CallbackNodes 数组并清空 高级清除 (针对Volume回调): 通过 FLTP_FRAME 找到 FLT_VOLUMES 链表 定位并修改 _CALLBACK_NODE 结构链表 将EDR节点从链表中摘除(而非直接清零) 4. 进程通知回调 (PsSetCreateProcessNotifyRoutine) 功能 :监控进程创建/终止 清除效果 :绕过进程创建监控 5. 线程通知回调 (PsSetCreateThreadNotifyRoutine) 功能 :监控线程创建/终止 清除效果 :绕过线程注入检测 6. Image加载通知回调 (PsSetLoadImageNotifyRoutine) 功能 :监控DLL/驱动加载 清除效果 :绕过模块加载监控 通用实现方法 (4-6): 定位相应的通知例程数组 进程: PspCreateProcessNotifyRoutine 线程: PspCreateThreadNotifyRoutine Image: PspLoadImageNotifyRoutine 清除数组中的回调函数指针 技术细节与注意事项 PatchGuard绕过 : 避免直接修改受保护的内存区域 使用链表操作代替直接写入 保持系统关键回调不被破坏 跨版本兼容性 : 注意不同Windows版本的结构偏移差异 使用动态偏移计算而非硬编码 稳定性考虑 : 仅移除EDR相关回调,保留系统关键回调 操作前验证内存地址有效性 持久性技术 : 通过注册表修改实现永久禁用 通过文件删除实现彻底清除 实现效果验证 进程终止 :以普通管理员权限结束EDR进程 文件操作 :删除受保护的系统文件 注册表修改 :更改EDR服务配置 监控绕过 :执行敏感操作而不触发警报 防御对抗建议 EDR增强防护 : 监控内核回调结构的完整性 实施多层次的交叉检测机制 保护关键驱动程序 检测指标 : 异常的内核内存修改 未签名的驱动程序加载 关键回调函数的突然消失 架构改进 : 使用虚拟化基础的安全技术 实施基于行为的检测而非单纯依赖回调 强化驱动程序保护机制 参考资源 GitHub项目:RealBlindingEDR(含演示视频) ReactOS源码分析 Windows内核文档 相关研究论文和技术博客 总结 内核回调清除技术代表了终端安全对抗的新前沿,使攻击者能够在系统最深层规避检测。防御方必须发展更高级的检测和保护机制,超越传统的回调依赖,构建更全面的安全监控体系。 注意 :本文档仅用于安全研究目的,实际应用需遵守相关法律法规。