Windows Defender
Windows Defender(现通常显示为 Microsoft Defender Antivirus)是 Windows 内置的终端防护组件,负责对文件、进程、脚本、下载内容及部分运行时行为进行恶意软件检测和拦截。它通常与 Windows 安全中心、云保护、实时保护、篡改防护等能力配合使用。
从主机排查视角看,Defender 不只是“杀毒软件”,也是攻击者可能试图削弱或规避的安全边界。实时保护被关闭、云保护失效、检测历史被清理,以及防护排除项被异常扩大,均值得纳入调查范围。
排除项的作用
Defender 的排除项(Exclusions)用于指定不参与某些扫描或检测的对象,例如文件、目录、扩展名或进程。它有明确的正常用途:
- 开发、编译或数据库等高频读写场景可能需要降低扫描开销。
- 某些企业软件会为自身的缓存、数据或安装目录申请排除。
- 安全产品或运维工具可能需要避免与其他防护组件重复扫描。
但排除项会缩小 Defender 的可见范围。若某个目录被排除,攻击者一旦能向该目录写入文件,恶意载荷就可能试图借此降低被扫描发现的概率。
排除项不是关闭 Defender,也不能保证文件一定不会被其他安全能力、EDR 或云端检测发现;但它会削弱一道重要防线。排查时应尽快确认异常排除项的来源和影响范围。
常见的规避思路
部分木马或入侵脚本会滥用 PowerShell 的 Defender 管理命令,在投放或执行载荷前后尝试新增或覆盖排除路径。其意图通常不是让所有安全防护完全失效,而是为后续文件落地、解压、运行或更新选择一个较少被扫描的目录。
可以将这类链路概括为:
获得命令执行
↓
扩大 Defender 排除范围
↓
将文件写入被排除的位置
↓
执行、持久化或继续下载其他组件
特别需要关注将排除范围扩展到系统盘根目录、常见用户目录、ProgramData、Windows 目录或整个盘符的行为。这些位置覆盖面很大,通常难以用“仅服务于某个软件”的目的解释。
WDAC
WDAC(Windows Defender Application Control,现称 App Control for Business)是 Windows 的应用控制能力。它由代码完整性组件在程序、脚本、DLL 或驱动加载时应用策略,决定哪些代码允许运行。虽然名称中带有 Defender,但 WDAC 并不是 Defender Antivirus 的病毒扫描功能;它是独立的应用白名单和代码完整性控制边界。
传统的单策略部署通常使用:
C:\Windows\System32\CodeIntegrity\SiPolicy.p7b
支持多策略的系统还会将活动策略保存为:
C:\Windows\System32\CodeIntegrity\CiPolicies\Active\{PolicyId}.cip
因此,排查时不能只检查 SiPolicy.p7b。还应核对活动的 .cip 策略、企业管理平台下发记录,以及设备实际加载的策略列表。
滥用 WDAC 阻断安全工具
攻击在做什么
攻击者在获得管理员或 SYSTEM 权限后,可能生成、替换或下发一份恶意 WDAC 策略,将 EDR、杀毒软件、监控 Agent、更新程序或相关驱动加入拒绝规则。策略生效后,阻断动作由 Windows 代码完整性机制完成,看起来像是“系统不允许安全产品运行”,而不是恶意进程直接删除或修改安全产品。
这类攻击通常属于 防御规避(Impair Defenses / Disable or Modify Tools,MITRE ATT&CK T1562.001)。它的目标是制造监控盲区,为后续载荷执行、凭据访问、横向移动或持久化争取时间。
获得管理员或 SYSTEM 权限
↓
制作或取得包含恶意拒绝规则的 WDAC 策略
↓
通过本地策略文件、系统策略工具或企业管理通道部署
↓
策略刷新、服务重启或系统重启后生效
↓
EDR/Agent 的进程、DLL、脚本或驱动被代码完整性机制拒绝加载
↓
安全遥测中断,攻击者继续执行后续操作
常见的滥用方式包括:
- 替换传统策略文件
SiPolicy.p7b,或向CiPolicies\Active写入新的活动策略。 - 滥用
CiTool.exe、WDAC/ConfigCI PowerShell 模块、组策略、MDM 或其他受信任管理通道部署策略。 - 按路径、文件名、哈希、签名者或发布者构造拒绝规则,定向阻断安全产品及其更新组件。
- 同时限制用户态程序和内核驱动,使 Agent 服务即使仍被配置为自动启动,也因核心模块无法加载而失效。
- 在策略落地后主动停止安全服务、触发服务重启,或等待设备重启,使阻断效果暴露出来。
写入或激活 WDAC 策略通常需要高权限,因此发现这类行为时,不应只视为一次安全产品故障,而应假设主机可能已经发生高权限入侵。部分策略可以动态刷新,另一些规则要在进程、服务或系统重启后才完全体现;“文件刚被修改但 Agent 仍在线”不能排除攻击正在进行。
识别与调查要点
优先关注以下证据之间的时间关联:
SiPolicy.p7b或CiPolicies\Active\*.cip的创建、替换、重命名、时间戳变化和权限变化。CiTool.exe以及包含New-CIPolicy、ConvertFrom-CIPolicy、Merge-CIPolicy、Set-RuleOption等关键字的异常 PowerShell 活动。- 组策略、Intune/MDM 或其他配置管理平台的 WDAC 策略变更,特别是来源不明、未经审批或只针对少量终端的下发。
Microsoft-Windows-CodeIntegrity/Operational日志中的策略加载、刷新和代码阻断事件。常见的3076表示审计模式下本应阻断,3077表示强制模式下已阻断,3089可提供相关签名信息;事件含义可能随系统版本变化,应结合事件正文确认。- EDR/Agent 服务启动失败、驱动加载失败、心跳或遥测突然中断,并且同一时间出现代码完整性拒绝事件。
- 策略部署前后的高权限进程树、远程登录、服务控制、计划任务、下载和后续载荷执行。
拿到可疑策略后,应保留原文件并计算哈希,在隔离环境中转换或解析策略内容,重点检查:
- 策略 ID、基础策略与补充策略的关系,以及策略处于审计模式还是强制模式。
- 是否存在针对安全产品目录、可执行文件、服务程序、DLL、脚本宿主或驱动的拒绝规则。
- 策略的签名者、创建来源和部署时间是否与企业批准的基线一致。
- 同一策略是否已被下发到其他资产,以及其他终端是否出现相同的安全工具离线现象。
响应注意事项
不要在不了解策略类型和签名状态时直接删除 SiPolicy.p7b 或活动 .cip 文件。签名策略、UEFI 中保留的策略或由管理平台持续下发的策略可能无法通过简单删文件解除;错误操作还可能导致合法程序无法运行,严重时影响启动和远程处置。
建议先隔离终端并保全策略文件、代码完整性日志、进程树和管理平台审计记录,再通过企业批准的 WDAC 恢复流程撤销恶意策略。恢复后应验证 Defender、EDR 服务、驱动、更新组件和遥测链路均已正常,并继续调查攻击者取得高权限的入口及策略生效期间发生的其他行为。
可疑命令行特征
以下模式可用于在进程创建、PowerShell Script Block、EDR 命令行或 SIEM 日志中检索 Defender 排除路径相关行为:
.*Add-MpPreference -ExclusionPath.*\\Users\\Public\\.*
.*Add-MpPreference -ExclusionPath 'C:\\'.*
.*Set-MpPreference -ExclusionPath C:\\, D:\\, E:\\.*
.*Add-MpPreference -ExclusionPath.*\\ProgramData.*
(?i).*Set-MpPreference -ExclusionPath '?[A-Za-z]:\\(\*|(Program Files \(x86\)|Program Files|Users|Windows)\?\*?|)'
这些特征的关注点在于排除目标过宽,而不是 Add-MpPreference 或 Set-MpPreference 本身:
C:\、多个盘符或盘符根目录:可能让大范围文件避开扫描,风险很高。C:\Users、C:\Windows、C:\Program Files等顶级目录:覆盖大量系统和用户文件,通常不符合最小化排除原则。C:\Users\Public:该目录对多用户可写,常被滥用于共享或落地,应结合文件创建和执行行为重点核查。C:\ProgramData:许多软件在此存储数据,因此并非天然恶意;但它也是常见的持久化和载荷落地位置。Set-MpPreference -ExclusionPath:应注意其可能以新的路径列表覆盖现有配置,影响面可能大于追加单一路径的操作。
正则表达式需要按日志平台的字段、转义规则和大小写设置调整。建议先在测试数据上验证,避免因为反斜杠或引号转义差异漏报。
正常行为与异常行为的区别
正常软件通常仅为自身实际使用的、边界清晰的目录添加排除项,例如其专用缓存目录、数据库数据目录或受管理的安装目录。即使如此,也应存在可核验的软件来源、变更单、安装时间或管理策略。
相比之下,下面的情况更可疑:
| 观察项 | 相对正常的画像 | 需要优先调查的画像 |
|---|---|---|
| 排除范围 | 单一软件的专用目录 | 系统盘、多个盘符、Users、Windows 等大范围目录 |
| 发起进程 | 可信安装程序、受管运维工具 | 非预期的 powershell.exe、脚本宿主或用户目录程序 |
| 执行身份 | 管理员按变更流程执行 | 异常高权限账户、被入侵用户或远程会话账号 |
| 时间关系 | 与软件安装、升级或明确维护窗口一致 | 紧跟钓鱼、漏洞利用、可疑下载或横向移动之后 |
| 后续活动 | 对应软件在目录中写入预期文件 | 被排除目录出现脚本、可执行文件、服务、计划任务或外联 |
单个排除路径不构成恶意结论。企业管理策略、开发环境、备份软件和部分安全产品都可能进行合法配置。可靠研判应结合发起进程、完整命令行、账户、设备角色、变更记录及后续行为。
检测与调查
建议优先保留并关联以下数据:
- PowerShell 命令行和 Script Block 日志,尤其是
Add-MpPreference、Set-MpPreference、Remove-MpPreference。 - Defender 运营日志、Windows 安全中心事件及 EDR 的防护配置变更记录。
- 对应时间窗内的进程树、脚本来源、网络连接、下载文件和被排除目录内的文件创建事件。
- 管理员登录、远程会话、软件安装和企业配置管理(如 Intune、组策略)变更记录。
调查一个命中告警时,可按以下顺序收敛:
- 确认变更的是新增、删除还是覆盖排除路径,以及变更前后的完整配置。
- 确认发起进程、父进程、命令行、用户、权限和执行来源。
- 检查被排除目录在前后时间窗内新增的文件、启动项、计划任务、服务和网络连接。
- 对照资产负责人、软件清单、维护窗口和变更工单,验证是否存在合理业务背景。
- 若缺乏业务解释或同时存在可疑落地、执行、外联行为,按高优先级事件隔离和处置。
响应建议
对于未经授权且范围过宽的排除项,应先保留证据,再由具备权限的安全或系统管理员恢复到批准的配置。不要只删除一条排除记录就结束调查:还应检查该目录中是否已留下可执行文件、脚本、持久化机制或凭据访问痕迹。
如果确认发生入侵,处置重点应包括:隔离受影响终端、终止相关恶意进程、保全日志与可疑文件、清理持久化、重置可能暴露的凭据,并在恢复配置后复核 Defender 与其他终端防护的健康状态。