长文收藏 | DeTT&CT:将检测映射到 MITRE ATT&CK
2022-3-17 12:0:0 Author: mp.weixin.qq.com(查看原文) 阅读量:128 收藏

介绍

建筑物检测是一项复杂的任务,尤其是在数据源数量不断增加的情况下。跟踪这些数据源及其适当的检测规则或避免覆盖相同技术的重复检测规则可能会给检测工程师带来困难。

对于 SOC,至关重要的是对其实际可见性和检测范围有一个良好的概述和清晰的理解,以便识别差距、优先开发新的检测规则或加入新的数据源。

在这篇博文中,我们将了解 DeTT&CT 如何帮助您构建、维护和评分您的可见性和检测覆盖率。

我们将首先讨论 MITRE ATT&CK,它是对手 TTP(战术、技术和程序)的知识库及其“导航器”,一个直观地描述对手 TTP 的矩阵。然后,我们将介绍 DeTT&CT 的结构和功能。最后,我们将通过不同的步骤开始记录您自己的检测覆盖率。

ATT&CK

MITRE ATT&&CK 是一个基于真实世界观察的对手 TTP 知识库,被对手用于对抗企业网络。虽然 ATT&CK 确实涵盖了攻击者使用的一些工具和软件,但该框架的重点是攻击者如何与系统交互以实现其目标。

ATT&CK 包含一组技术和子技术,这些技术和子技术被组织成一组战术。战术代表了 ATT&CK 技术的“原因”,即对手针对特定行动的战术目标。这种战术目标可以是获得初始访问权限、实现持久性、横向移动、泄露数据等。

技术和子技术代表了对手实现战术目标的“方式”。例如,攻击者可能会创建一个新的 Windows 服务来重复执行恶意负载,并且即使在重新启动后仍然存在。有许多方法或技术可以实现战术目标。

在撰写本文时,这些策略和技术以包含 14 种策略和 188 种技术的矩阵表示。

图 1:MITRE ATT&CK 矩阵

如今,MITRE ATT&CK 与安全专业人士建立了牢固的联系,形成了攻防通用的词汇。对手仿真团队使用它来计划交战并根据现实世界对手使用的现实技术创建场景,检测团队使用 ATT&CK 来评估他们的检测覆盖率并发现他们的防御漏洞,网络威胁情报 (CTI) 团队跟踪对手和威胁参与者组通过使用映射到 ATT&CK 框架的 TTP。

MITRE ATT&CK™ 包含大量有价值的信息:

  • TTPs(战术、技术和程序)
  • 团体(威胁者)
  • 软件(威胁参与者使用的软件)
  • 数据源(检测所需的可见性)
  • 缓解措施

这些类型的信息之间的关系可以使用下图进行可视化:

图 2:ATT&CK 中的实体关系 (来源:https ://www.mbsecure.nl/blog/2019/5/dettact-mapping-your-blue-team-to-mitre-attack )

为了帮助我们可视化这个矩阵并突出显示 TTP,MITRE 提供了一个名为ATT&CK Navigator的 Web 界面。有一个在线实例可让您轻松快速地测试其功能。但是,如果您打算将其用于测试以外的用途,我们强烈建议您拥有自己的实例。

要安装本地实例,请克隆 GitHub 存储库并按照文档 ( https://github.com/mitre-attack/attack-navigator#Install-and-Run ) 中所述的过程进行操作。

图 3:ATT&CK 导航器

尽管我们可以使用 ATT&CK Navigator 来记录我们的检测覆盖率,但它缺乏更复杂的功能,例如多级评分、可见性和检测之间的区分以及基于平台和数据源的分离。

这个差距就是 DeTT&CT 发挥作用的地方。让我们了解这个工具是如何工作的,以及它如何帮助我们构建、维护和评分我们的可见性和检测覆盖率。

目的

DeTT&CT 代表检测战术、技术和战斗威胁。该框架由荷兰合作银行网络防御中心创建,由 Marcus Bakker 和 Ruben Bouman 开发并在撰写本文时维护。

DeTT&CT 的目的是帮助蓝队使用 MITRE ATT&CK 对数据日志源质量、可见性覆盖率和检测覆盖率进行评分和比较。通过使用此框架,蓝队可以快速检测检测或可见性覆盖范围中的差距,并优先考虑新日志源的摄取。

功能

DeTT&CT 提供了一个框架,可以映射您在 ATT&CK 中可用实体的信息,并帮助您管理蓝队数据、可见性和检测范围。

DeTT&CT 框架由不同的组件组成:

  • 一个 Python 工具(DeTT&CT CLI)
  • YAML 管理文件
  • DeTT&CT 编辑器(用于创建和编辑 YAML 管理文件)
  • 检测、数据源和可见性的评分表

DeTT&CT CLI 是一个 Python 脚本 (dettect.py),它适用于六种不同的模式:

  • 编辑器:启动 DeTT&CT 编辑器网页界面
  • 数据源(ds):数据源映射和质量
  • 可见性 (v):基于技术和数据源的可见性覆盖映射
  • 检测(d):基于技术的检测覆盖映射
  • 组 (g):威胁行为者组映射
  • 通用(ge):包括ATT&CK 数据源统计和技术、组和软件更新

您可以使用命令行界面或启动编辑器来创建和管理不同的 YAML 管理文件。

DeTT&CT 框架使用 YAML 文件来管理数据源、可见性、技术和组。可以识别以下文件类型:

  • 数据源管理
  • 技术管理(可见性和检测覆盖率)
  • 团体管理

我们稍后将讨论这些管理文件。

您可以在Github 存储库中找到管理文件示例。

使用 DeTT&CT 的第一步是通过对数据质量进行评分来清点您的数据源。

数据源

数据源是系统生成的原始日志或事件,例如安全设备、网络设备和端点。ATT&CK 拥有 30 多个不同的数据源,这些数据源进一步分为 90 多个数据组件。所有这些数据组件都包含在此框架中。这些数据源在 数据源管理 YAML 文件中进行管理。对于每个数据源,除其他外,可以对数据质量进行评分。在 ATT&CK 中,这些数据源列在技术本身中(例如,检测部分中的 T1003)。

图 4:ATT&CK 数据源示例

数据源评分基于数据质量评分表中的多个标准:

  • 数据完整性
  • 数据字段完整性
  • 时效性
  • 一致性
  • 保留

图 5:数据源质量评分表

能见度

DeTT&CT 中使用可见性来指示您是否有足够的数据源和足够的质量,以便能够捕获与 ATT&CK 技术相关的活动的证据。可见性对于执行事件响应、执行狩猎调查和构建检测是必要的。在 DeTT&CT 中,您可以根据 ATT&CK 技术对可见性覆盖范围进行评分。可见性分数在技术管理 YAML 文件中进行管理。

能见度评分从 0 到 4:

图 6:能见度评分表

检测

只有当您拥有具有足够数据质量的正确数据源并可供您进行数据分析时,您的可见性才能用于为 ATT&CK 技术创建新的检测。检测通常会触发警报,因此您的蓝队会跟进。还可以在技术管理 YAML 文件中对检测进行评分和管理。

检测分数从 -1 到 5:

图 7:检测评分表

您可以根据下表评估检测的分数:

图 8:检测评分详情

现在让我们通过不同的步骤来构建检测覆盖率并针对威胁参与者组执行差距分析。首先,我们需要安装 DeTT&CT。

安装

您可以使用 Docker Hub 中的映像或在本地安装它,轻松安装 DeTT&CT。至于 ATT&CK Navigator,如果您要记录自己组织的检测覆盖率,我们强烈建议您在本地安装 DeTT&CT。

要在本地安装它,请从Github克隆 repo并安装所需的包。您还需要有 Python 3.6 或更高版本。

安装

要安装 DeTT&CT,请运行以下命令:

git clone https://github.com/rabobank-cdc/DeTTECT.gitcd DeTTECT
pip install -r requirements.txt

安装后,您可以使用命令行界面或启动 DeTT&CT 编辑器。

要启动 DeTT&CT Editor,请输入以下命令:

python3 dettect.py e
  • e: 在本地启动 DeTT&CT 编辑器

图 9:启动 DeTT&CT 编辑器

这将自动启动 Web 浏览器的编辑器界面。

图 10:DeTT&CT 编辑器界面

数据源覆盖率

ATT&CK 拥有 30 多个不同的数据源,这些数据源进一步分为 90 多个数据组件。所有数据组件都包含在此框架中。

使用 YAML 数据源管理文件,您可以管理数据源并记录以下内容:

  • 您在 DeTT&CT 中注册条目的日期
  • 将数据源连接到安全数据湖时的数据
  • 数据驻留在哪些产品中
  • 数据源适用的系统类型
  • 指示数据源是否可用于数据分析的标志
  • 可能的评论
  • 数据质量

除了预定义的字段外,您还可以使用键值对添加更多信息。

让我们首先使用 DeTT&CT 编辑器列出我们的数据源。

转到 DeTT&CT 编辑器,选择数据源并创建一个新文件。

图 11:配置数据源管理文件

然后根据您已有的数据源添加数据源。

单击“添加数据源”并选择一个数据源。MITRE ATT&CK 数据源记录在他们的网站上。

例如,假设您在 Windows 和 Linux 端点上安装了 EDR。此 EDR 具有监控流程的能力,因此我们可以添加流程创建数据源。选择您收集此数据源的日期以及您在数据源 YAML 文件中注册数据源的日期。

图 12:设置数据源

跟踪日期可以帮助您监控数据源的改进。要基于数据源管理文件生成图表,您可以运行以下命令:

python dettect.py ds -fd sample-data/data-sources-endpoints.yaml -g

图 13:数据源改进图

可以为可见性和检测改进生成相同类型的图。

将“启用数据源”开关启用为是,会将所有数据质量分数设置为 1。如果您希望配置更准确,可以根据数据源质量评分表修改这些值。

例如,如果您将日志集中在 SIEM 中,请启用“可用于数据分析”开关。

例如,如果您收集 Sysmon 事件 ID (EID) 1 或 Windows EID 4688 事件,您还可以将“进程创建”添加到数据源。

让我们添加以下数据源来完成我们的示例:

  • 命令执行(cmd.exe 的 Windows EID 4688、Powershell 日志记录、bash_history 等)
  • Windows 注册表项创建(EDR、Windows EID 4656 或 Sysmon EID 12 等)
  • 网络流量(Netflow、Zeek 日志等)

添加所有数据源后,单击“保存 YAML 文件”保存数据源管理文件。

图 14:保存数据源管理文件

现在,我们将使用 DeTT&CT CLI 工具将此 YAML 文件转换为 JSON 文件,并将此 JSON 文件作为 ATT&CK 层加载到ATT&CK Navigator中。

python3 dettect.py ds -fd ~/Downloads/data-sources-new.yaml -l

此命令的相关标志是

  • ds:选择数据源模式
  • -fd:数据源管理 YAML 文件的路径
  • -l: 为 ATT&CK Navigator 生成数据源层

转到 ATT&CK Navigator 网页并选择 Open Existing Layer。选择“从本地上传”并选择我们刚刚使用上面的命令创建的 JSON 文件。

图 15:MITRE ATT&CK 导航器

图 16:数据源覆盖率

该层表示基于我们在数据源管理文件中指定的数据源的 MITRE ATT&CK 映射。

正如图例中所解释的,颜色代表可用于该特定技术的数据源的百分比。

让我们看一下特权升级策略中的一些技巧。

图 17:ATT&CK 技术示例

例如,登录脚本 (Windows) 技术需要以下数据源覆盖率:

  • Windows 注册表项创建
  • 流程创建
  • 命令执行

对我们来说幸运的是,我们已经拥有所有三个数据源。

图 18:ATT&CK 技术数据源覆盖率

但是,网络登录脚本需要以下数据源:

  • 流程创建
  • 命令执行
  • Active Directory 对象修改
  • 文件修改

由于我们只有 2 个数据源可用,ATT&CK 层显示了 26-50% 的覆盖率。

图 19:缺少数据源

如果您想提高这种特定技术的覆盖率,您现在将知道接下来需要在检测中集成哪些数据源。

使用 ATT&CK Navigator,您还可以将此数据源层与威胁分析 ATT&CK 层进行比较,以根据该威胁分析发现检测中的差距。您还可以将其与另一个数据源层进行比较,以强调在检测中集成其他数据源的好处。

能见度覆盖

下一步是很好地了解我们在哪里有可见性、可见性水平以及我们在哪里缺乏可见性。

首先,我们可以根据我们的数据源管理文件生成一个技术管理 YAML 文件,这将为我们提供粗略的可见性分数。默认情况下,该参数 --yaml 将仅在生成的 YAML 中包含可见性分数大于 0 的技术。要包含适用于数据源 YAML 文件中指定的平台的所有 ATT&CK 技术,请添加参数:--yaml-all-techniques

python3 dettect.py ds -fd ~/Downloads/data-sources-new.yaml --yaml

要么``

python3 dettect.py ds -fd ~/Downloads/data-sources-new.yaml --yaml --yaml-all-techniques

此命令的相关标志是

  • ds:选择数据源模式
  • -fd:数据源管理 YAML 文件的路径
  • --yaml:根据可用数据源的数量生成具有可见性分数的技术管理 YAML 文件
  • --yaml-all-techniques:在生成的 YAML 文件中包含适用于数据源 YAML 文件中指定的平台的所有 ATT&CK 技术(您需要为此提供--yaml参数)

图 20:可见性覆盖生成

在生成的 YAML 文件中,您可以根据专家知识或特定数据源的质量调整每种技术的可见性分数。

如果您想轻松编辑技术管理 YAML 文件,您可以使用 DeTT&CT Editor 加载它。

图 21:技术管理文件示例

根据技术,您可以查看和编辑基于数据源管理文件分配的粗略可见性分数。如果需要,您可以为不同的平台(例如 Windows、Linux、网络或云)分配不同的分数。

图 22:技术可见度得分

分数日志将跟踪分数内的变化。

要在 ATT&CK Navigator 层中可视化可见性分数,请运行以下命令并将生成的文件加载到 ATT&CK Navigator 中。

python3 dettect.py v -ft ~/Downloads/techniques-administration-example-all.yaml -l

此命令的相关参数和标志是

  • v:基于技术和数据源的可见性覆盖映射
  • -ft: 路径技术管理 YAML 文件
  • -l: 为 ATT&CK Navigator 生成数据源层

图 23:可见性覆盖层

图 24:ATT&CK 可见性覆盖

检测覆盖率

既然我们列出了我们的数据源并很好地了解了我们的可见性,我们需要很好地了解我们在哪里检测到,检测到的水平和检测不足。

使用我们用于可见性覆盖的相同 YAML 数据源管理文件,我们可以管理我们的检测级别并记录以下内容:

  • 检测适用的系统类型(例如,Windows 端点、Windows 服务器、Linux 服务器、皇冠上的宝石 x 等)。
  • 检测所在的位置(例如,它可以是事件 ID、检测规则/用例的名称、SIEM 或产品名称)
  • 一个可能的评论。
  • 实施或改进检测的日期。
  • 检测分数。

除了预定义的字段外,您还可以使用键值对添加更多信息。

要允许对每种系统类型的检测进行详细评分,您可以在 YAML 文件中为每种技术选择多个检测。这可以使用“applicable_to”属性来实现。

图 25:技术管理——适用于

我们建议在您的技术和数据源管理文件之间使用相同的 apply_to 值。分数日志使您能够通过拥有多个分数对象来跟踪分数的变化。

图 26:技术管理——评分日志

要查看详细信息,请单击“评分日志”按钮:

图 27:技术管理——评分日志详细信息

图 28:技术检测分数

如果您使用 DeTT&CT Editor 进行编辑,请不要忘记保存您的 YAML 文件。

要基于技术管理文件为 ATT&CK Navigator 生成层文件,您可以运行以下命令:

python3 dettect.py d -ft ~/Downloads/techniques-administration-example-all.yaml -l

此命令的相关参数和标志是

  • d: 基于技术的检测覆盖映射
  • -ft: 路径技术管理 YAML 文件
  • -l: 为 ATT&CK Navigator 生成数据源层

图 29:检测层

由于我们只为一种特定技术打分,因此只有这种技术会出现在我们的图层中。

图 30:ATT&CK 检测覆盖率

针对威胁参与者组的差距分析

此外,您可以将检测层与威胁分析层或为特定红队演习生成的层进行比较,以发现检测中的任何差距。

在执行对手仿真时,红队将定义一个模仿组织已知威胁的技术范围。它们通常通过生成一个 ATT&CK 矩阵层来表示这个范围。

假设这是从对手仿真生成的层:

图 31:ATT&CK 红队层

您可以将威胁参与者组层与您的检测或可见性覆盖覆盖进行比较。使用以下命令生成突出显示差异的图层:

python3 dettect.py g -g sample-data/groups.yaml -o sample-data/techniques-administration-example-all.yaml -t detection
  • g:威胁参与者组映射
  • -g:指定要包含的 ATT&CK 组。另一种选择是提供带有自定义组的 YAML 文件
  • -o:指定要在组上覆盖的内容。要覆盖可见性或检测,请提供技术管理 YAML 文件。
  • -t {group,visibility,detection}:指定覆盖的类型。您可以在组、可见性或检测之间进行选择(默认 = group

图 32:威胁行为者组比较

如果我们将我们的检测层与红队练习进行比较,我们将得到以下结果层:

图 33:ATT&CK 威胁参与者组与检测

最后,您还可以生成一个图层来比较您的可见性和检测覆盖率。这将使您对具有可见性或检测能力的技术有一个不错的概述。

要生成此层,请键入以下命令之一:

python dettect.py d -ft ~/Downloads/techniques-administration-endpoints.yaml -o

要么``

python dettect.py v -ft sample-data/techniques-administration-endpoints.yaml -o

这两个命令将生成相同的输出,如下图所示。

图 34:ATT&CK 检测与可见性

结论

在这篇博文中,我们学习了如何使用 MITRE ATT&CK 和 DeTT&CT 构建、维护和评分可见性和检测覆盖率。将您的可见性和检测覆盖率映射到 TTP 并在 MITRE ATT&CK Navigator 中将其可视化将帮助您更好地掌握检测成熟度。这也提供了将您的检测覆盖率与威胁行为者行为进行比较并发现可能的差距的可能性。

保持对当前检测能力的清晰了解对于您的整体安全状况至关重要。有了这些知识,检测工程师可以优先考虑新检测规则的开发和新数据源的入职,红队可以定制他们的活动来测试防御者对其能力的假设,它可以帮助决策者跟踪进度并分配资源有助于改善安全态势。

为 DETT&CT 框架设置基线首先需要一些时间和资源,但一旦设置完成,它可以让您深入了解当前的检测能力以及重点改进的地方。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU0MDcyMTMxOQ==&mid=2247486143&idx=1&sn=2b2036d4d13c1a1a8293a3bd819fa84d&chksm=fb35a377cc422a61ce9b0c74ceef42e7ceb5fae95c226c047d5f1f611da4b0dae9b3bc9a8bc5#rd
如有侵权请联系:admin#unsafe.sh