Windows 的经过身份验证的扫描
适用于:
重要
此功能将于 2025 年 11 月底弃用,超过该日期后将不受支持。 有关此更改的详细信息,请参阅 Windows 身份验证扫描弃用常见问题解答。
通过 Windows 的身份验证扫描可以在非托管 Windows 设备上运行扫描。 你可以通过 IP 范围或主机名远程定位,并通过提供Microsoft Defender 漏洞管理凭据来远程访问设备来扫描 Windows 服务。 配置后,将定期扫描目标非托管设备是否存在软件漏洞。 默认情况下,扫描将每四小时运行一次,其中包含更改此间隔的选项或仅运行一次。
注意
若要使用此功能,需要Microsoft Defender 漏洞管理独立版,或者如果你已经是计划 2 Microsoft Defender for Endpoint 客户,Defender 漏洞管理加载项。
然后,安全管理员可以在Microsoft Defender门户中查看最新安全建议并查看最近发现的目标设备的漏洞。
提示
你知道可以免费试用Microsoft Defender 漏洞管理中的所有功能吗? 了解如何 注册免费试用版。
扫描程序安装
与 网络设备 经过身份验证的扫描类似,需要安装扫描程序的扫描设备。 如果尚未安装扫描程序,请参阅 安装扫描程序 ,了解如何下载和安装扫描程序。
注意
预先存在的已安装扫描程序无需更改。
先决条件
以下部分列出了配置对 Windows 使用经过身份验证的扫描所需的先决条件。
扫描帐户
需要扫描帐户才能远程访问设备。 这必须是 组托管服务帐户 (gMsa) 。
注意
建议 gMSA 帐户是仅具有所需扫描权限的最小特权帐户,并且设置为定期循环使用密码。
若要创建 gMsa 帐户,请执行以下操作:
在 PowerShell 窗口中的域控制器上,运行:
New-ADServiceAccount -Name gmsa1 -PrincipalsAllowedToRetrieveManagedPassword scanner-win11-i$ -KerberosEncryptionType RC4, AES128, AES256 -Verbose
- gmsa1 代表要创建的帐户的名称,scanner-win11-I$ 代表运行扫描程序代理的计算机名称。 只有这台计算机才能检索帐户密码。 可以提供以逗号分隔的计算机列表。
- 可以使用 Get-ADServiceAccount 和 Set-ADServiceAccount 修改现有帐户
若要安装 AD 服务帐户,请在扫描程序代理将使用提升的 PowerShell 窗口运行的计算机上运行:
Install-ADServiceAccount -Identity gmsa1
如果 PowerShell 无法识别这些命令,则可能意味着缺少所需的 PowerShell 模块。 有关如何安装模块的说明因操作系统而异。 有关详细信息,请参阅使用组托管服务帐户入门。
要扫描的设备
使用下表获取有关所需配置的指导,以及扫描帐户在要扫描的每台设备上所需的权限:
注意
以下步骤只是在每台设备上配置要扫描的权限并使用“性能监视器用户组”的建议方法之一。 还可以通过以下方式配置权限:
- 将帐户添加到另一个用户组,并授予该组所需的所有权限。
- 向扫描帐户显式授予这些权限。
若要配置权限并将其应用于使用组策略扫描的一组设备,请参阅 使用组策略配置一组设备。
要扫描的设备要求 | 说明 |
---|---|
已启用 Windows Management Instrumentation (WMI) | 若要启用远程 Windows Management Instrumentation (WMI) :
|
扫描帐户是性能监视器用户组的成员 | 扫描帐户必须是要扫描的设备上性能监视器用户组的成员。 |
性能监视器用户组对根/CIMV2 WMI 命名空间具有“启用帐户”和“远程启用”权限 | 若要验证或启用这些权限,请执行以下操作:
|
性能监视器用户组应具有 DCOM 操作的权限 | 若要验证或启用这些权限,请执行以下操作:
|
使用组策略配置一组设备
使用组策略,可将所需的配置以及扫描帐户所需的权限批量应用于要扫描的一组设备。
在域控制器上执行以下步骤,同时配置一组设备:
步骤 | 说明 |
---|---|
创建新的组策略对象 |
|
启用 Windows Management Instrumentation (WMI) | 若要启用远程 Windows Management Instrumentation (WMI) :
|
允许 WMI 通过防火墙 | 若要允许 Windows Management Instrumentation (WMI) 通过防火墙,
|
授予执行 DCOM 操作的权限 | 若要授予执行 DCOM 操作的权限,请执行以下操作:
|
通过组策略运行 PowerShell 脚本,向 Root\CIMV2 WMI 命名空间授予权限: |
|
PowerShell 脚本示例
使用以下 PowerShell 脚本作为起点,通过组策略向 Root\CIMV2 WMI 命名空间授予权限:
Param ()
Process {
$ErrorActionPreference = "Stop"
$accountSID = "S-1-5-32-558" # Performance Monitor Users built-in group, please change or pass parameter as you wish
$computerName = "."
$remoteparams = @{ComputerName=$computerName}
$invokeparams = @{Namespace="root\cimv2";Path="__systemsecurity=@"} + $remoteParams
$output = Invoke-WmiMethod @invokeparams -Name GetSecurityDescriptor
if ($output.ReturnValue -ne 0) {
throw "GetSecurityDescriptor failed: $($output.ReturnValue)"
}
$acl = $output.Descriptor
$CONTAINER_INHERIT_ACE_FLAG = 0x2
$ACCESS_MASK = 0x21 # Enable Account + Remote Enable
$ace = (New-Object System.Management.ManagementClass("win32_Ace")).CreateInstance()
$ace.AccessMask = $ACCESS_MASK
$ace.AceFlags = $CONTAINER_INHERIT_ACE_FLAG
$trustee = (New-Object System.Management.ManagementClass("win32_Trustee")).CreateInstance()
$trustee.SidString = $accountSID
$ace.Trustee = $trustee
$ACCESS_ALLOWED_ACE_TYPE = 0x0
$ace.AceType = $ACCESS_ALLOWED_ACE_TYPE
$acl.DACL += $ace.psobject.immediateBaseObject
$setparams = @{Name="SetSecurityDescriptor";ArgumentList=$acl.psobject.immediateBaseObject} + $invokeParams
$output = Invoke-WmiMethod @setparams
if ($output.ReturnValue -ne 0) {
throw "SetSecurityDescriptor failed: $($output.ReturnValue)"
}
}
将 GPO 策略应用于设备后,将应用所有必需的设置,并且 gMSA 帐户将能够访问和扫描设备。
配置新的经过身份验证的扫描
若要配置新的经过身份验证的扫描,请执行以下操作:
在Microsoft Defender门户中转到“设置>”“设备发现>经过身份验证的扫描”。
选择 “添加新扫描 ”,然后选择“ Windows 身份验证扫描 ”,然后选择“ 下一步”。
输入 扫描名称。
选择 扫描设备: 用于扫描非托管设备的已载入设备。
输入 目标 (范围) : 要扫描的 IP 地址范围或主机名。 可以输入地址或导入 CSV 文件。 导入文件将覆盖任何手动添加的地址。
选择 “扫描间隔”: 默认情况下,扫描将每四小时运行一次,你可以通过选择“不重复”来更改扫描间隔或只运行一次。
选择 身份验证方法 - 有两个选项可供选择:
- Kerberos (首选)
- 谈判
注意
如果 Kerberos 失败,协商选项将回退到 NTLM。 不建议使用 NTLM,因为它不是安全协议。
输入Microsoft Defender 漏洞管理将用于远程访问设备的凭据:
- 使用 azure KeyVault: 如果在 Azure KeyVault 中管理凭据,则可以输入 Azure KeyVault URL 和 Azure KeyVault 机密名称,供扫描设备访问以提供凭据
- 对于 Azure KeyVault 机密值,请使用格式为“域”的 gMSA 帐户详细信息;用户名
选择“ 下一步 ”以运行或跳过测试扫描。 有关测试扫描的详细信息,请参阅 扫描和添加网络设备。
选择“ 下一步 ”查看设置,然后选择“ 提交 ”以创建新的经过身份验证的扫描。
注意
由于经过身份验证的扫描程序当前使用的加密算法不符合 联邦信息处理标准 (FIPS) ,因此当组织强制使用符合 FIPS 的算法时,扫描程序无法运行。
若要允许不符合 FIPS 的算法,请在注册表中为运行扫描程序的设备设置以下值:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy 具有名为 Enabled 的 DWORD 值,值为 0x0
符合 FIPS 的算法仅用于美国联邦政府的部门和机构。
Windows API 的经过身份验证的扫描
可以使用 API 创建新的扫描并查看组织中所有现有配置的扫描。 有关更多信息,请参阅: