揭秘黑科技:WSC隐藏API如何悄无声息禁用Windows Defender
字数 2310 2025-08-29 22:41:24

Windows安全中心(WSC)隐藏API技术深度解析与实战指南

1. 概述与背景

Windows安全中心(WSC, Windows Security Center)是Windows系统中负责监控和报告安全健康状态的组件,包括防火墙、防病毒、反间谍软件等产品的状态。近期发现的Defendnot工具通过调用WSC未公开API,能够模拟杀毒软件安装过程,从而自动禁用Windows Defender服务。

2. 技术演进

2.1 no-defender项目(2024年)

  • 原理:依赖avast杀毒软件的WSC通信组件(wsc_proxy.exe和wsc.dll)
  • 关键组件:
    • no-defender-loader.exe:服务配置工具
    • powrprof.dll:hook实现
    • wsc_proxy.exe:avast的WSC通信程序
    • wsc.dll:avast的WSC通信组件
  • 实现方式:
    • 通过伪造的powrprof.dll实现API劫持
    • 利用avast签名的组件绕过安全检测
  • 现状:因DMCA删除请求于2024.06.08下架

2.2 defendnot项目(2025年)

  • 改进点:直接调用WSC未公开API,不再依赖第三方杀软组件
  • 关键组件:
    • defendnot-loader.exe:注入工具
    • defendnot.dll:核心功能实现
  • 优势:
    • 更简洁的实现
    • 不依赖特定杀软签名
    • 更高的可靠性

3. WSC服务架构分析

3.1 WSCSVC服务

  • 服务DLL:C:\windows\system32\wscsvc.dll
  • 功能:提供COM API接口供安全产品注册状态
  • 相关组件:
    • wscisvif.dll:实现IWscAVStatus接口
    • wscapi.dll:提供公开API

3.2 WSC通信流程

  1. 客户端调用wscapi.dll中的公开API
  2. 通过RPC与wscsvc服务通信
  3. wscsvc服务验证调用者身份和完整性
  4. 执行相应操作并返回结果

4. defendnot技术实现详解

4.1 核心原理

  • 模拟构建IWscAVStatus类
  • 通过COM接口与WSC服务交互
  • 关键虚函数:
    • Register:注册防病毒产品
    • UpdateStatus:更新产品状态

4.2 具体实现步骤

  1. 进程注入

    • 使用defendnot-loader.exe将defendnot.dll注入到Taskmgr.exe
    • 选择Taskmgr.exe的原因是其符合WSC的检测要求
  2. COM接口调用

    CoCreateInstance(CLSID_WscIsv, NULL, CLSCTX_LOCAL_SERVER, IID_IWscAVStatus, (void**)&wscAVStatus);
    
  3. 注册安全产品

    wscAVStatus->Register(L"DefendNot", L"1.0.0", WSC_SECURITY_PRODUCT_TYPE_ANTIVIRUS);
    
  4. 更新产品状态

    wscAVStatus->UpdateStatus(WSC_SECURITY_PRODUCT_STATE_ON);
    

4.3 底层调用链

  1. Register函数调用链

    • defendnot.dll → wscisvif.dll!_IWscAVStatus4::Register
    • → CWscIsv::RegisterAV
    • → wscapi!wscRegisterSecurityProduct
    • → RPC调用wscsvc服务
  2. UpdateStatus函数调用链

    • defendnot.dll → wscisvif.dll!_IWscAVStatus4::UpdateStatus
    • → CWscIsv::UpdateStatusAV
    • → wscapi!wscUpdateProductStatus
    • → RPC调用wscsvc服务

5. WSC服务的安全检测机制

5.1 进程令牌检查

  • 调用CheckTokenMembership检查WinDefend SID
  • 验证调用进程是否具有足够权限

5.2 PE结构验证

  • 使用ImageNtHeader检查PE头
  • 验证特定字段是否符合要求

5.3 数字签名校验

  • 调用CryptHashPublicKeyInfo等API
  • 验证二进制文件的签名有效性

6. 宿主进程选择策略

6.1 选择标准

  1. 位于System32或SysWOW64目录
  2. 具有有效的数字签名
  3. PE结构符合WSC要求
  4. 不包含WinDefend SID

6.2 可用进程示例

  • Taskmgr.exe
  • 部分杀毒软件进程
  • 系统核心组件进程

6.3 检测工具

可使用wsc-binary-check工具检测符合条件的进程:

// 示例Go代码调用检测工具
func checkProcess(path string) bool {
    cmd := exec.Command("wsc-binary-check.exe", path)
    output, _ := cmd.CombinedOutput()
    return strings.Contains(string(output), "VALID")
}

7. 实战:定制化defendnot.dll

7.1 精简实现

// bootstrap.cpp
extern "C" __declspec(dllexport) void Run() {
    IWscAVStatus* wscAVStatus = nullptr;
    CoInitializeEx(NULL, COINIT_MULTITHREADED);
    
    // 获取WSC接口
    HRESULT hr = CoCreateInstance(
        CLSID_WscIsv, 
        NULL, 
        CLSCTX_LOCAL_SERVER, 
        IID_IWscAVStatus, 
        (void**)&wscAVStatus);
    
    if (SUCCEEDED(hr)) {
        // 注册产品
        wscAVStatus->Register(L"CustomAV", L"1.0", WSC_SECURITY_PRODUCT_TYPE_ANTIVIRUS);
        
        // 更新状态
        wscAVStatus->UpdateStatus(WSC_SECURITY_PRODUCT_STATE_ON);
        
        wscAVStatus->Release();
    }
    
    CoUninitialize();
}

7.2 注入方法

  1. 使用Process Hacker等工具注入
  2. 选择符合条件的宿主进程
  3. 加载defendnot.dll并调用导出函数

8. RPC通信分析

8.1 关键RPC方法

  • s_wscUnregisterSecurityProduct
  • s_wscRegisterSecurityProduct
  • s_wscUpdateProductStatus

8.2 捕获工具

使用RPCMon等工具可捕获通信内容:

  1. 启动RPCMon监控
  2. 运行defendnot工具
  3. 分析捕获的RPC调用

9. 防御与检测

9.1 检测方法

  1. 监控wscsvc服务的RPC调用
  2. 检查异常进程注入行为
  3. 验证WSC注册产品的合法性

9.2 防御措施

  1. 启用受保护的进程
  2. 配置AppLocker限制进程注入
  3. 监控系统关键目录的修改

10. 总结

Defendnot工具通过深入研究WSC服务的未公开API,实现了对Windows Defender的禁用。这项技术揭示了Windows安全机制中一些有趣的实现细节:

  1. WSC服务通过COM接口与安全产品交互
  2. 严格的调用者验证机制
  3. RPC通信作为底层传输方式
  4. 宿主进程选择的特殊要求

理解这些机制不仅有助于安全研究,也能帮助开发更强大的安全产品。同时,微软可能会在未来版本中修改这些实现细节,因此相关技术需要持续跟进研究。

Windows安全中心(WSC)隐藏API技术深度解析与实战指南 1. 概述与背景 Windows安全中心(WSC, Windows Security Center)是Windows系统中负责监控和报告安全健康状态的组件,包括防火墙、防病毒、反间谍软件等产品的状态。近期发现的Defendnot工具通过调用WSC未公开API,能够模拟杀毒软件安装过程,从而自动禁用Windows Defender服务。 2. 技术演进 2.1 no-defender项目(2024年) 原理:依赖avast杀毒软件的WSC通信组件(wsc_ proxy.exe和wsc.dll) 关键组件: no-defender-loader.exe:服务配置工具 powrprof.dll:hook实现 wsc_ proxy.exe:avast的WSC通信程序 wsc.dll:avast的WSC通信组件 实现方式: 通过伪造的powrprof.dll实现API劫持 利用avast签名的组件绕过安全检测 现状:因DMCA删除请求于2024.06.08下架 2.2 defendnot项目(2025年) 改进点:直接调用WSC未公开API,不再依赖第三方杀软组件 关键组件: defendnot-loader.exe:注入工具 defendnot.dll:核心功能实现 优势: 更简洁的实现 不依赖特定杀软签名 更高的可靠性 3. WSC服务架构分析 3.1 WSCSVC服务 服务DLL:C:\windows\system32\wscsvc.dll 功能:提供COM API接口供安全产品注册状态 相关组件: wscisvif.dll:实现IWscAVStatus接口 wscapi.dll:提供公开API 3.2 WSC通信流程 客户端调用wscapi.dll中的公开API 通过RPC与wscsvc服务通信 wscsvc服务验证调用者身份和完整性 执行相应操作并返回结果 4. defendnot技术实现详解 4.1 核心原理 模拟构建IWscAVStatus类 通过COM接口与WSC服务交互 关键虚函数: Register:注册防病毒产品 UpdateStatus:更新产品状态 4.2 具体实现步骤 进程注入 : 使用defendnot-loader.exe将defendnot.dll注入到Taskmgr.exe 选择Taskmgr.exe的原因是其符合WSC的检测要求 COM接口调用 : 注册安全产品 : 更新产品状态 : 4.3 底层调用链 Register函数调用链 : defendnot.dll → wscisvif.dll!_ IWscAVStatus4::Register → CWscIsv::RegisterAV → wscapi !wscRegisterSecurityProduct → RPC调用wscsvc服务 UpdateStatus函数调用链 : defendnot.dll → wscisvif.dll!_ IWscAVStatus4::UpdateStatus → CWscIsv::UpdateStatusAV → wscapi !wscUpdateProductStatus → RPC调用wscsvc服务 5. WSC服务的安全检测机制 5.1 进程令牌检查 调用CheckTokenMembership检查WinDefend SID 验证调用进程是否具有足够权限 5.2 PE结构验证 使用ImageNtHeader检查PE头 验证特定字段是否符合要求 5.3 数字签名校验 调用CryptHashPublicKeyInfo等API 验证二进制文件的签名有效性 6. 宿主进程选择策略 6.1 选择标准 位于System32或SysWOW64目录 具有有效的数字签名 PE结构符合WSC要求 不包含WinDefend SID 6.2 可用进程示例 Taskmgr.exe 部分杀毒软件进程 系统核心组件进程 6.3 检测工具 可使用wsc-binary-check工具检测符合条件的进程: 7. 实战:定制化defendnot.dll 7.1 精简实现 7.2 注入方法 使用Process Hacker等工具注入 选择符合条件的宿主进程 加载defendnot.dll并调用导出函数 8. RPC通信分析 8.1 关键RPC方法 s_ wscUnregisterSecurityProduct s_ wscRegisterSecurityProduct s_ wscUpdateProductStatus 8.2 捕获工具 使用RPCMon等工具可捕获通信内容: 启动RPCMon监控 运行defendnot工具 分析捕获的RPC调用 9. 防御与检测 9.1 检测方法 监控wscsvc服务的RPC调用 检查异常进程注入行为 验证WSC注册产品的合法性 9.2 防御措施 启用受保护的进程 配置AppLocker限制进程注入 监控系统关键目录的修改 10. 总结 Defendnot工具通过深入研究WSC服务的未公开API,实现了对Windows Defender的禁用。这项技术揭示了Windows安全机制中一些有趣的实现细节: WSC服务通过COM接口与安全产品交互 严格的调用者验证机制 RPC通信作为底层传输方式 宿主进程选择的特殊要求 理解这些机制不仅有助于安全研究,也能帮助开发更强大的安全产品。同时,微软可能会在未来版本中修改这些实现细节,因此相关技术需要持续跟进研究。