VenusEye首页 > 资讯列表 > 定义ATT&CK数据源:实施方法论

定义ATT&CK数据源:实施方法论2021-02-06    专家团蒋蓉生 -启明星辰专家视野



在本系列的第一部分中,我们回顾了当下数据源的状况,以及通过数据建模加以增强的初步想法。我们还定义了ATT&CK数据源对象表征,并对其进行了扩展,引入数据组件的概念。

在这部分中,我们将继续探索方法论来帮助定义ATT&CK数据源对象,如何通过当前数据源实现该方法论,相关成果在https://github.com/mitre-attack/attack-datasources进行了分享。

使方法论正式化

在第一部分中,我们建议将数据源定义为ATT&CK框架中的对象,并通过数据建模概念开发一种标准方法来命名和定义数据源。实现这一目标的方法论包含五个关键步骤:识别数据源、识别数据元素、识别数据元素间关系、定义数据组件和组装ATT&CK数据源对象。

图1:定义数据源对象方法论

第一步:识别数据源

通过评估特定数据源(进程名、进程路径、应用、镜像)事件日志中的元数据,就可以发现安全事件。建议使用相关事件日志的文档或数据字典对本步骤进行补充。这个阶段,记录数据采集的位置非常重要(采集层和平台)。

第二步:识别数据元素

从可用数据中提取数据元素,以识别能够对数据源进行命名和定义的数据元素。

第三步:识别数据元素间关系

在识别数据元素期间,我们还能同时记录潜在关系,接着对这些关系进行分组,才能定义数据组件。

第四步:定义数据组件

关系分组的输出,是一组所有潜在数据组件的列表,可以为数据源提供额外上下文。

第五步:装配ATT&CK数据源对象

将前序步骤中的所有信息连接起来,将它们作为数据源对象的属性来构造。下表展示了将聚合信息有机地整合进数据源对象中的方法。

表1:ATT&CK数据源对象



实施方法论

为了说明如何将该方法论应用于ATT&CK数据源,在下面的部分中介绍了实施该过程的用例。

以进程监控子技术为起点,我们开始创建第一个ATT&CK数据源对象。接下来,将围绕Windows事件日志创建另一个ATT&CK数据源对象,这是用于检测大量技术的关键数据源。

Windows在该用例下可发挥作用,不过这种方式也可以应用到其他平台(操作系统)上。

提升进程监控

1)识别数据源:在Windows环境中,我们可以从内置的事件提供者(如Microsoft-Windows-安全-审核)和开放的第三方工具(如Sysmon)中,收集有关“进程”的信息。

此步骤还考虑了全部的安全事件,其中的“进程”表示为围绕对手行为的主要数据元素。其他的还包括进程连接到IP,修改注册表或创建文件等操作。下图显示了来自“Microsoft-Windows-安全-审核”提供的安全事件以及端点上进程执行操作的相关上下文:

图2:具备进程数据元素的Windows安全事件

这些安全事件还提供关于“用户”、“端口”或“IP”等其他数据元素的信息。这意味着可以根据ATT&CK数据源和对手技术或子技术将Windows安全事件映射到其他数据元素。

识别进程应该利用组织内部有关安全事件的现有文档。建议从开源项目中寻求帮助,如DeTT&CT、开源安全事件元数据(OSSEM)或ATTACK Datamap。

我们可以从数据采集点获得额外元素。识别这些信息的简单方法包括,为这些数据源的收集层和平台编写文档:

最有效的数据采集策略是根据环境进行定制。从采集层的角度来看,这取决于如何在环境中采集数据,不过进程信息是直接从端点收集的。从平台的角度来看,这种方法可以在其他平台(如Linux、macOS、Android)上复制。

2)识别数据元素:一旦我们识别和理解了更多关于可以映射到ATT&CK的数据源,就可以开始识别数据字段中的数据元素,完成从数据角度表征对手行为。下图显示了我们如何扩展事件日志的概念,并捕捉其中的数据元素。

图3:进程数据源——数据元素

我们还将使用在数据字段中标识的数据元素来创建和改进数据源命名。数据源命名由核心数据元素表示。在进程监控场景下,数据源名称中包含“进程”比包含“监控”更有意义,因为监控是组织围绕数据源进行的活动。我们对“进程”的命名和定义调整如下:

我们可以在ATT&CK中利用这种方法,剔除数据源中的无关措辞。

3)识别数据元素间关系:一旦我们对数据元素有了更好的理解,就可以开始扩展数据元素信息,并识别它们之间的关系。这些关系可以根据所收集的遥测技术所描述的活动来定义。下图描述了与“进程”数据源相关的安全事件关系标识。

图4:进程数据源——关系

4)定义数据组件:前面步骤中的聚合信息合并在一起构成了框架中的数据组件概念。

基于确定的数据元素间关系,就可以开始组织和开发相应定义了。如下图所示,数据组件可以映射到具体事件(进程创建-> 安全事件ID 4688),而其他组件(如“进程网络连接”)则涉及来自多个安全事件。

图5:进程数据源——数据组件

最右边的“进程”现在作为与ATT&CK数据源相关信息链的门面。

图6:进程数据源

5)组装ATT&CK数据源对象:将前面步骤的所有核心输出聚合起来,并将它们链接在一起,代表新的ATT&CK“进程”数据源对象。下表是“进程”基本信息:

表2:进程数据源

提升Windows事件日志

1)识别数据源:根据已建立的方法论,第一步是确定与“Windows事件日志”相关的安全事件,很明显,数据源太广泛了。下图是“Windows事件日志”。

图7:多种Windows事件日志

下图这些其他Windows事件日志,也可以被视为数据源

图8:Windows事件查看器

有了这么多的事件,ATT&CK技术也推荐“Windows事件日志”作为数据源,不过我们需要从Windows终端收集什么?

2-3-4)识别数据元素、关系和数据组件:我们建议可以对当前的ATT&CK数据源中的Windows事件日志进行分解,与其他数据源进行比较,找出潜在的重叠,并进行替换。为了实现这一点,可以复制之前在进程监控中使用的过程,以演示Windows事件日志涵盖了多个数据元素、关系、数据组件的情况。

图9:Windows事件日志

5)组装ATT&CK数据源对象:组装过程的输出,我们可以利用Windows安全事件日志中的信息来创建和定义数据源对象。

表3:文件数据源对象

表4:PowerShell日志数据源对象

此外,还可以定义潜在的新ATT&CK数据源。以用户账户为例,是在对手创建用户、启用用户、修改用户账户的属性甚至禁用用户账户时,进行多个数据元素识别的结果。下表是新的ATT&CK数据源对象示例。

表5:用户帐号数据源对象

这个新的数据源可以映射到ATT&CK技术,如账户篡改(T1098)。

图10:适用于账户篡改技术的用户账户数据源



将方法论应用于(子)技术

现在我们已经实施了通过数据源对象来丰富ATT&CK数据的方法,那么如何将其应用于技术和子技术呢?为数据源附加相关上下文,就可以得到更丰富的结果。

子技术用例:T1543.003 Windows服务

T1543创建和修改系统进程(用于实现持久性和权限升级战术)包括以下子技术:启动代理、系统服务、Windows服务和启动守护进程。

这个新的数据源可以映射到ATT&CK技术,如账户篡改(T1098)。

图11:创建或修改系统进程技术

我们将重点讨论T1543.003 Windows服务,以强调数据源对象提供的附加上下文可以更容易识别要收集的潜在安全事件。

图12:Windows服务子技术

基于子技术提供的信息,我们可以运用方法论来利用ATT&CK数据对象。有了来自进程、Windows注册表和服务数据源对象的附加信息,就可以从数据的角度深入研究并使用数据组件之类的属性。

在下图中,数据组件等概念不仅缩小了安全事件的识别范围,还在高低级概念之间建立了桥梁,为数据收集策略提供信息。

图13:通过数据组件示例将事件日志映射到子技术

从组织的角度实现这些概念需要识别安全事件如何映射到数据组件。上图利用遥测示例来说明背后的概念。

T1543.003用例演示了该方法论作为一个中级框架如何无缝地(译注:上图只是基本示例)与ATT&CK的分类保持一致的。



数据源对象从哪里起步?

我们开发的初始数据源对象可以在https://github.com/mitre-attack/attack-datasources上找到,格式为Yaml。大多数数据组件和关系都是从Windows系统的角度定义,不过从采集层(如网络、云)和平台(如Mac、Linux)的角度应用这种方法论会有更多发现。

下面是服务数据源对象的Yaml文件结构示例:

图14:服务数据源对象——Yaml文件



展望未来

在这两篇系列文章中,我们引入了改进ATT&CK数据源的方法论,并使其可操作化。我们鼓励用户在环境中测试这个方法论,并提供反馈,因为我们正在考虑将它融入MITRE ATT&CK。

正如本系列和第一部分所强调的,将数据源映射到数据元素并确定它们之间的关系的工作仍在进行中,我们期待着着社区的持续投入。

文章原标题:《Defining ATT&CK Data Sources,Part II: Operationalizing the Methodology》

作者:Jose Luis Rodriguez

·

end

·

数据运营·情报赋能