分享

一篇文章了解、建立与实施ATT&CK框架

 kaller_cui 2020-01-17
熟悉网络安全的人都知道,网络攻防是非常不对等的,攻击者只需找到一个弱点就可以侵入防御方的网络,但防守者则需要利用有限的资源看护住一切可能的攻击面。这也是之所以现在的安全防护理念,开始转变到检测和响应方面。即,检测出威胁并收集证据以有效的缓解风险。
如何建立一个有效的检测与响应的安全体系一直都是业界的难题,MIRTR的ATT&CK框架试图回答这个问题。ATT&CK可以看做成一个统一的分类方法,从而为一个机构中不同的组织共享信息。安全社区越来越多的人都在转向采用这种方法,因为它能够把攻击步骤或路径结构化,从失陷主机到提权,再到横向移动与渗漏数据。利用这套通用的攻击者行为分类法,可以帮助安全团队(如响应团队、SOC、红蓝队、威胁捕捉,甚至是IT人员)更好的测试、开发,并优化他们的检测与响应机制。
但是,ATT&CK的分类是纷繁复杂的,甚至会让人感到无所适从,如此多的信息很容易让分析陷入困境。本文试图帮助大家能够快速建立并实施ATT&CK。
https://attack./
一、理解ATT&CK内容框架
#“战术”(Tactics)是竖栏的名称,把攻击者使用的技术归纳起来。
#“技术”(Techniques)是战术栏目中的每一个名称,表示攻击者为了完成战术而采用的技术。每种技术都有一个编码,如T1103。
#“过程”(Procedures)可以通过点击每一个技术名称访问详细内容。显示攻击者如何执行某项技术的,并对攻击者使用的特定技术提供了进一步的细节指导。
ATT&CK的伟大之处在于,所有的战术、技术和过程(TTP)都基于对现实世界真正的攻击者的观察。许多攻击组织使用相同的技术,几乎等同于这些黑客组织有着自己的攻击手册,并通过这些手册让新成员能够快速的上手。
如果你看过“痛苦金字塔”,应该会了解在TTP之下的5层攻击方法,如威胁指征(IOC)或攻击指征(IOA),都是基于签名的,防守者关注的是攻击工具本身。因此,攻击者可以改变其配置文件或是重新编译程序来绕过检测工具。但当防守者关注TTP的时候,针对的则是攻击者的行为套路。这时攻击者就很难隐藏和绕过,迫使攻击者不得不改变其行为套路。对于新手而言,是非常困难的,因为无法再使用上文所提及的攻击手册,而新手的能力又不足以临时改变攻击套路。
ATT&CK把攻击者实施过的TTP分解为以下12个阶段:
初始访问(initial access)-->命令执行(execution)-->持续存留(persistence)-->权限提升(privilege escalation)-->防护绕过(defense evasion)-->凭证访问(credential access)-->发现可利用目标(discovery)-->横向移动(lateral movement)-->收集数据(collection)-->命令与控制(command and control)-->数据渗漏(exfiltration)-->操纵或破坏(Impact)
通过深入研究这些技战术与攻击过程,防护者能够更好的理解不同类型的攻击者和攻击套路,然后利用这些知识来建立起基于行为的检测机制,发现潜在威胁和潜在攻击者。
二、如何实施ATT&CK
目前,ATT&CK有291项技术,而且随着人工智能、机器学习等新技术的发展,ATT&CK会越来越庞杂。如何开始着手,又如何优先选择、建立与管理检测机制,摆在面前的是一大堆的问题。但有一点对于大多数安全项目,都是开始的第一步:了解自身。
1. 了解自身(威胁模型)
首先,必须了解企业自身的核心业务驱动,业务运营模式,现金流主要来自哪里,了解企业资产、知识产权,以及支撑业务和企业发展的内部机制。还要知道,一旦这些企业资产、数据、IP或系统被入侵后,会对业务带来哪些影响。同时,问问自己如果外部攻击者进入到企业内部,他们的终极目标是什么,为什么选择这个目标?
考虑了以上这些内容之后,才能把精力投入到专注攻击者使用的技术上。
2. 挑选技术写入检测
ATT&CK的291项技术里,可能有很多都适用,如何挑选它们并写入检测规则里呢?
ATT&CK框架最左端的是初始访问,然后一直往右移一直到操纵或破坏(Impact)。但这并不意味着你必须从左开始一个不拉的把所有技术都放进检测规则,因为你可能已经具备某些技术的检测能力。但反过来讲,也不能听天由命随机从框架中选择某些技术写进检测规则。因此,这里的关键是找出那些与企业敏感数据/系统/资产等最为相关的攻击技术。
3. 攻击难度
即便把最为相关的攻击技术写进检测规则,对于一个具备大型复杂系统的企业而言,这些规则可能还是会有很多,为此需要进一步的缩减。在这方面,有很多开源资源和公共资源可以提供帮助。如安全公司Tripwure的Travis Smith,给出了一个专注于“漏洞利用难度”的“老师框架”(ATT&CK as a Teacher)。
(颜色由蓝变红代表着攻击难度由低到高)
可以参考上面的框架,并根据安全团队自身具备的能力来减少检测规则。余下的一些攻击技术则需要基于某些数据源,才能建立起相应的检测。如果你的企业并不具备这些攻击技术的相关数据源,检测规则就没那么容易建立了。
4. 数据源
当你最终选择对哪些攻击技术实施检测的时候,一定要确定合适的数据源。每种攻击技术过程都有与之相关的数据源,比如编号为T1037的“登陆脚本”,其数据源就是文件监控与过程监控。
两兄弟安全研究人员Roberto Rodriguez和Jose Rodriguez也贡献了一个“数据猎手”框架(Hunters ATT&CKing with the Data.),利用企业环境里的通用数据源,优化基于攻击技术的检测规则。
上图中包含三种数据源,如果能够整合这三种数据源,就可以最大化建立与之相关的攻击技术检测规则。同时,也给予企业安全人员一个整体视角的数据源画面。
上面两张图突出显示了检测相关攻击技术所需的数据源。此外,还有一点需要注意,ATT&CK过程中定义的,几乎所有的高级别的数据源,都有子数据源。重点是要知道哪些数据源是你访问到的,哪些子数据源又能提供哪些信息。同时还要了解漏掉了什么,以发现自身检测能力里的空白点。
当实施不同且相关的攻击技术检测时,要能够降低子数据源的数量,专注分析与企业相关度大的数据源。例如,文件与进程监控数据源相关的有66种攻击技术。但与企业自身所关注的攻击技术可能只是子数据源的一个子集。
另一个例子针对攻击技术的变化。Rodriguez两兄弟给出了对攻击技术--overpass-the-hash执行和检测的两种不同方法,使用了Mimikatz和Rubeus。
展示子数据源子集的一个要点就是,与威胁情报结合(如果你有的话),选择一个版本,可以令你的检测更加有效。
如何与数据源建立直接关联,信息从哪里提供?如果你只是刚接触到ATT&CK,建议阅读框架参考资料部分(Reference)的内容,如果觉得帮助不大的话,可以再看看这个:The Open Source Security Events Metadata (OSSEM)(https://github.com/Cyb3rWard0g/OSSEM)
Rodriguez两兄弟建立的OSSEM提供了四种与数据源相关的信息类别,ATT&CK数据源、检测数据模型、通用信息模型和数据字典。
ATT&CK数据源是ATT&CK攻击技术数据源对真实系统事件或分析的映射,而真实系统事件或分析的数据是由对攻击技术的检测机制产生的。
上图是一张编号为T1214(注册表凭证)的数据源映射,包括了Windows 注册表、进程监控和进程命令行参数。图中还显示了进程监控数据源的子进程,以及事件日志信息源。这张表格
https://docs.google.com/spreadsheets/d/1ow7YRDEDJs67kcKMZZ66_5z1ipJry9QrsDQkjQvizJM/edit#gid=0)显示了更多的ATT&CK数据源,对于评价ATT&CK工具提供商非常有用,可以看出他们对特定ATT&CK数据源的实际支持有多深。
5. 整合数据
在理解了数据源的实际来源以及与两者之间的事件关系之后,就需要存储并查询这些数据。可以考虑使用一个图形数据库,或类似于下图所示的,基于数据字典中的信息和通用信息模型。
如果不想从零开始建立一切,可以有两个选择:开源工具,如Filippo Mottini的Osquery(https://github.com/teoseller/osquery-attck),以及Olaf Hartong的无代理web界面和远程API服务器(https://github.com/olafhartong/kolide)。当然,也可以购买商业化的端点安全平台。
Facebook就是使用的Osquery来管理它的服务器基础设施,安全社区对Osquery有着良好的支持。它能够收集企业环境中各种主机的信息,并把这些数据整合到表中,并使用SQL语句查询和定稿检测规则。对于已经接触过关系型数据库的人来说,并非难事。
Osquery能够建立映射到目标TTP的查询集,为威胁捕捉提供分析数据。威胁分析人员还可以建立与执行特定与机动的查询,并且这些查询还能够与SIEM系统结合。
支持ATT&CK框架的商业工具一般为端点安全平台,选购这类工具时需注意以下点:
# 支持哪些数据源?
# 支持哪些特定数据源的子数据源,支持到什么程度?
# 覆盖哪些攻击技术,范围有多大?
三、了解不同工具的能力和局限性
确定这些工具支持企业自身环境的特定数据源,以检测ATT&CK框架中不同的TTP。如果考虑把工具与目录服务整合,并且你已经有了LDAP,就要注意别让工具提供商认为你已经有了活动目录(AD)。
了解工具对子数据源支持到何种程度。如果工具宣称支持Windows注册表,那它是否支持建立、删除、修改与访问注册表键?对这些功能要进行核实、评估或测试。
注意工具是否能与你的SIEM或SOAR结合,这样就可以与SIEM或SOAR互动,推送或取得数据,以提供更加丰富的数据、更少的虚假警报。
最后,要理解工具的警告类型不同。比如,不同的工具提供的检测信息级别不同。有的工具只提供事件类别信息,而有的工具则提供特定的TTP参考和对事件更深度的解释。提供的信息越丰富,安全人员的工作量就会越小,对事件的判断就会越准确。下面列出事件描述丰富度的级别:
None(最低)→
Telemetry(信息)→
IOC(基于签名的问题识别)→
Enrichment(telemetry + ATT&CK 相关信息)→
General behavior(警告“发现”但没有特定细节)→
Specific behavior(警告“发现”同时有特定细节,即TTP相关信息)
四、ATT&CK检测生命周期的维护
检测机制的建立需要考虑攻击者的技战术与攻击过程(TTP),只有理解了攻击过程才能更好的进行检测。然后得以进行,建立、测试、部署、调整、禁止,并周期性的确认检测规则。整个检测生命周期(DLC)的流程如下:
1. 检测知识
需要一个系统以跟踪检测DLC的各个阶段。不同的安全人员对攻击技术的检测有着各自的解决方法,经常能够落地实现的只有一些碎片化的方法。因此,需要有一个存储各类知识的中心,通过这个中心让不同的安全人员看到检测状态,并获悉基于各自的知识建立起来的不同检测方法。
2. 检测建立
当检测状态从知识阶段进入准备实施阶段,就进入了开发阶段。蓝队成员通过了解检测的描述,来进行实施。完成之后进行本地测试的时候,要把代码放进DLC管理系统进行登记。这时,检测阶段要修改成“准备测试”。
3. 检测测试
此阶段需要部署一个整体测试环境,这个环境提供数据输出,借此对检测产生的事件数量做判断预期,以供事后安全分析人员对事件的检查和回顾。整体测试环境可以模拟真正的生产环境,来评估检测机制可能达到的实际效果。
测试阶段完成后,检测状态就要修改成“准备评估”。系统开发人员和检测开发人员都要对检测效果进行评估,并达成一致意见,才可以真正的放进生产环境。如果检测结果有太多的虚假警告,就需要重新调整检测逻辑,并把检测阶段仍然标成“准备测试”。
4. 检测部署
两方面的开发人员达成一致后,就来到了下一阶段“准备生产”。在这个阶段要把检测系统安装并部署到生产环境。一开始的时候,要把日志全部打开,收集所有的数据,大约要运行两周的磨合期(国外企业圣诞节一般会有两周的假期)。安全分析人员要获知检测结果,便于他们对新事件进行评估并就新事件提出相关问题。
5. 检测磨合
两周的磨合期后(如发现问题也可更短),检测开发人员要对日志、事件及其他相关信息进行检查评估。此外,测试团队需要通过手动编写系统可以识别的有效事件,以确认检测结果的有效性。
6. 检测加强
检测开发人员通过数据分析对检测机制做出调整,以提升识别准确率。如果发现问题,就要把阶段再改回“准备测试”。如果没有问题,就可以进入“生产定案”阶段。
7. 检测跟踪
关闭全日志开放,但相关检测指标仍需收集,以跟踪和确认。
8. 周期确认
所有的检测规则和效果需要周期性的评估,来保证系统功能的正常运转和更准确的关联。同时,系统还需要不断的迭代、更新、扩充,以及应对新的攻击工具和攻击技术。
五、用ATT&CK进行威胁捕捉
ATT&CK是一个针对攻击技战术的分类集,除了主动捕捉威胁信息以外,还可以用来在非实施检测场景(non-implemented)中发现攻击者。做到这一点,安全捕捉人员需要了解企业的核心资产是什么,攻击者的目标是什么,以及为什么选择这个目标。最后,基于ATT&CK分类法手动检测针对核心资产的攻击技术。
如果你是一名威胁捕捉人员,在工作中如果发现有些攻击技术没有被已实施的检测机制覆盖到,可以利用相应的信息建立起新的检测规则。最终,威胁捕捉人员要专注于那些难以被自动检测机制检测到的攻击技术上。
六、ATT&CK的竞技化
梳理ATT&CK的过程可能很机械与枯燥,为了保持工作的高效,可以加些竞技化的趣味元素。
分成攻防两个团队,一个负责绕过一个负责检测,经常性的开展对抗,后根据成绩给予双方奖励。哪个团队获胜并不重要,重要的是攻防能力可以不断的得到改善。不管是红队找到了绕过检测的方法,还是蓝队提前发现了对方的企图,双方都值得一起庆贺。
七、持续跟进攻击技术
不管是攻击者还是红队,都会关注ATT&CK框架的最新进展。攻击者会了解防守方使用的数据源和检测方法,而防守方也会发现攻击者最新的绕过方法。
安全研究人员William Burgess给出一个非常优秀的演讲稿《EDR时代的红队》(https://www./watch?v=l8nkXCOYQC4),高级红队成员使用的检测绕过技术。
误导:建立虚假和误导信息,使EDR平台失效。例如,建立一个合法的初始化挂起进程写入日志,接着更改运行时间的命令与参数,然后恢复进程,这样攻击者的命令得以执行而且不会被日志记录。最后把命令写回到合法版本,骗过运行时间分析(进程浏览器)
最小化:避免建立传统的父进程,或者利用反射注入后的DLL连接合法进程,以执行攻击者命令。
内存逃逸:隐藏内存利用痕迹,通过reflective loading, process hollowing, process scheduling等进程创建技术,以及在内存只读区域隐藏恶意进程。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多