渗透基础——Windows Defender
0x00 前言
Windows Defender 是一款内置在 Windows 操作系统的杀毒软件程序,本文仅在技术研究的角度介绍 Windows Defender 相关的渗透方法,分析利用思路,给出防御建议。
0x01 简介
本文将要介绍以下内容:
- 查看 Windows Defender 版本
- 查看已存在的查杀排除列表
- 关闭 Windows Defender 的 Real-time protection
- 添加查杀排除列表
- 移除 Token 导致 Windows Defender 失效
- 恢复被隔离的文件
0x02 查看 Windows Defender 版本
1.通过面板查看
依次选择 Windows Security
-> Settings
-> About
, Antimalware Client Verions
为 Windows Defender 版本,如下图
2.通过命令行查看
dir "C:\ProgramData\Microsoft\Windows Defender\Platform\" /od /ad /b
数字大的为最新版本
0x03 查看已存在的查杀排除列表
1.通过面板查看
依次选择 Windows Security
-> Virus & theat protection settings
-> Add or remove exclusions
,如下图
2.通过命令行查看
reg query "HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions" /s
3.通过 Powershell 查看
Get-MpPreference | select ExclusionPath
0x04 关闭 Windows Defender 的 Real-time protection
1.通过面板关闭
依次选择 Windows Security
-> Virus & theat protection settings
,关闭 Real-time protection
2.通过命令行关闭
利用条件:
- 需要 TrustedInstaller 权限
- 需要关闭 Tamper Protection
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection" /v "DisableRealtimeMonitoring" /d 1 /t REG_DWORD /f
注:
运行成功时,桌面右下角会弹框提示 Windows Defender 已关闭
补充 1:开启 Windows Defender 的 Real-time protection
利用条件:
- 需要 TrustedInstaller 权限
- 需要关闭 Tamper Protection
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection" /v "DisableRealtimeMonitoring" /f
补充 2:获得 TrustedInstaller 权限
可参考之前的文章 《渗透技巧——Token 窃取与利用》
也可以借助 AdvancedRun ,命令示例:
AdvancedRun.exe /EXEFilename "%windir%\system32\cmd.exe" /CommandLine '/c reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection" /v "DisableRealtimeMonitoring" /d 1 /t REG_DWORD /f' /RunAs 8 /Run
补充 3:Tamper Protection
当开启 Tamper Protection 时,用户将无法通过注册表、Powershell 和组策略修改 Windows Defender 的配置
开启 Tamper Protection 的方法:
依次选择 Windows Security
-> Virus & theat protection settings
,启用 Tamper Protection
该操作对应的 cmd 命令: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Features" /v "TamperProtection" /d 5 /t REG_DWORD /f
关闭 Tamper Protection 的方法:
依次选择 Windows Security
-> Virus & theat protection settings
,禁用 Tamper Protection
该操作对应的 cmd 命令: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Features" /v "TamperProtection" /d 4 /t REG_DWORD /f
,当然,我们无法通过修改注册表的方式去设置 Tamper Protection,只能通过面板进行修改
查看 Tamper Protection 的状态:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Features" /v "TamperProtection"
返回结果中的数值 5
代表开启,数值 4
代表关闭
补充 4:通过 Powershell 关闭 Windows Defender 的 Real-time protection
Set-MpPreference -DisableRealtimeMonitoring $true
注:新版本的 Windows 已经不再适用
补充 5:通过组策略关闭 Windows Defender 的 Real-time protection
依次打开 gpedit.msc
-> Computer Configuration
-> Administrative Templates
-> Windows Components
-> Microsoft Defender Antivirus
-> Real-time Protection
,选择 Turn off real-time protection
,配置成 Enable
注:新版本的 Windows 已经不再适用
0x05 添加查杀排除列表
1.通过面板添加
依次选择 Windows Security
-> Virus & theat protection settings
-> Add or remove exclusions
,选择 Add an exclusion
,指定类型
该操作等价于修改注册表 HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\
的键值,具体位置如下:
- 类型 File 对应注册表项 Paths
- 类型 Folder 对应注册表项 Paths
- 类型 File type 对应注册表项 Extensions
- 类型 Process 对应注册表项 Processes
2.通过命令行添加
利用条件:
- 需要 TrustedInstaller 权限
cmd 命令示例:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths" /v "c:\test" /d 0 /t REG_DWORD /f
3.通过 Powershell 添加
利用条件:
- 需要管理员权限
参考资料:
Powershell 命令示例:
Add-MpPreference -ExclusionPath "C:\test"
补充:删除排除列表
Remove-MpPreference -ExclusionPath "C:\test"
0x06 移除 Token 导致 Windows Defender 失效
学习地址:
简单理解:
- Windows Defender 进程为 MsMpEng.exe
- MsMpEng.exe 是一个受保护的进程(Protected Process Light,简写为 PPL)
- 非 PPL 进程无法获取 PPL 进程的句柄,导致我们无法直接结束 PPL 进程 MsMpEng.exe
- 但是我们能够以 SYSTEM 权限运行的线程修改进程 MsMpEng.exe 的 token
- 当我们移除进程 MsMpEng.exe 的所有 token 后,进程 MsMpEng.exe 无法访问其他进程的资源,也就无法检测其他进程是否有害,最终导致 Windows Defender 失效
POC 地址: https://github.com/pwn1sher/KillDefender
利用条件:
- 需要 System 权限
测试如下图
0x07 恢复被隔离的文件
参考资料:
1.定位 MpCmdRun
dir "C:\ProgramData\Microsoft\Windows Defender\Platform\" /od /ad /b
得到 <antimalware platform version>
MpCmdRun 的位置为: C:\ProgramData\Microsoft\Windows Defender\Platform\<antimalware platform version>
2.常用命令
查看被隔离的文件列表:
MpCmdRun -Restore -ListAll
恢复指定名称的文件至原目录:
MpCmdRun -Restore -FilePath C:\test\mimikatz_trunk.zip
恢复所有文件至原目录:
MpCmdRun -Restore -All
查看指定路径是否位于排除列表中:
MpCmdRun -CheckExclusion -path C:\test
0x08 防御建议
阻止通过命令行关闭 Windows Defender:开启 Tamper Protection
阻止通过移除 Token 导致 Windows Defender 失效:阻止非 PPL 进程修改 PPL 进程 MsMpEng.exe 的 token,工具可参考: https://github.com/elastic/PPLGuard
0x09 小结
本文在仅在技术研究的角度介绍 Windows Defender 相关的渗透方法,分析利用思路,给出防御建议。对于移除 Token 导致 Windows Defender 失效的利用方法,可能会在未来版本的 Windows 中默认解决这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论