最近一年多来,ATT&CK
的概念在国内外安全社区被炒得很热。笔者陆续也读过国内各安全社区的一些关于ATT&CK
的文章,读完后觉得还是读官方文档吧,于是有了这篇文章。
这篇文章的前半部分是三个月前笔者学习ATT&CK
相关时的总结笔记,这部分所有的内容来自MITRE
官方和部分ATT&CK
生态圈的公开资料,我只是做了一个总结和阅读引导。
这篇文章的后半部分是关于如何在基于cuckoo
的沙箱系统上运用公开资料搭建ATT&CK
展示框架的一般性思考过程。
笔者才疏学浅,能力有限,不足之处请读者谅解。
祝大家国庆快乐!
这部分笔记基于对以下5
个公开文档的学习:
ATT&CK
的全称是Adversarial Tactics, Techniques, and Common Knowledge (ATT&CK)
。它是一个站在攻击者的视角来描述攻击中各阶段用到的技术的模型。
该模型由MITRE公司提出,这个公司一直以来都在为美国军方做威胁建模,之前著名的STIX
模型也是由该公司提出的。
官方对ATT&CK
定义如下:
MITRE’s Adversarial Tactics, Techniques, and Common Knowledge (ATT&CK) is a curated knowledge base and model for cyber adversary behavior, reflecting the various phases of an adversary’s attack lifecycle and the platforms they are known to target.
ATT&CK
最直观的表现是一个矩阵。ATT&CK
按照技术域(Technology Domains
)和平台(Platform
)进行了分类,如下:
Technology Domains | Platform(s) defined |
---|---|
Enterprise | Linux, macOS, Windows |
Mobile | Android, iOS |
在具体的矩阵表示中,上述分类都是基于post-compromise
阶段。为了对这之前的pre-compromise
阶段进行描述,ATT&CK
又建立了另外一个矩阵,叫做PRE-ATT&CK Matrix。
根据官方表述,ATT&CK
的抽象层次被定位在比较中间的阶段。
我们来看一张图:
由上图可以看到,MITRE
公司认为洛克西·马丁公司的Cyber Kill Chain
模型是比较高层次的抽象。
以下为洛克西·马丁官方给出的Cyber Kill Chain
:
MITRE
公司认为上面的模型对于理解高维度的过程和攻击者目标很有帮助,但这类模型无法有效描述对手在单个行动中做了什么,例如:
相反的,对于抽象层次比较低(或几乎没有抽象)的一些概念,诸如具体的漏洞利用数据集,各类恶意软件数据集。MITRE
公司认为,这些概念在描述具体技术的实现细节方面是非常详细的,大部分还存在详细的代码片段。但它们的短板在于“只见树木,不见森林”。研究员在分析一个具体漏洞或利用时,或在分析一款具体的恶意软件时,并不知道它是什么时候在什么情况下被什么人使用的,从而缺乏有效的上下文。而且,这个层次的表述也没有考虑到一些合法的软件如何可以被用来实现恶意操作。
而ATT&CK
这种中间层次的模型可以将上述这几个部分有效连接起来。ATT&CK中的战术和技术将一次生命周期中的攻击者行为定义到了一个能将其更有效映射到防御的程度。高级别的概念(战术),诸如控制、执行和维持被进一步分解为更具描述性的分类(技术)。而且技术的具体实现过程还可以细分,一项技术可以通过多种方式去进行实现。
一个中间层次模型也可以有效地将低抽象层级的概念(如漏洞利用、恶意软件)放入上下文中进行思考。漏洞利用和恶意软件对于攻击者的武器库来说是很有用的,但要完全理解它们的实用性,有必要了解它们在实现目标过程中的上下文。 一个中间层次模也可以将威胁情报和事件数据联系起来,以显示谁正在做什么,以及特定技术的使用普遍性。
MITRE
在定义ATT&CK
时,定义了一些关键对象。
Tactics
)Techniques
)Groups
)Software
)《MITRE ATT&CK:Design and Philosophy》
一文中的第3
节对这4
个对象的数据结构进行了详细定义。以下是这4
个对象之间的关系:
当对应到具体情境时原文举了一个APT28
的例子:
关于这一节的详细信息可以阅读《MITRE ATT&CK:Design and Philosophy》
ATT&CK
能用来干什么?以下是官方给出的答案:
Organize detections to enable:
更多关于Assessment and Engineering/Threat Intelligence/Adversary Emulation
的用法请阅读《Putting MITRE ATT&CK into Action with What You Have, Where You Are》和《ATT&CK™ Your CTI with Lessons Learned from Four Years in the Trenches》
当前问题 | 基于ATT&CK的威胁情报 |
---|---|
需要阅读的报告太多 | 结构化的威胁情报,更便于消化APT报告 |
难以将情报应用到防御 | 提供了一种直接将情报与防御进行比较的方式 |
依赖IOC | 转向TTPs和基于行为的检测 |
外加:
这部分的详细信息可以阅读《ATT&CK™ Your CTI with Lessons Learned from Four Years in the Trenches》
Matrix
内)这部分的详细信息可以阅读《ATT&CK™ Is Only as Good as Its Implementation: Avoiding Five Common Pitfalls》
这部分的详细信息可以阅读《Improving Threat Intellingence and Cyber Defense with MITRE ATT&CK》
这部分的详细信息可以阅读《Improving Threat Intellingence and Cyber Defense with MITRE ATT&CK》
我假定读到这里的读者有沙箱系统开发经验,至少熟悉cuckoo
的整套流程。看着国内外各种云沙箱将ATT&CK
集成到平台内,也许读者也在思考:如何比较快地将ATT&CK
集成到自己正在为之工作的威胁情报平台?
下面笔者来分析一种可行性思考过程。
目前国内外主流沙箱产品都已经增加对ATT&CK
的展示界面
目前国内外主要威胁分析厂商也都已在报告中加入ATT&CK
相关描述
如果要在沙箱平台上增加对ATT&CK
矩阵的展示。具体需要分为如下几个步骤:
attckid
的关联id
,并在保证后续命中后可以抽取对应字段ATT&CK
矩阵描述attckid
,进行查询,要求如下:attckid
映射到大步骤2
的大矩阵上attckid
,查询其相应信息(以Joe Sandbox
为例,主要是获取ID
、Name
、Description
、Tactics
、Data Source
、Platforms
、Urls
这些信息以及对应命中的规则) (需要对应的查询数据库)attckid
方格后,弹出对话框,展示上面获取的的att&ck
字段和对应的规则这里我以原生cuckoo
为例,下面是官方文档中对其规则命中格式的描述:
故而,要完成上述步骤1
,读者必须想办法在cuckoo
的规则文件中绑定对应的规则,这不是什么难事,纯粹是体力活。
完成前置工作后,后面的问题主要是如何获取ID
、Name
、Description
、Tactics
、Data Source
、Platforms
、Urls
这些信息。
MITRE
在github
开源了一个cti项目,里面恰好有我们所需的数据。
该项目中的如下目录中存储着每一个Technique
对应的详细信息。
https://github.com/mitre/cti/tree/master/enterprise-attack/attack-pattern
里面的每一个json
文件代表了ATT&CK
内一个具体的Technique
。
以该文件为例。具体说明如下:
MITRE
自己也在对应的说明文档中对相关字段进行了详细的解释:
所以,从可行性来看,基于cuckoo
的沙箱系统可以在比较短的时间内完成对每个任务ATT&CK
矩阵的展示工作。
(当时写这篇文章时)这部分一共244
个json
文件(现在可能有所增加),只要确保查找算法可以在用户可以接收的时间内将相应的信息展示到界面即可。
ATT&CK
矩阵得到展示后,对应的威胁分析人员可以尝试用矩阵中TTP
的相似性去关联同源APT
样本,负责检测的人员也可以通过该矩阵去继续细化没有覆盖到位的检测点。