u1timate
Published on 2024-09-14 / 28 Visits
0

defender命令行管理配置

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

image-20240328162603569

0x04 性能限制

4.1 关闭定时扫描任务

通过从任务计划中删除defender的定时扫描任务

image-20240328113037725

  • 定时任务执行的命令
./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

image-20240328113430741

  • 查看该定时任务状态
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小时,以减少多台计算机同时执行任务时可能产生的资源冲突。

如果对ScanScheduleQuickScanTimeScanScheduleTime这几个配置进行了修改,schedule就会重新启用

4.2 设置defender扫描任务的cpu 平均负责限制(设置不管用)

如果需要开启定时扫描,则需要通过设置如下参数对定时扫描进行cpu限制

它主要是用来控制计划扫描和全盘扫描时的CPU使用率。

Set-MpPreference -ScanAvgCPULoadFactor 10      # 值需要大于等于5
  • 在组策略里面进行设置
本地策略管理 -> 计算机管理 -> 管理员模版-> windows组件 -> Microsoft Defender Antivirus

image-20240328144708701

目前重启服务没有生效

限制 Windows Defender CPU 使用率 - Microsoft 社区中心

执行完全扫描时,Windows Defender 100% CPU 使用率 - Microsoft 社区

4.3 直接关闭空闲扫描任务

 Set-MpPreference -ScanOnlyIfIdleEnabled 0

image-20240329101740296

该选项关闭后, 定时任务会被直接删除

image-20240329101800071

4.4 关闭defender服务

修改组策略配置

  • 关闭反病毒

仅关闭这个配置,有时候服务还是会在运行中。

image-20240329102413615

  • 关闭实时保护和行为监控

image-20240329112650074

PS C:\Users\Administrator> Get-Service -Name Windefend

Status   Name               DisplayName
------   ----               -----------
Stopped  Windefend          Microsoft Defender Antivirus Service