0x01 defender安装
- 查看Defender是否正常运行
Get-Service -Name windefend
Status Name DisplayName
------ ---- -----------
Running windefend Microsoft Defender Antivirus Service
或者
C:\Windows\system32>sc query windefend
SERVICE_NAME: windefend
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
- 手动安装命令(管理员powershell)
Install-WindowsFeature -Name Windows-Defender
- 重启服务
无法通过管理员权限
对windefend服务进行启停操作
net restart windefend
- 关闭服务
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Value 1
0x02 配置Microsoft Defender 防病毒的自定义排除项
[Set-MpPreference|Remove-MpPreference|Add-MpPreference] [-ExclusionExtension|-ExclusionPath|-ExclusionProcess] "item"
Set-MpPreference -ExclusionExtension ".exe" 创建或覆盖排除项, 排除.exe结尾的
Remove-MpPreference -ExclusionExtension ".exe" 从列表中删除项
Add-MpPreference 添加到列表
-ExclusionPath 文件夹下的所有文件 (包括子目录中的文件) 或特定文件,不能排除磁盘
-ExclusionProcess 排除指定进程打开的任何文件
Add-MpPreference -ExclusionProcess "c:\internal\test.exe"
Add-MpPreference -ExclusionProcess "c:\internal\*" * (星号)替换任意数量的字符。
Add-MpPreference -ExclusionProcess "c:\*\test.exe" * (星号)替换任意数量的字符。
Add-MpPreference -ExclusionProcess "C:\MyFolder\MyProcess??.exe" “?” (问号)替换一个字符。如C:\MyFolder\MyProcess42.exe
Add-MpPreference -ExclusionProcess "%ALLUSERSPROFILE%\MyFolder\MyProcess.exe" 环境变量
Add-MpPreference -ExclusionProcess "MyProcess.exe" 任意文件夹下的可执行文件
- 查看排除项
C:\Windows\system32> Get-MpPreference | select ExclusionPath
ExclusionPath : {C:\Users\opaudit\Desktop\ProcessExplorer}
或者将 WDAVprefs 替换为要命名变量的任何标签:
$WDAVprefs = Get-MpPreference
$WDAVprefs.ExclusionProcess
0x03 手动执行扫描任务
- 先得找到
MpCmdRun.exe
可执行程序的路径,一般在C:\ProgramData\Microsoft\Windows Defender\Platform
路径下,可能存在好几个版本。执行快速扫描
.\MpCmdRun.exe -scan -ScanType 1
# 其他参数
#-ScanType 0:全盘扫描。这个选项会指示Windows Defender扫描计算机上的所有文件和程序,是最彻底的扫描方式。由于需要检查所有文件,所以这种扫描可能需要较长的时间。
#-ScanType 1:快速扫描。这个选项会指示Windows Defender只扫描系统中可能包含恶意软件的常见区域,如系统文件和正在运行的程序。这种扫描比全盘扫描快得多,但可能不会检测到所有类型的恶意软件。
# -ScanType 2:自定义扫描。使用这个选项时,你需要通过-File参数指定要扫描的特定文件或目录。例如,MpCmdRun.exe -Scan -ScanType 2 -File C:\path\to\your\folder会扫描指定的文件夹及其内容。
# -ScanType 3:快速扫描加上完整扫描。这个选项首先执行快速扫描,如果在快速扫描中发现了恶意软件,那么接下来会自动进行全盘扫描。
这种使用方式,不受 ScanAvgCPULoadFactor管理,目前看无法进行cpu限制
3.1 Start-MpScan
这个命令可以直接在命令参考使用
Start-MpScan -ScanType QuickScan
-ScanType FullScan|QuickScan|CustomScan
-ScanPath "C:\Users\YourUsername\Documents"
3.2 获取扫描结果
Get-MpThreatDetection | Where-Object { $_.InitialDetectionTime -ge "2024-03-28 16:08:27" } # 大于这个时间的
- 也可以重event事件中获取
Microsoft-Windows-Windows Defender
0x04 性能限制
4.1 关闭定时扫描任务
通过从任务计划中删除defender的定时扫描任务
- 定时任务执行的命令
./C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.24020.7-0\MpCmdRun.exe Scan -ScheduleJob -ScanTrigger 55 -IdleScheduledJob
- 使用命令停止该定时任务
Schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan" /Disable
- 查看该定时任务状态
Schtasks /Query /TN "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan"
Folder: \Microsoft\Windows\Windows Defender
TaskName Next Run Time Status
======================================== ====================== ===============
Windows Defender Scheduled Scan N/A Disabled
- 重新启用定时任务
Schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan" /Enable
通过Schtasks
命令禁用或启用定时扫描任务时,实际上是在控制下面这些配置所定义的任务是否被激活和执行
ScanOnlyIfIdleEnabled : True
ScanParameters : 1
ScanPurgeItemsAfterDelay : 15
ScanScheduleDay : 0
ScanScheduleOffset : 120
ScanScheduleQuickScanTime : 00:00:00
ScanScheduleTime : 02:00:00
SchedulerRandomizationTime : 4
ScanAvgCPULoadFactor
- 含义:此选项用于设置扫描时平均CPU负载因子的百分比。
- 作用:值
10
表示Windows Defender在扫描时会尝试限制其CPU使用率,不超过系统总CPU能力的10%。这有助于在保护系统的同时,避免因扫描过程中过度占用CPU资源而影响其他应用程序的性能。ScanOnlyIfIdleEnabled
- 含义:此选项用于控制是否仅在系统空闲时进行扫描。
- 作用:当设置为
True
时,表示Windows Defender将只在检测到系统处于空闲状态时执行扫描,以减少对用户活动的干扰。ScanParameters
- 含义:此选项用于设置扫描参数。
- 作用:值
1
通常表示执行快速扫描。不同的值可能代表不同类型的扫描,例如全盘扫描或自定义扫描。ScanPurgeItemsAfterDelay
- 含义:此选项用于设置在多少天后清除扫描隔离的项目。
- 作用:值
15
表示Windows Defender会在隔离项目后15天自动清除这些项目。ScanScheduleDay
- 含义:此选项用于设置计划扫描的日子。
- 作用:值
0
表示不按照特定的日子进行计划扫描。如果设置了具体的值(1到7),则代表在一周中的某一天执行计划扫描。ScanScheduleOffset
- 含义:此选项用于设置计划扫描的偏移时间(分钟)。
- 作用:值
120
表示计划扫描会在预定时间之后的120分钟内的某个随机时间点开始执行。ScanScheduleQuickScanTime
- 含义:此选项用于设置快速扫描的计划时间。
- 作用:
00:00:00
通常表示快速扫描没有特定的计划时间,可能会根据其他设置(如ScanOnlyIfIdleEnabled
)来决定执行时间。ScanScheduleTime
- 含义:此选项用于设置计划扫描的具体时间。
- 作用:
02:00:00
表示计划扫描会在夜间2点执行,这通常是为了在系统负载较低时进行扫描,减少对用户的干扰。SchedulerRandomizationTime
- 含义:此选项用于设置计划任务的随机化时间(小时)。
- 作用:值
4
表示计划任务的实际执行时间将在预定时间的基础上随机偏移最多4小时,以减少多台计算机同时执行任务时可能产生的资源冲突。
如果对ScanScheduleQuickScanTime
、ScanScheduleTime
这几个配置进行了修改,schedule就会重新启用
4.2 设置defender扫描任务的cpu 平均负责限制(设置不管用)
如果需要开启定时扫描,则需要通过设置如下参数对定时扫描进行cpu限制
它主要是用来控制计划扫描和全盘扫描时的CPU使用率。
Set-MpPreference -ScanAvgCPULoadFactor 10 # 值需要大于等于5
- 在组策略里面进行设置
本地策略管理 -> 计算机管理 -> 管理员模版-> windows组件 -> Microsoft Defender Antivirus
目前重启服务没有生效
限制 Windows Defender CPU 使用率 - Microsoft 社区中心
执行完全扫描时,Windows Defender 100% CPU 使用率 - Microsoft 社区
4.3 直接关闭空闲扫描任务
Set-MpPreference -ScanOnlyIfIdleEnabled 0
该选项关闭后, 定时任务会被直接删除
4.4 关闭defender服务
修改组策略配置
- 关闭反病毒
仅关闭这个配置,有时候服务还是会在运行中。
- 关闭实时保护和行为监控
PS C:\Users\Administrator> Get-Service -Name Windefend
Status Name DisplayName
------ ---- -----------
Stopped Windefend Microsoft Defender Antivirus Service