ATT&CK框架作为安全领域继承Kill Chain的安全攻防框架,在全世界的信息安全领域正在如火如荼的发挥着影响。通过Google Trends可以看出在最近两年的热度呈指数级增长。
图1:ATT&CK框架的热度增长趋势
ATT&CK框架早在2014年就已提出,但当时的框架还比较简单。
图2:2014年时的ATT&CK框架
目前,这个框架还在不断演进,在今年10月份的ATT&CKcon 2.0大会上,披露的更新内容如下:
图3:ATT&CK框架的新增内容(数字解读)
值得一提的是,ATT&CK框架中加入了云相关方面的一些支持:
图4:ATT&CK新增云支持
目前,国内目前已经有一些文档从理论层面来介绍该框架,但很少从框架落地角度来介绍。而本文将更着重于如何使用该框架,毕竟该框架不像其它理论只是提供理论指导作用,这个框架的可落地性很强。
理论学习使用
ATT&CK™ Navigator项目
对于ATT&CK的学习是第一步的,首先需要介绍的就是ATT&CK™ Navigator项目。与普通的大型矩阵图片相比,这个导航工具看上去给人的压力更小,而且具有良好的交互性。通过简单地点击鼠标,就能学习到很多知识,这个项目主要是为之后的工作有很好的标记作用。这个项目比较好用的几个功能都是筛选类的功能,比如你可以根据不同的APT组织以及恶意软件进行筛选,可以看出组织和恶意软件使用的Technique,并进行着色,这样就可以很明显看出来这个组织的攻击使用技术。
图5:APT29 使用的攻击技术
同时也可以根据不同的需求,保存为其它格式导出,包括Json、Excel以及SVG,也支持根据平台和阶段进行选择。
图6:根据平台和阶段进行选择
从上图可以看出,ATT&CK框架支持三种常见系统Windows、Linux和MacOS,最近还新增了对云安全的支持,包括了国外主流的三个公有云AWS、Azure和GCP,同时还加入了一些SaaS安全框架Azure AD、Office 365和 SaaS。虽然ATT&CK框架中有关云计算的内容并不多,但也是一种有价值的尝试。云安全的这块针对云平台更像是CSPM产品解决的问题,SaaS安全的是CASB产品解决的问题。这里不详细描述,之后会有另外一篇文章说明。这个项目主要关注的是pre-attack和attack-enterprise的内容,包括mobile这块是有单独的项目支持。
还有比较常见的场景就是标记红蓝对抗的攻守情况,可以一目了然安全的差距在哪里,能够进行改进。从下图可以看出,蓝色的是能够被检测到的红队攻击技术,红色是蓝队没有检测到的。这在一定程度上与罚点球相似,蓝队是守门员,红队是射手,最后是衡量攻守结果。
图7:红蓝对抗攻守图
还有一种用法是对目前安全产品的技术有效性进行coverage的评估,如下图所示:
图8:EDR产品安全技术覆盖度
ATT&CK™ 的CARET项目
CARET项目是CAR(Cyber Analytics Repository)项目的演示版本,有助于理解CAR这个项目表达的内容。CAR这个项目主要是分析攻击行为,并如何检测的一个项目,在Blue Team中详细介绍。这里,介绍一下CARET的网络图。该图从左到右分为五个部分:APT团体、攻击技术、分析技术、数据模型、Sensor或者Agent。APT组织从左到右,安全团队从右到左,在“分析”这一列进行交汇。APT组织使用攻击技术进行渗透,安全团队利用安全数据进行数据分类并进行分析,在“分析”环节进行碰撞。
图9:CARET 网络图
最左侧两列已在上文有所介绍,此处不再赘述。我们从最右侧的Sensor开始分析。Sensor主要是用于数据收集,基本是基于sysmon、autoruns等windows下的软件来收集信息。数据模型受到CybOX威胁描述语言影响,对威胁分为三元组(对象、行为和字段)进行描述,对象分为9种:驱动、文件、流、模块、进程、注册表、服务、线程、用户session。数据模型是关键所在,它决定了sensor或者agent要收集哪些数据、怎样组织数据,也为安全分析奠定了基础。“分析”列主要是基于数据模型进行安全分析,大部分都有伪代码表示。
Red Team使用
Red Canary™ Atomic Red Team项目
红队使用ATT&CK框架是比较直截了当的场景,可以根据框架的技术通过脚本的自动化攻击,这里重点推荐Red Canary公司的Atomic Red Team项目,也是目前Github上Star最多的关于ATT&CK的项目。MITRE与Red Canary的关系已经非常密切,MITRE的项目CALDERA也是类似的项目,但是场景和脚本的丰富度离这家新兴的MDR公司还是有差距,在今年SANS的CTI会议上发布的内容也可以看出。
图10:MITRE与Red Canary的用例数量示意图
这个项目使用起来也好上手,首先搭建相关环境,然后选择相关的测试用例,包括Windows、Linux以及MacOS的用例,然后可以根据每个用例的描述以及提供的脚本进行测试,可能有些用例需要替换某些变量。之后可以根据部署的产品进行检测,看是否发现了相关入侵技术,如果没有发现需要进行检测技术的改进情况。最后,可以根据这个过程反复操作,能够得到一个入侵检测进步的进展图,最终可以更好的覆盖ATT&CK的整个攻击技术图。
图11:入侵检测进展示意图
其它红队的模拟攻击项目更新较少,也可以参考Endgame 的RTA项目、Uber 的Metta项目。比较好的实践是自己的攻击测试库,可以基于Red Canary的项目,然后结合其它的测试项目,同时可以结合自身来完善这个自己的红队攻击测试库,可以根据实际情况不断进行测试和回归测试,可以让安全攻击水准达到一个比较好的水平。
ATTACK-Tools项目
这个项目有两个重要作用:第一是用作模拟攻击的计划工具;第二是用作ATT&CK关系型数据库的查询工具。首先,我们先从用作模拟攻击的计划工具这个角度来介绍。以APT3为例(好尴尬,是美国分析中国的APT组织),先不考虑地缘政治因素,只考虑技术层面。首先,分析一个APT组织的行为报告就较为复杂,国内也是只有为数不多的几个比较有技术实力的公司每年在分析APT组织的行为;然后,基于这些攻击技术抽象成模拟这些组织攻击的内容更是复杂。从下图可以看出,模拟APT3有三个步骤,但其实前面还有个重要的步骤——工具选择。
图12:APT3 模拟计划示意图
根据这三个阶段进行模拟,第一步是初步试探渗透;第二步是网络扩展渗透;第三步是真正的实施攻击渗出。虽然该示意图相对比较简单,但该项目根据ATT&CK框架,充分展示了对APT组织的模拟攻击计划覆盖了哪些技术。
图13:ATT&CK™ View 示意图
这类示意图可以很好地将APT组织或者软件的行为按照ATT&CK框架表示出来,能够做好更全面的模拟攻击。关于ATT&CK™ Data Model这个内容更多的是把ATT&CK的内容根据关系数据库设计模式导入,以便按照不同维度进行查询和筛选。
Blue Team使用
ATT&CK™ CAR项目
CAR(Cyber Analytics Repository)安全分析库项目主要是针对ATT&CK的威胁检测和追踪。上面的CARET项目就是CAR的UI可视化项目,可以更利于CAR项目的理解。这个项目主要基于四点考虑:根据ATT&CK模型确认攻击优先级;确认实际分析方法;根据攻击者行为确认要收集的数据;确认数据收集主体sensor的数据收集能力。后面三个方面与CARET项目图示中的Analytics、Data Model、Sensor相对应。这个分析库是由对每一项攻击技术的具体分析构成的。我们以该分析库中最新一条的分析内容为例:
CAR-2019-08-001: Credential Dumping via Windows Task Manager(通过Windows任务管理器进行凭据转储),这项分析主要是对转储任务管理器中的授权信息这一安全问题进行检测。分析中还包含单元测试部分:
图14:单元测试示例
分析中还包括三种检测方式:伪代码、splunk下的sysmon的代码实现、及EQL语言的实现。通过各种方式的检测方法的实现,可以大大增强蓝队的检测能力。
图15:实现方式示例
CAR这个架构可以作为蓝队很好的内网防守架构,但是毕竟是理论架构,内容丰富度上比较欠缺。
Endgame™ EQL项目
EQL(Event Query Language)是一种威胁事件查询语言,可以对安全事件进行序列化、归集及分析。如下图所示,该项目可以进行事件日志的收集,不局限于终端数据,还可以是网络数据,比如有国外使用sysmon这种windows下的原生数据,也有osquery类型的基本的缓存数据,也有BRO/Zeek的开源NIDS的数据,这些数据对接个EQL语言进行统一分析。
图16:EQL语言示意图
这个语言的形式有shell类型PS2,也有lib类型。比较局限的是要输入Json类似的文件才可以进行查询,但是语法比较强大,可以理解为sql语言和shell的结合体。既有sql的条件查询和联合查询,也有内置函数,同时也有shell的管道操作方式,有点类似于splunk 的SPL(Search Processing Language)语言。
这个语言本质上属于Threat Hunting(威胁捕获)领域,因为这个领域目前也比较受关注,后面还会有文章专门讲解。该语言在开源领域影响力较大,尤其是跟ATT&CK的结合比较好,除了提供语言能力外,还有很多跟TTPs结合的分析脚本。
DeTT&CT项目
DeTT&CT(DEtect Tactics, Techniques & Combat Threats)项目,主要是帮助蓝队利用ATT&CK框架提高安全防御水平。用于帮助防御团队评估日志质量、检测覆盖度的工具,可以通过yaml文件填写相关的技术水平,通过脚本进行评估,自动导出Navigator项目可以识别的文件,导入之后可以自动标记,也可以通过excel导出,很快的看出ATT&CK关于数据收集、数据质量、数据丰富度(透明度)、检测方式等的覆盖度。
图17:数据收集质量示意图
CTI(Cyber Threat Intelligence)Team 使用
ATT&CK框架的创建及更新都是来源于威胁情报。ATT&CK框架是威胁情报抽象的最高层次,从战术、技术和步骤(TTPs)来分析的攻击层面。下图是威胁情报内容对于黑客的“痛苦金字塔”。总体来讲,威胁情报分析得越透彻,黑客攻击绕过的难度就越高。最高级别是TTP的检测,这是因为如果能够实现黑客行为的检测,基本就很容易定位黑客组织;如果只是能够实现hash、IP、DNS的检测,则很容易被黑客绕过。
图18:痛苦金字塔
威胁情报项目分为四个部分:战略级、战术级、运营级和技术级。我们目前的技术主要集中在运营级和技术级。而ATT&CK框架对于各个级别都具有重大指导作用。
图19:ENISA的CTI项目图
Sigma项目
Sigma项目是一个SIEM的特征库格式项目。该项目可以直接使用sigma格式进行威胁检测的描述,可以进行共享,也可以进行不同SIEM系统的格式转换。下图展示了simga主要解决的问题场景。
图20:Sigma用途示意图
Sigma的描述方式是使用yaml格式表示,比较容易理解。比如windows下使用sysmon检测webshell,如下图所示。
图21:使用sysmon检测webshell的示例
还有专门针对sigma的editor,可以方便地编写相关的威胁检测规则。
Sigma还可以将自身格式的规则转换到一些主流的SIEM系统中直接使用,这个工具目前可以支持的系统如下图所示:
图22:Sigma支持的系统
Sigma的规则在ATT&CK框架中的覆盖度如下图所示,也是覆盖了一部分的检测规则:
图23:Sigma规则在ATT&CK框架中的覆盖度
MISP项目
恶意软件信息共享平台MISP(Malware Information Sharing Platform)是一个开源的威胁情报平台。该个项目有一定历史了,现在是欧盟在资助这个项目。使用这个系统是通过安装一个实例达到的,可以理解为,威胁情报中心会定期同步威胁事件给每个实例。每个子节点的实例也可以创建新的事件,形成新的威胁情报发送到威胁情报中心。也可以查看历史的威胁情报记录,也可以导出相关的数据,同时也支持API方式。虽然这个项目相对比较复杂,但功能较多,适合比较成熟使用威胁情报的单位。
图24:MISP威胁情报平台示意图
misp-galaxy这个项目中目前已经集成了ATT&CK框架,可以将MISP中的数据映射到ATT&CK框架中。
CSO使用
CSO作为安全的最终负责人,当然上面3个组的工作内容都得大致清晰,更重要的是知道如何评估,并且利用ATT&CK框架切实提高安全防护能力。
Atomic Threat Coverage项目
该项目的重点组成部分其实是上面提到的两个项目——Red Canary™ Atomic Red Team和Sigma项目,二者分别负责模拟攻击和攻击检测。响应使用ES和Hive进行分析。这个项目更像是个组织型项目,真正看重ATT&CK在企业的落地情况。当然这个架构不一定是最优的架构,可能我会在响应方面要加上EQL的内容。
图25:Atomic Threat Coverage项目示意图
这个架构更像是某个企业内部的一种使用场景:红队模拟攻击,蓝队检测攻击并做出响应,此外还有一些缓解措施。CSO可以利用ATT&CK框架在内部不断演练,按照ATT&CK的覆盖度来看到安全能力的改进情况。与以往每个团队的消息不对称,各司其职又没有统一的目标相比,该框架将3个团队结合起来,让其按照ATT&CK提供的通用语言与规则,以游戏的方式进行模拟训练,从而达到提升安全防护能力的目的。
ATT&CK的常见使用场景这里就介绍到这里了,如下图所示:
图26:ATT&CK的常见使用场景
常见的内容是模拟攻击、评估和提高防御能力、威胁情报提取和建模、威胁评估和分析。
ATT&CK框架涵盖的内容还有很多没有介绍,比如Pre-ATT&CK、mobile、ICS、Evaluation、SOC Assessment及Sightings等等。我们希望与大家携手努力,共同研究这个来源于真实场景的安全框架,为提高安全能力、维护网络安全贡献绵薄之力。
-The End-