渗透基础——Windows Defender

发布于 2024-10-28 10:34:08 字数 8509 浏览 6 评论 0

0x00 前言

Windows Defender 是一款内置在 Windows 操作系统的杀毒软件程序,本文仅在技术研究的角度介绍 Windows Defender 相关的渗透方法,分析利用思路,给出防御建议。

0x01 简介

本文将要介绍以下内容:

  • 查看 Windows Defender 版本
  • 查看已存在的查杀排除列表
  • 关闭 Windows Defender 的 Real-time protection
  • 添加查杀排除列表
  • 移除 Token 导致 Windows Defender 失效
  • 恢复被隔离的文件

0x02 查看 Windows Defender 版本

1.通过面板查看

依次选择 Windows Security -> Settings -> AboutAntimalware Client Verions 为 Windows Defender 版本,如下图

Alt text

2.通过命令行查看

dir "C:\ProgramData\Microsoft\Windows Defender\Platform\" /od /ad /b

数字大的为最新版本

0x03 查看已存在的查杀排除列表

1.通过面板查看

依次选择 Windows Security -> Virus & theat protection settings -> Add or remove exclusions ,如下图

Alt text

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

参考资料: https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/prevent-changes-to-security-settings-with-tamper-protection?view=o365-worldwide

当开启 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 添加

利用条件:

  • 需要管理员权限

参考资料:

https://docs.microsoft.com/en-us/powershell/module/defender/add-mppreference?view=windowsserver2022-ps

Powershell 命令示例:

Add-MpPreference -ExclusionPath "C:\test"

补充:删除排除列表

Remove-MpPreference -ExclusionPath "C:\test"

0x06 移除 Token 导致 Windows Defender 失效

学习地址:

https://elastic.github.io/security-research/whitepapers/2022/02/02.sandboxing-antimalware-products-for-fun-and-profit/article/

简单理解:

  • 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 权限

测试如下图

Alt text

0x07 恢复被隔离的文件

参考资料:

https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/command-line-arguments-microsoft-defender-antivirus?view=o365-worldwide

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

眼泪也成诗

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

新人笑

文章 0 评论 0

mb_vYjKhcd3

文章 0 评论 0

小高

文章 0 评论 0

来日方长

文章 0 评论 0

哄哄

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文