通过杀软 avast 及 no-defender 工具分析 Windows 防护机制
字数 2171 2025-08-20 18:18:17

Windows Defender 关闭机制分析与 no-defender 工具实现原理

1. 前言

Windows Defender 已从最初的杀毒软件发展为端点检测和响应软件(EDR),成为 Windows 安全体系的核心部分。微软不建议用户关闭 Defender,且其默认关闭策略无法完全停止软件运行,这给恶意软件调试分析带来困扰。

2. 传统关闭 Defender 方案分析

2.1 常见关闭方法及其局限性

  1. 关闭实时保护

    • 临时性措施,Defender 会自动恢复
    • 仅暂停部分功能,核心服务仍在运行
  2. 添加排除文件夹

    • 仅绕过指定文件夹的扫描
    • 不影响 Defender 整体运行状态
  3. 组策略关闭

    • 路径:计算机配置 > 管理模板 > Windows组件 > Microsoft Defender防病毒
    • 当前版本已失效
  4. 注册表关闭

    • 键值:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
    • 添加 DisableAntiSpyware=1 (DWORD)
    • 当前版本已失效
  5. 服务停止

    • 通过 Services 禁用 Defender 进程
    • 当前版本会被 Windows Security Center 自动重启
  6. 安全模式损坏二进制

    • 步骤:
      1. 关闭 Defender 防篡改
      2. 进入安全模式
      3. 修改 C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2211.5-0\MsMpEng.exe 所有者
      4. 重命名为 MsMpEng.exe.bak
    • 效果:永久关闭 Defender
    • 缺点:侵入性强,破坏系统完整性
  7. 第三方杀毒软件接管

    • 安装认证的第三方杀毒软件后,Defender 自动退出
    • 需要杀毒软件提供完全关闭功能

2.2 方案失效原因

  • Windows 安全体系层层加码
  • 微软签名认证要求
  • 未公开 API 和安全中心消息同步机制
  • 版本差异导致策略变化

3. no-defender 工具原理

3.1 核心思路

利用 Windows 安全防护的第三方杀毒软件接管机制:

  1. 从 Avast 杀毒软件逆向提取关键组件
  2. 编写 hook 代码修改关键组件执行逻辑
  3. 向安全中心注册虚假杀毒软件
  4. 触发 Defender 自动退出机制

3.2 工具组件

  • no-defender-loader.exe:服务配置工具
  • powrprof.dll:hook 实现
  • wsc.dll:Avast 的 wsc 通信核心组件
  • wsc_proxy.exe:Avast 的 wsc 通信程序

4. Avast 的 WSC 机制分析

4.1 安全中心通信架构

AvastSvc (客户端) → wsc_proxy.exe → wsc.dll → wscsvc (Windows安全中心服务)

4.2 关键组件

  1. AvastWscReporter 服务

    • 路径:C:\Program Files\AVAST Software\Avast\wsc_proxy.exe
    • 功能:与安全中心通信的代理服务
  2. wsc.dll 核心功能

    • 初始化 ASW* 文件对象
    • 启动 RPC 服务器
    • 处理安全状态更新队列

4.3 通信流程

  1. RPC 服务器初始化

    • StartServiceCtrlDispatcherW 启动服务
    • CreateThread 创建处理线程
    • RpCServerRegisterIfEx 注册 RPC 接口
  2. 消息处理机制

    • 接收端:s_wscrpc_update() 处理 RPC 请求
      • 解析字符串格式:/svc /update /av_as /state:[on|off] /signatures:up_to_date
      • 将任务加入队列
    • 处理端:queue_worker() 线程循环处理队列
      • 调用 process_item() 更新安全中心状态

5. no-defender 实现细节

5.1 关键技术点

  1. 关键 Hook 点

    • CreateFileW:绕过 ASW* 文件访问检查
    • queue_worker:注入虚假状态更新
    • I_RpcBindingInqLocalClientPID:伪造进程ID
  2. Hook 实现代码

// 绕过 ASW* 文件检查
HANDLE WINAPI HookCreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, ...) {
    if (strstr(strlwr(buffer), "asw") != NULL) {
        return (HANDLE)1337; // 返回魔数绕过检查
    }
    return OriginalCreateFileW(...);
}

// 注入状态更新
int64_t Hookqueue_worker() {
    wchar_t payload[1024] = {0};
    mbstowcs(payload, "/svc /update /av_as /state:on /signatures:up_to_date", 1024);
    S_WSCRPC_UPDATE s_wscrpc_update = (S_WSCRPC_UPDATE)(wsc_base + S_WSCRPC_UPDATE_ADDRESS);
    s_wscrpc_update(payload, 1);
    return Originalqueue_worker();
}

5.2 部署流程

  1. 服务注册

    sc.exe create test type=own start=demand binpath='\"path\to\wsc_proxy.exe\" /runassvc /rpcserver /wsc_name:\"test\"'
    
  2. 服务启动

    sc.exe start test
    
  3. 验证效果

    • 检查 Windows 安全中心是否显示"test"防护软件
    • 确认 Defender 进程已退出

5.3 注意事项

  1. 服务停止问题

    • wsc.dll 未提供正常关闭逻辑
    • 解决方案:系统重启或 hook 代码中主动退出
  2. 未处理的 DeviceIoControl

    • 访问 ASW* 设备可能出错
    • 可扩展 hook 修复

6. 防御对策

  1. 微软可采取的防护措施

    • 加强第三方杀软认证机制
    • 验证组件数字签名完整性
    • 监控异常的服务注册行为
  2. 企业防护建议

    • 启用防篡改保护
    • 监控 powrprof.dll 等关键组件修改
    • 限制服务创建权限

7. 总结

no-defender 工具通过逆向 Avast 的 WSC 通信机制,利用 hook 技术伪造杀毒软件状态,实现了对 Defender 的非破坏性关闭。该技术揭示了 Windows 安全中心与第三方杀毒软件间的信任机制漏洞,对理解 Windows 安全体系有重要研究价值。

Windows Defender 关闭机制分析与 no-defender 工具实现原理 1. 前言 Windows Defender 已从最初的杀毒软件发展为端点检测和响应软件(EDR),成为 Windows 安全体系的核心部分。微软不建议用户关闭 Defender,且其默认关闭策略无法完全停止软件运行,这给恶意软件调试分析带来困扰。 2. 传统关闭 Defender 方案分析 2.1 常见关闭方法及其局限性 关闭实时保护 : 临时性措施,Defender 会自动恢复 仅暂停部分功能,核心服务仍在运行 添加排除文件夹 : 仅绕过指定文件夹的扫描 不影响 Defender 整体运行状态 组策略关闭 : 路径: 计算机配置 > 管理模板 > Windows组件 > Microsoft Defender防病毒 当前版本已失效 注册表关闭 : 键值: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender 添加 DisableAntiSpyware=1 (DWORD) 当前版本已失效 服务停止 : 通过 Services 禁用 Defender 进程 当前版本会被 Windows Security Center 自动重启 安全模式损坏二进制 : 步骤: 关闭 Defender 防篡改 进入安全模式 修改 C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2211.5-0\MsMpEng.exe 所有者 重命名为 MsMpEng.exe.bak 效果:永久关闭 Defender 缺点:侵入性强,破坏系统完整性 第三方杀毒软件接管 : 安装认证的第三方杀毒软件后,Defender 自动退出 需要杀毒软件提供完全关闭功能 2.2 方案失效原因 Windows 安全体系层层加码 微软签名认证要求 未公开 API 和安全中心消息同步机制 版本差异导致策略变化 3. no-defender 工具原理 3.1 核心思路 利用 Windows 安全防护的第三方杀毒软件接管机制: 从 Avast 杀毒软件逆向提取关键组件 编写 hook 代码修改关键组件执行逻辑 向安全中心注册虚假杀毒软件 触发 Defender 自动退出机制 3.2 工具组件 no-defender-loader.exe :服务配置工具 powrprof.dll :hook 实现 wsc.dll :Avast 的 wsc 通信核心组件 wsc_proxy.exe :Avast 的 wsc 通信程序 4. Avast 的 WSC 机制分析 4.1 安全中心通信架构 4.2 关键组件 AvastWscReporter 服务 : 路径: C:\Program Files\AVAST Software\Avast\wsc_proxy.exe 功能:与安全中心通信的代理服务 wsc.dll 核心功能 : 初始化 ASW* 文件对象 启动 RPC 服务器 处理安全状态更新队列 4.3 通信流程 RPC 服务器初始化 : StartServiceCtrlDispatcherW 启动服务 CreateThread 创建处理线程 RpCServerRegisterIfEx 注册 RPC 接口 消息处理机制 : 接收端: s_wscrpc_update() 处理 RPC 请求 解析字符串格式: /svc /update /av_as /state:[on|off] /signatures:up_to_date 将任务加入队列 处理端: queue_worker() 线程循环处理队列 调用 process_item() 更新安全中心状态 5. no-defender 实现细节 5.1 关键技术点 关键 Hook 点 : CreateFileW :绕过 ASW* 文件访问检查 queue_worker :注入虚假状态更新 I_RpcBindingInqLocalClientPID :伪造进程ID Hook 实现代码 : 5.2 部署流程 服务注册 : 服务启动 : 验证效果 : 检查 Windows 安全中心是否显示"test"防护软件 确认 Defender 进程已退出 5.3 注意事项 服务停止问题 : wsc.dll 未提供正常关闭逻辑 解决方案:系统重启或 hook 代码中主动退出 未处理的 DeviceIoControl : 访问 ASW* 设备可能出错 可扩展 hook 修复 6. 防御对策 微软可采取的防护措施 : 加强第三方杀软认证机制 验证组件数字签名完整性 监控异常的服务注册行为 企业防护建议 : 启用防篡改保护 监控 powrprof.dll 等关键组件修改 限制服务创建权限 7. 总结 no-defender 工具通过逆向 Avast 的 WSC 通信机制,利用 hook 技术伪造杀毒软件状态,实现了对 Defender 的非破坏性关闭。该技术揭示了 Windows 安全中心与第三方杀毒软件间的信任机制漏洞,对理解 Windows 安全体系有重要研究价值。