吉沃运营专员 发表于 2021-8-25 17:03:15

"融入" EDR:攻击者如何避免被 "抓获"

本文翻译自:https://www.optiv.com/insights/source-zero/blog/edr-and-blending-how-attackers-avoid-getting-caught
在 上一篇文章 中,我们讨论了攻击者如何绕过 EDR,但是,绕过 EDR 的内存钩子并不是攻击者唯一关注的点。EDR 仍可以转发大量信息,此信息可以与其他基于网络的控件一起创建检测事件。例如,攻击者可以绕过 EDR 加载到恶意进程的钩子,但在执行二进制文件之前和随后的 unhooking 的所有事件仍将被记录。对于 EDR,从用户的 TEMP 文件夹运行的 "aw2r1941g.exE" 可能不会触发基于 EDR 的警报,但它可以辅助分析师审查。即使删除了 EDR 的钩子,EDR 仍然可以向安全团队提供信息,因为该进程仅在执行应用程序时发生。

在这个阶段,攻击者开始专注于 "融入",利用传感器通常记录的噪音或活动。攻击行为通常不会在非恶意事件中被检测到,而是在可疑事件中被检测到。攻击者明白,他们的加载器 (将 shellcode 加载到终端设备内存上) 可能不是生成警报的原因。可能仅仅是他们下载它的方式,执行它的方式,甚至是进程名称本身。

一个很好的例子是 bitsadmin.exe,这是一个 Windows 自带的应用程序 (称为 LOLBINS),会被攻击者用来下载和执行恶意 Payload。但 Bitsadmin.exe 本身不一定是恶意工具,系统管理员会合法使用该程序,那么防守者如何抓住这一点呢?它通常不是由 EDR 保护检测到的,而是由系统事件记录机制检测到的。通过查看事件,基于以下几点检测仍发生:


[*]这是用户正常使用的吗?
[*]下载的文件是否来自可信的已知来源?
[*]正在下载什么类型的文件?





上图抽象的流程在中大型组织中极难扩展,因此,公司依靠基线和用户行为来发现异常并帮助钻探可疑活动,从用户行为扩展到进程,以帮助将传感器数据量过滤为可理解和可管理的内容。即使对于中等规模的组织,从安全产品中收集的大量遥测数据也可能是巨大的。

这就是 IOC 真正发挥作用的地方,IOC 是用于识别系统或网络上是否存在恶意活动的工件。这些可以作为识别攻击者行为的面包屑。IOC 示例包括一个进程挖空另一个进程、来自单一来源的大量失败身份验证或诱使用户打开附件的电子邮件。这些面包屑可以回溯攻击者的活动,因为实现攻击者预期目标的大多数技术或标准操作程序都有详细记录。防御者使用的指标可以帮助识别攻击者已经或试图做的事情。





IOC 有助于改变防御者的处境,然而,攻击者已经适应了这一点,他们知道如果能够将少量的面包屑充分融合,那么被检测到的可能性就会降低 (或者只会在很久以后被检测到)。我们将这些称为异常指标。

异常指标不一定作为入侵者行为突出的事件或行为,但触发了某些事件 (通常为低严重性),在审查时看起来很怪异。这种行为并不总是恶意的,但它需要某种形式的审查或调查。异常指标通常出现在安全团队防御和监控控制的 "盲点" 中,并且经常被发现和审查得太晚,通常不是因为防御者的过错,而是由于与基本的攻击者与防御者心态相关的系统性问题。攻击者只需要成功一次,而防御者需要考虑所有可能的因素。因此,蓝队的注意力总是会分散,集中在眼前的威胁上,而更多的异常事件会在以后得到处理。这些事件包括用户在正常工作时间以外登录网络,用户登录后生成 Excel 应用程序,甚至用户在短时间内快速退出。

知道了这一点,攻击者就可以专注于删除任何“明确的妥协”指标,从而专注于融入“异常行为”,从而降低被检测的机会。与上一篇博客中描述的技术相比,攻击者开发的这一阶段通常使用较少的技术。相反,攻击者专注于通过融入周围环境来欺骗人类分析师的战术。

那么,攻击者可以使用哪些技术呢?

一、可执行文件签名

下图为已验证的 "Microsoft Corporation" 二进制文件。由于该文件是由微软等受信任的权威机构签署的,因此可能不会受到太多的审查。代码签名证书是一种数字证书,能够验证发布者的身份,确保他们是公认的和受信任的。代码签名还可确保软件未被篡改,并保持原样。





许多工具,例如 Google Safe Browsing、Microsoft 的 SmartScreen 甚至反病毒和 EDR 产品,都需要对软件进行签名或将它们标记为不受信任(在某些情况下,完全阻止执行)。如果攻击者可以破坏代码签名证书,他们几乎可以签署任意的恶意软件,进而让安全产品信任它。

代码证书几乎不可能被破坏,因为公司在保护它们方面投入了大量资金,而被破坏的证书不会长时间保持这种状态。可以购买,但非常昂贵,而且通常很容易被标记。因此,很多安全产品都开始创建自己的可接受证书白名单。

一种更简单的技术是创建一个伪造的代码签名证书。这可能非常有效,因为许多终端安全产品没有能力在运行时完全审查和验证所有应用程序的证书。攻击者知道这一点,所以他们需要做的就是伪造足够多的值来混入其中。

以下为数字签名有效性验证:


[*]完整性验证:文件的哈希值是否与签名中的已签名的哈希值匹配?如果不是,则文件的完整性已被破坏,不应信任它。
[*]证书链验证:证书链中的每个证书是否由其父证书正确颁发?
[*]证书有效性检查:如果证书链中的每个证书都没有时间戳,那么每个证书是否在其规定的有效期内?如果数字签名带有时间戳,则验证带有时间戳的证书反签名链。
[*]吊销检查:证书链中的任何证书是否被管理员吊销或明确不信任?
[*]根 CA 验证:签名者链中的根证书是受信任的证书吗?

二、文件属性写入

与 Office 文档中的 metadata 类似,文件属性值可以为调查人员提供有价值的信息,以供进一步调查。如果这些值比较显眼,它可以帮助防御者 "抓住" 攻击者。在许多情况下,文件属性若有空值可能会引起怀疑,甚至调查,因为合法的二进制文件或 Dll 通常具有文件属性。





因此,攻击者可以修改文件的文件属性,使其看起来像是 Windows 操作系统的一部分。这是通过在编译过程中嵌入资源文件来实现的。资源文件可以修改编译器输出的应用程序属性,使攻击者能够伪造合法的值,从而更难确定其恶意 Payload 是否真实。实现这一点最简单的方法之一是使用嵌入式资源文件。资源文件在与 Payload 一起编译时,将修改已编译代码的属性部分。

.syso 文件是嵌入式资源,当编译应用程序时,可将此整合进其中。它们可以指定已编译应用程序的属性或功能,在这种情况下,攻击者可以使用它们来欺骗合法 Windows 应用程序的属性。重要的是,并非所有编程语言都可以本地利用资源文件,这对 Go 或 C# 等语言非常有利。攻击者可以通过使用 PowerShell 的 "Get-Item" 模块中的 ".VersionInfo" 选项从有效的 Windows 系统中提取文件属性。





通过属性值列表,攻击者可以创建具有这些匹配属性标题和相应值的资源文件。





嵌入式资源可以是任何文件类型。在本文中,我们将主要关注 Golang。有很多很好的资源,但现在,我们将重点介绍如何使用 Goversioninfo 包,它可以为 Windows 文件属性创建 .syso 文件。有了这个包和在任何系统上都可以找到的许多受信任程序的文件属性提取列表,我们可以通过编程方式生成 .syso 文件。





三、如何检测这些技术

识别这些攻击者的策略并不简单,因为伪造的值来自合法来源。基于哈希的白名单应用程序可以工作,但它们也会产生问题。公司可能需要操作数以千计的 Dll 和二进制文件,随着补丁或新版本产品的发布,这会使正常的蓝队操作变得繁琐。如果处理不当,可能会对业务造成不利影响。

相反,寻找异常行为特征的主动狩猎技术可以创建网络的详细地图,以帮助识别这些类型的技术。蓝队可以查看网络连接、磁盘上的完整文件哈希和路径、常见应用程序和 Dll 的注册表项。这将有助于确定系统上的 "正常" 进程活动基线,从而帮助分析人员识别异常进程。这有助于确定这些技术的关键特征:


[*]文件运行的位置:攻击者经常使用 AppData、ProgramData、Temp 等文件夹和其他临时存储位置上释放文件。系统应用程序或已安装的应用程序通常位于 C:\Windows 和 C:\Program 中,并且这两个位置都需要提升权限。通过基线应用程序识别异常行为,这样蓝队可以识别伪装成合法系统应用程序的异常和恶意应用程序。
[*]调用 Internet 的进程:虽然许多应用程序合法地调用基于 Internet 的资源,但这些位置应该高度基线化的,因为应该定期观察到目的地的正常流量。过滤掉这些以寻找新的、异常的流量,从而帮助蓝队集中注意力。


这些只是帮助识别黑客技术的两种主要方法,EDRs 可被用来收集其中一些信息,但不应将其作为遥测技术识别入侵者行为的唯一来源。

我们希望我们这一系列关于 EDR 的研究对你或你所在的组织有用,我们还将发布一系列关于这些技术的工具,Optiv 的代码项目可以在 Github 上找到。

页: [1]
查看完整版本: "融入" EDR:攻击者如何避免被 "抓获"