Abstract
高级持续性威胁(APT,Advanced Persistent Threat)对蓝队来说是一项重大挑战,因为攻击者会长时间应用各种攻击,阻碍事件关联和检测。 在这项工作中利用各种不同的攻击场景来评估终端检测与响应系统(EDR,Endpoint Detection and Response)和其他安全解决方案在检测和预防 APT 方面的功效。 结果表明,由于最先进的终端安全系统无法预防和记录这项工作中报告的大部分攻击,因此仍有很大的改进空间。 此外,还讨论了篡改 EDR 遥测提供者的方法,从而允许攻击者进行更隐蔽的攻击。
0x01 Introduction
网络攻击在复杂性和规模上都在不断发展,达到了世界经济论坛认为它是未来十年全球商业第二大威胁风险的程度。已经创造出来的地下经济已经变得如此庞大,以至于可以与国民经济的规模相媲美。与大多数具有“打了就跑”作案手法的网络攻击相反,还有有高级持续性威胁,即APT。在大多数网络攻击中,威胁行为者会尝试利用单个漏洞或机制来破坏尽可能多的主机,并尝试尽快将滥用存储的信息和资源的行为货币化。然而,在 APT 攻击中,攻击者选择保持低调,通过各种攻击向量利用更复杂的入侵方法,并延长对受感染主机的控制。事实上,这种控制可能会持续数年,正如许多此类事件所表明的那样。
由于它们的性质和影响,这些攻击受到了很多研究的关注,因为攻击向量的异构性给传统的安全机制带来了许多问题。例如因为其隐蔽性,APT 绕过了防病毒软件,因此需要更先进的方法来及时检测它们。终端保护平台 (EPP,Endpoint Protection Platform) 的目标是预防和减轻恶意软件等终端安全威胁。更进一步,EDR系统为组织的安全提供了一种更全面的方法,因为除了签名之外,EDR 还关联了组织多个主机的信息和事件。收集、处理和关联来自可能低于雷达的终端的单个事件,使蓝队能够深入了解组织周边所面临的威胁。
尽管进行了大量研究并通过 EPP 和 EDR 部署了先进的安全机制,但最近发生的事件表明,现有系统不能被认为可以免受此类攻击。由于 APT 攻击并不常见,而且并非所有细节都可以公开共享,因此有必要进行健全性检查以评估此类安全机制对此类攻击的准备情况,进行 APT 组模拟来测试企业防御的能力,尤其是 EDR,还包括一些 EPP。为此,选择在受控环境中使用一组与这些攻击的典型作案相匹配的脚本攻击来模拟 APT 攻击。因此尝试使用鱼叉式网络钓鱼和恶意软件传递技术渗透到一个组织,然后检查 IOC 和 EDR 产生的响应。本文已经创建了四个这样的用例场景,它们具有相当的指示性和多样性,足以说明几种外围安全机制的弱点,更多地关注 EDR。
基于上述,本研究工作首先说明尽管静态和动态分析方面取得了进步,以及最先进的 EDR 应用了多种日志收集机制,但威胁行为者可以通过多种方式发起成功的攻击而不会引起怀疑。正如将要讨论的,虽然一些 EDR 可能会记录攻击的片段,但这并不意味着这些日志会触发警报。此外,即使触发了警报,也必须从安全运营中心 (SOC) 的角度进行考虑。实际上,一个 SOC 会收到多个警报,每个警报都具有不同的严重性。根据此严重性对这些警报进行优先级排序和调查。因此,严重性较低的警报可能会滑到雷达之下而不会被调查,尤其是当 SOC 中的警报数量很高时。此外,讨论了 EDR 的遥测提供者如何被篡改,从而允许攻击者隐藏他的攻击和踪迹。
0x02 Experimental Setup
在本节中将详细介绍对 EDR 和 EPP 的系列实验的准备工作。因为目标是产生准确且可重现的结果,所以会在必要时提供必要的代码。为此专门设计并运行实验来回答以下研究问题:
• RQ1:最先进的终端安全系统能否检测到常见的 APT 攻击方法?
• RQ2:最先进的终端安全系统有哪些盲点?
• RQ3:EDR 和EPP 报告了哪些信息,它们的重要性是什么?
• RQ4:如何降低报告事件的重要性,甚至阻止报告?
使用 ATT&CK 是一种知识库和模型,可以对模拟的威胁参与者的行为进行建模,如下图所示。由于空间限制,选择使用标准 ATT&CK 矩阵的修改版本并使用径向圆形树状图。
在这项工作中对 EDR 的安全性进行了实证评估。所选的 EDR 是根据 Gartner 的 2021 年最新报告(https://www.gartner.com/en/documents/4001307/magic-quadrant-for-endpoint-protection-platforms)选择的,因为本研究包括了绝大多数市场上领先的 EDR。后者意味着本研究覆盖了巨大且具有代表性的市场份额,这实际上推动了该行业的发展和创新,在实验中选择使用最常用的 C2 框架 Cobalt Strike(https://www.cobaltstrike.com/)。它已被威胁参与者和“红队”用于渗透组织的众多行动中。此外使用了成熟的域;具有适当分类的过期域,将指向托管的 Cobalt Strike 团队服务器的 VPS 服务器。这将减少怀疑,并有望绕过一些限制,因为以前的经验表明,停放域和过期域(https://blog.sucuri.net/2016/06/spam-via-expired-domains.html, https://unit42.paloaltonetworks.com/domain-parking/ )。从 Let’s Encrypt(https://letsencrypt.org/)为本研究的 C2 通信颁发了一个有效的 SSL 证书来加密流量。下图说明了领域及其分类。
Cobalt Strike 在受害者身上部署了名为“信标”的代理,允许攻击者在受感染的主机上执行多项任务。在实验中,使用了所谓的可塑性 C2 配置文件(https://www.cobaltstrike.com/help-malleable-c2)来修改信标的指纹。这掩盖了网络活动和恶意软件的行为,例如暂存过程,请参见下图。为了便于阅读,它已稍微格式化。
(1)攻击向量
构建了四种不同但真实的场景来执行实验,这些场景模拟了野外威胁参与者使用的场景,对 EDR 的实证评估应该反映野外常见的攻击模式。由于 APT 组最常用的攻击媒介是电子邮件,作为社会工程或鱼叉式网络钓鱼的一部分,选择使用恶意附件,诱使目标受害者执行它们。此外应该考虑到,由于 EDR 报告的误报噪声很大,因此必须考虑每个事件的分数。在本文工作中,尝试在最详细的 EDR 设置中最小化行动的报告分数。 通过这种方法,保证攻击将通过雷达。
基于上述情况,假设的威胁行为者通过一些鱼叉式网络钓鱼电子邮件开始攻击,这些电子邮件试图引诱目标用户打开文件或点击将用于破坏受害者主机的链接。为此制作了一些电子邮件,其中包含指向某些自定义恶意软件的云提供商的链接。更准确地说,攻击向量如下:
• .cpl 文件:在rundll32 LOLBINS 的上下文中可以通过双击执行的DLL 文件,该文件可以在其上下文中恶意执行代码。该文件是使用 CPLResourceRunner(https://github.com/rvrsh3ll/CPLResourceRunner)制作的。为此使用了一种使用内存映射文件 (MMF)的 shellcode 存储技术,然后使用委托触发它,参见下图。
• 合法的MS Teams(微软)安装将加载一个恶意的DLL:在这方面,DLL 旁加载(https://attack.mitre.org/techniques/T1574/002/)会导致自注入,从而能够“生存”在签名的二进制文件下。为此,使用了 AQUARMOURY-Brownie(https://github.com/slaeryan/AQUARMOURY)。
• 一个未签名的PE 可执行文件;从现在开始称为EXE,它将使用AQUARMOURY的“早鸟”技术将进程注入到werfault.exe中。为此使用 PROC THREAD ATTRIBUTE MITIGATION POLICY 标志欺骗 explorer.exe 的父级,以保护恶意软件免受 EDR 通常用于进程监控的 Microsoft DLL 未签名事件的影响。
• HTA 文件:一旦用户访问了一个包含 IFrame 的无害 HTML 页面,他将被重定向并提示他运行一个注入了可执行 VBS 代码的 HTML 文件,该文件将加载下图中提供的 .NET 代码,在 mshta.exe 的上下文中执行自注入。
在下文中,仅针对本研究攻击评估 EDR。毫无疑问,在企业环境中,人们会期望更多的安全措施,例如防火墙、防病毒软件等。然而,尽管提高了组织的整体安全性,但它们的输出被认为超出了这项工作的范围。
(2)代码分析
A)HTA
使用 C# 和 Gadget2JScript(https://github.com/med0x2e/GadgetToJScript )工具生成了一个序列化的小工具,它将被执行到内存中,参见上图。ETWpCreateEtwThread 用于执行 shellcode,避免了常见的 API,如 CreateThread()。 注意后台使用的是RtlCreateUserThread(https://twitter.com/therealwover/status/1258157929418625025)。
B)可执行文件
这种攻击背后的主要思想是一个相当简单的代码注入,在 main 方法之前使用 QueueUserAPC() API 执行 shellcode。它将启动一个带有 PPID 欺骗的牺牲进程并注入该进程。该文件将在程序集中使用直接系统调用以避免挂钩函数。应该注意的是,Windows 错误报告服务 (werfault) 是一个极好的注入目标,因为一旦进程崩溃,可能会出现子 werfault 进程,这意味着父进程可以是任意的。这极大地阻碍了亲子关系的调查。值得注意的是,一旦与正确的标志一起使用可以避免怀疑。在下图中找到相关代码。
C)DLL旁加载
在这种情况下,使用 Brownie – Koppeling 项目从 system32 创建了一个合法 DLL 的恶意克隆,并将其添加到 MS Teams 的文件夹中,以便在其进程下触发加密 shellcode。此外,由于 MS Teams 将自身添加到启动中,这提供了对受感染主机的持久性。请注意,EDR 有时倾向于忽略自我注入,因为他们认为它们不会改变不同的过程。
在上图中说明了 shellcode 执行方法。它是一个经典的基于本地注入的 CreateThread(),它将在签名且良性的二进制进程下启动 shellcode。不幸的是,在这种情况下,唯一的问题是 DLL 没有签名,这可能会触发一些防御机制。在提供的代码中,可以观察到 VirtualProtect() 的用法。这样做是为了避免直接分配 RWX 内存。在下图中,可以看到汇编系统调用的用法。
最后,需要注意的是,对于测试,安装将手动放置在 Desktop 文件夹中并执行。下图说明 MS Teams 允许 DLL 劫持。
0x04 EDR & EPP Evaluation
(1)BitDefender GravityZone Plus
BitDefender GravityZone Plus 是该公司的旗舰产品,包括 EDR、EPP 和 SandBox 功能。就测试而言,它对常见遥测提供程序的使用堪称典范,并试图通过高度智能的引擎充分利用它们,该引擎将信息关联起来,进而导致立即阻止和修复以及强大的控制台。
A)CPL
如下图所示,该向量被阻止作为钴撞击的行为警报。
B)HTA
该向量立即被检测为恶意并被阻止,请参见下图。
C)DLL
此向量已被阻止,但未引发重大警报。然而,它的事件被包含在另一个攻击向量检测中,如前图所示。
D)执行程序
该产品非常依赖于 UM Hooks,在这种情况下,内容没有被阻止,也没有引发任何警报/事件,因为它使用了系统调用。
(2)Carbon Black Response
Carbon Black 是领先的 EDR 解决方案之一。它的真正强大之处在于它的遥测技术和广泛监控系统上执行的每个操作的能力,例如注册表修改、网络连接等,最重要的是,它提供了一个 SOC 友好的界面来对主机进行分类。基于从传感器收集的遥测数据,与几个 IoC 进行比较。后者将被汇总为一个分数,该分数取决于其值触发警报。此外,在考虑 EDR 时,配置起着至关重要的作用。因此,在这种情况下有一个自定义 SOC 源,用于基于 Carbon Black 处理的 IOC 的检测。此外,提要可以是基于查询的,这意味着将根据基于 Carbon Black 处理的事件(包括但不限于注册表修改、网络连接、模块加载)的搜索产生的结果生成警报。
此 EDR 严重依赖内核回调,其许多功能驻留在其网络过滤驱动程序和文件系统过滤驱动程序中。对于几个检测,还使用了用户模式挂钩。例如,考虑内存转储(DUMP PROCESS MEMORY)的检测。正如 Carbon Black 的文档中提到的,用户态 API 挂钩被设置为检测进程内存转储。另一个例子是检测加载到内存中的脚本解释器(HAS SCRIPT DLL)。如文档中所述,驱动程序例程被设置为识别加载内存脚本解释器的进程。
A)启用设置
Carbon Black Response 在逻辑和用例方面有所不同。它的主要目的是提供遥测而不是主动采取行动。此外,它的范围是在调查期间提供协助,因为它不包括阻止功能,而是一种 SOC 友好的软件,可提供深入的可见性。它的功能与控制台背后的人密切相关,因为除了对主机进行分类之外,它的检测依赖于可以定制并产生警报的提要。在案例中使用了一些默认提要,例如 ATT&CK 提要和 Carbon Black 的社区提要以及自定义企业提要。
B)CPL
如下图所示,由于 Shell32.dll 的名称、位置和使用异常,触发了警报。 Carbon Black 非常清楚这种情况下的恶意 .cpl 文件,但它无法清楚地验证此活动是否确实是恶意的。因此,该事件被报告为低分。上图在右侧说明了触发的 IOC。
C)HTA
检测到 .hta 文件是因为它的父进程可能是 CVE 并且加载了可疑的模块。 Carbon Black 对 LOLBAS 和 LOLBINS 都了解并及时检测到它。
D)EXE – DLL
关于其他两个攻击媒介,没有发出警报。尽管如此,尽管能够成功与域进行通信,但它们的活动仍被正常监控并产生主机通信的遥测数据。最后,需要注意的是,PPID 欺骗对 Carbon Black没有成功。结果如下图。
(3) Carbon Black Cloud
除了 Carbon Black Response,还测试了该公司在终端保护方面的旗舰产品 Carbon Black Cloud。它为高效遥测处理和收集保留了相同的功能,并将阻塞作为附加功能和 NGAV 功能。它遵循与扩展核心功能的响应版本相同的原则。
A)启用设置
使用了由 VMWare 创建的高级策略,所有设置都设置为阻止。
B)EXE-DLL
两次攻击都成功了,没有触发任何警报。
C)CPL-HTA
Carbon Black Cloud 检测到这两种攻击并发出重大警报,但是,它们都没有被阻止,参见下图。非常有趣的是,与 HTA 相关的 IOC 正在上述 LoLbin 的上下文中加载 CLR.DLL。这清楚地表明了在此进程下运行的 .NET 代码以及著名的 G2JS 工具。至于 CPL 文件,同样适用于异常 CPL 文件的经典检测。检测报告为未阻塞。
(4)Check Point Harmony
A)启用设置
对于 Check Point Harmony,在可能的情况下使用了预防模式并启用了仿真/行为(antibot antiexploit),并且没有打开安全搜索设置以防止检查哈希。
B)HTA-CPL
对于 HTA 攻击向量,发出了中等警报,但攻击并未被阻止。参见上图。在 CPL 的情况下,攻击被阻止,并在控制台中发出警报,参见下图。
C)执行程序
检测到并阻止了 EXE 攻击向量,参见下图。
D)DLL
DLL 攻击向量未被阻止也未被检测到。
(5)Cisco Secure Endpoint(例如 AMP)
AMP 是思科的 EDR,它为终端提供预防、检测和响应功能,以及威胁搜寻。此外,它使用基于云的分析和机器学习来及时检测威胁。
A)启用设置
在此 EDR 中,使用“标准保护策略”激活“恶意脚本阻止”功能。
B)CPL-HTA
两次攻击都被挡住了。在 CPL 文件的情况下,文件被隔离;而在 HTA 的情况下,进程被终止,参见下图。
C)DLL
在 DLL 攻击向量的情况下,注意到当攻击被阻止时,参见下图,提供的警报是针对漏洞利用阻止的。因此选择执行相同的攻击,但使用不同的应用程序。事实上,问题似乎出在特定的应用程序上,所以一旦使用了另一个应用程序但技术相同,攻击就成功了。
D)执行程序
这个攻击向量是成功的并且没有引发任何警报。
(6)Comodo OpenEDR
OpenEDR 是 Comodo 的开源 EDR 解决方案。它的开源性质允许进行大量定制和扩展。它可以利用云来管理控制台,并使用 Comodo 的遏制技术来阻止威胁。
A)启用设置
对于 OpenEDR,使用了声称提供最大安全性的预配置配置文件,即“3 级安全性(最大)”
B)HTA-DLL
两个攻击向量都成功了,并且没有发出警报。
C)CPL-EXE
EDR 使用 Commodo 的遏制技术阻止了两次攻击。当文件被发送到控制台时,没有发出警报,参见下图。
(7)CrowdStrike Falcon
CrowdStrike Falcon 将一些最先进的行为检测功能与非常直观的用户界面相结合。后者通过进程树和攻击指标提供了事件本身和攻击期间机器状态的清晰视图。 Falcon Insight 的内核模式驱动程序可捕获 200 多个事件和追溯事件所需的相关信息。除了内核回调和用户模式挂钩的经典用法外,Falcon 还订阅了 ETWTi(https://www.reddit.com/r/crowdstrike/comments/n9to1b/interesting_stuff/gxq0t1t)。
在进程注入方面,包括 Falcon 在内的大多数 EDR 在扫描内存之前会不断检查 Windows API,例如 VirtualAllocEx 和 NtMapViewOfSection。一旦 Falcon 发现任何进程调用了这些中的任何一个,它就会快速检查分配的内存以及这是否是从远程进程创建的新线程。在这种情况下,它会跟踪线程 ID,提取全部注入的内存并解析 .text 部分、Exports 部分、PE 头、DOS 头并显示 PE 的名称、开始/停止日期/时间、不限于加载函数的导出地址。至于响应部分,它提供了广泛的实时响应能力,并允许基于进程创建、网络连接、文件创建等创建自定义 IOA。
A)启用设置
对于这个 EDR,使用了一个积极的策略,尽可能多地启用功能。这是一项已经在企业环境中使用的策略,其目标是最大程度地保护和最小化干扰。
B)DLL – CPL – HTA
这三个攻击向量都没有产生任何警报,并允许 Cobalt Strike 信标被秘密执行。
C)执行程序
非常有趣的是,虽然直接系统调用被用来绕过用户模式挂钩,但仍检测到了 EXE。请注意,警报具有中等严重性。另外,请注意下图中的欺骗父进程。
(8)Cylance PROTECT
根据他们声称将 AI 和 ML 集成以将其产品提升为“NGAV”(下一代反病毒)的说法,Cylance 是首批参与者之一。 Cylance PROTECT 过去被许多研究人员用作参考点,因为它过于依赖用户模式挂钩,这是一个很好的例子,说明如何绕过引擎和遥测的新时代保护 -明智的(https://www.mdsec.co.uk/2019/03/silencing-cylance-a-case-study-in-modern-edrs/, https://skylightcyber.com/2019/07/18/cylance-i-kill-you/,https://blogs.blackberry.com/en/2017/03/cylance-vs-universal-unhooking)。从那时起,该解决方案有了很大的发展,然而,检测的战略方法似乎建立在具有 AI 风格的相同传统基础上。
A)启用设置
Cylance PROTECT 的配置是一种非常简单的方法。对于实验,将所有可能的保护设置为“开启”和“阻止和隔离”;在适用的情况下,并启用详细日志记录。
B)执行程序
Cylance PROTECT 未检测到 EXE 攻击向量。
C)DLL-CPL-HTA
DLL 攻击向量被阻止,参见下图。值得注意的是,对于其余两个攻击向量(CPL 和 HTA),尽管进行了多次测试,但两者都没有在 Cylance PROTECT 下执行。然而,尽管启用了详细日志记录,但在实验期间,根据提供的界面,没有发生任何警报或任何阻塞。
(9)Cynet
Cynet 的核心位于其 Cynet Endpoint Scanner 中,它促进的一些主要功能是基于内存的工件扫描和检测以及实时运行并提供对系统进程的持续监控的“内存模式警报”。它的大部分检测和保护都基于其微过滤器驱动程序和基于机器学习的静态检测算法,这就是它使其成为根据 Cynet 的下一代防病毒 (NGAV) 的原因。它还利用上述内存扫描来检测通用威胁和常见的 ETW 提供程序;暂时不是EtwTI。最后,Cynet 使用网络过滤方法来获得进一步的洞察力。
正如他们告知的那样,该公司的方法是基于一种多层次的思维方式,该思维方式试图根据遥测源提供尽可能多的信息。这种心态的一个例子是 LSASS 转储保护基于内核级别,它处理依赖于 LSASS 句柄打开的用户模式转储技术。但是,除了监控命令行实用程序之外,还会对“procdump”或“lsass”等字符串进行进一步监控,以确保获得更多洞察力。
作为内核级进程句柄监视和保护的更通用示例,可以看一下 ObRegisterCallbacks 例程,它本质上是 Microsoft 基于内核的进程和线程句柄挂钩,主要由 AV 解决方案使用,在线上有多个示例说明如何使用可以使用这种通常结合访问掩码过滤的方法来保护进程(https://programmersought.com/article/6143589755/)。 Cynet 还对基于诱饵文件的勒索软件采用简单而有效的(当勒索软件与目标无关时)保护,其中已被证明在多种情况下是救命稻草。此外,根据他们的一篇文章,内存模式警报是基于字符串的检测。
虽然大多数攻击都是成功的,但 Cynet 声称某些差异导致内存扫描仪出现故障,该扫描仪立即处理通用恶意软件,例如使用的 Cobalt Strike。评估后,供应商立即承诺并及时响应,推送了许多更新,并设法修复了许多问题,包括与内存扫描器相关的问题,参见下图。
A)启用设置
在 Cynet 中,使用了激进的配置来启用阻止模式,并尽可能启用所有功能,包括 ADT、事件监控等。
B)CPL
CPL 攻击向量通过静态检测被杀死。
C)HTA-EXE-DLL
所有三个攻击向量都成功了,没有引发任何警报。
(10)Elastic EDR
Elastic EDR 是市场上为数不多的开源解决方案之一。它建立在著名的 ELK 堆栈之上,支持高级搜索和可视化功能,其开放性允许进一步定制。
A)启用设置
启用了所有预防设置和可用来源,例如文件修改。
B)DLL
DLL 攻击一旦接触到磁盘就会被检测到并被阻止,参见下图。
C)CPL
在内存中检测到 DLL 攻击并被阻止,参见下图。
D)EXE-HTA
两次攻击都成功发动,并没有引起任何警报。
(11)ESET PROTECT Enterprise
ESET PROTECT企业版是一种广泛使用的终端解决方案,它使用行为和信誉系统来缓解攻击。此外,它使用云沙盒来防止零日威胁和全盘加密以增强数据保护。 EPP 使用从数百万个终端收集的实时反馈,其中包括内核回调、ETW(Windows 事件跟踪)和挂钩。 ESET PROTECT Enterprise 允许通过编辑 XML 文件和根据用户和组自定义策略进行微调。为此,蓝队可能会使用文件名、路径、哈希、命令行和签名者来确定警报的触发条件。使用具有最大可用预定义设置的 ESET PROTECT Enterprise,无需进一步微调,请参见下图。
A)启用设置
对于此 EPP,使用了预定义的策略以获得最大的安全性,如 ESET 在控制台中所述。这利用了机器学习、深度行为检查、SSL 过滤、PUA 检测,决定对最终用户隐藏 GUI。
B)EXE-DLL
这两个攻击向量均已成功执行,没有 EPP 阻止并报告任何警报,如下图。
C)CPL-HTA
ESET PROTECT Enterprise 正确识别并阻止了 CPL 和 HTA 攻击,分别参见下图。应该注意的是,ESET 的内存扫描器正确识别了恶意存在,但错误地将威胁命名为 Meterpreter。
(12)F-Secure Elements
F-Secure Elements 下可以有多个产品,在本实验中,测试了两个产品,即终端保护平台 (EPP) 和终端检测和响应解决方案 (EDR)。两种解决方案都从终端收集行为事件,包括文件访问、进程、网络连接、注册表更改和系统日志。为了实现这一点,Elements 使用 Windows 的事件跟踪以及其他功能。虽然 F-Secure Elements EDR 使用机器学习来丰富内容,但通常使用网络安全专家的人工干预。 EDR 还具有内置的事件管理功能。此外,在确认检测后,F-Secure Elements EDR 具有内置指南,可帮助用户采取必要步骤来遏制和修复检测到的威胁。
A)启用设置
本研究对 EPP 和 EDR 解决方案进行了实验,以启用所有可用功能,包括 DeepGuard。还包括基于信誉的浏览控制,并且防火墙已启动并运行。在手稿的第一版中,只包括了 EPP 的结果。值得注意的是,所有发起的攻击都成功了,F-Secure Elements EPP 没有报告任何警报,参见下图。
然而,与 F-Secure 合作后发现,最初的测试只针对 EPP 解决方案。因此,F-Secure 协助设置 EDR 产品的许可,以便可以在环境中执行测试。为了确保不考虑新的检测,在此配置中,数据库许可证已降级到更早的日期:2021 年 6 月 18 日,针对 F-Secure EDR 测试了这些攻击两次。在这些测试中检测到了三种攻击,其中两次攻击被立即检测到,而第三次在最初的时间延迟了 5 小时。由于 F-Secure 对数据库进行了降级,因此出现了一些混乱,导致后端系统配置错误。一旦错误配置得到纠正,一次特定攻击的延迟就会减少到 25 分钟。由于 EDR 产品的性质,没有任何攻击被阻止。
B)F-Secure EPP
在 F-Secure EPP 的情况下,没有检测到也没有阻止攻击,参见上图,供应商也验证了这一点。
C)F-Secure EDR
如前所述,在 F-Secure EDR 的情况下,与 F-Secure 合作进行了两个实验。在这些测试中检测到了三种攻击。其中两次攻击被立即检测到,而第三次在最初的时间延迟了 5 小时。实验。据 F-Secure 称,这是由于数据库降级导致后端系统配置错误。经过供应商方面的一些解决后,该特定攻击的延迟减少到 25 分钟。由于 EDR 产品的性质,没有任何攻击被阻止。应该注意的是,如上图所示,两个攻击向量被合并为来自 EDR 的一个攻击,其中一个被标记为中等警报。然而,攻击的合并可以归因于它们的时机。最后,EXE 攻击向量在所有情况下都是成功的。关于 F-Secure Elements EDR 收集的检测的简要检测历史如下图所示。
(13)FortiEDR
FortiEDR 很大程度上基于它的模拟模式,由于时间限制和实验的性质,没有使用它,它是一个学习和理解组织功能的培训课程。它充分利用回调并尝试识别和阻止未映射的代码及其在感染过程中的动态行为。根据实验,这些警报发生在执行反射注入的情况下,因为在使用上述技术的几个工具中观察到了此警报,此外,如描述中所述,警报与从内存中加载的文件有关。此外,HTA 的 COM 活动被阻止。
A)启用设置
在 FortiEDR 中,使用了一种激进的设置,启用了所有功能并在任何地方设置了块模式。
B)CPL-HTA-EXE-DLL
FortiEDR 设法检测和阻止所有攻击向量,如下图所示。
(14) Harfang Lab Hurukai
Harfang Lab是市场上的新玩家。他们的 EDR 试图提供广泛的可见性和一些非常需要的分析功能,包括实时反汇编和基于 Yara 的功能,以检测恶意模式并扩展初始检测。尽管阻止和预防不是他们的目标,但可以对产品进行相应调整,并根据他们的研发团队提供这些功能。
A)启用设置
这些实验是与哈方实验室的团队合作进行的,它们被设置为提供最高水平的检测,但是,它没有设置为块模式。
B)CPL-EXE
CPL 攻击向量被检测为可疑执行,参见上图。EXE 攻击向量也被检测到,参见下图,因为牺牲进程 werfault.exe 没有像往常一样有任何标志(甚至是虚拟的)。实际上,如果存在虚拟值,则不会检测到攻击。
C)DLL-HTA
EDR 未检测到这两种攻击向量。
(15)ITrust ACSIA
ITrust 声称,其定位为 EDR 的安全解决方案 ACSIA 改变了游戏规则,采用完全不同的方法可以在有效载荷到达目标之前阻止攻击。他们的解决方案不是基于传统的遥测源,也没有自定义的微型过滤器,但似乎是基于像日志收集器这样的工具。
A)启用设置
供应商在提供的环境中启用了所有设置。
B)CPL-HTA-EXE-DLL
所有攻击向量都通过了,EDR 没有发出任何警报。有趣的是,考虑到实验所需的合法 C 运行时安装触发了警报这一事实,请参见下图,本研究尝试使用恶意 .msi 文件进一步触发解决方案,以验证所有组件是否正常工作。攻击没有被阻止,安装也很干净,供应商也验证了正确的功能。
(16)Kaspersky Endpoint Security
卡巴斯基终端安全是一个终端安全平台,具有多层安全措施,利用机器学习功能来检测威胁。此外,此 EPP 代理还充当 EDR 代理,还有助于漏洞和补丁管理以及数据加密。
A)启用设置
实验中在每个类别中启用了所有与安全相关的功能。但是,没有为 Web 和应用程序控件使用任何特定配置。更准确地说,创建了一个策略并启用了所有选项,包括行为检测、漏洞利用和进程内存保护、HIPS、防火墙、AMSI 和文件系统定位模块。这些操作被设置为阻止和删除所有恶意工件和行为。
B)CPL-HTA-EXE
对于 CPL、HTA 和 EXE 攻击向量,Kaspersky Endpoint Security 及时识别并阻止了本研究的攻击,见下图。更准确地说,EXE 和 CPL 进程在执行后被杀死,而 HTA 一接触就被阻止磁盘。
C)DLL
本研究的 DLL 攻击成功发起,Kaspersky Endpoint Security 没有记录遥测数据。
(17)McAfee Endpoint Protection
迈克菲终端保护是最可配置且对技术用户解决方案最友好的解决方案之一,它允许对特定进程行为(即远程内存分配)做出反应,还可以通过减少攻击者基于少数选项的选项来主动消除威胁,例如阻止程序注册自动运行。本研究决定利用这种可配置性,对 McAfee Endpoint Protection 进行全面扩展,并且只禁用了一个阻止从常见文件夹(例如桌面文件夹)执行的规则。这种选择背后的基本原理是可用性,因为激活此规则会在日常环境中导致许多可用性问题。
在实验中,成功地使用直接系统调用 dropper 绕过了限制,并远程分配内存并执行它。后者表明遥测提供者和信息处理效率不高。
A)启用设置
对于这个 EPP,本研究决定挑战 McAfee,因为它为高级用户提供了大量的设置和许多选项,例如内存分配控制等。同样有趣的是,默认创建了一些策略来阻止可疑活动,例如 HTA 的执行。选择无一例外地启用所有选项,除了从用户文件夹阻止执行并会在公司环境中导致问题的选项。下图显示了已启用设置的摘录。
B)HTA-CPL
基于 HTA 和 CPL 的攻击都被识别和阻止。但是,应该注意的是,由于应用了阻止所有 HTA 文件执行的策略,HTA 攻击被阻止,参见下图。
C)EXE-DLL
基于 EXE 和 DLL 的攻击均已成功执行,没有被 McAfee Endpoint Protection 识别,也没有产生任何遥测数据。
(18)McAfee Endpoint Protection infused with the MVision EDR
除了上述测试之外,与 McAfee 工程师合作再次进行了测试,将测试扩展到包含他们 EDR 解决方案的更新版本。
A)启用设置
与 McAfee 的工程师协作配置该策略以实现最佳安全性。
B)DLL-EXE
两个攻击向量都通过而没有触发任何警报。
C)CPL-HTA
CPL 攻击被 EPP 阻止,与之前的实验一样,如上图。HTA 攻击被检测到低警报,但未被阻止,见下图。以上验证了 EPP 的原始结果并对其进行了扩展带有 EDR 的轻微警报。
(19)Microsoft Defender for Endpoints(例如 ATP)
Microsoft Defender for Endpoints 很大程度上基于内核而不是基于用户,这提供了强大的检测功能。 MDE 的美妙之处在于,大多数检测功能都在 Windows 本身,尽管除非机器已启动,否则不会使用。对于这些测试,EDR 设置为阻止模式以防止而不是仅仅检测。其遥测源包括 WdFilter.sys 微型筛选器驱动程序使用的内核回调。如前所述,一旦满足条件,回调就会设置为“拦截”活动,例如加载模块时。作为其中的一个例子,请考虑:
• PsSetCreateProcessNotifyRoutine(Ex) – 进程创建事件。
• PsSetCreateThreadNotifyRoutine – 线程创建事件。
• PsSetLoadImageNotifyRoutine – 图像(DLL/驱动程序)加载事件。
• CmRegisterCallback(Ex) – 注册表操作。
• ObRegisterCallbacks – 处理操作(例如:进程访问事件)。
• FltRegisterFilter – I/O 操作(例如:文件系统事件)。
它们还包括内核级 ETW 提供程序,而不是用户模式挂钩。这是一种检测恶意 API 使用的解决方案,因为由于内核补丁保护 (KPP) PatchGuard (PG) 不允许挂钩 SSDT(系统服务调度表)。在继续之前,应该注意卡巴斯基采用了一种不同的方法来挂钩它使用自己的虚拟机管理程序的内核。这有几个缺点,因为它需要虚拟化支持(https://github.com/iPower/KasperskyHook)。
从 Windows 10 RS3 开始,NT 内核使用 EtwTi 函数检测各种 API,这些 API 通常被滥用于进程注入、凭证转储等,以及可通过安全 ETW 通道获得的遥测(https://blog.redbluepurple.io/windows-security-research/kernel-tracing-injection-detection )。因此,MDE 严重依赖 EtwTi,在某些情况下甚至完全依赖于遥测。
作为 ETWTi 传感器的示例,请考虑上图的警报。它是通过在 MDE 处于被动模式的主机上运行 EXE 有效本研究而产生的警报。请注意,尽管有效载荷使用直接系统调用,但注入会被检测到。由于回调在内核级别(Ring 0)运行,攻击者需要在机器中执行高完整性级别的代码才能成功地使它们失明或使其无用。攻击者可以选择以下三种技术中的任何一种来实现这一点:
• 将存储所有地址的内核回调数组中的回调例程地址清零。
• 取消注册由 WdFilter.sys 注册的回调例程。
• 使用 RET(0xc3) 指令修补 WdFilter.sys 的回调例程或将其挂钩。
由于 ETWTi 传感器遥测的性质,不可能从中等 IL 上下文中屏蔽源,并且需要管理员/高 IL 上下文。一旦实现了这一点,攻击者就可以使用以下任何一种方法:
• 通过在函数开头插入RET/0xC3 指令来修补特定的EtwTi 函数,以便它简单地返回而无需进一步执行。不是 KPP 安全的,但攻击者可以通过在目标完成后立即恢复函数的原始状态来避免目标蓝屏死机。理论上,Patch Guard 可能会在任何随机时间触发,但实际上,PG 在这个极短的时间间隔内准确触发的可能性极低。
• 损坏 EtwTi 句柄。
• 禁用EtwTi 提供程序。
由于与 Microsoft 的互动,进行了三次测试迭代,以查看他们如何与他们的团队合作对抗攻击向量,因为重要的更改已被推送到平台。为此,根据每次迭代组织结果。
A)启用设置
本研究启用了所有基本功能,包括篡改保护、阻止模式选项和自动调查。大多数是在后台处理的,管理员能够配置与超出范围的 intune 的连接。还使用将上传可疑文件并检查它们的云启用了文件和内存内容分析。
B)原始实验
CPL – EXE – HTA: 这些向量中的大部分在接触磁盘或被执行时就被检测到。在下图中找到相关警报。
请注意,对于 .cpl 文件,尽管 EDR 检测到它,但它是使用功能齐全的信标会话执行的。参见下图。在下面找到针对此 MDE 事件启动的相关自动调查,包括生成的所有警报。
请注意,在成功补救和全面判决之前,调查可能需要很长时间。请参见下图。
DLL:DLL 旁加载攻击是成功的,因为 EDR 没有产生任何警报或任何可疑的时间线事件。下图说明了生成的遥测数据。请注意与恶意域的连接以及模块的不间断加载。
C)更新的结果 – 相同的有效载荷
CPL :在新测试中检测到 CPL 攻击向量但未被阻止,复制了原始测试的行为。
DLL-EXE-HTA:在新测试中检测并阻止了所有三个攻击向量。
D)更新结果 – 使用相同技术修改 IOC
CPL:注意到修改后的 IOC 检测到 CPL 攻击向量,但没有立即阻止。事实上,在被 MDE 阻塞在内存中之前,payload 运行了大约 15 分钟。
DLL:在修改后的实验中,选择更改 MS Teams 目标二进制文件以使用许可 UI。与之前使用更新的 MDE 进行的测试相反,攻击是成功的,并且未被检测到MDE。
EXE-HTA:两个攻击向量都被 MDE 检测并阻止。
(20)Minerva Labs
Minerva Labs 是市场上的新玩家,其主要目标是基于欺骗和目标仿真的基于用户模式的预防。这背后的主要思想是 Minerva 使用多个模块来检测和阻止活动,从恶意软件使用的沙箱检测到指纹目标环境,再到进程注入检测和 LoLBin 使用预防。
该产品通常使用多层方法。前面提到的 LoLBin 检测是最好的例子之一,如果基于恶意 LoLBin 的文件(如 CPL 或 HTA)被放入用户可写目录中,无论它是否是恶意的,它都会被阻止,一个重命名的文本文件扩展名或签名的 .cpl 文件,如 appwiz.cpl。关于使用该 cpl 创建的流程的下一阶段,与 Carbon Black的方法有些相似,将与其他模块进行检查,例如流程注入预防。其理念是成为一个成熟的 ring 3 rootkit,具有应用程序控制功能和通过右键单击过程自定义白名单来防止误报。
A)启用设置
使用了 Minerva 提供的所有模块,包括作为 EDR 一部分的规则集。工程师验证了租户的正确功能。
B)执行程序
.exe 使用了解决方案未检测到的直接系统调用,还使用了具有任意父进程的 werfault 进程,这没有异常。
C)CPL
.cpl 文件原样被 LoLBin 保护阻止,但用于注入的技术本身并未被阻止。
D)HTA – DLL
HTA 文件在 LoLbin 执行级别和注入级别都被阻止。此外,DLL 文件在进程注入级别被阻止,参见下图。
(21)Panda Adaptive Defense 360
Panda 是著名的解决方案,被 Gartner 评为 2021 年和 2019 年的“利基玩家”。就向量而言,它的检测主要基于内核回调和 ETW。它为用户提供了一个可以查看整个攻击路径的 UI,并且根据供应商的说法,它为客户提供了“统一的 EPP 和 EDR 功能,以有效地检测和分类 100% 运行在组织内所有终端上的进程”。
A)启用设置
本研究制定了最大程度的主动保护政策。
B)CPL
检测到并阻止了 CPL 攻击向量,但只有主机对此发出警报,请参见下图。
C)执行程序
在这种情况下,攻击成功,一段时间后发出警报,请参见下图。
D)DLL – HTA
两个攻击向量都成功了,并且没有发出警报。
(22)Palo Alto Cortex
Palo Alto Cortex 是目前市场上最有趣的解决方案之一,因为他们宣传扩展的下一级检测和多级检测方法等功能,包括挂钩和内存保护。 Palo Alto 已经是网络保护市场的领导者,他们的主要目标是走向整体思维。
A)启用设置
配置包括阻止利用尝试、恶意软件、PE 检查,并充分利用解决方案的云集成分析。选择了行为隔离和数据收集进行调查(专业版功能),但默认情况下没有遥测收集。
B)执行程序
WildFire 分析发现 zoom.exe 是良性的,但行为分析在运行时阻止了它,并准确指出了基于 APC 的注入攻击以及系统调用使用情况,参见下图。
C)CPL-DLL-HTA
EDR 既未检测到也未阻止所有三个攻击向量。
(23) Sentinel One
Sentinel One 具有复杂的基于 AI 的行为分析功能,这使得隐形渗透和工具执行变得相当困难。其中,Sentinel One收集 ETW 遥测数据并监控系统的几乎所有部分。它使用内核回调来收集诸如进程创建、图像加载、线程创建、句柄操作、注册表操作等信息。它还生成详细的攻击路径和进程树图。
此外,Sentinel One 最近发布了一个新的自定义检测引擎,称为 STAR。借助 STAR 自定义检测规则,SOC 团队可以将来自 SentinelOne 的 EDR 数据收集和查询机制 Deep Visibility 的查询转换为自动搜索规则,当规则检测到匹配时触发警报和响应。 STAR 还允许用户以一种自动化的方式查看在其整个车队中收集的每个终端事件,并根据规则列表评估这些事件中的每一个。然而,结果表明,哨兵一号在处理基于 PowerShell 的后期开发活动方面存在严重问题。因此,只需使用一些 IEX 底座即可轻松运行 PowerView 等工具。
A)启用设置
对于这个解决方案,决定使用控制台中的按钮启用所有需要的功能,以使用其引擎,包括静态和行为 AI、脚本、横向移动、无文件威胁检测等。此外启用了 Deep Visibility 提供的所有功能,除了全盘扫描和数据屏蔽,还选择终止进程并隔离文件。
Sentinel One 有一些新功能,在进行第一次测试时处于测试模式,这意味着它们未被使用并且还需要启用自定义配置。
B)EXE – HTA – CPL
值得注意的是,这些攻击媒介都没有向哨兵一号发出警报。启用测试功能后,所有三个通过的攻击向量都被阻止,因为 EDR 的目标是有效载荷的核心,即 shellcode 本身。这些功能现在集成在 EDR 中。
C)DLL
一旦安装了 MS-Teams 的文件夹接触到磁盘,就会触发警报,指示恶意 DLL 未签名,这可能是潜在的风险。
如上图所示,DLL 的高熵被检测为 IoC。 IoC 是正确的,因为shellcode 是 AES 加密的。应该注意的是,先前使用低熵文件(使用 XOR 编码)对哨兵一号进行的实验通过了测试,没有任何问题,这表明实际问题是由于 DLL 的高熵造成的。
(24) Sophos Intercept X with EDR
Sophos Intercept 是最知名和最受信任的 AV/EDR 之一。之前被用作用户模式hook规避的测试用例(https//www.mdsec.co.uk/2020/08/firewalker-a-new-approach-to-genericically-bypass-user-space-edr -挂钩/)。 EDR 版本提供了事件的完整视图和非常详细的遥测数据,以及带有洞察力图表的友好界面。它的一些特性如下图所示。
A)启用设置
对于 Sophos,配置对用户来说简单直观。因此启用了所有提供的功能,这些功能提供了没有可用性问题的保护。
B)执行程序
这是唯一能完美对抗 EDR 的向量。事实上,由于它的不可信性质,因为它没有签名,所以只产生了一个小的亮点事件。 PPID 欺骗有效,没有产生任何警报,但是 Sophos 记录了 werfault.exe 的活动,例如连接到域。参见下图。
C)DLL
不幸的是,无法加载恶意 DLL,但 EDR 没有发出警报。有趣的是,应用程序在文件夹中没有 DLL 的情况下正常执行。假设由于有效载荷正常运行,EDR 的进程保护功能可能会产生一些干扰。
D)CPL
.cpl 文件一执行,就会产生警报,阻止进程,并创建下图中的攻击路径。可以观察到,对系统活动产生了详细的遥测数据。
E)HTA
一旦 iexplore.exe 访问并下载了 hta 文件,它的动作就会被阻止,并再次产生详细的攻击遥测数据。见下图。
(25)Symantec Endpoint Protection
赛门铁克终端保护是一种众所周知的解决方案,并且是多个行业中最常用的解决方案之一。它结合了高度复杂的静态检测引擎和模拟器。后者考虑反规避技术,解决打包恶意软件混淆技术,并检测隐藏在自定义打包程序中的恶意软件。 Symantec Endpoint Protection 使用机器学习引擎通过学习过程确定文件是良性还是恶意。赛门铁克安全响应中心训练该引擎识别恶意属性并定义机器学习引擎的规则以进行检测。赛门铁克利用其云服务来确认机器学习引擎所做的检测。为了保护终端设备,它在启动时启动了一种特殊的反恶意软件机制,在第三方驱动程序初始化之前,通过 ELAM 驱动程序防止恶意驱动程序和 rootkits 的行为(https://docs.microsoft.com/en-us /windows-hardware/drivers/install/elam-driver-requirements)。 EDR 具有高度可配置性且易于适应日常企业生活,具有强大的 HIDS 和网络监控功能,使其能够识别和阻止基于网络的横向移动、端口扫描以及常见的恶意软件网络行为,例如Meterpreter 的默认 HTTPS 通信。
A)启用设置
使用默认保护级别启用了默认功能。它们足以提供足够的保护而不会引起问题。
B)HTA
在攻击中,Symantec Endpoint Protection 仅设法识别和阻止 HTA 攻击,请参见下图。但是,没有向用户发出警报。
C)CPL-EXE-DLL
所有三种攻击媒介(CPL、EXE 和 DLL)都成功了,没有 EPP 识别、阻止它们或产生任何警报。
(26)Symantec Endpoint Security (SES) Complete
Complete 与赛门铁克终端安全相比,Complete 版本除了更新之外,它还提供 EDR 遥测,并更深入地了解 EDR 中发生的情况。
A)启用设置
由于 Symantec ES Complete 由多个模块组成,因此每个模块的功能都有不同的策略。活动策略及其配置分别如下:
• 漏洞利用保护- MEM 策略:在活动模式下使用默认策略,没有额外的管理员定义的应用程序。
• 防火墙策略:除了默认应用的保护之外,没有特别需要进一步调整防火墙。
• 检测和响应:最大遥测是目标,没有在日志收集和存储方面进行优化。还对用作主动措施的两个 LoLbin 应用了广泛的日志记录。
• 自适应保护策略:拒绝了所有 MITRE 映射技术,包括 RunDLL32 的 HTTP 流量阻塞。
• 恶意软件策略:将阻止级别提高到 3 级,将监控级别提高到 4 级,这是提高检测效率并减少误报和噪音的常用措施。
• IPS 策略:启用了没有白名单的模块。
• 系统策略:使用启用了篡改保护的默认策略。
• 完整性政策:启用了完整性检查。
B)HTA
HTA 攻击向量被检测到并被静态阻止。
(27)CPL-DLL-EXE
虽然检测到所有三个攻击向量并发出警报,但 SES Complete 并未阻止它们,尽管“RunDll32 阻止 HTTP 流量”规则设置为开启。
(28)Trend Micro Apex One
趋势科技Apex One 是一个著名的解决方案,在 Gartner 的榜单上名列前茅。除了基本保护和防火墙功能之外,它的整体功能还包括预测性机器学习,也可用于离线保护。即使功能性 Internet 连接不可用,轻量级离线模型也有助于保护终端免受未知威胁。安全客户端策略通过增强对可疑进程行为的内存扫描,提供针对最新无文件攻击方法的增强实时保护。安全客户端可以在造成任何损害之前终止可疑进程。增强的扫描功能可以通过识别常见行为和阻止通常与勒索软件程序相关的进程来识别和阻止针对在终端上运行的文档的勒索软件程序。您可以将安全客户端配置为将包含先前未识别威胁的文件对象提交给沙盒平台以供进一步分析。评估对象后,沙盒平台会将其确定包含未知威胁的对象添加到沙盒平台可疑对象列表中,并将列表分发给整个网络中的其他安全客户端。最后,行为监控会持续监控终端对操作系统和已安装软件的异常修改。根据研究,Apex One 使用网络、内核回调、挂钩;在内核和用户模式、ETW 和 AMSI 中执行行为检测。更具体地说,对于 ETW,Apex One 使用称为 TMSYSEVT ETW 的数据收集器。
A)启用设置
在 Apex One 中,尽可能多地利用了策略编辑器中提供的功能,例如 EDR 的智能扫描方法、智能扫描、压缩文件扫描、OLE 对象扫描、智能陷阱(用于对抗恶意软件实时压缩的功能),勒索软件保护(针对勒索软件的行为保护,测试不需要)、反漏洞保护、监控新遇到的程序、C&C 流量过滤,当然还有预测性机器学习。最后,配置 EDR 以阻止所有恶意行为。
B)EXE-DLL-CPL-HTA
在与趋势科技合作后,在提供的环境中进行了实验。值得注意的是,所有攻击媒介都是成功的。但是,提出了三个具有低关键性的通用警报来通知这一点,例如打开了 HTA 或 CPL 文件。后者并不一定意味着存在恶意使用。
(29)汇总结果
上表展示了本研究结果的汇总概览。显然,在发起的 112 次攻击中,有一半以上是成功的。令人震惊的是,只有少数 EDR 能够检测到所有攻击。更准确地说,大部分成功的攻击都没有向终端解决方案发出警报,至少通知相应的团队已经发起了攻击。更重要的是,有许多成功攻击的案例带有不同类型的警报,其中许多表明这些解决方案中的许多解决方案的阻止能力比预期的要有限。
0x04 Tampering with Tlemetry Providers
除了为每个 EDR 找到“盲点”之外,还可以选择通过以各种方式篡改遥测提供者来“盲点”它们。解开用户模式的钩子并利用系统调用来逃避检测只是冰山一角。大多数 EDR 的核心在于内核本身,因为它们利用微型过滤器驱动程序来控制文件系统操作和回调,以拦截诸如进程创建和模块加载等活动。作为攻击者,一旦实现了高完整性,就可以通过各种方式有效地攻击 EDR,包括修补 Defender for Endpoints 的 ETWTi 功能和删除 Sophos Intercept X 的回调以执行黑客工具并保持不间断。请注意,在以下 POC 中的目标不是在 EDR 控制台中发出任何警报,这已成功实现。
(1)对终端防御的攻击
在下文中,介绍了两种攻击,均使用 WinDBG 手动执行。为了规避 Patch Guard 保护机制,快速执行所有操作以避免引入可能触发 EDR 的噪声。请注意,此测试的 EDR 处于被动模式,因为只对静默产生的警报感兴趣。
A)手动修补回调以加载未签名的驱动程序
在这种情况下,进程将手动修补 PspLoadImageNotifyRoutine 全局数组的一些内容,该数组存储所有已注册的用于图像加载的回调例程的地址。通过修补在 mssecflt.sys 驱动程序中注册的名为 SecPsLoadImageNotify 的回调,就驱动程序的加载而言,基本上使 EDR 失明。
重要的是要注意 EDR 如何检测驱动程序签名强制 (DSE) 是否被禁用。奇怪的是,一旦加载了未签名的驱动程序,就会触发有关可能禁用 DSE 的警报。因此,MDE 假定由于加载了未签名的驱动程序,DSE 被禁用。请参见上图。
然后,在回调修补后,将 g CiOptions 全局变量清零,其默认值为 0x6,表示 DSE 已打开。然后,使用 OSR 驱动程序加载实用程序加载驱动程序。之后重置 g CiOptions 变量和补丁回调以避免 Patch Guard 可能进行的错误检查,从而导致系统崩溃,如下图。
B)手动修补 ETWTi 函数以转储无警报的 LSASS
在此 POC 中,手动修补 EtwTiLogReadWriteVm 函数,该函数负责 NtReadVirtualMemory 系统调用的遥测,该系统调用从 MiniDumpWriteDump 调用,许多本地安全机构子系统服务 (LSASS) 转储工具使用该函数。使用 Outflank-Dumpert 工具转储使用直接系统调用的 LSASS 内存,这可能会规避大多数常见的 EDR,但不能规避 MDE,参见下图。
在下面找到为实现“卧底”LSASS 转储而遵循的程序。注意如何将虚拟地址转换为物理地址以成功执行补丁。这是因为这是要写入的只读页面,任何强制尝试写入都会导致蓝屏死机。但是可以在物理地址上写,没有任何麻烦。值得注意的是,虽然很可能会产生时间线事件,但不会触发任何警报,让 SOC 进一步调查它。
C)进一步的攻击
除上述内容外,在 Microsoft 的要求下进行了多次攻击,包括篡改 MDE。研究者及时通知微软 MDE 受到多次攻击,其中大部分来自签名驱动程序。一个典型的例子是 PowerTool 的情况,它可以在没有任何警报或阻力的情况下使 MDE 崩溃,如下图。实质上,只需右键单击服务/进程并删除关键的可执行文件,MDE 就会崩溃。
根据通知,注意到微软发布了特定的 ASR 规则(http://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/attack-surface-reduction%02rules- reference?view=o365-worldwide#block-abuse-of-exploited-vulnerable-signed-drivers )没有承认本研究报告,因为根据他们的说法,补丁的原始开发是在通知之前启动的,并且发布与报告一致。
(2)攻击 Sophos Intercept X
对于这个 EDR,方法将完全不同。本研究使用了一个合法且签名的驱动程序,该驱动程序易受攻击,并且通过利用它,可以访问内核并加载自定义的未签名驱动程序。将使用的工具将是 TelemetrySourcerer(https://github.com/jthuraisamy/TelemetrySourcerer),它将提供未签名的驱动程序,该驱动程序实际上会抑制回调,将通过应用程序与其通信这将提供一个 GUI,以及 gdrv-loader(https://github.com/alxbrn/gdrv-loader ),这将利用易受攻击的技嘉驱动程序并加载驱动程序。 除了 Sophos Intercept X,TelemetrySourcerer 还可以用于本工作中提到的其他 EDR,但为了简单明了,仅在此 EDR 用例中使用它。 请注意,对于这些测试,EDR 处于阻塞模式,但本研究设法绕过它并完成了任务而没有发出任何警报,请参见下图。一旦抑制了 sophosed.sys 驱动程序的所有回调,EDR 就无法监控 ,其中包括进程创建和文件系统活动。 因此,人们可以轻松地在工具上执行任意代码,而无需 EDR 识别它们,例如 可以启动 Mimikatz 并保持不间断,这清楚地表明 EDR 无法“看到”它,见下图。
尽管如此,用户模式挂钩仍然存在。因此,AQUARMOURY 的 Shellycoat 和 Cobalt Strike 的 Unhook-BOF(https://github.com/rsmudge/unhook-bof )等工具可能会针对特定进程或信标当前进程删除它们,参见下图。
(3)攻击 BitDefender
在这种情况下,选择使用“合法工具”从内核发出进程终止并成功杀死所有与 BitDefender 相关的进程,从而导致产品在控制台上没有任何警报的情况下关闭。为此使用了PowerTool(https://code.google.com/archive/p/powertool-google/),是一款免费的杀毒和rootkit工具。它提供了检测、分析和修复各种内核结构修改的能力,并允许内核的广泛范围。使用 PowerTool,可以轻松发现并删除隐藏在普通软件中的恶意软件。本案例的概念是使用带有签名驱动程序的防御相关工具(https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-kestackattachprocess)来利用内核杀掉保护机制(http://www.rohitab.com/discuss/topic/40788-2-ways-to-terminate-a-process-from-kernel-mode/ )。为了验证执行 mimikatz 的结果,请参见下图。请记住,篡改内核可能会导致一些不稳定,这意味着该工具可能会触发蓝屏死机情况。
至于驱动程序的内部工作,使用的技术相当普遍。它使用 ZwTerminateProcess() API 来终止进程,并结合其他几个 API 来访问感兴趣的进程。在这种情况下,最重要的一个可能是 KeStackAttachProcess(),参见下图,它将在终止之前附加到目标进程的地址空间。需要强调的是,APT 在野外也使用过类似的方法(https://news.sophos.com/en-us/2021/05/11/a-defenders-view-inside-a-darkside-ransomware-attack/ ) 。
(4)攻击 FortiEDR
在实验中,注意到一种可以用来攻击 FortiEDR 的行为。更准确地说,注意到虽然 FortiEDR 成功阻止了恶意内核漏洞利用(http://kat.lua.cz/posts/Some_fun_with_vintage_bugs_and_driver_signing_enforcement/#more),即 WindowsD(https://github.com/katlogic/WindowsD),它没有立即做到这一点。这提供了一个机会之窗,其宽度足以禁用 DSE,参见上图。WindowsD 是第 3 方“越狱”,因此管理员可以删除现代 Windows 版本中引入的一些侵入性防御功能。目前,它可以禁用:
• 驱动程序签名,包括仅限WHQL 的锁定系统(安全启动平板电脑)。
• 受保护的进程(用于 DRM,“WinTcb”)。
• 某些软件甚至 Windows 本身使用的只读、“无懈可击”的注册表项。
其主要目的是利用已签名、合法但易受攻击的驱动程序,以访问内核级别并从 ring-0 执行“越狱”。在例子中将安装禁用 DSE 的工具,然后为未签名的驱动程序创建服务。尽管根据 EDR 报告触发了警报并最终阻止了攻击,但成功执行了 WindowsD。这能够通过从内核模式注入 FortiEDR 进程来禁用 FortiEDR,并故意使它们功能失调。使用 Kinject(https://github.com/w1u0u1/kinject)驱动程序,使用 APC 执行内核模式 shellcode 注入。然后,在安装驱动程序并向所有三个进程注入 calc shellcode 文件后,尽管 FortiEDR 的进程似乎仍在运行,但它们被“变砖”了,参见上图。
需要注意的是,将上述方法与 MDE 结合使用,可以将其注入 MsMpEng、上图和 LSASS 并从其自身内部转储,而不会引发任何警报或 MDE 阻止操作,参见下图。
0x05 Conclusions
本研究中模拟了一系列高级威胁参与者用来渗透组织的攻击向量。使用它们评估最先进的 EDR 解决方案,以确定它们的反应以及产生的遥测。在此背景下,概述了每个 EDR 以及用于检测和响应事件的措施。令人震惊的是,没有 EDR 可以有效地检测和阻止部署的四种攻击向量。事实上,DLL 旁加载攻击是最成功的攻击,因为大多数 EDR 都无法检测到,更不用说阻止它了。
此外研究表明,可以通过攻击位于内核级别驱动程序中的内核来有效地使 EDR失效。此外,将测量 EDR 的响应时间,因为一些 EDR 可能会报告具有巨大延迟的攻击,即使它们已经减轻了攻击。这些方面可能会对蓝队的工作产生重大影响,并且尚未在文献中得到所需的报道。除了卡巴斯基的挂钩解决方案,供应商可能会选择其他可能存在稳定性问题的方法(https://github.com/rajiv2790/FalconEye)。但是,大多数供应商更喜欢使用云沙箱进行分析,因为这可以防止计算开销。应该注意的是,攻击者可能会使用签名的驱动程序和管理程序,例如卡巴斯基发起攻击并挂钩内核,而不会在 rootkit 中出现问题。
目前没有解决方案可以为组织提供完整的安全性。尽管网络安全取得了显着进步,但组织需要部署广泛的工具来保持安全,而不是仅仅依赖于一个解决方案。此外,需要对安全日志进行人工评估和对事件进行全面概述,以防止网络攻击,尤其是 APT。由于后者的性质,必须强调人为因素,在许多情况下人为因素是安全链中最薄弱的环节,通常被用来获得对组织的初始访问权限。
组织必须更多地投资于他们的蓝队,以便他们不依赖于单一工具的输出,并学会对有限的特定威胁做出响应。这将提高他们的能力并提高足够的标准,以防止许多威胁参与者渗透他们的系统。此外,通过增加对用户意识活动和有关威胁参与者作案手法的培训的投资,组织的整体安全性将显着提高。最后,在安全领域引入机器学习和人工智能有望改善平衡,有利于蓝队减轻网络攻击,因为研究人员已经采取了重要步骤。先进的模式识别和关联算法正在安全解决方案中找到自己的方式,尤其是 EDR,它们可以在早期阶段检测甚至阻止许多网络攻击,从而降低其潜在影响。
当前 EDR 中机器学习和人工智能的更紧密集成必须伴随着可解释性和可解释框架的使用。后者可以使研究人员和从业者都了解误报背后的原因并有助于减少误报。此外,将这些信息作为数字证据在法庭上进行适当论证的潜在用途将导致更多的研究人员在不久的将来在这方面投入更多的努力。最后,恶意人工制品的有效收集是一项挑战,因为除了必须处理的数据的准确性之外,它们的数量和速度意味着对监控机制的进一步限制。安全机制不仅必须及时应用,而且还必须以无缝的方式制作,以免阻碍正在运行的应用程序和服务。因此,研究人员必须找到更好的采样和特征提取方法来装备 EDR,以允许他们收集必要的输入,而不会妨碍被保护系统的可用性和操作。
参考链接:https://arxiv.org/abs/2108.10422