2020年1月17日
11:54
- 威胁分析 - 情报环模型 - 生成情报 - 建立调查 - 采集、处理数据 - 数据处理 - 富化信息 - 评估损害 - 生成情报 - 共享情报 - 反馈 |
威胁分析
威胁分析的目的是通过分析异常信息,生成可供事件响应模块使用的威胁情报。
安全分析在整个体系建设中的难点。原因在于不像安全基线和事件响应有明确的预期和肉眼可见的效果。威胁分析难以量化且是对使用者来说是个黑盒,使用者无法预料到威胁分析会有哪些产出物,以及对产出物没有衡量标准。
无论是采集到的网络行为、系统告警、未知md5,这些都是当前系统观测到的信息,这些信息或许能作为一个线头向下挖掘,但是实际挖掘过程中。入侵者可能已经建立了多个据点,也有可能只是误导防御方的佯攻。很有可能刚牵出线头线索就中断了。威胁分析模块基于这些蛛丝马迹的信息管中窥豹。所以大部分APT分析类的产品在演示时都展示得特别美好,而在使用后难有较好的效果。
威胁分析的算法和设计不是我擅长的。所以想讨论的内容还是威胁分析在安全自动化体系中的地位,和如何实现从数据->信息->情报->策略的工作流程。
一个情报从生成到被使用的全流程
- 数据
在建立安全基线的阶段,围绕资产生成了不少数据,包括资产的位置、资产的合规状态、资产的安全风险、资产已经配置的防护策略、资产的备份、恢复策略等,这些都是数据,在没有任何入侵活动发生的时候,这些数据就躺在SCM或CMDB中,不会发生任何变化。
- 信息
当异常事件发生时,我们为资产建立的安全基线就发挥作用了。不符合安全基线的行为都可以判断为异常事件。如果基线定义了资产只允许通过堡垒机登录22端口,那任意其他源的登录行为就算认证通过了都算异常事件。基线策略为主机设立了进程白名单,当有新的进程出现哪怕是带签名的软件,那也算异常事件。
资产安全检测能力能够从网络行为、系统告警事件、异常的用户行为等海量的数据中采集到各种异常事件。这个时候还不能称之为安全事件,因为这些还只是信息。只有在对其进行分析,并结合当前环境和经验给出定性之后,才能生成情报。就像检测到一个人体温超高,并不代表他中了病毒,也有可能是因为剧烈运动导致的。而信息的处理阶段在于从海量的正常数据中发现这一指标,并对其进行标准化的处理。
- 情报
判断这些信息究竟是不是安全威胁,关键就在于情报阶段了。威胁分析模块需要结合已知的IOC指标和异常事件对业务可用性、机密性、完整性的影响来判断这究竟是恶意入侵行为或仅仅只是人员不遵守规定的违规访问。例如,有入侵者利用0day漏洞开展入侵,没有产生任何的告警信息,但是因为这一入侵者的行为被其他机构发现过,且共享了威胁情报,那么威胁分析模块应该能根据情报中的网络行为(漏洞利用、C2等阶段都会产生网络行为日志)和外部威胁情报发现这一入侵行为。或者,入侵者使用了新型的勒索软件,本地特征库和威胁情报都缺乏对应的信息,但是威胁分析根据恶意软件对资产的影响(因为勒索加密,业务变得不可用),实现对新型勒索软件的识别和防护。这个基本是最难的部分,类似phantom和demisto都是直接交给了人工,由安全专家进行事件的调查、信息富化、证据收集。这或许是目前最能落地的方式。但是其缺点也非常明显,那就是人员的技能水平、责任心、精力直接影响产出。
- 策略
一旦被定性为安全事件后,威胁分析模块就需要将事件收集到的相关信息整合到本地威胁情报中,传递给事件响应模块。由事件响应模块根据其中的信息,生成COA。关于威胁情报中包含的信息类型,可以参考下一篇内容。
现在如phantom、demisto等SOAR产品在实现时,均将从信息—>情报的过程交由人进行处理,安全分析员基于经验、技能来判断这是否威胁,系统提供了各种富化信息的工具和自动化流程(playbook)来协助信息收集和事件处理。这是在当前机器分析不能完全胜任的情况下折衷的方案。
情报环模型
常用于生成情报的模型包括 OODA、情报环。OODA是用于快速地生成响应的策略,而情报环则是生成和评估情报的正式过程。
情报环的流程包括:方向、收集、处理、分析、传播、反馈。是情报的正式生成流程。
生成情报
建立调查
情报环的第一步是方向。方向是确定威胁分析要回答的问题的过程。在现实社会中威胁调查通常由一个安全信息(安全基线被突破)或者是业务的想可用性、完整性、机密性受到影响之后引发的。例如:管理人员通过网络流量分析,发现了服务器的异常外联行为。服务器登录日志中出现了堡垒机以外的源地址。服务器CPU跑满,业务出现明显卡顿。文件被加密导致无法访问,业务中断。
在这一阶段需要对事件的严重性进行区分,特别是人力有限的情况下。其中一旦影响到资产可用性、机密性、完整性的事件都应该是按最高优先级进行对待,甚至有可能跳过后续情报分析的阶段,直接开始对事件进行遏制。
第一步的输出是一个清晰可以被回答的问题。后续则围绕这个问题开展解答工作。
采集、处理数据
下一步是收集回答问题所需的数据。这依赖于资产在安全基线中建立的检测能力,虽然每个系统的基线都不同,但是应该从多个来源收集尽可能多的数据。
采集是一个持续过程,而不是一次性的操作。在对信息进行分析的过程中,可能会持续产生新的信息采集需求。例如:使用第一轮收集的信息(例如通过终端检测发现恶意软件)将导致第二轮(例如通过沙箱发现恶意软件远控IP),这将导致第三轮(例如对恶意IP历史访问记录的查询)。这种利用随着自身的发展而呈指数增长。此时的重点不是理解数据之间的关系,而是尽可能多地发现信息以后再合并。在这个领域可以依靠已经非常成熟的SIEM、SOC产品。
在安全基线中我们是从防御者的视角来建立检测能力。在威胁分析阶段,则可以从攻击者视角来整理采集到的各种数据。以下我们可以使用kill chain模型来对需要检测能力采集的数据进行整理。
- 确定目标:
这一阶段依赖外部的输入,例如新闻发布了对某一APT组织的报道,该组织可能针对某一特定的行业(例如金融)进行攻击,这应该让同行业的其他组织产生足够的警戒心。这也属于采集信息的环节,但是因为我将威胁分析和情报管理给拆开了,所以这种情况将单独到情报管理中讨论。
- 侦查:
侦查阶段采集到的信息是价值密度最低的,因为数据量实在太大。这包括
- 网络访问控制能力中阻断的访问日志。
- IPS/IDS中基于已有规则库检测出的攻击日志
- 网络流量检测能力中检测出的扫描、端口探测、目录遍历行为。
这里面可能包含了攻击尝试、非恶意扫描行为。侦查数据可以用于获取入侵者的TTP信息,在生成COA环节是攻击诱捕(蜜罐)策略的重点数据来源。
- 投递:
投递的手段包括:邮件(网络钓鱼)、恶意URL(水坑攻击)、注入(web服务)。通常可观测的信息包括:
- 恶意代码检测能力对邮件附件、宏文件的告警。
- 网络流量检测能力发现的对于恶意URL的访问记录。
- 人员行为监测能力发现的异常人员行为,不合规终端的访问、登录日志等。
- 漏洞利用
漏洞利用可以观测到的信息通常来自主机事件检测能力。可观测的信息包括:
- 主机事件检测能力发现系统中出现新的进程。
- 主机完整性事件检测告警:本地用户权限的变化、系统配置变化、系统账号变化、注册表变化等。
一次成功的漏洞利用是无法被直接检测出来的,只能间接观测到入侵者对系统的影响。
- 安装植入
攻击者在目标上运行恶意代码。可观测的信息通常包括:
- 终端防恶意代码能力检测到的木马、webshell、rootkit等工具的检测告警信息。
- 网络恶意代码检测能力在沙箱中检测到的恶意软件行为。
- 同样也会伴随主机完整性检测能力的告警:新增白名单以外的软件、新的计划任务、新的系统启动项、隧道工具等。
新型的攻击也呈现出入侵者使用一些不会被杀软查杀的正版软件(官方渠道带数字签名)作为控制工具,这种行为更加难以检测。依赖用户对于系统软件白名单的基线管理。
- 命令与控制
远控阶段即攻击者远程与恶意软件交互的行为,主要信息还是在网络上:
- 网络流量检测能力发现的异常网络行为,例如服务器主动外联IP、不应该出现的加密流量、固定频率的短通信等等。
需要注意的是,某些特定的攻击是没有命令和控制阶段的,即发射后不管。典型的例子是之前媒体报道过的美国对伊朗核设施的攻击。攻击者在恶意代码中写入了所有的逻辑和指令。恶意软件自行寻找攻击目标(铀提炼系统),执行命令(修改运转参数)。这类的攻击是无法在命令和控制阶段采集到任何信息。
- 目标行动
当检测到这一阶段的信息时,通常代表入侵已经到了非常严重的结果,其可以观测的信息通常是对数据的操作包括:
- 未经授权的数据访问行为。用户行为管理产生的异常访问行为告警、SQL注入攻击告警。
- 数据恶意篡改。数据库攻击行为、文件篡改告警。
- 数据泄露。DLP对敏感数据的存储、移动告警。
- 数据完整性遭到破坏。终端勒索软件告警
- 网络行为检测。数据服务器对外的异常大流量传输行为。
数据处理
采集到的流量、日志、恶意文件源数据并不是可以直接使用的。来自不同来源的数据可能有不同的格式,有必要将其转换为相同的格式,以便可以一起分析。经处理后的数据才对威胁分析人员和系统可用。在传统的情报循环中,处理是收集的一部分。但是,在处理涉及事故响应的数据类型和组织时,可能需要考虑单独处理。以下是处理与网络威胁有关的数据的一些最常见方法:
标准化、标引、翻译、富化、过滤、优先顺序、可视化
数据处理的通常可以依赖SIEM或SOC类产品。
对于分析阶段,我将其再细分为富化信息、损害评估和生成情报。
富化信息
分析它既是一门艺术,又是一门科学,试图回答在方向阶段确定的问题。富化信息本质是使用外部情报对本地收集到的信息进行解释,从从而评估出本地信息是否已知的恶意行为。在情报分析中,将收集到的数据的特征(MD5、IP地址、URL、邮箱地址、网络行为等),并与外部情报中特征进行比较,从而得出结论。外部的信息源有很多包括国家互联网应急响应中心、安全厂家云端情报、云端样本分析、行业情报共享组织等。在使用这些数据之前需要对数据的来源进行验证。
总的来说富化信息的方法包括:
- 查询工具:
免费的开放查询工具
- DNS解析:通过DNS解析获取远控域名的IP地址
- GEO:获取IP地址所属的物理地域
- WHOIS信息:通过whois查询域名或IP地址的注册人信息。
- 外部威胁指标IOC
主流的各种云端威胁情报平台提供的数据
- CVE漏洞库:标准漏洞的编号、漏洞描述。国家漏洞库可提供完整的已知漏洞信息。
- 恶意邮件发件人:已知恶意钓鱼攻击的发件人。国外较常见的第三方邮件黑名单。
- 恶意文件指标:文件哈希、文件名、字符串、路径、大小、类型、签名证书。多个安全厂家可提供md5值的在线查询,甚至免费样本上传检测。
- 网络指标:IP地址、域名、HTML路径、端口、SSL证书等。IP、域名查询等也是安全厂家威胁情报平台提供较多的服务。
- 外部情报
外部情报特指更加高阶的威胁情报共享,通常包含威胁的上下文,例如:入侵手段、入侵者标识、入侵者行为特征、恶意软件MD5、远控IP、可观测信息,以及这些信息之间的关系等等
- 威胁情报共享组织:标准格式威胁情报风险过程,IACD架构核心。情报管理在细说。
- 公开的ATP组织:新闻、安全厂家发布的信息。
对本地已经采集的信息进行富化之后,筛选出其中被排除掉的信息,接下来的工作是按照kill chain的模型在信息之间建立关联。如果建立关联失败,则意味着数据采集的范围出现了问题,或安全基线没有覆盖到所有的资产,可以尝试扩大数据收集的范围从历史网络行为中寻找答案,或者将相同的安全基线部署到其他资产上,找出其他被攻陷的资产。如果还不行,可以考虑找专业红队按照按照已有信息尽量还原入侵过程,从而找出问题在哪。
但是还有很多情况下没有这么充裕的时间,或者外部情报对全新的攻击可以补充的信息少之又少。则需要直接进入下一阶段:评估损害。
评估损害
评估损害是度量威胁指标对资产造成的影响。是从信息到事件的关键。当高威胁的事件发生时,应该第一时间对事件进行遏制。例如:发现敏感数据外发、数十台主机中出现未知进程。授予攻击者对Linux系统的根访问权限或系统管理员(SA)对SQL数据库的访问权限的攻击是高影响攻击。这种访问使威胁参与者能够对系统及其数据执行他或她选择的任何操作。评估条件应该包含:
- 受影响的资产的重要程度
- 事件对单个资产可用性、机密性、完整性产生的影响大小
- 受到事件影响的资产数量
如果攻击者获得高价值资产(核心业务、数据库)的最高权限,允许他或她运行root命令,则意味着系统已经完全被攻击者控制,属于高影响的情况。而如果只是已知攻击的告警,则资产受到的影响较小。网络环境中多个终端爆发出现新的进程,很可能代表其具备横向移动的能力,就算还没影响资产可用性,也应该在第一时间制止。
生成情报
当决定对威胁进行进一步处理时。则要生成威胁分析的关键输出物,威胁情报。此处讨论的威胁情报限定为机器、人都可读的标准格式威胁情报。
以符合STIX格式的情报为例,威胁情报中可以承载非常多的数据:
- 域对象包含:攻击模式,入侵者使用的标准的攻击方法(如鱼叉、水坑等,可以从CAPEC找到各种攻击方式的枚举);攻击者标识,攻击者id、攻击目标等;威胁指标,富化的IOC指标;漏洞列表:攻击者使用的漏洞列表等等
- 可观测数据(即早期的CybOX):包括在信息中发现的域名、恶意URL、IP、邮件地址、注册表项、恶意文件md5等等几乎所有可以发现的数据。
除此之外还包括各种对象之间的关系。可以说生成的威胁情报是分析过程的集大成之作,所有有用的信息都可以集成到威胁情报中。甚至能够推荐COA。
共享情报
大部分情况下,威胁分析系统不具备处置的能力,所以需要将威胁情报输出到事件响应模块中,由事件响应模块依据情报生成COA。可以使用情报分享协议 TAXII
可信的自动指标信息交换(TAXII)本身并不是一种数据标准。它可以与STIX搭配使用,实现情报的共享。
TAXII是一个传输和共享框架,包含四个服务:发现、投票、收件箱和提要管理。TAXII是实体或组织之间共享STIX的方式。TAXII有三种主要的传输和共享模式:
- subscribe
在该模型中,一个中心组织发布信息,子组织接收推送的信息。这是最常见的模式,威胁情报提供者(政府机构、安全厂家、研究机构)将信息推送给客户。
- hug-spoke
一个组织或来源是信息共享的中心机构。它将信息推送到其他组织,当这些组织想要共享时,它们将信息发送到中心组织,中心组织将信息重新分发给组内成员。可用于行业内部互信的情报交换。
- P2P
此模型可供任何两个或多个组织使用,两个系统之间直接交换情报,而不必经过一个集中的组织。这个适用于威胁分析模块和事件响应模块之间的情报共享。
反馈
最后的步骤,反馈阶段是持续情报工作的关键。反馈阶段获取事件响应模块的反馈:情报是否成功地解决了问题。可能会有两种结果:
成功
如果安全事件被成功遏制,情报循环可能就结束了。不过,在许多情况下,临时处理措施会产生新问题或需要在暂时遏制之后需要进一步对威胁进行深度发掘。
失败
在某些情况下,威胁处理失败了。在这种情况下,反馈阶段应着重于确定问题出在哪?采集阶段是否遗漏了重要数据,是否有未被发现的资产已经沦陷,富化信息时是否相信了错误的外部情报,导致筛出关键指标等。
具体如何解决安全威胁,则是事件响应模块的主要工作了。