ATT&CK一般性学习笔记
2019-10-02 19:59:14 Author: bbs.pediy.com(查看原文) 阅读量:260 收藏

目录

写在前面的话

最近一年多来,ATT&CK的概念在国内外安全社区被炒得很热。笔者陆续也读过国内各安全社区的一些关于ATT&CK的文章,读完后觉得还是读官方文档吧,于是有了这篇文章。

这篇文章的前半部分是三个月前笔者学习ATT&CK相关时的总结笔记,这部分所有的内容来自MITRE官方和部分ATT&CK生态圈的公开资料,我只是做了一个总结和阅读引导。

这篇文章的后半部分是关于如何在基于cuckoo的沙箱系统上运用公开资料搭建ATT&CK展示框架的一般性思考过程。

笔者才疏学浅,能力有限,不足之处请读者谅解。

祝大家国庆快乐!

第一部分: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

设计理念

  • It maintains the adversary’s perspective (基于攻击者视角)
  • It follows real-world use of activity through empirical use examples (追踪现实世界中的使用和出现过的用法)
  • The level of abstraction is appropriate to bridge offensive action with possible defensive countermeasures (抽象层次恰好可以比较好地将攻击手法和防守措施联系起来)

抽象层次

根据官方表述,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能用来干什么?以下是官方给出的答案:

  • Detection (提升检测)
  • Assessment and Engineering (评估与工程化)
  • Threat Intelligence (威胁情报)
  • Adversary Emulation (APT模拟)

Detection

  • Improve focus on post-exploit activity (in addition to perimeter defenses) (主要关注利用后的活动)
    • 基于我们已有的日志(Sandbox logs)
    • 当前检测能力的覆盖率评估 (Coverage Rating)
    • 对每种检测的质量进行评级 (Quality)
    • 对每种检测的可信度进行评级 (Confidence)
  • Move toward detecting adversary TTPs in addition to indicators (在迹象检测的基础上,逐步转移到迹象加攻击者TTPs的检测)
  • Organize detections to enable:

    • Finding gaps in coverage (找出覆盖率上的空缺)
    • Tacking improvement over time (随时间推移逐渐改进这些空缺)

更多关于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和基于行为的检测

外加:

  • 提供了一种可以用来沟通的通用语言
  • 允许我们比较APT组织(Groups)

这部分的详细信息可以阅读《ATT&CK™ Your CTI with Lessons Learned from Four Years in the Trenches》

误区

  1. Don’t Assume All Techniques Are Equal (不要假设所有的技术都是等价的)
  2. Don’t Try Building Alerts for Every Technique (不要盲目追求覆盖率,简单的、有效的、擅长的技术先来)
  3. Don’t Misunderstand Your Coverage (每种技术的实现都是多样的,先实现那些已经公开的,一种一种来)
  4. Don’t Stay in the Matrix (敌人永远有新手法出现,不要局限在Matrix内)
  5. Don’t Forget the Fundamentals (那些基础的防御元素一样很重要,不要顾此失彼(安全意识训练、漏洞管理、最小权限原则))

这部分的详细信息可以阅读《ATT&CK™ Is Only as Good as Its Implementation: Avoiding Five Common Pitfalls》

挑战

  • Being realistic about coverage (对覆盖率有比较现实的认识)
  • Handling false positives
    • 更多覆盖率意味着更多误报
    • 可以借助比较新颖的方式,如机器/深度学习等方式减少误报
  • Getting and searching data (如何获得和搜索数据)

这部分的详细信息可以阅读《Improving Threat Intellingence and Cyber Defense with MITRE ATT&CK》

展望

  • Improve and add to ATT&CK content (持续改进 ATT&CK 的内容)
    • Sub-techniques (子技术)
    • Impacts (影响)
    • New technology domains (新的技术域)
  • Continue to expand the ATT&CK community (持续扩张 ATT&CK 社区)
  • Open up the development and governance of ATT&CK (开放 ATT&CK 的开发和管理)
  • Create a new website and infrastructure that makes ATT&CK easier to use (创建一个新的网站和基础设施,让 ATT&CK 变得更好用)

这部分的详细信息可以阅读《Improving Threat Intellingence and Cyber Defense with MITRE ATT&CK》

其他参考链接

第二部分:ATT&CK矩阵展示可行性分析

我假定读到这里的读者有沙箱系统开发经验,至少熟悉cuckoo的整套流程。看着国内外各种云沙箱将ATT&CK集成到平台内,也许读者也在思考:如何比较快地将ATT&CK集成到自己正在为之工作的威胁情报平台?

下面笔者来分析一种可行性思考过程。

现状

需求描述

如果要在沙箱平台上增加对ATT&CK矩阵的展示。具体需要分为如下几个步骤:

  1. 在规则文件中增加attckid的关联id,并在保证后续命中后可以抽取对应字段
  2. 在任务结果展示界面增加一张完整的ATT&CK矩阵描述
  3. 对于每个任务,在界面展示时,提取相应的attckid,进行查询,要求如下:
    1. 将所有命中的attckid映射到大步骤2的大矩阵上
    2. 给一个attckid,查询其相应信息(以Joe Sandbox为例,主要是获取IDNameDescriptionTacticsData SourcePlatformsUrls这些信息以及对应命中的规则) (需要对应的查询数据库)
    3. 当用户点击某个命中的attckid方格后,弹出对话框,展示上面获取的的att&ck字段和对应的规则

前置工作

这里我以原生cuckoo为例,下面是官方文档中对其规则命中格式的描述:

故而,要完成上述步骤1,读者必须想办法在cuckoo的规则文件中绑定对应的规则,这不是什么难事,纯粹是体力活。

可行性分析

完成前置工作后,后面的问题主要是如何获取IDNameDescriptionTacticsData SourcePlatformsUrls这些信息。

获取所需信息

MITREgithub开源了一个cti项目,里面恰好有我们所需的数据。

该项目中的如下目录中存储着每一个Technique对应的详细信息。

https://github.com/mitre/cti/tree/master/enterprise-attack/attack-pattern

里面的每一个json文件代表了ATT&CK内一个具体的Technique

该文件为例。具体说明如下:

MITRE自己也在对应的说明文档中对相关字段进行了详细的解释:

所以,从可行性来看,基于cuckoo的沙箱系统可以在比较短的时间内完成对每个任务ATT&CK矩阵的展示工作。

(当时写这篇文章时)这部分一共244json文件(现在可能有所增加),只要确保查找算法可以在用户可以接收的时间内将相应的信息展示到界面即可。

进一步展望

ATT&CK矩阵得到展示后,对应的威胁分析人员可以尝试用矩阵中TTP的相似性去关联同源APT样本,负责检测的人员也可以通过该矩阵去继续细化没有覆盖到位的检测点。

[培训]《安卓高级研修班》彻底搞定函数抽取型壳!现在报名得源码和安卓8.1脱壳机!10月20日深圳专场不见不散!


文章来源: https://bbs.pediy.com/thread-254825.htm
如有侵权请联系:admin#unsafe.sh