跳到主要内容

安全产品致盲

“安全产品致盲”不是单指结束杀毒进程,而是攻击者让防护体系看不见、报不出、传不上去或无法处置的一组动作。目标可能是 AV、EDR、日志、云端信誉、更新服务、网络传感器,也可能是它们之间的通信链路。

先说结论:

关闭进程只是最显眼的一种
更隐蔽的致盲会保留进程外观
却让采集、检测、上报、更新或响应能力失效

因此,“安全软件进程还在”不等于安全产品健康。

能力链

可以把终端安全产品抽象成五个连续环节:

传感器采集

本地分析与策略执行

事件缓存和日志记录

网络上报与云端判定

响应、隔离与恢复

攻击者只需破坏其中一个关键环节,就可能制造检测缺口。例如驱动仍在但用户态服务无法读取事件;服务仍在但证书、代理或防火墙规则阻断上报;控制台仍显示设备在线,但策略和病毒库长期无法更新。

常见手法

停止或终止组件

最直接的方式是终止进程、停止服务、禁用驱动或改变启动类型。优点是见效快,缺点是痕迹明显,容易触发自保护和看门狗。

高价值检测点包括:

  • 非产品自身进程打开安全进程的终止权限。
  • 服务停止、启动类型变化与提权事件紧邻。
  • 安全进程反复退出和重启。
  • 驱动卸载、设备对象消失或系统重启后组件未恢复。

篡改配置与策略

攻击者可能关闭实时防护、排除特定路径或进程、降低日志级别、禁用防篡改、改变扫描范围,或者利用应用控制和软件限制策略反向禁止安全组件启动。

这种方式比直接杀进程更隐蔽,因为系统可能认为它只是在执行一项“管理员策略”。判断关键是:谁改的、从哪里改的、是否经过受管控制面,以及策略目标是否集中指向安全工具。

反用 SRP 禁止安全组件启动

SRP(Software Restriction Policies,软件限制策略)本来用于企业管控软件运行,但高权限攻击者也可能反向利用它,把安全产品组件加入禁止运行规则。需要重点关注的策略位置是:

HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers

可以把相关结构抽象理解为:

CodeIdentifiers
├── DefaultLevel
├── PolicyScope
├── TransparentEnabled
├── 0\Paths\{Rule-GUID}
│ ├── ItemData
│ ├── SaferFlags
│ ├── Description
│ └── LastModified
└── 262144\Paths\{Rule-GUID}

其中 0 通常表示 Disallowed 规则级别,262144 是十进制的 0x40000,对应 Unrestricted。ItemData 记录被规则命中的文件或目录路径,常见目标可能是安全软件 EXE、服务程序、更新器或安装目录。

研判时不能只看单独一个 SaferFlags 就判断规则语义,应结合父级安全级别、规则类型、ItemDataDefaultLevel 和策略来源一起看。还要注意,.sys 路径出现在 SRP 规则里,并不等于所有 Windows 版本、所有启动阶段都会阻止驱动加载;最终效果还会受到服务配置、代码完整性、WDAC、HVCI 和启动时序影响。

这类致盲链路可以抽象为:

获得管理员或 SYSTEM 权限

枚举安全产品目录和关键组件

在 0\Paths\{GUID} 下创建限制规则

ItemData 指向安全软件 EXE、更新器、服务程序或目录

策略刷新,或等待服务 / 主机重启

安全组件后续启动时被系统策略拒绝

几个边界要一起记住:修改 HKLM 下策略通常需要高权限;已经运行的组件不一定立即退出,效果可能在服务重启、产品升级或主机重启后才暴露;域 GPO、MDM 或配置管理平台可能覆盖本地篡改;目录级规则影响范围大,但也更容易受到安装路径、升级路径和重解析点影响;安全产品防篡改、WDAC 和应用控制策略会改变最终结果。

检测时可以重点关联:

非受管进程写入 Safer\CodeIdentifiers
+
新增或修改 0\Paths\{GUID}\ItemData
+
目标命中安全产品路径
+
策略刷新、服务重启或安全组件启动失败

建议采集修改进程、用户、完整性级别、父进程和来源;记录新旧注册表值、规则 GUID、父级安全级别和规范化后的 ItemData 路径;统计短时间创建的规则数量和涉及的安全厂商数量;再关联后续策略刷新、服务重启、启动失败、更新停止和中心心跳下降。还应比较本地策略与域 GPO、MDM、配置管理平台之间是否出现漂移。

正常管理员也可能通过 GPO 或 MDM 限制软件运行,收敛误报时应先核对策略来源、操作者、维护窗口和审批工单;再判断 ItemData 是否集中命中 EDR、AV、日志代理、更新器或恢复工具;关注短时间创建多个随机 GUID、覆盖多家安全产品的批量特征;最后结合安全服务启动失败、策略或特征停止更新、中心心跳中断来确认影响。即使写入者是微软签名白进程,只要本地策略偏离受管基线,也不能直接放行。

阻断更新、信誉与遥测

通过防火墙、代理、DNS、hosts、路由或证书配置阻断安全产品访问云端,可以让它无法更新特征、查询信誉、上传事件或接收响应命令。

此时终端上的 UI 可能仍然正常,但会出现:

  • 病毒库、引擎或策略版本长期落后。
  • 控制台心跳间歇或只有部分通道在线。
  • 本地事件存在,中心平台缺失。
  • 对更新和信誉域名的解析或 TLS 连接持续失败。

破坏文件、注册信息与依赖

删除、替换、重命名组件,修改 ACL 或所有者,破坏注册表和 WMI 状态,都可能让产品无法启动或升级。攻击者也可能只破坏某个关键依赖,使故障看起来像普通软件损坏。

对已签名组件的修改通常会破坏签名;但攻击者可以替换配置、侧加载依赖或改变加载路径,因此需要同时校验文件完整性和模块加载。

干预用户态监控

部分攻击会在进程内取消 Hook、绕过用户态拦截、直接使用更底层接口,或让恶意代码运行在传感器覆盖不足的宿主中。此类动作不一定“关闭 EDR”,而是让特定行为绕过采集。

如果同一事件在内核遥测、ETW、系统日志和产品日志之间出现矛盾,应考虑采集路径被绕过或受损,而不是简单认为“行为没有发生”。

滥用高权限驱动

合法签名但存在已知漏洞的驱动可能被用来获得内核读写能力,随后针对安全进程、回调、驱动和受保护进程实施更强干预。常见概念是 BYOVD。

这类风险的关键不只是“加载了一个签名驱动”,而是:

  • 驱动是否在已知易受攻击驱动清单中。
  • 谁在什么路径释放并加载它。
  • 加载后安全组件是否立即异常。
  • 系统是否启用了易受攻击驱动阻止规则和 HVCI。

日志与审计致盲

攻击者可能停止日志服务、修改审计策略、清除特定日志、缩短保留、破坏转发或制造大量噪声。成熟攻击更可能只削弱与后续动作相关的日志,而不是清空所有内容。

判断时应比较本地日志、中心转发、网络侧记录和身份平台事件。单点日志缺失可能是故障,多源数据在同一时刻共同断层才更有说服力。

规避扫描而不关闭产品

排除项、受信任路径、合法签名宿主、白加黑、内存执行和安装扩展都可能让安全产品保持运行,却不再检查关键载荷。这属于信任链滥用,和直接停用工具一样应归入防御削弱。

LSASS 或高权限进程注入致盲

部分木马会尝试把代码写入 lsass.exewinlogon.exeservices.exesvchost.exe 等高权限或长期运行进程。这里需要区分两种目的:

访问 LSASS
→ 凭据、令牌或认证材料获取

注入安全相关 / 高权限宿主
→ 借用进程上下文、隐藏载荷或绕过部分用户态监控

注入本身不一定直接“关闭”安全产品,但可能通过以下方式形成致盲效果:

  • 让恶意逻辑运行在安全产品较少重点关注的合法进程上下文中;
  • 借助高权限进程访问安全组件、策略和受保护资源;
  • 通过进程内执行、内存加载或线程控制,减少独立恶意进程暴露;
  • 干扰用户态 Hook、事件采集或安全产品与目标进程之间的观测链路;
  • 为后续停止服务、修改策略或加载驱动提供更高权限。

现代 Windows 对 lsass.exe 等目标可能启用 PPL、Credential Guard 等保护,因此注入未必成功。检测时应同时关注成功和失败事件:攻击者反复申请 PROCESS_VM_WRITEPROCESS_CREATE_THREADPROCESS_DUP_HANDLE 等访问权限,即使最终返回拒绝,也能说明其正在尝试突破高价值进程边界。

重点关联:

提权 / 启用 SeDebugPrivilege
→ NtOpenProcess(LSASS 或其他高权限进程)
→ VirtualAllocEx / NtWriteVirtualMemory
→ APC、远程线程或线程上下文修改
→ 安全服务、遥测或后续防护能力异常

不能仅凭 OpenProcess(lsass.exe) 判定“安全产品被致盲”,需要查看目标进程是否为安全组件宿主、是否发生实际内存执行,以及之后是否出现采集缺失、告警不上报或保护策略失效。

白驱动与 BYOVD 致盲

BYOVD(Bring Your Own Vulnerable Driver)是攻击者携带合法签名但存在已知漏洞、设计缺陷或过高权限接口的驱动,并利用它获得内核级操作能力。与普通用户态注入相比,BYOVD 的危险之处在于它可能直接干预安全产品依赖的内核边界:

释放或加载异常驱动
→ 与驱动设备对象通信
→ 获取内核读写或进程操作能力
→ 终止 / 挂起安全进程、修改回调或绕过保护
→ 关闭、削弱或伪造安全产品状态

可能的致盲目标包括:

  • 安全产品用户态服务和 Agent;
  • 安全产品驱动、设备对象和内核回调;
  • 受保护进程、进程句柄和线程控制;
  • ETW、日志、文件过滤和网络过滤相关能力;
  • EDR 自保护、隔离和响应模块。

常见线索包括 NtLoadDriver、服务注册、异常 .sys 文件、驱动设备对象创建,以及驱动加载后安全服务或遥测突然中断。需要注意,“签名有效”只说明驱动满足某种签名校验,不等于驱动安全;应结合驱动哈希、厂商、版本、漏洞状态、加载路径和使用时序判断。

检测重点:

  • 用户目录、临时目录或随机路径释放并加载驱动;
  • 非正常安装、更新或硬件管理流程触发驱动加载;
  • 驱动加载后短时间内出现安全进程终止、句柄异常或遥测断层;
  • 驱动不在企业软件清单、易受攻击驱动阻止策略或批准的硬件驱动范围内;
  • 同一进程同时完成提权、驱动加载、服务操作和安全产品配置修改。

如果怀疑内核边界已被破坏,不应只依赖被影响主机上的用户态日志,应结合内核日志、驱动清单、网络侧心跳、中心平台接收情况和离线取证进行确认。

为什么木马会写入 Program Files

木马在完成提权后,有时会把自身或组件写入 C:\Program FilesC:\Program Files (x86) 或其子目录。常见动机不是“Program Files 天然安全”,而是利用它的目录外观、权限和软件生态:

伪装成已安装软件

Program Files 是用户和管理员习惯认可的软件安装位置。木马可以创建看似正常的产品目录、版本目录和组件结构,让文件更像正式安装的软件,降低人工排查时的异常感。

利用高权限和安装语义

普通用户通常不能直接向 Program Files 写入文件。木马选择该路径,往往说明它已经获得管理员、SYSTEM 或安装服务上下文,或者借助了一个本来就具备安装权限的进程。

因此,下面的组合比“文件位于 Program Files”本身更有价值:

提权 / 令牌操纵
→ 创建 Program Files 子目录
→ 写入 EXE、DLL、配置或驱动
→ 创建服务、计划任务或启动项

借用软件目录和加载关系

木马可能把黑 DLL、配置或后续模块放入某个软件目录,利用白加黑、DLL 搜索顺序或插件机制启动。也可能伪造软件名称、版本信息和目录层级,使进程路径看起来像合法产品。

降低清理和重启后的不确定性

相较于随机临时目录,Program Files 下的文件更可能被安装逻辑、服务、升级器或计划任务长期保留。木马还可能把主模块、配置、更新组件和备用载荷分开放置,形成持久化和恢复链。

不能把路径当作信任凭证

Program Files 不会自动赋予文件签名、白名单身份或系统信任。以下情况仍然应高度关注:

  • 目录由用户目录进程、脚本解释器或异常安装程序创建;
  • 文件没有有效签名,或签名者与产品目录不匹配;
  • 原始文件名、产品名、版本信息与路径不一致;
  • 同目录出现未签名 DLL、异常配置或刚落地的驱动;
  • 文件写入后立即创建服务、计划任务、C2 连接或进程注入;
  • 目录名称仿冒知名软件,但缺少完整安装文件和正常升级关系。

检测时应记录创建者、写入权限、父子进程、文件时间线、签名、哈希、模块加载和持久化关系,而不是简单把 Program Files 加入白名单。

抽象案例

反向利用软件限制策略

某个已取得高权限的进程没有终止任何安全软件,而是在系统策略区域创建多条“禁止运行”规则,目标集中指向若干安全产品的程序目录、服务组件和驱动路径。随后它触发策略刷新。

短期内,正在运行的部分组件可能看起来正常;但在服务重启、产品升级或主机重启后,系统会按策略拒绝相应组件加载。其危险之处在于,拦截动作由 Windows 自己执行,安全软件可能只表现为启动失败。

防守侧应关注:

  • 非域策略引擎、非受管工具直接修改软件限制或应用控制策略。
  • 短时间内批量写入多个安全厂商路径。
  • 策略写入后紧跟强制刷新、服务重启或系统重启。
  • 本地策略与域控制面、变更记录不一致。

阻断云端但保留本地外观

另一个场景中,攻击者新增出站阻断规则,只针对系统更新、安全产品更新和云端信誉地址。安全界面仍显示“实时保护已开启”,但特征更新停滞,未知文件无法查询信誉,告警也不能及时上传。

这类情况需要从网络控制面检查规则创建者、目标域名或服务、规则生效时间,并与终端最后更新时间和最后上报时间关联。

提权后的组合清场

更完整的攻击链可能是:

获得管理员 / SYSTEM

枚举安全产品、服务、驱动和更新通道

选择停用、策略封禁、网络阻断或驱动干预

确认告警和自保护是否失效

再执行凭据访问、持久化、横向移动或数据外传

所以安全产品异常往往不是孤立故障,而是提权之后、核心恶意动作之前的“清场”阶段。

检测框架

看“健康度”而不只看进程

安全产品健康度至少应覆盖:

层面检查项
进程与服务运行状态、退出原因、自保护、启动类型
驱动与传感器加载状态、版本、回调或事件是否持续产生
策略来源、版本、关键开关、排除项、最近修改者
内容更新引擎、规则、病毒库和易受攻击驱动清单版本
网络心跳、事件上传、信誉查询、更新通道
数据质量事件速率、字段完整性、时间连续性、跨源一致性
响应隔离、查杀、远程命令和回滚是否可用

高风险关联

以下时序组合应优先升级:

  • 提权成功后立即枚举并修改安全产品。
  • 用户可写目录进程修改系统级防护策略。
  • 安全产品排除项新增后,同一路径马上出现新载荷。
  • 异常驱动加载后,安全服务、日志或网络心跳消失。
  • 防火墙、代理或 DNS 变化只影响安全与更新基础设施。
  • 本地仍有事件,中心平台在同一时刻停止接收。
  • 多家安全产品或多个组件被同一进程批量针对。

基线与误报

管理员、软件升级、故障修复和企业策略部署也会改变安全产品。收敛误报时应核对:

  • 变更是否来自批准的管理平台或签名脚本。
  • 是否有工单、维护窗口和对应操作者。
  • 策略是否由域或 MDM 下发,而不是终端本地私建。
  • 修改是否与正常升级版本、官方卸载流程一致。
  • 动作之后是健康恢复,还是传感器和上报持续下降。

不要用静态进程白名单过滤全部管理工具。合法工具被非预期父进程、非预期账户或非维护窗口调用,同样值得检查。

调查与处置

调查顺序

  1. 确认异常是单个组件故障、网络中断,还是多层能力同时失效。
  2. 以最后正常心跳和第一条异常为时间锚点,查找提权、策略、服务、驱动和网络变化。
  3. 对比本地与中心日志,确定是“没采到”还是“采到了但没传上去”。
  4. 查明修改主体、父进程、用户、令牌、落地文件和远程来源。
  5. 检查致盲之后发生的凭据访问、注入、持久化、横向移动和外传。
  6. 从可信介质或受管控制面恢复策略与组件,并验证端到端遥测和响应能力。

处置原则

  • 不要只手工重启安全服务;如果策略、驱动或网络阻断仍在,服务会再次失效。
  • 不要只删除最初载荷;致盲通常为后续动作服务,必须扩大时间线和影响范围。
  • 恢复前保存策略、注册表、驱动、日志和网络配置证据。
  • 若内核或产品自保护可能已被破坏,优先隔离主机并从可信环境取证。
  • 恢复后验证事件采集、中心上报、策略更新、信誉查询和远程响应,而不只是看 UI 变绿。

缓解

  • 启用防篡改、HVCI 和易受攻击驱动阻止规则,并保持系统与产品更新。
  • 把安全产品配置纳入受管控制面,监控本地策略与中心策略漂移。
  • 对安全服务、驱动、策略、排除项和防火墙规则建立独立审计。
  • 让关键日志实时转发到终端之外,避免主机失陷后唯一证据被清除。
  • 使用独立网络监控验证终端遥测通道,发现“进程在线但数据消失”。
  • 限制本地管理员,保护产品卸载口令、管理令牌和部署凭据。
  • 对白加黑、CustomAction 和其他合法宿主保留行为分析,避免签名即全信任。

ATT&CK 对照

Technique适用含义
T1562.001 Disable or Modify Tools停止、修改、绕过或破坏安全工具
T1562.002 Disable Windows Event Logging停止或削弱 Windows 事件记录
T1562.004 Disable or Modify System Firewall篡改防火墙以阻断安全通道或放行攻击流量
T1562.006 Indicator Blocking阻止或修改遥测、日志与检测所需信息
T1070 Indicator Removal清除日志、文件或其他入侵痕迹

具体标签应跟随证据选择。例如新增防火墙规则以阻断安全云端时,可同时考虑防火墙修改和工具削弱;不要为了覆盖面把所有子技术都机械打上。

小结

安全产品致盲的本质,是破坏安全能力链,而不一定让安全软件消失。最危险的状态往往是:

进程还在
界面正常
但传感器不采、策略不执行、事件不上报、特征不更新

因此检测和恢复都必须从进程状态扩展到驱动、策略、日志、网络、数据质量和响应闭环,并把致盲前后的提权与后续攻击行为串成完整时间线。