一般是不建议禁止defender自动更新或者彻底关闭Defender的,但如果你有其他替代的安全方案了,觉得defender有干扰业务隐患,想干掉,那这篇文档非常适用。耗费了不少心血在server2016-2022和win10、win11上对比实践。
Win10我没试,适用Win11的方案基本是能搞定Win10的
Win10/Win11微软原本设计就是不让你干掉Defender的,微软告诉我的
代码语言:javascript复制Stop-Service WinDefend 2>&1 > $null
Stop-Service WinDefend -ErrorAction SilentlyContinue
执行这2句都报错
要解决这个问题其实简单,参考我这篇文档https://cloud.tencent.com/developer/article/old/2293494
但我要研究的是如何彻底干掉Windows Defender。
言归正传,介绍如何通过安全模式和提权彻底干掉Defender
0、配置自动登录在vnc操作会方便一些
CMD命令行
代码语言:javascript复制reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultUserName /t REG_SZ /d "Administrator" /f
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultPassword /t REG_SZ /d "密码" /f
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v AutoAdminLogon /t REG_SZ /d "1" /f
上面命令中的密码要具体化后再执行,要跟自己的密码匹配
配好自动登录后可以重启机器验证下自动登录的效果,然后用psexec或advancedrun提权到SYSTEM或TrustedInstaller在powershell执行如下命令
代码语言:javascript复制Stop-Service -name Sysmon 2>&1 > $null
Set-Service Sysmon -StartupType Disabled 2>&1 > $null
cmd /c "C:Windowssysmon.exe -u force" 2>&1 > $null
Stop-Service WdNisSvc 2>&1 > $null
Stop-Service WinDefend 2>&1 > $null
Stop-Service MpsSvc 2>&1 > $null
Stop-Service wscsvc 2>&1 > $null
Stop-Service SecurityHealthService 2>&1 > $null
Stop-Service Sense 2>&1 > $null
Stop-Service SSDPSRV 2>&1 > $null
Set-Service WdBoot -StartupType Disabled 2>&1 > $null
Set-Service WdFilter -StartupType Disabled 2>&1 > $null
Set-Service WdNisSvc -StartupType Disabled 2>&1 > $null
Set-Service WinDefend -StartupType Disabled 2>&1 > $null
Set-Service MpsSvc -StartupType Disabled 2>&1 > $null
Set-Service wscsvc -StartupType Disabled 2>&1 > $null
Set-Service SecurityHealthService -StartupType Disabled 2>&1 > $null
Set-Service Sense -StartupType Disabled 2>&1 > $null
Set-Service SSDPSRV -StartupType Disabled 2>&1 > $null
stop-service BaradAgentSvc 2>&1 > $null
stop-service StargateSvc 2>&1 > $null
stop-service YDLive 2>&1 > $null
stop-service YDService 2>&1 > $null
stop-service tatsvc 2>&1 > $null
stop-service WinAgent 2>&1 > $null
stop-service win-agent 2>&1 > $null
stop-service tsys 2>&1 > $null
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD /f
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows DefenderReal-Time Protection" /v DisableRealtimeMonitoring /t REG_DWORD /d 1 /f
Get-ScheduledTask -TaskPath "MicrosoftWindowsData Integrity Scan","MicrosoftWindowsApplicationData","MicrosoftWindowsDefrag","MicrosoftWindowsDiskCleanup","MicrosoftWindowsDiskDiagnostic","MicrosoftWindowsDiskFootprint","MicrosoftWindowsWindows Defender","MicrosoftWindowsMaintenance" 2>$null | Disable-ScheduledTask 2>$null
reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v "ClearPageFileAtShutdown" /d 0 /t REG_DWORD /f
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsSystem" -Name "EnableSmartScreen" -Value 0 -Type DWord -Force;
New-Item 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionAppHost' -Force
Set-ItemProperty -Path "HKCU:SOFTWAREMicrosoftWindowsCurrentVersionAppHost" -Name "EnableWebContentEvaluation" -Value 0 -Type DWord -Force
reg add "HKCUSOFTWAREMicrosoftWindowsCurrentVersionNotificationsSettingsWindows.SystemToast.SecurityAndMaintenance" /v "Enabled" /t REG_DWORD /d 0 /f
下面这段命令执行后,最最最终要复原下
代码语言:javascript复制Set-Service wuauserv -StartupType Disabled 2>&1> $null
Set-Service WpnService -StartupType Disabled 2>&1> $null
Set-Service smphost -StartupType Disabled 2>&1> $null
Set-Service Winmgmt -StartupType Disabled 2>&1> $null
Set-Service YDLive -StartupType Disabled 2>&1 > $null
Set-Service YDService -StartupType Disabled 2>&1 > $null
复原执行这个
代码语言:javascript复制Set-Service wuauserv -StartupType Automatic 2>&1> $null
Set-Service WpnService -StartupType Automatic 2>&1> $null
Set-Service smphost -StartupType Manual 2>&1> $null
Set-Service Winmgmt -StartupType Automatic 2>&1> $null
Set-Service YDLive -StartupType Automatic 2>&1 > $null
Set-Service YDService -StartupType Automatic 2>&1 > $null
那些执行报错的命令,先记下,在安全模式里再执行一遍,如果安全模式还不行,那就等后面文件夹和注册表提权后再执行一遍。
1、配置进安全模式
以管理员身份打开CMD命令行运行以下两条命令行开启高级选项
代码语言:javascript复制CMD命令行
bcdedit /set {default} advancedoptions on
bcdedit /set {default} recoveryenabled off
powershell命令行
cmd.exe /c "bcdedit /set {default} advancedoptions on"
cmd.exe /c "bcdedit /set {default} recoveryenabled off"
这样设置完,以后重启机器就会停在等待选择的界面
按4进入安全模式
2、这一步很关键,不能漏,修改C:ProgramDataMicrosoftWindows Defender的权限
参考这篇文档第2和第3步
https://blog.csdn.net/qq_34185638/article/details/127273044
属性 → 安全 → 高级 → 改变所有者 → Administrators(如下图) → 应用 → 是 → 是 → 确定 → 确定 → 确定
3、注册表命令设置defender相关的服务start为4(开机禁止启动)
代码语言:javascript复制reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSense" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWdBoot" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWdFilter" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWdNisDrv" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWdNisSvc" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinDefend" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSSDPSRV" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSecurityHealthService" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswscsvc" /v Start /t REG_DWORD /d 4 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMpsSvc" /v Start /t REG_DWORD /d 4 /f
代码语言:javascript复制sc.exe query SecurityHealthService
sc.exe query wscsvc
reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSecurityHealthService"|findstr /i Start
reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswscsvc"|findstr /i Start
4、配置退安全模式并重启机器
代码语言:javascript复制要反向步骤1的操作
cmd命令行操作执行
bcdboot c:windows
或者
bcdedit /set {default} advancedoptions off
bcdedit /set {default} recoveryenabled on
5、登录后提权注册表权限 → 删除注册表即删除服务(可以不删,因为重启后已经是禁用状态了,但如果要删服务,直接sc.exe delete servicename是删不了的,需要提权删注册表)
a.下载PsExec工具,拷贝到服务器上,例如C盘根目录,下载链接:PsExec - Windows Sysinternals | Microsoft Docs
b. 先确保当前会话所有的注册表编辑器关闭,以管理员权限打开cmd,运行命令加载system权限的regedit.exe:
代码语言:javascript复制PsExec.exe -i -s regedit.exe
c.以WinDefend为例介绍提权,在打开的注册表编辑器中,定位到:
代码语言:javascript复制HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinDefend
右击选择权限,然后按下图进行配置:
代码语言:javascript复制切记务必要勾选第六步的Replace all child object permission
d. 右击"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinDefend"注册表导出进行备份
e. 以管理员权限打开cmd,运行命令加载system权限的PowerShell:
代码语言:javascript复制psexec.exe -i -s powershell.exe
f. 在弹出的powershell窗口中运行如下命令删除WinDefend的注册表
代码语言:javascript复制Remove-Item -Path "HKLM:SYSTEMCurrentControlSetServicesWinDefend" 2>$null
或者
Remove-Item -Path "HKLM:SYSTEMCurrentControlSetServicesWinDefend" -Recurse -force -Confirm:0 2>$null
删除注册表后重启机器去服务列表查看Microsoft Defender Antivirus Service(WinDefend)已经消失了
如法炮制,也可以干掉Microsoft Defender Antivirus Network Inspection Service(WdNisSvc)
先提权,然后执行
代码语言:javascript复制Remove-Item -Path "HKLM:SYSTEMCurrentControlSetServicesWdNisSvc" 2>$null
或者
Remove-Item -Path "HKLM:SYSTEMCurrentControlSetServicesWdNisSvc"-Recurse -force -Confirm:0 2>$null
6、如果要删除C:ProgramDataMicrosoftWindows Defender(可以不删),第2步是必须的,
在提权后的cmd命令行执行命令
提权:
代码语言:javascript复制PsExec.exe -i -s cmd.exe
执行命令:
代码语言:javascript复制TAKEOWN /F "C:ProgramDataMicrosoftWindows Defender" /A /R /D Y 2>nul 1>nul
ICACLS "C:ProgramDataMicrosoftWindows Defender" /T /grant :r Administrators:F 2>nul 1>nul
RD /S /Q "C:ProgramDataMicrosoftWindows Defender" 2>nul 1>nul
以上三句不一定能全部删完,可能有其他服务占用该目录的文件,比如我就遇到过wuauserv、smphost、WpnService、Winmgmt、YD*等等
dir "C:ProgramDataMicrosoftWindows Defender"
哪个服务占用文件?我是用https://lockhunter.com/ 定位的,非常简单,安装后在文件上右击"What's locking this file?"即可
把那些占用文件的服务关闭后再删除就能删掉了
powershell停止服务
代码语言:javascript复制stop-service servicename,例如
stop-service wuauserv
stop-service smphost
stop-service WpnService
stop-service Winmgmt
stop-service YDLive
stop-service YDService
如果你关掉一个调用文件的服务又产生一个,总之,源源不断,那干脆再进一遍安全模式,在安全模式里试试干掉这个文件夹
进入安全模式要删除的时候报了这个
再退出安全模式正常进入系统又报了这个,就这一个文件,真难受
此时用lockhunter定位占用文件的服务,发现是WpnService
怪不得右下角老推送安全通知说安全中心未打开,干脆鼠标点击关闭所有安全通知
结合上面2个图,可以确定WpnService跟User Profile Service密切相关。反正目前就遇到了上面列的那些服务,干脆禁用掉遇到的这些服务再重启机器试试。
代码语言:javascript复制Set-Service wuauserv -StartupType Disabled 2>&1> $null
Set-Service WpnService -StartupType Disabled 2>&1> $null
Set-Service smphost -StartupType Disabled 2>&1> $null
Set-Service Winmgmt -StartupType Disabled 2>&1> $null
如此,这个文件夹终于全部删掉了。
然后再把调整的这几个服务复原。
代码语言:javascript复制Set-Service wuauserv -StartupType Automatic 2>&1> $null
Set-Service WpnService -StartupType Automatic 2>&1> $null
Set-Service smphost -StartupType Manual 2>&1> $null
Set-Service Winmgmt -StartupType Automatic 2>&1> $null
最终,彻底关闭WinDefend后,再执行这2句命令就不报错了,但这样太重了
并且,关闭Windows Defender Firewall可能会有其他问题,比如:关/禁防火墙mpssvc服务可能会影响notepad、mspaint、calc等小工具的使用
代码语言:javascript复制Stop-Service WinDefend 2>&1 > $null
Stop-Service WinDefend -ErrorAction SilentlyContinue
总之,安全模式搞掉Windows Defender好繁琐,即便搞掉了,可能也会带来其他问题,微软为了PC系统的安全性也是煞费苦心啊。
另外一种比较稳健的关闭defender办法
winpe在system用户级别把原系统SYSTEM注册表挂出来删掉services列表里的WdNisSvc和WinDefend,这样就删掉服务了,然后再在system用户级别把C:ProgramDataMicrosoftWindows Defender文件夹删掉。