crowdstrike 漏洞利用——通过行为异常识别,CFI,intel PT
CrowdStrike 使用英特尔 CPU 遥测加强漏洞利用保护
2021 年 12 月 28 日
https://www.crowdstrike.com/blog/introducing-falcon-hardware-enhanced-exploit-detection/
- Falcon 添加了一项新功能,该功能使用英特尔硬件功能来检测众所周知的难以检测的复杂攻击技术。
- CrowdStrike 的新硬件增强漏洞检测功能为缺乏现代内置保护的旧 PC 上的大量客户提供内存安全保护。
- 一旦激活,新功能会通过分析与漏洞利用技术相关的可疑操作来检测漏洞利用,例如 shellcode 注入、面向返回的编程等,从而加强 CrowdStrike 现有的分层保护,以抵御整个攻击链中的复杂对手和威胁。
CrowdStrike 的目标是阻止违规行为——我们比世界上任何网络安全公司都做得更好。随着攻击者推进他们的战术和技术,我们不断改进我们的工具和能力以保持领先于他们。我们最近为 CrowdStrike Falcon® 传感器添加了一项新功能:硬件增强漏洞检测,它使用硬件功能来检测复杂的攻击技术,而这些攻击技术是众所周知的,仅靠软件很难检测和预防。随着 Falcon 传感器 6.27 版的发布,此功能现在可在配备英特尔 CPU、第六代或更新版本、运行 Windows 10 RS4 或更高版本的系统上使用。
Falcon 硬件增强漏洞检测利用英特尔开发的称为英特尔处理器跟踪 (Intel PT) 的 CPU 功能提供广泛的遥测数据,可用于检测和预防代码重用漏洞。Intel PT 记录处理器上的代码执行情况,常用于性能诊断和分析。Intel PT 允许 CPU 将有关当前执行代码的信息连续写入内存缓冲区,该缓冲区可用于重建精确的控制流。主要使用场景是在运行时跟踪可执行文件,将跟踪存储在磁盘上,然后对其进行分析以重现已执行的确切指令序列。此功能提供的程序行为可见性使其对于安全漏洞检测和调查也很有用。
如果机器启用并支持 Intel PT,Falcon 传感器将为一组选定的程序启用执行跟踪。每当程序执行关键系统服务(如创建新进程)时,传感器将分析捕获的跟踪以查找可疑操作。这种利用检测的创新方法已经被证明是有价值的,并且已经检测到几个由针对 FireFox 的 CVE-2019-17026 等漏洞触发的基于返回的基于编程 (ROP) 的利用链。
要完全理解此功能,首先要了解攻击者的技术,这通常是导致漏洞的攻击链中的第一步。该链涉及由对手或恶意软件实施的一系列操作,可能包括以下部分或全部:初始访问、执行、获得持久性、权限升级、防御规避、凭据访问、网络发现、横向移动、收集、命令和控制和渗出。
Falcon 传感器提供对其中许多步骤的可见性,使用机器学习和人工智能以及攻击指标 (IOA) 将某些攻击者行为与检测相关联。这允许猎鹰在多个点中断攻击链,以防止进一步的行动,在造成任何损害之前。这可以在链条中越早实现越好。
利用获取初始访问权限
攻击者用于初始访问的早期机制之一是利用软件中的漏洞来执行恶意代码。有无数种方法可以实现这一点,通常首先使易受攻击的应用程序或服务进程成为恶意制作的输入,如文件或网络数据包,触发错误,如缓冲区溢出或释放后使用,通过一个或更多的利用技术最终导致代码执行被攻击者控制。其中一些技术是 shellcode 注入、面向返回的编程、面向调用的编程、伪造的面向对象编程和面向跳转的编程。
Shellcode注入
这种技术将恶意代码(也称为“shell 代码”)放入堆栈或堆缓冲区,然后使用软件错误覆盖函数的返回地址或指向恶意代码的函数指针。一旦函数返回,或者被覆盖的函数指针被使用,shell 代码就会被执行。由于数据执行保护 (DEP) 的广泛引入,它通过将 CPU 标记为不可执行 (NX) 来阻止 CPU 在堆栈和堆上执行指令,因此该技术需要攻击者首先更改注入 shell 上的内存保护删除NX保护的代码。因此,它需要至少一种更多的利用技术来修改内存保护。这导致了代码重用攻击,即从程序本身或其库中执行一小段代码。
面向回报的编程(ROP)
这种技术通过完全摆脱 shellcode 并重用来自可执行文件或加载的 DLL 的现有代码来绕过 DEP。不是将恶意代码直接放入内存,而是在堆栈缓冲区中填充 ROP“小工具”的地址——由几条指令和一条返回指令组成的小段代码。然后,攻击者滥用软件漏洞覆盖函数的返回地址以指向第一个 ROP gadget,其中包含调整堆栈指针的指令,使其指向包含以下 ROP gadget 地址的缓冲区,该缓冲区可以在堆栈或堆上。每个小工具将执行一些指令,然后“返回”到堆栈上的下一个小工具地址。通过链接适当的 ROP 小工具,攻击者可以制作一系列指令来执行所需的操作,例如绕过 DEP、加载 DLL 或启动新进程。如果 ROP 链经过精心设计,它甚至可以在执行最终操作之前清理堆栈操作的痕迹——比如将堆栈指针旋转到堆地址——因此仅通过分析调用堆栈就很难检测到。
例如,这里有一个简单的 ROP 演示。函数 Foo() 调用函数 Bar(),将返回地址压入堆栈。函数 Bar() 包含一个漏洞,允许攻击者控制堆栈并覆盖返回地址,将恶意 shellcode 的地址放在那里。一旦函数返回,就会调用恶意返回地址并执行shellcode:
其他代码重用攻击
攻击者可以使用其他一些技术来代替或与 ROP 结合使用:
- 面向调用的编程 (COP) :这种技术类似于 ROP,但它不是覆盖堆栈上的返回地址,而是覆盖一个函数指针。这对于初始化漏洞利用很有用,因为利用缓冲区溢出覆盖堆栈或堆上的函数指针比覆盖堆栈上的返回地址而不破坏堆栈cookie更容易。
- 伪造的面向对象编程 (COOP) :该技术使用具有虚拟方法的 C++ 对象来重定向执行流程。不是直接修改函数指针,而是覆盖对象中的 v-table 指针。
- 面向跳转的编程 (JOP):该技术使用软件中的间接 jmp 指令将执行重定向到攻击者控制的位置。JOP 通常不使用链接返回地址,而是使用 JOP 小工具的地址表以及所谓的“调度小工具”:一小段代码,它增加一个寄存器值以指向跳转表中的下一个地址,然后执行间接跳转到该地址。JOP 小工具依次执行一些指令,然后间接跳转回调度程序小工具。
现有对策
存在不同的机制来防止或检测这些漏洞,包括堆栈 cookie、控制流完整性、调用堆栈分析和英特尔 CET。不幸的是,正如我们接下来讨论的那样,这些方法中的许多都存在降低其有效性的局限性。
堆栈饼干
堆栈 cookie 是放置在堆栈上的值,位于局部变量和返回地址之间。编译器将生成代码,通过与当前堆栈指针异或一个魔术值来在函数入口处初始化堆栈cookie,然后在返回调用者之前检查该值,如果该值与预期值不匹配,则使进程崩溃。这种机制通常只添加到使用堆栈缓冲区的函数中,这可能会出现缓冲区溢出错误,从而防止它被滥用来覆盖返回地址。
控制流完整性 (CFI)
控制流完整性描述了试图保护间接调用(例如,来自函数指针或虚拟方法)不被操纵的一系列机制。这是通过插入编译器生成的代码来完成的,该代码验证间接调用的目标是合法的调用目标。
在 Windows 上,这种保护机制称为控制流保护 (CFG)。为了验证调用目标,使用了位图,该位图由内核从所有加载的 DLL 和可执行文件的映像中的元数据生成,并映射到支持它的每个进程的地址空间。每个位代表 8 个字节的代码,从而产生一个巨大的位图。不幸的是,CFG 需要使用编译器标志来启用,它还没有被广泛采用。它不能在没有 CFG 的情况下编译的 DLL 上强制执行,并且对于禁用它的进程,它也会对所有系统 DLL 自动禁用,即使它们支持它。
Windows 11 有一个改进的机制,称为 Extreme Flow Guard (XFG)。在这里,编译器会在每个函数之前插入函数签名的 64 位散列。对于每个间接函数调用,编译器生成指令,将函数指针和要调用的函数的散列加载到寄存器中,然后调用调度函数,该函数首先验证散列是否与存储在目标函数之前的散列匹配,在跳到目标之前。不过,Windows 11 预发行版中的当前实现相当无用,因为哈希不匹配(以及未对齐的目标地址)只会导致回退到基于位图的 CFG。
调用堆栈分析
虽然前面描述的所有缓解措施都是通过操作系统实现的,但安全软件有自己的方法来检测这些技术。例如,安全软件可以拦截某些系统函数并分析调用堆栈中的操纵迹象,例如实际堆栈之外的堆栈帧或堆栈上与任何调用指令不匹配的返回地址。
这通常是 ROP 漏洞利用的标志。但是更复杂的漏洞利用能够在调用任何系统服务之前将堆栈恢复到正常状态,这使得在利用发生后仅通过查看堆栈几乎不可能检测到漏洞利用。
英特尔 CET
自“Tiger Lake”以来,英特尔 CPU 支持一项称为控制流强制技术 (Intel CET) 的功能。它提供了两个功能来防止代码重用攻击:间接分支跟踪(IBT)和影子堆栈(SS)。IBT 增加了 ENDBR 指令,它标记了间接调用和跳转的合法目标,不允许间接跳转和调用任何其他指令。用户模式无法访问的影子堆栈自动存储来自普通堆栈的返回地址的副本,并检测普通堆栈和影子堆栈之间的返回值不匹配。它受 Windows 10 RS5 支持。
CrowdStrike 的替代方法
虽然存在许多可行的解决方案,但它们要么受到保护(堆栈 cookie、堆栈分析)的限制,要么需要编译器和操作系统的支持,而对于英特尔 CET,则需要更新现代 PC。可以预期,未受保护的软件将在未来很多年出现。
为了解决现有软件的问题,需要一种替代方法。为了解决这个问题,我们研究了使用英特尔处理器跟踪来实施软件解决方案。
英特尔处理器跟踪
英特尔处理器跟踪或英特尔 PT 是自第五代(“Broadwell”)以来英特尔 CPU 上的一项 CPU 功能。它允许 CPU 不断地将有关当前执行代码的信息写入内存缓冲区,该缓冲区可用于重建确切的控制流。主要使用场景是在运行时跟踪可执行文件,将跟踪存储在磁盘上,然后对其进行分析以重现已执行的确切指令序列。在这种情况下,分析不需要非常快,但跟踪的捕获仍然需要高效,以免过度减慢进程的执行速度。
为了实现这一点,CPU 使用针对大小进行了极大优化的数据包写入跟踪,从而导致只有百分之几的开销。
为了尽量减少要写入的数据量,CPU 不存储任何可以从可执行代码中复制的信息,这些信息预计可用于分析。
例如,CPU 只会在执行到无法从正在执行的指令确定的位置时写入数据包。这意味着执行直接跳转和调用,其目标地址硬编码在二进制文件中,不会导致生成数据包。无法从可执行代码派生的间接调用和跳转以及返回将导致指定指令目标地址的数据包。
另一个导致数据包生成的操作是条件跳转。对于这样的跳转,目标已经编码在可执行文件中,因此唯一需要的信息是分支是否被采用,可以用单个位表示。为了实现这一点,CPU 会将一种称为 Taken Not Taken (TNT) 数据包的数据包类型写入缓冲区,该缓冲区将存储多个位,每个位代表一个条件跳转。
另一个优化不是写入间接跳转的完整目标地址,而是只写入目标地址的最低字节,因为最高字节通常保持不变。这通常会将一个数据包从 9 个字节减少到 5 个字节甚至 3 个。
配置
英特尔 PT 使用特定于型号的寄存器 (MSR) 进行配置。这些寄存器存在于每个 CPU 内核中,因此会影响基于每个 CPU 的跟踪。要捕获应用程序的跟踪,有必要在每个线程级别收集跟踪。为此,操作系统需要在每个线程上下文切换上保存和恢复这些 MSR。这是通过使用 XSAVES 和 XRSTORS 指令来完成的,它们允许操作系统内核保存和恢复不同的寄存器集。这些是旧 XSAVE 和 XRSTOR 的扩展版本,它们只允许保存和恢复通用用户模式可用寄存器,因此可以在用户模式下执行。新指令中的 S 后缀表示“Supervisor”模式(或内核模式),允许保存和恢复特权 CPU 状态,并且只能由内核执行。从第六代开始,英特尔 CPU(“Skylake”)可以使用这些指令保存和恢复英特尔 PT 状态 MSR。此外,操作系统需要支持这一点。从 RS4 开始,Windows 10 就实现了这一点。
使用英特尔 PT 检测漏洞利用
能够捕获应用程序的执行跟踪,运行在内核中的安全软件现在能够通过解析捕获的跟踪数据包以及应用程序地址空间中的执行指令来查找代码重用攻击。能够解码指令依赖于在分析数据包时它们仍然存在。当分析的指令数量不会太大时,几乎总是如此。
虽然通常希望将缓冲区中的指令数量保持在较低水平以降低分析成本,但它还必须足够大以完全覆盖更大的库函数,例如 CreateProcess,它在切换到内核模式之前执行大量指令,因此当内核模式服务最终被调用时,导致调用它的漏洞仍然在缓冲区中。
在其分析中,安全软件现在可以检查不同的可疑操作,例如返回不匹配的调用、可疑的堆栈指针加载、过度使用间接调用和跳转等等。
Falcon 硬件增强漏洞检测
随着版本 6.27 的发布,CrowdStrike Falcon 传感器具有称为硬件增强漏洞检测的新功能,它以上述方式利用英特尔 PT。
如果机器启用并支持该功能,传感器将启用对一组选定程序的执行跟踪。每当程序执行关键系统服务(如创建新进程)时,传感器将分析捕获的跟踪以查找可疑操作。由于上述要求,该功能仅适用于配备第六代或更新版本 Intel CPU、运行 Windows 10 RS4 或更高版本的系统。
手术
对于选择进行跟踪分析的每个进程,每个线程都将配置为启用对所有用户模式代码的跟踪。为每个线程分配一个跟踪缓冲区(已证明 32 KB 就足够了),并在线程的上下文中配置 MSR。Windows 将在每个线程上下文切换上保存和恢复配置 MSR,从而确保跟踪缓冲区仅包含来自该线程的跟踪。
具有可配置预过滤的内核模式回调决定分析何时到期,然后再次在执行操作的线程的上下文中运行分析器。
分析器对写入跟踪缓冲区的数据包进行解码,并根据需要对指令进行解码以再现控制流。
为了有效地解码跟踪,分析仪使用定制的 PT 数据包解码器,该解码器针对需要执行的所需操作进行了优化。此外,它使用高度优化的指令解码器,每秒能够解码数千万条指令。这允许分析器解码和验证一个足够大的跟踪缓冲区,以在几毫秒内覆盖对 CreateProcess 等函数的调用。典型的分析在大约 5 毫秒内处理大约 130,000 条指令。显然,这仍然是一种开销,如果过于频繁,可能会导致应用程序变慢。因此,只需要很少触发分析,例如在创建新进程或加载新 dll 时。
一种分析方法是维护一个“影子堆栈”,它记录调用指令的地址并随后验证返回指令的目标以匹配它们。
每当解码调用指令时,分析器都会向影子堆栈添加一个条目,而每当解码 ret 时,分析器将从影子堆栈中弹出一个条目,并将其与跟踪缓冲区中捕获的目标 IP 进行比较。记录不匹配。
由于跟踪将从任意位置开始(例如,从调用链的深处开始),因此影子堆栈可能未构建,或者在找到返回时可能已经为空。作为一种后备,当影子堆栈中不存在任何条目时——因此分析器不知道合法的返回地址——它会检查目标地址是否在调用指令之后。
当使用 ROP 来利用应用程序并且由于 ROP 链调用系统调用时,执行跟踪将包含许多与影子堆栈中的记录不匹配的返回,并且在大多数情况下也不匹配。 t 返回调用指令后立即找到的地址。其他利用指标是一系列短小工具,然后是 ret 和不寻常的堆栈指针修改操作。
每当分析器遇到其中之一时,它就被认为是潜在的 ROP 小工具。在分析过程中,收集数据,然后根据数据进行评估,以确定是否可能发生 ROP 攻击。
假阳性缓解
如前所述,跟踪记录执行的二进制代码通常仍在内存中。但是,在某些情况下,情况并非如此。例如,JIT 代码可能在执行后但在分析发生之前已被释放或覆盖。这可能导致无法跟踪执行跟踪,甚至导致对其的误解。分析器中有一些缓解措施可以检测此类情况并避免累积误报。此外,分析器收集有关解码失败的遥测数据,允许配置有选择地忽略结果。
检测
从 Falcon 传感器版本 6.27 开始,我们添加了一个新的检测 (SuspiciousExecutionTrace) 和一个伴随它的遥测事件 (PtTelemetry)。早期分析表明,这种漏洞利用检测方法将证明是卓有成效的,因为我们已经能够证明对许多基于 ROP 的漏洞利用链的检测效果,这些漏洞由针对 FireFox 的 CVE-2019-17026 等漏洞触发。
概括
在我们阻止违规行为的使命中,CrowdStrike 努力不断扩展我们的漏洞检测和预防功能套件。许多 CPU 功能(例如 Intel PT)没有得到充分利用,可以有效地用于检测和防止漏洞利用,我们将继续投资于这些 CPU 技术,为 Falcon 传感器带来创新功能。必须提及的是,CrowdStrike Falcon 采用分层方法通过使用机器学习(在传感器和云中)和使用 IOA 的基于行为的检测来保护客户免受攻击和高级威胁。在不支持 Falcon 硬件增强漏洞检测的虚拟机或其他配置上运行 Falcon 传感器的客户仍然受到 Falcon 保护客户环境的分层方法的全面保护。
如何保护云工作负载免受零日漏洞的影响
2022 年 2 月 4 日
https://www.crowdstrike.com/blog/protect-cloud-workloads-from-zero-day-vulnerabilities/
保护云工作负载免受Log4Shell等零日漏洞的影响是每个组织都面临的挑战。
当漏洞发布时,组织可以尝试通过软件组成分析来识别受影响的工件,但即使他们能够识别所有受影响的区域,修补过程也可能既麻烦又耗时。正如我们在 Log4Shell 中看到的那样,当漏洞几乎无处不在时,这会变得更加复杂。
但是补丁并不能解决组织在零日发现和发布期间面临的风险。根据麻省理工学院技术评论,2021 年至少发现了 66 个零日漏洞,这是有记录以来的单年最多。
防止零日漏洞利用影响组织需要一种主动方法,自动检测并保护客户免受利用后活动的影响。
CrowdStrike Falcon Cloud Workload Protection添加了上下文驱动的异常检测,通过为在云中运行的应用程序提供强大的零日保护来填补这些空白。
为什么要使用异常检测?
我们非常了解我们的各种对手及其核心目标,这通常使我们能够找到他们,无论他们如何进入系统。例如,cryptojacker通常会下载并启动硬币矿工。以勒索软件为重点的组织通常最终会尝试加密大量文件。所有小组,不管他们的目标是什么,都可能会进行一些侦察。
然而,由于将我们的工作负载转移到云端,我们的攻击面变得比以往任何时候都更大、更复杂且变化更快。与此同时,积极主动的威胁行动者大军每天都在增加,他们试图寻找隐秘的新方法来利用这个难以防御的表面。总会有聪明的演员以新颖的方式行事并逃避防御以寻找特定的预期模式的情况。例如,Log4Shell 使攻击者可以轻松地将行为注入受信任的应用程序,利用 Java 虚拟机 (JVM) 的强大功能以新的方式实现其目标。
然而,向云技术的转变也为我们带来了新的优势。基于云的工作负载往往很小、用途单一且不可变,我们可以看到开发周期的早期部署前阶段,这为我们提供了有关其组件和预期配置的有用信息。与通用计算机不同,我们可以预测特定环境中的工作负载行为。这意味着,除了尝试预测攻击者可能会向系统引入哪些特定的异常行为外,我们还可以定义“正常行为”并标记任何显着偏离它的行为——包括对未公开漏洞的新攻击。
剖析和异常检测是复杂的技术,具有曲折的过去。它们当然不足以作为一种检测策略,并且必须非常小心以避免大量误报。我们需要以一种补充我们现有的以攻击者为中心的检测的方式进行深思熟虑和正确地引入它们,并提供另一层针对零日威胁和已知威胁的保护,同时又不会否定经过尝试和真正方法的好处。
新上下文支持异常检测
为了启用异常检测的第一次迭代,我们为 Falcon 传感器添加了上下文,允许我们以更可预测的方式对其遥测进行分段。例如,如果我们知道某些事件来自托管特定 Kubernetes 集群中特定服务的 Apache Tomcat 实例,那么我们可以更好地判断它们是否描述了典型行为,而不是来自我们一无所知的任意 Linux 服务器的事件.
新的上下文包括附加到流程树的信息:
- 生成树的特定长时间运行的应用程序(例如,“Weblogic”)
- 树是否是 Docker exec 命令的结果
- 一棵树是否似乎包含动手键盘活动的迹象
当与来自外部来源的数据(如用户策略)相结合并通过机器学习进行分组时,它会变得更加强大。
使用新上下文的初始异常检测
通过分析来自数百万个传感器的数据,我们可以识别不变量并将它们编码为高置信度的检测。例如,我们知道,redis 通常不会在其进程树的任何位置生成交互式 shell。它也不会修改 crontab。这两个操作都与安全性非常相关,因此使用这些洞察力在 redis 发生任何一个时发出警报是有意义的。
新添加的遥测可以更轻松地捕获特定容器化工作负载的正常情况和不正常情况,例如:
- 直接连接到 kubelet(潜在的横向移动尝试)
- 访问了外部进程内存(潜在的凭据盗窃)
- 添加到正在运行的容器中的新可执行文件
- 在容器中启动的交互式会话
- 水平端口扫描
- 正常端口扫描
- 和更多
如果没有上下文,这种遥测不会让我们走得太远。有很多工作负载直接连接到 kubelet——例如监控软件。此外,数量惊人的合法应用程序会进行端口扫描或类似端口扫描的活动。
添加上下文会增强信号:执行到生产容器并开始端口扫描,或者执行到生产容器并开始对 kubelet 端点进行变异调用是非常不寻常的。我们也碰巧知道许多具有云感知能力的威胁参与者同时做这两件事。
这些初始检测介于异常和传统的以攻击者技术为重点的检测之间。我们正在深入研究数据以找出某些情况下的异常情况,但我们的工作仍然是由对标准行为明显普遍偏差的预感驱动的。
通过更复杂的异常检测获得理解
几个关键部分将使更复杂的异常检测成为可能——能够自动识别特定环境中特定服务的细微变化的检测,包括:
- 更强大的用户策略
- 了解更高级别的云工作负载结构,例如“服务”
- 跨这些构造和随时间推移的遥测聚合
- 来自构建和部署阶段的更多信息
随着这些部分的到位,我们通过用户提供的上下文并从 Kubernetes 等来源中提取来更好地了解我们保护的工作负载,我们可以开始做出更自信的动态预测:Pod 是“ payroll”服务不与外部互联网建立任何连接。指定为“生产”的集群通常不会让用户执行进入容器和安装包(等等)。作为 Falcon 传感器 6.35 中的示例,我们可以检查单个容器的基本过程分析和增强的漂移检测,如图 1 所示。
有了足够丰富的遥测和上下文,我们也可以开始使用机器学习来解决这个问题,尽管这是另一篇文章的主题。
在被利用之前阻止零日
可靠地检测与预期行为的偏差对于阻止违规行为非常有效。在带有易受攻击版本的 Log4J 的容器中运行的 Java 工作负载一旦受到攻击,就会开始表现不同。它可能会建立新的传出网络连接,添加或运行新的可执行文件,或者编辑它通常不接触的关键系统文件。甚至在 Log4Shell 成为头条新闻之前,所有这些事情都会引发警报。
在云工作负载保护中,我们始终以攻击者为中心,并将始终研究和检测重要威胁参与者的特定策略。但是,通过利用以云为中心的新技术堆栈提供的机会,我们开始通过异常检测构建另一层保护。两层都将阻止下一个零日,甚至在任何人都不知道它存在之前。
CrowdStrike Research 调查利用行为以加强客户保护
from:https://www.crowdstrike.com/blog/exploit-research-strengthens-customer-protection/
- CrowdStrike 持续观察研究利用行为加强对客户的保护
- 代码执行技术不断针对 Windows、Linux 和 macOS 操作系统
- 成功的远程/任意代码执行可以为攻击者继续攻陷提供立足点
- 了解和检测利用后的活动对于保持环境安全至关重要
随着技术继续快速发展,对手使用的技术也在快速发展。这可能被认为是给定的,但重要的是要了解攻击者如何利用环境中现有的和常用的应用程序来试图夺取控制权并实现其目标。这些利用后的策略是CrowdStrike Falcon ®传感器所关注和检测的东西,当它观察到可疑的过程时会生成警报,以确保我们的客户得到警报并准确了解他们环境中正在发生的事情.
在大多数情况下,攻击者会尝试获得某种形式的代码执行——任意代码执行 (ACE) 或远程代码执行 (RCE)——以进一步进入环境并实现其目标。如果对手在目标环境中获得代码执行,他们就成功地获得了立足点以继续攻击。他们选择如何继续是由他们的最终目标决定的。例如,一些常见的后续步骤可能包括侦察、特权升级、信息窃取或丢弃和执行进一步的有效负载。这可能造成的影响只有在损害发生后才能由受害者真正衡量,但可以说,这对任何公司来说都不是积极的情况。
CrowdStrike 采用分层的安全方法来检测和防止利用后的活动,例如试图在这些多层中执行恶意代码。重要的是要了解 ACE 和 RCE 的概念不受特定操作系统的约束(尽管特定实例会绑定)。这就是我们研究和模拟漏洞的原因——为客户提供最佳的防御措施,防止利用通过这些类型的攻击传递的漏洞。
为了帮助说明 Falcon 平台在检测这些类型的不需要的代码执行漏洞攻击方面的多样性,本博客讨论了 Windows、Linux 和 Mac 中的 RCE 和 ACE 漏洞示例。我们深入研究 Falcon 传感器如何识别这些威胁以确保您的环境安全。
Windows:Microsoft MSHTML 远程代码执行漏洞
在 Windows 中,存在影响 MSHTML 浏览器引擎的 RCE 漏洞。攻击者可以利用这些漏洞创建恶意 Microsoft Office 文档,然后诱使用户打开它们。本质上,攻击者在文档文件中放置了一个特殊对象。当受害者打开受污染的文档时,会联系到攻击者控制的外部 URL,并下载其内容并随后由 MSHTML 引擎执行。
在其披露时,据报道已观察到该漏洞在野外被利用。微软表示,MS Office 在 Office 的受保护视图或应用程序防护中打开文档,因此提供了某种形式的防止漏洞利用的预防措施。但是,如果攻击者能够制作用户信任的文档并进而启用编辑,则该漏洞可能会被利用。
利用我们的 Spotlight 服务的客户能够输入 CVE(例如这个)并在可能容易受到相关类型攻击的端点上获得返回的结果。还提供了与 CVE 相关的大量信息以及修复所需的步骤。Spotlight 扫描中为 CVE 提供的链接之一是供应商咨询链接以供进一步阅读。在此示例中,也可以在此处找到已发布的相关咨询。
此外,在深入测试以复制这些漏洞的触发方式之后,关于利用它们生成的流程树的常见模式出现了。
这包括生产力应用程序编写具有唯一、可定位值(如文件名、文件类型或行为)的二进制文件等活动。发现这一点确保了相关检测研究团队可以针对流程树的多个不同级别,当所有这些级别一起查看时,表明该 RCE 尝试在无数不同的场景中进行。
即使在进行了初步工作(并发布了相关检测)之后,进一步的分析也发现了整个杀伤链中的其他区域,这些区域对与这种 RCE 行为相关的活动产生了很高的真阳性检测率。随后的分析发现特定文件类型被写入磁盘上的目标位置,这些位置与独特的进程沿袭相匹配。为了为客户提供尽可能好的覆盖范围,进一步探索并确认了该途径以指示与 MSHTML 浏览器引擎 RCE 相关的行为。作为这项研究的结果,向所有客户推送了多项检测,以形成针对此漏洞的利用尝试的多层防御,并确保客户受到保护。
Linux:特定服务器类型中的有针对性的任意代码执行
Linux 漏洞的一个示例涉及特定服务器类型和数据中心软件中的对象图导航语言 (OGNL) 注入。例如,可以将特制请求发送到相关服务器或数据中心实例上的易受攻击的端点。此外,远程身份验证的攻击者或在适当情况下未经身份验证的攻击者都可以利用此漏洞,这将导致任意代码执行,从而可能将漏洞的严重性提高到严重程度。
在 2021 年 8 月 25 日首次公开披露后,CrowdStrike Falcon OverWatch™威胁猎手开始不懈地调查 CrowdStrike 的客户可能通过这种方法受到攻击的任何暗示。通过他们的调查,相关团队很快开始看到此漏洞的攻击面从纯粹基于 Linux 的利用尝试扩大到包括 Windows 尝试利用。
凭借对漏洞利用的了解以及对针对客户的未遂攻击的观察,OverWatch 猎手很快就发现了企图利用漏洞的早期迹象。一个这样的例子包括攻击者将 Base-64 编码的字符串写入和解码到 confluence 目录中的文件。你可以在这里阅读更多关于猎鹰守望先锋狩猎团队的努力。
由于此漏洞的严重性,其他内部团队也开始进行并行研究工作,以确保 CrowdStrike 针对此漏洞的覆盖范围确保最大覆盖范围。这些场景在受控环境中进行了彻底的研究和测试,以获得尽可能多的相关遥测数据。通过这种方式,研究团队可以找到与漏洞利用行为相关的模式,并确定 Falcon 传感器的分层方法可以检测到它的方式。可能会出现特定的兴趣点,例如流程沿袭本身的相似性、每个级别上使用的相关命令行以及端点显示的特定行为特征。
通过在成功利用的场景中查看遥测和相关的流程树,团队可以根据流程树中出现的模式和端点显示的观察行为来进行检测。这有助于进一步减少误报检测并提高相关活动与利用已知漏洞相关的可能性。在试验台引爆中观察到的相关漏洞利用活动包括各种持久性尝试、网络连接活动、侦察活动和文件下载尝试等。针对端点的流程操作及其请求有助于确保 CrowdStrike Falcon 传感器为客户生成高保真检测。
上述截图(显示相关活动被阻止)的有趣之处在于,它突出了一种常见的后期利用方法,攻击者经常尝试利用 wget/curl 等来检索更多有效负载以在目标环境中运行以扩展他们的范围。这种方法也出现在最近的Log4j漏洞利用尝试中(如图 4 所示),其中 CrowdStrike 阻止了恶意操作的发生。
macOS:预安装脚本
在 macOS 环境中使用 post-exploit 代码执行的另一种策略涉及恶意 post/pre-install 包脚本。本质上,恶意脚本在安装过程中利用了 macOS 安装程序 API。这种类型的行为操纵是攻击者可以用来在网络中站稳脚跟的另一种途径。虽然在技术上不被认为是“完整的”RCE(因为它仍然需要用户交互才能运行初始安装),但这种技术是另一种形式的 RCE,攻击者可以使用它来破坏端点并随后破坏网络。
例如,Silver Sparrow 就是一个使用此方法的恶意软件示例。用户运行看似无辜的 .pkg 文件并在不知不觉中触发 RCE,该 RCE 可用于持久性、连接到命令和控制 (C2) 通道、在目标计算机上执行主动侦察或进行其他与攻击者相关的活动。
这里要认识到的重要一点是,这个恶意软件是一个预安装程序,这意味着代码在 .pkg 文件执行的最开始运行。这意味着最终用户在 .pkg 文件安装完成时已经被感染。幸运的是,CrowdStrike 内容研究和响应团队能够调查和缓解相关行为,以确保此类场景不会在客户环境中出现。
随着这种技术的出现,CrowdStrike 的内容研究和响应团队开始调查这种活动,以在客户 macOS 环境中识别和阻止它。通过查看现有遥测数据和进一步测试生成的相关数据,我们很快开始了解攻击的方法。在彻底了解了这种攻击是如何进行的,以及它可能对客户造成的潜在武器化风险之后,该团队找到了一种方法来确保相关活动在有机会执行之前被杀死。经过严格的测试,CrowdStrike 的内容研究和响应团队能够确保实施高保真预防措施,通过针对流程沿袭的多个阶段来打击这种类型的利用尝试。
CrowdStrike 威胁研究和分层安全方法的终极价值
漏洞利用研究使 CrowdStrike 能够更好地保护客户。再加上我们的传感器和云端机器学习和基于行为的保护,Falcon 平台可以检测威胁并保护客户。与大多数漏洞一样,最好的选择是确保任何环境中的系统都是良好补丁管理计划的一部分。CrowdStrike Falcon Spotlight™是一种无需扫描、“始终在线”的漏洞管理解决方案,适用于您的基础设施中的所有端点,可以洞察您的环境中可能需要进一步关注的区域,以确保维持强大的安全态势。
使用上述场景中的示例,我们可以看到 Spotlight 如何帮助其利用无扫描技术来确定您环境中的哪些端点可能容易受到特定漏洞的影响,只需搜索 CVE ID。此特定 CVE 的 ExPRT 评级为严重,严重性为高。查看针对此 CVE 的检测可提供大量信息,包括修复详细信息、供应商建议、参考资料、可能的来源等等。(ExPRT 评级基于动态评级 ML 模型,可能与传统的 CVSS 分数不同。在此处了解更多信息。)
从上面的示例中,我们还可以看到 CrowdStrike 的 Falcon OverWatch 威胁猎手如何快速响应不断变化的威胁形势,将各个点连接起来并将关键信息拼凑在一起,以获得优势并确保我们客户的环境安全。
此外,我们可以看到 Content Research and Response 等其他团队如何围绕可疑活动进行调查、分析和创建相关检测和预防措施——如果在特定情况下使用这些活动,可能会对客户环境造成重大损害——同时确保相关但良性活动不受阻碍地运行。
除此之外,还使用了更多额外的安全层,例如我们甚至没有讨论过的各种机器学习模型。
上面的示例描述了一种技术(例如代码执行)如何在不同的操作系统中以各种形式出现,以及 CrowdStrike 研究人员如何调查它们以保护客户免受利用,以及我们为确保客户环境保持安全而采用的多层保护。我们努力确保我们的客户免受后期利用活动的影响,如果通过采用分层安全方法而错过这些活动可能会造成毁灭性影响。攻击者经常找到融入环境的新方法,这使得检测他们在端点和网络中站稳脚跟的尝试变得更具挑战性。在 CrowdStrike,我们始终致力于阻止违规行为。