为了回避侦测,黑客通常会无所不用其极地瘫痪杀毒软件及EDR的运行,其中一种最常见的手法被称作自带驱动程序(BYOVD),黑客携带存在弱点的合法驱动程序,借此在受害计算机提升权限,然而有研究人员发现,他能通过窗口操作系统内置的工具来达到类似目的,而无需设法植入驱动程序,或是找到计算机上存在弱点的内置驱动程序加以利用,就能让端点防护机制无法正常运行。
安全研究员Zero Salarium在博客发布文章指出,他发现通过Windows错误报告系统(Windows Error Reporting,WER,WerFaultSecure.exe),就有机会让杀毒软件或是EDR的处理程序休眠,而且,所有的过程都是运用用户模式(User-mode)程序代码来完成,完全不需要其他的第三方工具。Zero Salarium也打造名为EDR-Freeze的程序来进行概念验证(PoC)。
这种手法运用Windows内置程序库DbgHelp,以及其中的功能函数MiniDumpWriteDump,该函数的主要功能是创建小型内存转保存案(Minidump),这种文件是内存的快照,通常会用于调试。而为了确保内存内容与处理程序的状态一致,此程序库在转存Minidump的过程里,会暂停目标处理程序。
由于杀毒软件与EDR通常会受到Protected Process Light(PPL)的内置机制保护,而如何绕过PPL,就是能够对端点防护机制上下其手的关键。
Zero Salarium形容这是一种条件竞争(Race condition)攻击,他列出的执行步骤如下,首先,攻击者使用名为CreateProcessAsPPL工具,以WinTCB层级启动WerFaultSecure,然后输入特定的WerFaultSecure功能参数,以便执行处理程序的转存。接着,持续监看目标处理程序(即杀毒软件或EDR)的状态,直到进入暂停。
最终,攻击者运用OpenProcess并搭配PROCESS_SUSPEND_RESUME的权限,而能通过NtSuspendProcess功能函数将WerFaultSecure处理程序暂停,使得杀毒软件或EDR也随之维持暂停状态。