小议安全分析

0x00 前言

到写年终总结的时候,总有一种忙了一年,却想不起来忙了啥的感觉。算算,从事安全分析已经一年多;漏洞挖掘,漏洞分析到后面的事件追踪都接触过,对安全分析也有了一些浅显的了解。

写一下对安全分析的想法,也算对工作的总结吧。这篇博客有以下两部分:

  • 安全分析是什么
  • 安全分析生命周期

内容完全是站在个人安全研究的角度,对企业安全建设帮助不大,不喜勿喷。

0x01 何为安全分析

安全分析说白了就是对安全事件的响应;通过一些方法收集信息,经过对信息的处理,产出情报的过程。所以安全分析是以情报为导向,不管是漏洞预警,恶意软件分析、还是攻击事件追踪,都是要产出有助于安全建设决策的情报。因此安全分析有三个核心阶段:

  • 信息收集
  • 信息分析,产出情报
  • 将情报进行传播

安全分析最后的结果是要到导出情报,情报是有时效的。安全分析做的如何,取决于收集到信息的广度和及时性,以及对信息处理的能力。

0x02 安全分析生命周期

安全分析是对安全事件追踪,分析的活动。往往以确定方向和收集信息为起始,以情报导出,进行传播为终点。



方向

在安全分析的初期,我们必须要确定分析攻击事件的类型;相关攻击事件的消息可以从哪些途径进行收集;分析这些事件需要使用哪些辅助资源.......一般来说,分析不同的事件,方向是不同的;虽然在信息收集、评估、核对上有重叠的部分,但是具体的分析方法,拓展思路以及传播途径会存在差异。

安全分析是由情报导出进行驱动的。漏洞情报,那么确定的方向应该是与漏洞相关;恶意软件情报,就需要关注勒索,挖矿,僵尸网络等动态。导出TTP情报的话,就需要收集APT攻击相关的信息。

收集

信息收集处于安全分析的早期阶段,其质量要对后面流程影响很大。所以,在信息收集时必须注意以下几点:

  • 输入信息高清洁度,尽量避免无用的数据
  • 信息的高可用
  • 保证信息的高精度
  • 信息源的覆盖面要没有疏漏
  • 信息源必须可信
  • 信息必须及时

在进行信息收集之前,应明确方向和分析范围,这个已经在上一步“方向”中阐述了。其次是要保证输入信息清洁度和精度。典型的例子就是推特,许多人通过推特进行情报信息收集,但是这些博主的博文,不一定都是我们需要的安全信息,使得推特这个来源并不是一个高清洁度的情报来源。

此外还要保证信息的高可用,高精度。国内外有一些安全媒体,研究人员的个人博客,通过这些渠道获取信息,很难保证同时高可用和高精度;媒体报道满足了高精度,但是往往只是阐述问题,而没有太大的附加价值,需要安全研究人员进行手动拓展。而一些个人博客,满足了高可用,但是他的一些技术分享并不是我们需要的,这个途径往往精度很低。信息收集还有覆盖面是否广、来源是否可信等等的一些要求,不多讲。

所以,信息收集归根结底是一个探索信息获取途径,结构化信息收集数据的问题。

讲了那么多信息收集的要求,说一下信息的来源:OSINT、封闭、机密

  • OSINT 是可公开获取的数据,是最常见的信息获取途径。其中包括,媒体,机构,开放博客,社交平台,会议论文,大厂公告等等。单反能通过互联网访问的信息,都属于OSINT 数据,该数据源通常采用爬虫,爬取网页、api、RSS或者邮件订阅。市面上也有很多基于 OSINT 数据的威胁情报平台。使用该来源的信息,通常面临信息清洁度、精度、覆盖面...信息收集需要注意的问题。因为开放意味着公共,陈杂,不准确,冗余...使用OSINT数据,必须要解决的时信息处理相关的问题。
  • 封闭数据是为了特定方向收集的信息,这方面往往对公开访问进行限制。对应VT、riskiq、Recorded Future、微步在线......此来源的数据可能独家,也可能是基于公开情报二次开发。这样的信息,要比OSINT更有价值,但获取这样的数据需要一定的代价。
  • 机密数据是通过特定的手段,隐蔽的手段收集的信息,这样的信息非常准确,高可用,高可信,高精度且及时。但是覆盖面很窄,仅能满足单个需求点。此方面的数据来源,以蜜罐为代表。

安全分析人员,要基于全源分析,而不是仅局限于易于获取的信息。只有封闭和机密的数据,才包含有效且高度相关的情报,开源数据只是提供额外的可信度,或者触发收集封闭和机密的信息。

不管什么方式,出发点都是获取到想要的信息,目标都是导出决策需要的高质量情报。从成本上看,开源数据收集成本要远远低于部署私密的资产;开源数据获取难度低,但是处理量极大,所以更合理的信息获取结构是,三者互补进行。

研判

事件信息的评估是安全分析的重要阶段,他在获取到信息后进行。在信息收集阶段,仅仅是构建信息获取的途径,针对的是来源,而不是信息本身。或许在收集阶段已经对信息本身使用关键字匹配,甚至机器学习来过滤信息。但是还避免不了人工干预,进行研判的环节。

确定了信息来源,获取到信息后就进入了研判阶段。研判从以下几个角度进行:

  • 是否需要
  • 内容是否属实
  • 信息来源
  • 事件类型
  • 信息描述的主体
  • 所描述的事件影响面
  • 分析该事件所需要的资源

通过前五个方面,来研判该信息的可靠性、有效性、准确性。第六条,是为了下面的阶段做准备。

分析

分析阶段是安全分析最重要的环节。不同的安全事件有不同的分析方法,需要不同的技能、资源。

分析是通过现有信息进行深入研究,寻找其中的特征,发展的规律,导致的原因,产出能够帮助决策的情报的过程。

各种安全事件都有不同的分析方法,在此不多谈。

拓展

之前提到,安全事件种类很多,分析策略有差异,同时,分析周期也不同。

周期比较短的,如漏洞分析。在对漏洞详细分析,得到漏洞成因,利用方法,确定影响面后,就可以进入归档和传播环节。往往不需要深入拓展。

周期比较长的,例如 APT 分析、勒索、僵尸网络等。这类安全事件有一个共同的特点:时间复杂度高,多个事件构成,行为分析难度大。

针对这些特点,这种类型的攻击活动往往不能通过单个攻击事件来描述整体的攻击活动。所以需要拓展阶段,对一些安全事件进行长期的跟踪,分析。

典型的就是APT分析。APT时间复杂度高,多个行为,多个指纹身份,有rat有malware,单个攻击事件所携带的信息有限,不能产出有效的TTP,只有经过拓展分析,才能总结出有利于决策的情报。

恶意软件,僵尸网络同理。

整理

整理是将收集的信息,产出的情报进行结构化,存储到计算机系统里面,支持快速访问,查询,引用(甚至交叉引用)。需要明确,这个过程不是简单进行归档,归档的目的是长事件存放有组织的数据集,而在我们安全分析中,网络攻击的方法、特征是在变化的,产出的情报会根据对抗的变化而变化。

我们投入事件,进行分析,产出情报进行整理存储,在之后的某个时间发现再次活跃的同源攻击事件,根据变化来修正产出的情报,形成,“投入--分析--产出--修正”这种分析模式。

情报的循环利用,交叉引用对减少分析时间,提高情报质量十分重要。所以整理阶段不可或缺。

再强调下,攻击导致安全事件,并且攻击是在不断变化的。安全分析是一个对抗、变化的动态过程。

传播

可以发现,自始至终都在围绕“情报”进行论述。情报是用来支持决策的,那么情报不进行传播,那我们安全分析将毫无意义。

如何传播?

回答这个问题前需要根据安全人员的定位。

  • 如果时企业安全运营人员,那么分析产出的情报需要上报给上层管理者,管理者根据情报对系统进行修补,加固。
  • 如果是一些安全公司,可以将这些产出信息,作为威胁情报提供给企业,或者以此来提供一些安全服务,产出一些安全产品。这个过程往往存在着利益的交换,比如微步在线、威胁猎人那些情报贩子。
  • 此外还有一种情况,就是对外披露。对公众开放,将情报投放到安全社区,来建设安全生态。(形成了OSINT的一部分)

0x03 后记

个人观点:非可信源获取的信息,都不能称之为情报。若要产出有用的安全情报,需要走完一个完整的分析周期,根据平时的工作经验,将安全分析分为七个阶段:

  • 方向
  • 收集
  • 研判
  • 分析
  • 拓展
  • 整理
  • 传播

七个阶段会根据安全事件的不同稍微进行调整。但是生命周期都是一样的。做安全分析,必须要有一个落脚点,或者称之为IOC,信息收集约等于IOC收集.思科之前开源的IoC收集平台 Gosint 很好的解决了前面三个步骤,可以去了解下。

暂时先写这么多,安全分析是一个很大的概念,并且甲方和乙方的安全人员,分析的着眼点完全不同,在此仅仅是以个人安全研究的立场来看安全分析。


PS:

个人博客:http://pi4net.com

之后会发布一些,安全分析的小工具。欢迎收藏

编辑于 2018-12-07

文章被以下专栏收录