最近想基于 ATT&CK 的模型做一个分析工具,ATT&CK 本身有几个相关的工具,于是看一下能不能作为参考。

ATT&CK 相关项目链接为:https://attack.mitre.org/resources/related-projects/

主要了解的项目是:

CAR

The Cyber Analytics Repository (CAR) is a knowledge base of analytics developed by MITRE based on the ATT&CK® adversary model.

CAR 是MITRE公司基于 ATT&CK 攻击者模型发展出来的网络攻击行为分析仓库,该仓库包含各种应用 ATT&CK 攻击实例分析数据。

CAR 定义了一个使用伪代码表示的数据模型,每一个模型表示一个攻击利用,针对不同的具体应用还会有不同实现。

说明文档指出,存储在 CAR 里的实例分析数据还包括以下信息:

  • 用来解释攻击思路的推断
  • 分析对象所在域(比如主机、网络、进程等)
  • 分析发现的 ATT&CK 技术和战术
  • CAR 的字段解释 the Glossary
  • 实施分析的伪代码
  • 触发分析的单元测试

总之,CAR 是攻击案例的分析数据库,分析包括攻击的技术、战术,攻击检测方法和单元测试等信息。

CASCADE

CASCADE is a research project at MITRE which seeks to automate much of the investigative work a “blue-team” team would perform to determine the scope and maliciousness of suspicious behavior on a network using host data.

CASCADE 是用来帮助分析高级攻击行为的一个平台,可以识别和搜索已知的攻击行为。CASCADE 可以通过上下文使部分分析操作自动化,比如进程捕获和 ATT&CK 技术识别。

本质上 CASCADE 的工作是查询分析,并且输出结果,CASCADE 需要定义数据模型作为输入,此处的数据模型基于 CAR 中的数据模型,主要包括:

  • object:已更改、访问或操作的资源的名称,可以包括操作系统级别的实体,例如进程、文件、网络连接和线程
  • action:描述资源实际发生了什么,例如创建或者终止进程,可以创建、写入、读取或删除文件
  • field:描述事件的属性名称,如果创建了一个进程,那么可以保存进程的ID或者执行文件的路径或命令参数

分析是基于会话的,每一个会话就是一个时间窗,分析将在时间窗上进行。

分析方法

Analytics are essentially queries created to detect specific behaviors.

CASCADE 的分析方法本质上是对不同的特定行为的查询。可以理解为基于规则的查询。

在给出的示例 brawl-demo 中,有选择分析规则的配置:

规则配置

外部分析部分对应的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ExternalAnalytic(Analytic):
"""
:param List[str] fields: A list of all of the fields to be expected in each row of output
:param List[ObjectMapping] mapped_objects: A list of all of the mapped objects
:param str query_name: The name of the query saved on the target platform (i.e. Splunk)
:param str car: Optional. The corresponding CAR analytic (car.mitre.org)
:param str car_summary: Optional. The summary name of the CAR analytic
:param str platform: The target platform (Splunk, ElasticSearch, etc.)
"""
fields = ListField(StringField())
query_name = StringField()
car = StringField()
car_summary = StringField()
platform = StringField()

def extract_events(self, result):
state = result['state']

# Generalize this capability for CASCADE analytics as well
for mapping in self.mapped_events:
object_type = mapping.object_type
action = mapping.action
if mapping.is_mappable(state):
fields = mapping.from_result(state)
# return a list of DataModelQuery objects (which will be run as jobs)
yield object_type.search(action, **fields)

代码中 platform 部分对应的平台就是配置的外部数据库,在 brawl-demo 中是配置的 ElasticSearch 数据库,连接数据库创建会话后执行上图中的分析,调用的代码即为上述代码。

CALDERA

CALDERA is an automated adversary emulation system that performs post-compromise adversarial behavior within Windows Enterprise networks.

CALDERA 是一个自动攻击仿真系统,模拟攻击者攻入网络后的行为。

CALDERA 可以模拟攻击者协助红队实施手动渗透并且实施自动化事件响应。

启动该服务器后可以进行代理 agent 配置,红队的 agent 用于控制和通信,蓝队的 agent 用于检测和相应,还可以配置攻击者,让攻击者自主发动攻击。攻击者具有攻击决定引擎判断接下来是用什么攻击。

总结

CAR 中主要问攻击分析的案例数据,对于分析工具的开发启发不大,如果分析基于结构化数据,可以考虑使用该仓库中的数据。

CASCADE 基于 CAR 中的数据进行时间窗分析,使用基于规则的方法,输入的是结构化的数据,根据规则进行分析和事件关联。可以考虑使用结构化数据,在此基础上考察一下其他分析方法。

CALDERA 是攻击者模拟仿真系统,如果要开发仿真系统,可以参考其思路和具体实际方法。