windows安全中心接口

编程知识 更新时间:2023-04-13 03:36:43

先说一个服务

服务名称:wscsvc
显示名称:Security Center

WSCSVC(Windows 安全中心)服务,监视并报告计算机上的安全健康设置。

健康设置包括防火墙的打开和关闭、防病毒的(打开/关闭/过期)设置、反间谍软件(打开/关闭/过期)的设置、Windows 更新(自动/手动下载并安装更新)、用户帐户控制(打开/关闭)以及 Internet 设置(推荐/不推荐)。

WSCSVC服务为独立软件供应商,提供 COM API 以便向安全中心服务,注册并记录其产品的状态。安全和维护 UI 使用该服务在“安全和维护”控制面板中提供 systray 警报和安全健康状况的图形视图。网络访问保护(NAP)使用该服务向 NAP 网络策略服务器报告客户端的安全健康状况,以便进行网络隔离决策。该服务还提供一个公共 API,以允许外部客户以编程方式检索系统的聚合安全健康状况。


可执行文件路径:   C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted -p

在任务管理器里,我们会看到一堆svchost.exe进程,它们的命令行参数是不同的,每个进程维护一个系统的服务,svchost.exe ==servicehost就是服务进程。

 

 

注册反病毒软件

从Windows XP SP2 开始,微软提供安全中心,第三方杀毒软件可以向安全中心注册反病毒软件,这样windows就可以检测到系统中是否安装了杀毒软件。

WindowsSecurityCenter是一个内置于操作系统中的报告工具,自WindowsXP服务包2发布以来,该工具在不同领域:Windows更新、防火墙设置和防病毒/防间谍软件设置,监视端点的健康状态。

为了使第三方安全软件符合Windows,它们必须使用通过签署NDA获得的私有API向安全中心报告其状态。

 

安全中心WMI命名空间有两个不同版本。

// WMI namespace for Security Center 1, pre-Vista
root\SecurityCenter


// WMI namespace for Security Center 2, post-Vista
root\SecurityCenter2

Win7支持“\ root \ SecurityCenter2”,而WinXP使用“\ root \ SecurityCenter”。 

 

 

通过cmd的wmic 命令获取杀毒软件信息

cmd里命令:wmic /NAMESPACE:\\root\SecurityCenter PATH AntiVirusProduct GET * /value

用来查看注册在本机微软安全中心的反病毒软件的各项信息。

companyName=360 Group
displayName=360
instanceGuid={234555-4588-2wer-dfg4-2wer56hjuy78}
onAccessScanningEnabled=TRUE
pathToSignedProductExe=C:\360.exe
productHasNotifiedUser=TRUE
productState=
productUptoDate=TRUE
productWantsWscNotifications=FALSE
versionNumber=1.0.0.1

 

通过WMI接口获取杀毒软件信息

WIN系统自带的wmi测试工具wbemtest.exe  查询杀毒软件信息
1、在“运行”中,输入“wbemtest.exe” 

2、单击“连接”,在输入框中输入ROOT\SecurityCenter2 

3、点击“枚举类别”,选择“递归” 

4、点击“查询”,在输入框中输入要测试的WQL语句:SELECT * FROM AntiVirusProduct,可以得到guid

 

介绍WMI

早期的操作系统如何查询这些信息呢?WMI。

Windows安全中心是建立在Windows管理仪表(WMI)的,它是在Windows操作系统上管理各种数据和操作的基础设施。

WMI使用者、WMI提供者和WMI存储库。

WMI使用者是可以查询信息、运行提供程序方法或订阅事件的管理应用程序或脚本。WMI提供程序为托管对象提供数据,并处理从WMI发送到托管对象的消息(或调用)。WMI存储库是由WMI命名空间组织的托管对象的集中存储区域。

WMI提供程序向Windows安全中心报告防病毒软件 ,  WMI使用者用脚本检索防病毒软件信息。

 

AntiVirusProductWMI类

我们的重点将放在AntiVirusProductWMI类上,反病毒软件将为给定的命名空间提供一个实例。

以下内容托管对象格式(MOF)表示用于安全中心1的AntiVirusProductWMI类:

class AntiVirusProduct
{
 string companyName; // Vendor name
 string displayName; // Application name
 string instanceGuid; // Unique identifier
 boolean onAccessScanningEnabled; // Real-time protection
 boolean productUptoDate; // Definition state
 string versionNumber; // Application version
}


还有其他属性,如路径ToEnableOnAccessUI,到上面没有列出的AntiVirusProduct类,因为它们很少被WMI提供程序使用。

 

以下MOF表示用于安全中心2的AntiVirusProductWMI类:

class AntiVirusProduct
{
 string displayName; // Application name
 string instanceGuid; // Unique identifier
 string pathToSignedProductExe; // Path to application
 string pathToSignedReportingExe; // Path to provider
 uint32 productState; // Real-time protection & defintion state
}


现在我们已经了解了SecurityCenter将信息存储在WMI存储库中的位置,以及反病毒软件提供给SecurityCenter的信息,我们可以编写一个WMI使用者来访问这些数据。


这些脚本在做什么?

连接到安全中心WMI命名空间
运行一个WQL查询以查找名称空间中的所有AntiVirusProducts实例
如果没有找到任何实例,则检查是否会发出警报并退出。
迭代找到的每个实例并显示值
总之,我们的WMI使用者脚本能够检测哪个防病毒应用程序正在向安全中心报告,并确定产品的状态。

 

信息存储在WMI存储库中,这是一个存储区域。任何WMI使用者都可以查询此信息。我们可以通过WMI提供程序,将数据插入到AntiVirusProductWMI类的WMI命名空间中。

用于将数据插入WMI存储库。记住,为了让安全产品真正向SecurityCenter报告它的状态通知,它必须使用私有API,但是,我说的是WMI消费者。

#pragma autorecover
#pragma namespace("\\\\.\\root")
instance of __Namespace
{
 Name = "SecurityCenter";
};
#pragma namespace("\\\\.\\root\\SecurityCenter")
instance of AntiVirusProduct
{
 companyName = "ESET, spol. s.r.o.";
 displayName = "ESET NOD32 Antivirus 4";
 instanceGuid = "{CD3EA3C2-91CB-4359-90DC-1E909147B6B0}";
 onAccessScanningEnabled = TRUE;
 productUptoDate = TRUE;
 versionNumber = "6.2.71.2";
};


若要编译托管对象并将其插入WMI存储库,请使用管理权限运行以下命令。下面假设mofcomp.exe位于您的%PATH%中,并且您在与您的“false-av.mof”文件相同的目录下运行此文件。

 C:\Documents and Settings\test\Desktop>mofcomp.exe fave-av.mof
如果成功,您将看到以下输出:

 Microsoft (R) MOF Compiler Version 6.1.7600.16385
 Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
 Parsing MOF file: fake-av.mof
 MOF file has been successfully parsed
 Storing data in the repository...
 Done!
现在,如果我们运行上面相同的VisualBasic脚本,我们将在端点上错误地检测ESET NOD 32防病毒4,它的实时保护状态和最新的病毒定义。使用以下MOF文件的SecurityCenter 2也可以使用相同的进程。

#pragma autorecover
#pragma namespace("\\\\.\\root")
instance of __Namespace
{
 Name = "SecurityCenter2";
};
#pragma namespace("\\\\.\\root\\SecurityCenter2")
instance of AntiVirusProduct
{
 displayName = "ESET NOD32 Antivirus 4";
 instanceGuid = "{CD3EA3C2-91CB-4359-90DC-1E909147B6B0}";
 pathToSignedProductExe = 
 "C:\\Program Files\\ESET\\ESET NOD32 Antivirus\\ecmd.exe";
 pathToSignedReportingExe =
 "C:\\Program Files\\ESET\\ESET NOD32 Antivirus\\x86\\ekrn.exe";
 productState = 266240;
};
要提供给ProductState的值是无文档的。事实上,所有的WMI名称空间和类都是无文档的,然而,下面的博客文章揭示了一些关于这个问题的未文档化的信息,这在我的所有测试中都是正确的。

这个故事的寓意是,不要仅仅依靠WMI消费者来检测安全产品向安全中心报告。他们很容易被愚弄。

 

 

 

 

 


 

//interface

MIDL_INTERFACE("XXXXXX-XXXX-XXX-XXXX-XXXXXXXXXXX")
IWscAVStatus : public IWscSecurityProductStatus
{
public:
    virtual HRESULT STDMETHODCALLTYPE UpdateStatus( 
        /* [in] */ WSC_SECURITY_PRODUCT_STATE eProductState,
        /* [in] */ BOOL fProductUptoDate) = 0;

};
ATL::CComPtr<IWscAVStatus>  m_pAvStatus;

//Init
ATL::CComPtr<IUnknown>     pUnknown;
HRESULT hr = pUnknown.CoCreateInstance(__uuidof(WscIsv), NULL, CLSCTX_INPROC_SERVER);
ATL::CComQIPtr<IWscAVStatus>  pAvStatus(pUnknown);
m_pAvStatus = pAvStatus;
...
//Register
auto hr = m_pAvStatus->Register(CComBSTR(m_Path), CComBSTR(WSC_AV_DISPLAY), FALSE, TRUE);
m_avRegistered = SUCCEEDED(hr); //Always false

 


Could you please help me? I can't find any information about how to register application (and make it right) in Windows Security Center. It doesn't work and I can't understand why. I would be very grateful for any information about it.

 

 

windows defender

windows10系统中集成了windows defender安全软件,这让win10安全性大大提高,完全可以不用再安装第三方安全软件 。

Windows Defender现在是Windows 8 / 8.1 / 10的Windows操作系统的一部分。通常,当您安装第三方的反恶意软件或防病毒程序时,Windows Defender会自行关闭。

内置的Microsoft安全软件设置为:在用户安装另一个反恶意软件或防病毒程序后自动关闭。Microsoft建议在安装和使用新的安全产品之前删除以前的安全产品,如果是WindowsDefender,请关闭。有时用户可能不清楚如何管理Windows Defender设置和启用/禁用。准备一个如何打开或关闭Windows Defender的教程。

这是微软认证过的杀软,避免两个杀软抢资源不兼容。所有的杀软厂商及微软都不建议安装两个及以上杀软

扫描类型编辑

Windows Defender提供三种扫描类型,分别是完全扫描、快速扫描、自定义扫描。在工具(Tools)页面里,用户可以通过选项(Options)对Windows Defender的实时防护(Real-time Protection)、自动扫描计划(Automatic Scanning)进行设置修改,或进行高级的设置。用户可以在工具(Tools)页面中决定加入Microsoft SpyNet 社区,以及对已隔离程序的处理操作。用户可以通过单击“检查更新(Check for Updates)”或是使用Windows Update对Windows Defender进行升级。在Windows 7中,Windows Defender会配合操作中心防范恶意软件以维护Windows稳定安全运行。

Windows Defender内置实时防护功能,它会扫描设备上正在运行的程序,以抵御电子邮件、应用、云和 Web 上的病毒、恶意软件和间谍软件等软件威胁。
实时防护功能可以暂时关闭,但不久后会自动开启。 [2] 

在最新的Windows 10预览版(14352)中,Windows Defender改变了过去用户安装第三方杀软就关闭服务的一贯做法,而是让用户可以选择让Windows Defender定期为Windows 正版用户扫描系统,从而提高系统的安全性。

更多推荐

windows安全中心接口

本文发布于:2023-04-11 06:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/421121ae6911a44209a69deb904eb6c9.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:接口   中心   windows

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 67157文章数
  • 14阅读数
  • 0评论数