DeTT&CT : Mapping detection to MITRE ATT&CK(译文)

koukou 2022-03-18 09:46:00

简介

入侵检测是一项非常复杂的任务,尤其是在数据量与日俱增的情况下。跟踪这些数据源及其适当的检测规则,或避免重复的检测规则,对于检测工程师来说是一项艰巨的任务。

对于SOC来说,最重要的是要对其实际能见度和检测覆盖率有一个良好的概述和清晰的理解,以便找出差距,确定新检测规则或新数据源的开发优先级。

在这篇文章中,我们将为读者详细介绍如何利用DETT&CT来建立、维护和评估SOC的能见度和检测覆盖率。

首先,我们将讨论MITRE ATT&CK,它不仅是关于攻击方的TTP(战术、技术及流程)的知识库,同时,它还是一个直观描述攻击方TTP矩阵的“导航器”。然后,我们将介绍Dett&CT的结构和功能。最后,我们为读者介绍记录检测覆盖率的具体步骤。

ATT&CK

MITRE ATT&CK是一个基于真实攻击场景的TTP知识库。虽然ATT&CK确实涵盖了攻击者使用的工具和软件,但这些并非该框架的重点,相反,它关注的重点在于攻击者是如何与系统互动以实现其目标的。

ATT&CK包含各种技术和子技术,它们可以进一步组成战术。战术代表了ATT&CK技术的“动机”,即某攻击活动的战术目标。这种战术目标可以是获得初始访问权限、维持权限、横向移动、渗出数据,等等。

技术和子技术代表了攻击者实现战术目标的“手段”。例如,攻击者可能会创建一个新的Windows服务来重复执行恶意payload,甚至在重启后仍能执行该操作。有许多方法或技术来实现战术目标。

在撰写本报告时,这些战术和技术是通过一个矩阵表示的,其中包含14种战术和188种技术。

1.png
图1:MITRE ATT&CK矩阵

如今,MITRE ATT&CK在安全专业人员中已经深入人心,成为了进攻方和防御方的共同语言:模拟进攻者的团队使用它来制定渗透计划,并根据实际攻击者使用的现实技术创建场景;检测团队则使用ATT&CK来评估他们的检测覆盖率,并查找防御中的漏洞;而网络威胁情报(CTI)团队则通过使用对应于ATT&CK框架的TTP来跟踪攻击者或攻击团伙。

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

TTP(战术、技术及流程)
团队(入侵者)
软件(入侵者使用的软件)
数据源(安全检测所需的能见度)
缓解措施

这些类型的信息之间的关系可以用下面的图来体现:

1.png
图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)中描述的步骤进行操作:

1.png
图3: ATT&CK Navigator

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

为了弥补这一不足,DeTT&CT就应运而生了。让我们来看看这个工具是如何工作的,以及它如何帮助我们建立、维护和评估能见度和检测覆盖率。

DeTT&CT

目标

DeTT&CT是Detect Tactics, Techniques & Combat Threats的缩写形式。这个框架是由Rabobank银行的网络防御中心创建的,在撰写本文时,该框架是由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编辑器的Web界面
  • 数据源模式(ds):数据源映射和质量
  • 能见度模式(v):基于技术和数据源的能见度覆盖率映射
  • 检测模式(d):基于技术的检测覆盖率映射
  • 团队模式(g):入侵者团队映射
  • 通用模式(ge):包括ATT&CK数据源的统计数据以及技术、团队和软件的更新

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

DETT&CT框架使用YAML文件来管理数据源、能见度、技术和团队。它可以识别以下文件类型:

  • 数据源管理
  • 技术管理(能见度和检测覆盖率)
  • 团队管理

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

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

使用Dett&CT时,第一步就是通过对数据质量进行评分来编制数据源清单。

数据源

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

1.png
图4: ATT&CK数据源示例

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

  • 数据的完整性
  • 数据字段的完整性
  • 及时性
  • 连续性
  • 保留性

1.png
图5:数据源质量评分表

能见度

在DeTT&CT中,可视性用于表明您是否拥有数量足够多、质量足够好的数据源,以捕获与ATT&CK技术相关的活动的证据。能见度对于事件响应、狩猎调查和入侵检测来说,是必须可少的。在DeTT&CT中,您可以对每个ATT&CK技术的能见度覆盖率进行评分。能见度分数是通过技术管理YAML文件进行管理的。

能见度分值范围为0到4。

1.png
图6:能见度评分表

入侵检测

只有当您拥有合适的数据源,数据质量足够好,并可用于数据分析时,能见度才能够用来为ATT&CK技术创建新的入侵检测。这些检测通常会触发警报,并由蓝队负责跟进。同样,入侵检测的评分和管理也是通过技术管理YAML文件进行的。

探测的分数从-1到5。

1.png
图7:检测评分表

您可以根据下表为检测活动进行打分:

1.png
图8:检测评分标准

动手实践

现在,让我们通过具体的步骤来确定检测覆盖率,并对威胁组织进行差距分析。首先,我们需要安装DeTT&CT。

安装DeTT&CT

实际上,Dett&CT的安装过程非常简单,无论是使用来自Docker Hub的镜像,还是在本地安装。至于ATT&CK Navigator,我们强烈建议在本地安装DETT&CT,如果您需要记录自己组织的检测覆盖率的话。

在进行本地安装时,请从Github上克隆repo并安装所需的软件包。同时,您还需要安装Python 3.6或更高版本。

相关命令

要安装DETT&CT,可以运行以下命令:

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

一旦安装完毕,就可以使用命令行界面或启动DeTT&CT编辑器了。

要启动DeTT&CT编辑器,只需键入以下命令即可:

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

1.png
图9:启动DeTT&CT编辑器

这将自动启动一个基于Web浏览器的编辑界面。

1.png
图10:DeTT&CT编辑器界面

数据源覆盖率

ATT&CK具有30多个不同的数据源,这些数据源又被分为90多个数据组件,并且,所有的数据组件都包含在这个框架中。

通过YAML数据源管理文件,我们可以管理数据源并记录以下内容:

在Dett&CT中注册条目的日期
将数据源连接到安全数据湖时的数据
数据驻留在哪些产品中
数据源适用的系统类型
表示该数据源是否可用于数据分析的标志
相应的注释
数据质量

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

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

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

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

然后,根据您已有的数据源来完成添加操作。

为此,只需点击“Add data source”并选择一个数据源即可。关于MITRE ATT&CK的数据源详细信息,请参阅其网站上的说明文档。

例如,假设您已经在Windows和Linux端点上安装了EDR,并且,这个EDR具有监控进程的功能,这时,我们就可以添加Process Creation数据源。

然后,选择您收集该数据源的日期,以及您在数据源YAML文件中注册该数据源的日期即可。

1.png
图12:设置数据源

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

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

1.png
图13:数据源改进图

当然,也可以为能见度和检测改进生成相同类型的图。

如果将“Data source enabled”开关设为是,那么所有数据质量评分将全部设置为1。如果您希望配置更加准确的话,可以根据数据源质量评分表来修改这些值。

此外,如果您将日志集中在SIEM中的话,请启用“Available for data analytics”选项。

如果需要收集Sysmon事件ID(EID)1或Windows EID 4688事件,还可以将“Process Creation”添加到数据源中。

最后,让我们添加以下数据源:

Command Execution(cmd.exe的Windows EID 4688、Powershell日志、bash_history,等等)。
Windows Registry Key Creation(EDR、Windows EID 4656或Sysmon EID 12等)。
Network Traffic Flow(Netflow、Zeek日志等)。

添加所有数据源后,需要单击“Save YAML file”按钮来保存数据源管理文件。

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

接下来,我们将通过DeTT&CT CLI工具将这个YAML文件转换为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”。接着,选择“Upload from local”,并选择我们刚刚用上面的命令创建的JSON文件。

1.png
图15:MITRE ATT&CK Navigator页面

1.png
图16:数据源覆盖率

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

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

下面,让我们看看特权提升策略中的相关技术。

1.png
图17: ATT&CK技术示例

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

  • Windows Registry Key Creation(Windows注册表项创建)
  • Process Creation(进程创建)
  • Command Execution(命令执行)

幸运的是,我们已经拥有了上述三个数据源。

1.png
图18: ATT&CK技术的数据源覆盖率

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

  • Process Creation(进程创建)
  • Command Execution(命令执行)
  • Active Directory Object Modification(Active Directory对象修改)
  • File Modification(文件修改)

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

1.png
图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参数)

1.png
图20:能见度覆盖率生成

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

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

1.png
图21: 技术管理文件示例

对于每种技术,您可以查看并编辑基于数据源管理文件分配的粗略能见度分数。如果需要,您还可以为不同的平台分配不同的分数,如Windows、Linux、网络或云。

1.png
图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生成的数据源层。

1.png
图23:能见度覆盖率层

1.png
图24:ATT&CK能见度覆盖率

检测覆盖率

现在我们已经弄清楚了数据源并对能见度有了很好的了解,接下来,我们需要对哪些地方进行了检测、检测的水平以及哪些地方还没有进行检测有一个很好的了解。

通过用于能见度覆盖的YAML数据源管理文件,我们可以管理检测水平并记录以下内容:

检测适用的系统类型(如Windows端点、Windows服务器、Linux服务器、Crown jewel x,等等)
检测所处的位置(例如,它可以是一个事件ID、检测规则/用例的名称、SIEM或产品名称)
相关注释
实施或改进检测的日期
注解检测得分

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

为了能够为针对每种系统类型的检测进行详细评分,您可以在YAML文件中为每种技术选择多种检测。为此,可以使用“applicable_to”属性来实现这一点。

1.png
图25:applicable_to属性

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

1.png
图26:评分日志

要查看详细信息,请点击“Score logbook”按钮:

1.png
图27:得分记录薄详细信息

1.png
图28:技术检测得分

用Dett&CT编辑器处理完YAML文件后,一定不要忘记保存文件。

要想根据技术管理文件为ATT&CK Navigator生成图层文件,可以运行以下命令:

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

该命令的相关参数和标志如下所示:

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

1.png
图29:检测层

由于我们只给一个特定的技术打了分,所以,只有这个技术会出现在我们的图层中。

1.png
图30: ATT&CK检测覆盖率

针对入侵团伙的差距分析

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

在进行入侵模拟时,红队将定义一个技术范围,来模拟针对组织的、已知的各种威胁。他们通常通过生成一个ATT&CK矩阵层来表示这个范围。

假设下面是为红队生成的、表示技术范围的图层:

1.png
图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}: 指定叠加的类型。你可以在团队、能见度或检测层之间进行选择(默认=团队)

1.png
图32: 入侵团伙的比较

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

1.png
图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

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

1.png
图34:ATT&CK的检测与能见度层

小结

在这篇文章中,我们为读者介绍了如何利用MITRE ATT&CK和DeTT&CT来建立、维护和评测能见度和检测覆盖率。通过ATT&CK Navigator,可以将能见度和检测覆盖率映射到TTPs并将其可视化,从而更好地掌握检测的成熟度。同时,我们还能对检测率与入侵行为进行比较,从而发现对应的差距。

保持对您当前检测能力的清晰了解,对您的整体安全态势至关重要。有了这些知识,检测工程师可以开发新的检测规则并加入新的数据源;红队就可以制定有针对性的活动,以测试防御效果,并帮助决策者跟踪进展,分配资源以帮助改善安全态势。

当然,为DETT&CT框架建立基线时,肯定需要一些时间和资源,但一旦建立起来,就可以帮助我们深入了解目前的检测能力,以及哪些地方需要重点改进。

参考资料

原文地址:https://blog.nviso.eu/2022/03/09/dettct-mapping-detection-to-mitre-attck/

评论

K

koukou

这个人很懒,没有留下任何介绍

随机分类

SQL注入 文章:39 篇
密码学 文章:13 篇
iOS安全 文章:36 篇
前端安全 文章:29 篇
二进制安全 文章:77 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

目录