张 福 程 度 鄢 曲 卞建超
(北京升鑫网络科技有限公司 北京 100085)
网络安全评估与检测是网络安全建设的基础性工作,只有在正确、全面地了解网络安全防护能力之后,才能在安全投入、安全措施选择、安全保障体系建设等工作中作出合理的决策.传统网络安全评估与检测往往基于等保合规的理念,仅能针对网络安全产品和网络安全能力的合规性进行评估,无法评估现有防御有效性、安全投入效能和安全能力差距等问题.基于传统网络安全评估与检测的安全建设往往也会陷入安全产品堆砌、安全重复建设、安全措施投入大但防护能力不足的怪圈.
随着网络攻击技术的变化,对网络安全防护能力的要求持续提升.现有网络安全评估与检测方案对网络安全防护能力的要求均基于低抽象模型和单点检测方式,无法覆盖网络攻击技术和手段的不断变化.ATT&CK框架提供了一种用于入侵行为描述的通用语言和知识图谱,能够基于现实中发生的真实攻击事件,记录攻击者在攻击过程中的战术和技术,并形成知识库.本文以ATT&CK框架为“标尺”,提出基于ATT&CK框架的网络安全评估与检测技术.该评估与检测技术可最大程度地避免传统安全服务效果取决于评测人员安全能力的弊端,帮助组织快速形成安全评估检测能力,提高组织对于高级威胁检测的广度与深度.
ATT&CK框架由MITRE公司于2013年创建[1].该框架随着新技术、新应用、攻击行为等的发展而不断演变,内容丰富、实战性强,已得到业界的广泛关注,成为业界了解攻击者攻击行为、方法以及相应缓解措施的主要窗口.ATT&CK框架不仅为业界提供了一个共同的攻击描述方法,以便业界讨论和合作打击网络攻击[1],还为网络安全团队的评估和检测提供了思路.
1) 评估改进当前组织的检测防御能力.
通过获取威胁情报构建检测分析能力,利用模拟攻击找出组织应对ATT&CK框架中攻击技术的防护能力差距,为网络安全工程师和架构师提供有用数据,对差距进行整改.通过评估改进工作的不断重复与迭代,提高组织的检测和防御能力.评估改进主要包括3个方面:一是评估防御技术能否有效应对ATT&CK框架中的攻击技术和攻击者;二是确定当前优先级最高的需要弥补的防御缺口;三是修改或者新增技术去弥补当前缺口.
2) 利用ATT&CK框架加强检测分析能力.
全面有效的威胁检测需要了解常见的攻击技术,特别是对组织构成威胁的技战术,以及如何检测和缓解这些攻击.基于ATT&CK框架进行检测分析与传统检测方式不同,前者并不是在识别已知的恶意行为后进行阻断,而是收集系统上的事件日志和事件数据,使用这些数据来识别行为是否是ATT&CK框架中所描述的可疑行为,从而帮助组织快速准确检测组织内部的攻击行为.
1) 基于ATT&CK框架的静态评估.
基于ATT&CK框架的静态评估是指通过专业人员对组织进行信息收集、数据分析、人员访谈等,对数据源覆盖率、能见度覆盖率和检测覆盖率进行测算,以评估信息系统的防护有效性.静态评估主要包括数据源整理分析和数据源映射分析.数据源整理分析包括数据源收集[2-3]、数据源质量评分和编制数据源清单.数据源映射分析是指将数据源清单映射至ATT&CK框架,从不同维度进行数据展示、分析和评估,主要包括:
① 数据源覆盖率.即组织已收录的数据源对ATT&CK框架中所包含数据源的覆盖情况.ATT&CK框架包含30多个不同的数据源和90多个数据组件,通过对组织内部数据源的收集和分析,将数据源清单映射至ATT&CK框架实现数据源覆盖率的分析评估.
② 能见度覆盖率.能见度是指基于数据源分析对某项攻击技术的可检测程度.能见度覆盖率是指基于数据源分析对ATT&CK框架中各攻击技术的可检测程度.将数据源清单映射至ATT&CK框架实现能见度覆盖率的可视化,即确认具备和缺乏能见度的攻击技术以及其能见度分数.能见度分数可取值0,1,2,3,4,分别代表技术不可见、少量可见、部分可见、几乎全可见、完全可见.可以根据专家知识或基于特定数据源质量调整每个攻击技术的能见度分数.
③ 检测覆盖率.即组织所能检测出的攻击行为对ATT&CK框架中攻击行为的覆盖程度.对能检测出的项目和检测水平以及无法检测出的项目进行展示分析,从而发现组织的攻击检测能力和ATT&CK框架中攻击行为之间的差距,并提出改正方案.
通过静态评估,网络安全团队可以迅速发现安全数据源收集和质量上的不足,明确组织内缺失的安全数据源及优先级.安全团队可以通过在终端侧内置数据采集组件或者新增安全工具(网络监控、网络检测和响应(NDR)、基于主机的IDS/IPS、端点检测和响应(EDR)等)优化安全数据源收集,提升组织的安全防护能力.
2) 基于ATT&CK框架的动态评估.
基于ATT&CK框架的动态评估是指通过红队模拟攻击、蓝队检测攻击并响应,从攻击行为的检测角度,找到组织检测能力与应对ATT&CK框架中各类攻击技术所需检测能力之间的差距,并整改提升组织的安全防护能力.动态评估主要包括建立评估团队、确定目标、收集数据、过程分析、模拟环境搭建、执行评估、测试反馈和编写差距报告[4].
动态评估中往往会使用自动化评估工具,以提升评估过程的工作效率.国内外常见的CALDERA[5],Atomic Red Team[6],Red Team Automation[7],Infection Monkey,METTA等基于ATT&CK框架的自动化评估项目均提供了自动化评估工具.
评估完成后,团队成员需针对评估结果和攻击技术进行全面剖析,从数据源收集的广度、深度评估组织检测用例的检测效果,找到组织目前检测能力与应对ATT&CK框架中各类攻击技术所需检测能力之间的差距.根据差距整改的紧迫性、可行性、难易程度、投入回报率等,给出短期和长期的整改建议以及相应的工作改进计划.
ATT&CK虽然是攻击框架,对于防御检测其意义也十分重大.国内外应用较广的基于ATT&CK框架的检测项目有CAR(Cyber Analytics Repository)和EQL(Event Query Language).
1) CAR项目
CAR项目提供了基于ATT&CK框架的威胁检测和追踪,还提供了UI可视化子项目CARET,更利于对CAR项目的理解.该项目从攻击组织使用的攻击技术出发,分析攻击者最终造成的影响.CAR项目主要提供5个分析视角:攻击组织、攻击技术、技术分析、数据模型和数据源探针;开展4项工作:根据ATT&CK框架确认攻击优先级和实际分析方法、根据攻击者行为确认要收集的数据以及数据收集能力[8].
2) EQL项目
EQL项目提供了一种安全事件查询语言,可以对安全事件进行序列化、归集及分析.该项目可以进行事件日志的收集,不局限于终端数据,还包括网络数据、Windows下的原生数据、osquery类型的基本缓存数据和BRO/Zeek的开源NIDS数据.组织可以通过EQL项目对基于ATT&CK框架的应用进行持续优化,对数据质量和分析能力进行评估,找出组织的安全运营能力与应对ATT&CK框架中各类攻击行为所需安全运营能力之间的差距,在安全防护能力建设中不断弥补差距,实现安全运营能力的持续量化提升.
EQL项目语言形式有Shell类型和lib类型,需要输入类似JSON的文件才可以进行查询.该项目语言语法比较强大,可以理解为SQL语言和Shell的结合体.既有SQL的条件查询和联合查询,也有内置函数和Shell的管道操作方式.该项目在开源领域影响较大,尤其跟ATT&CK框架的结合比较好.该项目除了提供语言能力外,还有很多跟攻击技战术结合的分析脚本.
通过对现有基于ATT&CK框架的评估和检测技术的理解和分析,本文提出基于ATT&CK框架的自动化评估系统.通过构建基于ATT&CK框架的入侵与攻击模拟系统,自动化模拟黑客的攻击行为,评估网络安全防护体系在阻止攻击方面的有效性.通过该系统,组织能够使用自动化工具,持续、一致地模拟针对组织基础架构的整个攻击周期(包括内部威胁、横向移动和数据泄露)的攻击行为场景,以有限的风险提供连续且一致的评估.
自动化评估系统由攻击库管理、模拟攻击服务管理和模拟器实例管理3部分构成,如图1所示.
图1 系统总体架构
图2 设备集成库攻击模拟过程
1) 攻击库管理
攻击库管理由设备集成库(device integration package, DIP)和攻击场景模板组成.设备集成库可以执行各类攻击的模拟器,有自身的类层次结构和执行过程抽象.攻击场景模板提供模式化和参数化的攻击服务,具体应用时需要配置与现场相符的内容,如IP地址、端口、邮箱地址等.攻击库通过自动化编排脚本调用设备集成库接口实现基于主机、网络和命令与控制(command and control, C&C)的攻击模拟,如图2所示.如果攻击库中的编排脚本不能满足现场要求,可以修改执行逻辑和判断流程.
2) 模拟攻击服务管理
模拟攻击服务管理由配置管理、进度管理、报告管理和运行环境构成.模拟攻击时,基于每个攻击场景的实际要求选取攻击内容并准备攻击参数(即配置管理).在运行环境中进行攻击任务的执行规划和任务分解,将具体任务发送到模拟器实例管理中的模拟器中执行(即进度管理),并输出相关攻击报告.
3) 模拟器实例管理
模拟器实例管理由模拟管理器和各类模拟器组成.模拟器是设备集成库的实例化,运行在有安全配置的傀儡容器中,由模拟管理器负责它们的管理和安全防护工作.傀儡容器是一种远程代理,可以运行在网络内的任意主机中,但需要事先由模拟管理器向模拟攻击服务管理中的运行环境注册.模拟器承担模拟攻击服务管理中的运行环境发出的不同模拟任务.其中,主机模拟器用于对本机实施攻击,网络模拟器实施采用各类IP协议的攻击,C&C模拟器实施远程攻击.每种攻击通过在主机、网络、C&C模拟器中执行特定的命令序列完成,不同模拟器自身支撑1种或多种运行攻击的技术.
基于ATT&CK框架的检测流程如图3所示.首先选取ATT&CK战术,研究战术机理,识别数据来源,进行数据源标准化;然后通过建立分析规则,收集数据并检测,并针对检测的漏报率和误报率优化检测规则,实现攻击分析;最后根据多项攻击检测结果,建立攻击知识图谱和网络知识图谱,进行攻击链的溯源分析.
图3 基于ATT&CK框架的检测流程
基于ATT&CK框架实现攻击检测首先要考虑如何规划数据源的问题,标准化地从数据源收集数据可为后续标准化地检测攻击提供良好的基础.实现数据源标准化需先从ATT&CK框架中选取所需检测的各项攻击战术,研究各项战术机理,明确检测各项攻击战术所需的具体数据组件及数据源.然后,采用标准化的数据格式表示这些数据源和数据组件,并按照标准化数据格式尽可能地全面采集检测这些攻击战术所需的数据,以支撑这些攻击战术的检测.
以检测Windows可疑计划任务或服务项目为例,需掌握进程启动日志,以分析进程路径和启动方式,从而定位可疑的计划任务或服务项目.因此,需针对“进程”(Process)数据源进行数据格式标准化和数据收集工作.MITRE公司提供的“Process”标准化数据格式如表1所示:
表1 MITRE“Process”标准化数据格式
此外,结构化威胁情报标准(Structured Threat Information Expression, STIX)中也提供了标准化数据格式,但更多是描述数据性质,主要包括对象、类型和属性,如表2所示:
表2 STIX“Process”标准化数据格式
Splunk公司的BOTS(Boss of the SOC)项目提供的数据格式如表3所示.该数据格式适用于大数据平台的查询,依赖于数据源探针工具收集数据的初始方式,数据以Key-Value的形式进行组织.表3中,列“_raw”指代采集的原始数据.其中,等号左边内容为Key,等号右边内容为Value.
表3 Splunk数据源格式
为了精简所需收集的数据,本文在MITRE,STIX和Splunk数据格式的基础上,删减了非分析字段,优化了数据格式,设计了利于检测分析的标准化数据格式.表4是利用本文设计的数据格式表示的“Process”数据源:
表4 本文“Process”标准化数据格式
传统网络安全防护方案往往难以检测新型攻击,如高级持续性威胁(advanced persistent threat, APT).一方面,新型攻击工具往往已针对各种安全防护产品进行免杀测试,或采用了逃避恶意软件检测的混淆技术,大多数杀毒软件无法有效检测此类工具;另一方面,攻击者也会在系统中使用合法操作进行渗透,大多数防护工具没有足够的数据来检测此类恶意行为[9].
为应对传统安全检测方案的不足,MITRE公司发布了基于ATT&CK框架的攻击分析方案,主要包括后渗透行为分析、威胁分析、持续迭代和真实环境验证[10].通过对ATT&CK框架中各攻击技术进行研究并建立规则,结合采集的数据进行攻击分析检测[11].
根据上述思路,本文设计了基于ATT&CK框架的攻击分析框架,该框架包括采集端和服务端,如图4所示.采集端包括数据源、Agent和连接层,提供多种数据源采集、预处理和数据交互能力,为攻击分析提供标准化数据.服务端包括综合管理节点和存储节点.其中,存储节点负责所采集日志的存储;综合管理节点负责数据源的查询处理、语法解释以及分析工作的进程调度、状态监控和前端展示,实现检测规则管理和攻击分析检测.
图4 基于ATT&CK框架的攻击分析框架
基于ATT&CK框架的攻击分析步骤为:
1) 建立分析规则.针对ATT&CK框架的各项攻击技术以及子技术进行分析,利用脚本或攻击工具复现各项攻击技术,从而得到相关攻击过程和结果的样本数据,以此建立各项攻击技术的检测规则,以便进行检测分析.
2) 收集数据并分析检测.基于数据源标准化格式进行事件和日志的收集,利用检测规则对比样本数据和实际采集的数据,实现攻击技术的分析检测.由于后渗透行为多围绕主机展开,需重点针对主机产生的相关数据进行收集整理.
3) 对检测规则持续优化,降低漏报率和误报率.对于漏报和误报较高的检测,需借助统计和机器学习算法加强检测能力,持续优化检测规则.不同类型的数据匹配不同的分析思路和分析算法,并设计相关的分析语言进行归一化分析.
新型攻击的复杂性导致对其检测和溯源的困难性,单项攻击技术分析无法有效溯源整个攻击链,更无法全面评估攻击影响并进行响应.在单点分析的基础上要进行关联分析,才能溯源完整的攻击链.ATT&CK框架(版本10)将攻击链抽象为侦察、资源开发、初始访问、执行、持久化、权限提升、防御绕过、凭据访问、发现、横向移动、收集、命令与控制、数据窃取和危害14个战术阶段,这有利于组织进行各项攻击战术的关联分析并溯源整个攻击链.
攻击链的检测分析需基于系统监控等日志数据,通过构造抽象表达的溯源图进行因果关系分析,并映射至ATT&CK框架,从而实现高效、准确的攻击链识别和取证分析[12].攻击链的检测分析需关联复杂的角色、行为关系,通过知识图谱可大大简化复杂关系的分析和描述,实现可视化的攻击链关联分析[13].
基于知识图谱的可视化分析能力,本文提出如图5所示的攻击链分析框架.框架分为数据源、数据解析、图数据存储、图分析引擎和UI展示5层.数据解析层对数据源进行解析,构建攻击知识图谱和网络知识图谱,提交给图数据存储层建立索引,便于图分析引擎层进行处理分析并构建网络攻击链,最后通过UI展示层对攻击链、图数据、告警信息进行展示.利用图5进行攻击链溯源分析的过程是:
首先,利用知识图谱的相关技术,对整个攻击过程进行还原,逐步建立攻击知识图谱(attack knowledge graph, AKG)和网络知识图谱(network knowledge graph, NKG).
攻击知识图谱如图6所示,该图谱是针对单台主机受攻击情况作全面的分析和描述.根据ATT&CK框架梳理攻击组织常用的攻击工具、恶意软件以及相应的攻击技术和攻击链战术阶段,建立攻击组织、攻击工具、攻击技术、战术阶段之间的映射关系.此外,还可以将特定的攻击技术序列定义为不同的攻击场景,如挖矿和勒索.
图6 攻击知识图谱
网络知识图谱如图7所示,该图谱针对跨主机的横向移动做关联分析.通过描述网络中主机和进程间的连接状态,实时反映网络实体之间的联系和相互作用.网络知识图谱具有实时性,表示某一时间点的连接关系.
图7 网络知识图谱
然后,结合攻击知识图谱和网络知识图谱溯源形成网络攻击链.根据实际采集数据,从攻击知识图谱中抽取主机内的相关进程行为,如进程创建文件、管道和其他进程以及进程访问注册表等;从网络知识图谱中抽取进程关联关系(如进程间调用)以及主机间的网络连接关系;基于进程行为、进程关联关系和网络连接关系,构建网络攻击链,实现整个攻击链的溯源,还原真实攻击情况.
ATT&CK框架作为广泛使用的攻击框架,在安全领域有着重要价值.本文重点研究了基于ATT&CK框架的评估和检测技术,提出了基于ATT&CK框架的自动化评估系统以及基于ATT&CK框架的检测所需的数据源标准化方法、攻击分析框架和基于知识图谱的攻击链分析框架.为ATT&CK框架在评估和检测中的应用实践提供了具体思路和实施方案.未来将进一步研究ATT&CK框架在威胁情报和攻击模拟中的应用,具体包括:
1) 威胁情报归一化和共享.利用自然语言处理,参照ATT&CK框架进行威胁情报内容的标准化,以便机读和共享.
2) 攻击实战模拟.基于ATT&CK框架,通过对多个攻击技术的串联实现攻击链的模拟,提升模拟仿真度.