Melissa Alvarez

使用新的 Elastic 集成检测滥用合法工具的攻击

我们在 Kibana 的 Integrations 应用中添加了一个滥用合法工具 (LotL) 检测包。只需单击一下,即可安装并开始使用 ProblemChild 模型和相关资源,包括异常检测配置和检测规则。

阅读时间:10 分钟机器学习检测科学
Detecting Living-off-the-land attacks with new Elastic Integration

攻击者使用的攻击方法越来越复杂,不仅仅是独立的可执行文件或脚本。高级攻击技术,例如“滥用合法工具”(LotL),孤立地看似乎很正常,但在父子上下文中观察时则显得可疑。如果您的环境中运行的是 Windows,则必须具备检测此类攻击的系统。传统的基于启发式的检测虽然在检测单个事件方面有效,但往往无法在多步骤攻击中泛化。在 Elastic,我们已经训练了一个滥用合法工具分类器、异常检测作业和安全检测规则,以帮助我们的安全专业人员发现 LotL 攻击。

随着 Elastic stack 中集成包的出现,我们现在可以提供完整的、可定制的软件包,其中包括 LotL 分类模型、异常检测作业配置、检测规则和推理管道,以便更容易地安装和运行整个端到端数据管道,从收集 Windows 事件到针对潜在的 Lotl 攻击发出警报。我们将引导您完成设置过程,以便您自己尝试。

ProblemChild:回顾

在之前的博文中,我们讨论了如何使用检测规则存储库命令行界面 (CLI) 来设置 ProblemChild 框架并在您的环境中运行。我们现在已在 Kibana 的 Integrations 应用中添加了一个滥用合法工具 (LotL) 检测包。只需单击一下,即可安装并开始使用 ProblemChild 模型和相关资源,包括异常检测配置和检测规则。

如之前的博文所述,ProblemChild 是一个使用 Elastic Stack 构建的框架,用于检测 LotL 活动。由于攻击者利用目标环境中已存在的看似良性软件来躲避雷达,因此 LotL 攻击通常难以检测。在发生持续攻击时,环境中生成的进程的系谱可以提供强烈的信号。

ProblemChild 的监督机器学习 (ML) 组件利用 Windows 进程事件元数据中存在的进程系谱信息,使用推理在数据摄取时将事件分类为恶意或良性。然后应用异常检测来检测在监督模型检测为恶意的那些事件中出现的罕见进程。最后,检测规则会对罕见的父子进程活动发出警报,以此作为 LotL 攻击的指示。

组织中看到的事件数量和种类之多对使用规则和启发式方法检测 LotL 攻击构成了挑战,使得像 ProblemChild 这样的基于 ML 的框架成为一个很好的解决方案。

入门

我们已从 8.0 版本开始将模型和相关资源(包括管道、异常检测配置和检测规则)发布到 Kibana 的 Integrations 应用中。我们将继续保持这种格式。

如果您没有 Elastic Cloud 集群,但想开始试验已发布的 ProblemChild 包,您可以开始Elastic Cloud 的 14 天免费试用

我们现在将查看在几分钟内使用已发布的滥用合法工具 (LotL) 检测包在您的环境中启动并运行 ProblemChild 的步骤。

步骤 1:安装包资源

在 Kibana 中,Integrations 应用现在包含 LotL 攻击检测包。要安装资源,请单击安装 LotL 攻击检测资源按钮(位于设置选项卡下)。

这将安装使用 ProblemChild 模型来在您的环境中检测到 LotL 活动时生成警报所需的所有工件。

安装完成后,您可以导航到**堆栈管理 > 数据摄取管道**,并看到已安装**<版本号>-problem\_child\_ingest\_pipeline**,现在可以使用它来丰富传入的摄取数据。摄取管道利用**<版本号>-problem\_child\_inference\_pipeline**来实现此目的。

同样,安装的 ProblemChild 模型现在可以在**机器学习 > 模型管理 > 已训练模型**中看到。

步骤 2:丰富您的数据

现在,您可以使用摄取管道来摄取数据。这将使用机器学习模型的预测来丰富您的传入数据。

此管道设计用于处理 Windows 进程事件数据,例如Winlogbeat 数据。您可以通过添加简单的配置设置将已安装的摄取管道添加到 Elastic beat 中。

如果您已经将摄取管道与您的索引关联,则可以使用管道处理器将 ProblemChild 摄取管道集成到您的现有管道中。

您还希望将以下映射添加到您选择的 Elastic beat 中

{
  "properties": {
    "problemchild": {
      "properties": {
        "prediction": {
          "type": "long"
        },
        "prediction_probability": {
          "type": "float"
        }
      }
    },
    "blocklist_label": {
      "type": "long"
    }
  }
}

您可以在**堆栈管理 > 索引管理 > 组件模板**下执行此操作。可以编辑以添加自定义组件的模板将标有 _@custom_ 后缀。通过将上面的 JSON 块粘贴到**加载 JSON**弹出窗口中,编辑 Elastic beat 的 _@custom_ 组件模板。

您现在应该看到该模型使用以下字段丰富了传入的 Windows 进程事件

problemchild.prediction

  • 值为 1 表示预测该事件为恶意事件,值为“0”表示预测该事件为良性事件。

prediction_probability

  • 介于 0 和 1 之间的值,表示模型对其预测的置信度。值越高,置信度越高。

blocklist_label

  • 值为 1 表示该事件是恶意的,因为命令行参数中的一个或多个术语与黑名单匹配。

如果您想立即测试摄取管道是否按预期与您的数据配合使用,您可以使用一些带有模拟管道 API的示例文档,并确认您看到了**problemchild**字段。

步骤 3:运行异常检测

该软件包包含多个预配置的异常检测作业。这些作业使您能够在那些被监督模型检测为恶意的事件中找到最罕见的事件,以便确定哪些事件需要您的分析师立即关注。

要对已丰富的數據运行这些作业,请转到**机器学习 > 异常检测**。当您使用作业向导创建作业时,您应该会看到一个选项可以使用预配置的作业以及 LotL 攻击的卡片。选择卡片后,您将看到可以运行的几个预配置异常检测作业。请注意,这些作业仅适用于已通过摄取管道进行丰富处理的索引。

步骤 4:启用规则

为了最大限度地利用 ProblemChild 框架,请激活已安装的检测规则。当满足监督模型或异常检测作业的某些条件时,这些规则将被触发。已安装规则的完整列表可以在包本身的**概述**页面或最新的实验检测版本中找到。

为了启用和使用已安装的规则,您可以导航到**安全 > 规则**并选择_加载 Elastic 预构建规则和时间线模板_

请注意,有搜索规则和 ML 作业规则。例如,搜索规则由监督模型触发,此规则为

上述规则匹配任何 Windows 进程事件,其中受监督模型或其黑名单的预测值为 1(恶意)。

机器学习作业规则由您在步骤 3 中设置的异常检测作业发现的异常触发——例如,此规则

上述规则在每次异常检测作业 problem_child_rare_process_by_host 检测到异常分数大于或等于 75 的异常时触发。

摘要

如第一篇博文中所述,ProblemChild 的监督式机器学习组件经过训练,可以预测对可用于潜伏攻击的进程或命令行参数的预测值为 1(恶意)。但这并不意味着受监督模型预测值为 1 的所有内容都表示潜伏攻击活动。预测值为 1 应该解释为“这可能是恶意的”,而不是“这绝对是潜伏攻击活动”。

ProblemChild 的真正优势在于异常检测,它从受监督模型标记为可疑的事件中找出罕见的父子进程关系。这不仅有助于减少误报数量,还有助于安全分析师专注于更小、更有针对性的列表进行分类。

您当然可以从搜索规则开始,这些规则会直接对受监督模型的结果发出警报。如果这些规则发出的警报数量可控,并且您有时间和资源来深入研究这些警报,则可能不需要启用异常检测作业。但是,如果您随后注意到这些规则产生了过多的警报(这在大多数大型组织中通常是这种情况),则启用异常检测作业及其相应的规则可能会对您有所帮助。

联系我们

我们非常希望您尝试使用 ProblemChild 并提供反馈,以便我们在为其添加新功能时有所借鉴。如果您在过程中遇到任何问题,请通过我们的社区 Slack 频道讨论论坛甚至我们的公开检测库与我们联系。

您始终可以在 Elastic Cloud 上体验最新版本的Elasticsearch 服务,并按照此博文在您的环境中为 Windows 进程事件数据设置 ProblemChild 框架。并利用我们的快速入门培训来确保您取得成功。祝您实验愉快!