当前位置: 首页 > news >正文

EDR绕过新思路:通过ETW补丁实现无痕渗透测试(Windows环境)

EDR绕过新思路:通过ETW补丁实现无痕渗透测试(Windows环境)

在当今企业安全防护体系中,终端检测与响应(EDR)系统已成为防御纵深的关键一环。这些系统通过多层次的监控机制,包括行为分析、API调用追踪和事件日志收集,构建起针对恶意活动的早期预警网络。然而,对于渗透测试人员和安全研究人员而言,如何在EDR监控下开展合法的安全评估,成为一项极具挑战性的技术课题。

传统绕过技术往往聚焦于进程注入或AMSI补丁,但这些方法在最新一代EDR产品中逐渐失效。本文将深入探讨一种基于Windows事件追踪(ETW)机制的创新绕过方案,通过内存补丁技术精准禁用EtwEventWrite函数,实现近乎无痕的渗透测试环境。不同于简单的API挂钩,这种技术从事件源头上切断EDR的关键情报来源,为红队评估提供更隐蔽的操作空间。

1. ETW机制与EDR关联性解析

ETW(Event Tracing for Windows)是微软自Windows 2000引入的核心诊断架构,最初设计用于系统性能分析和故障排查。其高效的事件收集机制很快被安全厂商发现价值,逐渐演变为EDR产品的主要数据来源之一。ETW体系由三个核心组件构成:

  • 提供程序(Providers):系统组件或应用程序中内嵌的事件源,如Microsoft-Windows-Threat-Intelligence提供关键安全事件
  • 控制器(Controllers):管理跟踪会话的组件,决定收集哪些事件
  • 消费者(Consumers):处理收集到的事件数据,EDR通常扮演这一角色

在最新Windows版本中,超过200个内置提供程序持续输出系统活动数据。安全厂商通过订阅特定事件通道,能够获取包括:

1. 进程创建/终止事件(EventID 1/2) 2. 网络连接记录(EventID 3) 3. 文件系统操作(EventID 11) 4. 注册表修改(EventID 12-14) 5. 内存操作行为(EventID 10)

这些原始数据经过EDR的分析引擎处理后,可识别出如下的可疑模式:

# 典型恶意行为模式示例 suspicious_patterns = { "process_injection": [ "OpenProcess", "VirtualAllocEx", "WriteProcessMemory", "CreateRemoteThread" ], "credential_dumping": [ "lsass.exe memory access", "sekurlsa::logonpasswords" ] }

2. ETW补丁技术实现路径

2.1 关键函数定位技术

ETW事件上报的核心在于EtwEventWrite函数,该函数位于ntdll.dll中,负责将事件数据发送到ETW子系统。我们的补丁策略需要精确识别并修改该函数的执行逻辑。以下是定位过程的详细步骤:

  1. 获取目标进程句柄
HANDLE hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, target_pid );
  1. 枚举模块导出表
# 通过PEB遍历获取ntdll基地址 0:000> !peb PEB at 000000e441c79000 [...] KernelCallbackTable : 00000000`00000000 ImageBaseAddress : 00007ffd`e5b40000 # ntdll基地址 [...]
  1. 函数签名识别EtwEventWrite的函数特征可通过以下字节模式识别:
48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 49 8B F8 48 8B EA 48 8B F1 48 85 D2

2.2 内存补丁实施

成功定位函数地址后,补丁实施需要精确控制内存权限和操作时序:

  1. 内存属性修改
import ctypes from ctypes.wintypes import * # 定义必要的Windows API VirtualProtectEx = ctypes.windll.kernel32.VirtualProtectEx WriteProcessMemory = ctypes.windll.kernel32.WriteProcessMemory old_protect = DWORD(0) VirtualProtectEx( hProcess, etw_function_address, 1, # 修改1字节 PAGE_EXECUTE_READWRITE, ctypes.byref(old_protect) )
  1. 指令覆写方案原始函数指令与补丁后对比如下:
偏移原始指令补丁指令效果
0x00MOV R10, RCXRET (0xC3)立即返回
0x01MOV EAX, SSNNOP (0x90)空操作
0x05SYSCALLNOP (0x90)空操作
  1. 多线程安全考虑在补丁过程中必须考虑线程竞争条件:
// 临界区保护示例 CRITICAL_SECTION cs; InitializeCriticalSection(&cs); EnterCriticalSection(&cs); // 执行补丁操作 LeaveCriticalSection(&cs);

3. 高级绕过技术扩展

3.1 ETWTI提供程序专项绕过

Windows 10 1809后引入的威胁情报提供程序(ETWTI)实现了更深度的系统监控,需要特殊处理:

  1. 提供程序激活检测
BOOL IsProviderEnabled(GUID providerId) { return EtwEventEnabled( EtwThreatIntProvRegHandle, &providerId ); }
  1. 双重补丁策略同时修补以下关键函数:
  • EtwEventWrite
  • EtwEventWriteFull
  • NtTraceEvent

3.2 稳定性增强方案

为避免补丁导致系统不稳定,建议实施:

  1. 异常处理框架
try: apply_etw_patch() except MemoryError as e: rollback_patch() log_error(e) except PermissionError as e: elevate_privileges() retry_patch()
  1. 补丁验证机制
# 补丁后验证示例 0:000> u ntdll!EtwEventWrite 00007ffd`e5b51230 c3 ret 00007ffd`e5b51231 90 nop [...]

4. 实战应用与对抗策略

4.1 渗透测试集成方案

在实际评估中,ETW补丁应作为整体规避策略的一部分:

  1. 操作流程时序
sequenceDiagram 参与者 RedTeam->>+Target: 初始访问 Target->>+EDR: 正常事件流 RedTeam->>Target: 注入补丁Loader Target->>EDR: 事件流中断 RedTeam->>Target: 执行敏感操作 Target->>EDR: 无关键事件上报
  1. 工具链集成示例将补丁功能整合到C2框架中:
// SharpETWPatch模块 public class ETWBypass : IPlugin { public void Execute(Agent agent) { var patch = new ETWPatch(); patch.Apply( agent.PID, PatchMode.Silent ); } }

4.2 EDR对抗检测模式

现代EDR可能采用以下方式检测ETW补丁:

  1. 内存完整性校验
bool CheckFunctionIntegrity(LPVOID address) { BYTE original[] = { 0x48, 0x89, 0x5C, 0x24 }; BYTE current[4]; ReadProcessMemory(hProcess, address, current, 4); return memcmp(original, current, 4) == 0; }
  1. 异常流量分析当EDR发现来自某进程的事件突然中断时,可能触发以下告警规则:
{ "rule_name": "ETW_Event_Suppression", "conditions": [ "process_path: NOT system32\\", "event_rate: DROP > 90%", "duration: > 30s" ], "severity": "high" }

应对方案包括:

  • 渐进式事件抑制(逐步减少而非突然中断)
  • 伪造正常事件流
  • 针对特定提供程序而非全局ETW

在最近的渗透测试项目中,我们发现采用分层补丁策略(仅禁用关键提供程序而非全局ETW)能有效降低检测概率。例如,针对Mimikatz操作,只需禁用Microsoft-Windows-Threat-Intelligence提供程序即可避免警报,同时保持其他系统事件正常上报。

http://www.jsqmd.com/news/535016/

相关文章:

  • 如何通过ldn_mitm实现Switch远程局域网联机?
  • 基于拓扑结构的光子晶体研究:文献复现与C6晶胞能带分析
  • 2021年PRL文章:傅里叶调制晶格参数实现高Q因子的非对称超表面
  • 穿墙透视的WiFi革命:RuView无摄像头人体感知技术全解析
  • 腾讯优图文档解析神器:上传图片秒转Markdown,手写体印章都能识别
  • 别再一个点一个点更新了!用Python手把手实现分块LMS(BLMS)滤波器,处理音频降噪实战
  • Revit模型Web端免费展示:从IFC到GLTF,我踩过的坑和避坑指南
  • 5步解锁老旧Mac潜力:OpenCore Legacy Patcher完整升级指南
  • VASP计算数据清洗实战:用Python脚本批量处理vasprun.xml,为机器学习势函数准备训练集
  • 1020 - 顶刊复现:配电网两阶段鲁棒故障恢复(Matlab实现)
  • 深入解析MultipartFile:从本地文件读取到重复读取的实践技巧
  • 图像分类模型实战指南:从技术选型到部署优化的全流程解析
  • 如何用CLIP多模态模型实现跨模态智能交互
  • 7步掌握企业级IT资产管理系统部署与运维
  • 边缘设备跑大模型?DeepSeek-R1-Distill-Qwen-1.5B实时推理实战
  • 从手机到车载屏:深入聊聊LCD闪烁(Flicker)那些事儿,及对用户体验的隐形影响
  • golang context.WithTimeout - running
  • 5分钟快速上手:Blender插件与资源终极指南,让你成为3D创作高手
  • 链篦机回转窑球团生产全流程解析:从配料到成品输出的关键步骤
  • Alpamayo-R1-10B部署避坑指南:模型加载失败/端口冲突/显存不足全解决
  • LangChainJS与Next.js全栈AI应用架构:从模块化设计到生产部署的最佳实践
  • 水墨江南模型Dify平台集成:快速构建无需代码的AI绘画应用
  • 香橙派安卓镜像烧录全攻略:从PhoenixCard配置到蓝牙功能实测
  • PyTorch 2.8镜像部署案例:高校AI实验室GPU资源池统一环境管理方案
  • 2026美缝攻略:优质门店推荐,打造无缝家居环境,市面上美缝10年质保有保障 - 品牌推荐师
  • ssm+java2026年毕设蔬菜订购系统【源码+论文】
  • 神州网信政府版Win10远程桌面避坑指南:解决剪切板重定向和用户权限问题
  • Notepad--:跨平台文本编辑器的终极选择,打造中国人自己的编辑器
  • 主板电路中电感的工作原理与选型指南
  • PCL点云处理实战:5分钟搞定PassThrough滤波(附完整代码与可视化对比)