这一篇应该是比较容易引起争议的,大家现在乐于说看见(visibility )的力量,如何看到却是一个尚在探索中的问题。
数据是看到的基础条件,但是和真正的看见还有巨大的差距。
我们需要看到什么?什么样的方法使我们真正看到?安全分析和事件响应网络空间的战斗和现实世界有很大的相似性,因此往往可以进行借鉴。
美国空军有一套系统理论,有非常的价值,值得深入思考并借鉴,它就是OODA周期模型:观察(Observe):实时了解我们网络中发生的事件。
这里面包括传统的被动检测方式:各种已知检测工具的报警,或者来自第三方的通报(如:用户或者国家部门)。
但我们知道这是远远不够的,还需要采用更积极的检测方式。
即由事件响应团队基于已知行为模式、情报甚至于某种灵感,积极地去主动发现入侵事件。
这种方式有一个很炫的名字叫做狩猎。
定位(Orient):在这里我们要根据相关的环境信息和其他情报,对以下问题进行分析:这是一个真实的攻击吗?是否成功?是否损害了其它资产?攻击者还进行了哪些活动?决策(Decision):即确定应该做什么。
这里面包括了缓解、清除、恢复,同时也可能包括选择请求第三方支持甚至于反击。
而反击往往涉及到私自执法带来的风险,并且容易出错伤及无辜,一般情况下不是好的选择。
行动(Action):能够根据决策,快速展开相应活动。
OODA模型相较传统的事件响应六步曲(参见下图),突出了定位和决策的过程,在现今攻击技术越来越高超、过程越来越复杂的形势下,无疑是必要的:针对发现的事件,我们采取怎样的行动,需要有足够的信息和充分的考量。
在整个模型中,观察(对应下文狩猎部分)、定位与决策(对应下文事件响应)这三个阶段就是属于安全分析的范畴,也是我们下面要讨论的内容,附带地也将提出个人看法,关于大数据分析平台支撑安全分析活动所需关键要素。
狩猎(hunting)近两年狩猎的概念在国际上比较流行,被认为是发现未知威胁比较有效的方式。
如何做到在信息安全领域的狩猎,也是和威胁情报一样热门的话题。
和数据收集阶段一样,狩猎中也需要“以威胁为中心”的意识。
我们需要了解现今攻击者的行为模式,需要开发有关潜在攻击者的情报(无论是自身研究或者第三方提供),同时狩猎团队也需要评估内部项目和资源,以确定哪些是最宝贵的,并假设攻击者要攻陷这些资源为前提进行追捕。
单纯地依赖这个原则,也许并不能让你真正拥有“visibility”的能力,我们还需要接受更多的挑战,包括传统基于攻击特征的思维方式必须改变,建立新的思维方式是成功的基础。
1、从线索出发,而不是指标或签名:安全分析,注重相关性,然后再考虑确定性,这背后有其深层的原因。
误报和漏报是一对不可完全调和的矛盾,虽然在个别方面存在例外(基于漏洞的签名往往准确率较高,同时也可以对抗很多逃逸措施,是检测从IDS时代走向IPS的关键技术前提)。
在发现未知的旅途中,如果直接考虑确定性证据,会错失很多机会。
因此在狩猎的场景之下,安全分析员需要的是线索,线索只能代表相关性,而不是确定性,安全分析的过程需要将一连串的线索穿起来,由点及面进而逼近真相。
举个例子:超长会话连接很难确定是攻击但和CnC往往有关联,一些分析人员就会选择它作为起点的线索。
如果从这点出发、更多的线索出现了,连接的域名是最近新注册的,并且访问量很少,还有就是流量在80端口却不是标准的HTTP协议等,随着不断的发现,确定性在增加,最终通过进一步的方式我们可以确认攻击行为。
2、换个角度看问题:找寻攻击相关的行为模式,可以变换多个角度,无需一直从最直接的方面着手。
例如在CnC检测上,我们可以采用威胁情报或者远控工具的流量特征这样直接的方法,但也可以考虑排查之前数据中没有出现过的新域名,或者某些域名对应IP快速变化的情况,甚至可以采用机器学习的方式来发现那些不一样的域名,这些都可能是有效的方法,可以在不同情况下分别或组合使用。
3、白名单及行为基线:它们都是先定义什么是正常,由此来判断什么是不好的。
业界某些厂商倡导的白环境或者软件白名单,都是这个思想的一种具体实践。
在采用这个方法建立基线时,还是需要从威胁的角度出发,这样检测灵敏度较高并且发现异常后的指向性也较好。
例如针对整体流量突变的监控,和专门对ARP流量(内部的ARP攻击有关)或 DNS 流量(防火墙一般不禁止,是数据外泄的通道之一)分别进行监控,有着完全不同的效果。
4、统计概率:过去在讨论利用基线的方式发现异常时,经常被提出的问题是:“如果学习期间,恶意行为正在发生,学习的基线价值何在呢?”。
这里面我们如果了解一些统计概率方面的知识,就知道可以利用均值和标准差这种方式来解决问题。
统计概率知识在安全分析中的作用很大,尤其是在机器学习和安全分析结合时。
这部分不是我擅长的专业领域,不再多说。
还想一提的是,概率知识有时和人的直觉往往有冲突,所以为了正确的分析判断,需要了解基本的概率知识。
有一个小题目,大家可以进行自测一下:某种流感测试方法,如果已患此流感,那么测试结果为阳性的概率为95%,问测试阳性者患病概率是多少。
估计没有掌握贝叶斯方法的人,很难回答出正确的答案。
也许通过这个问题,会让没有接触过此方面知识的人,感受到其必要性。
水无常式,法无定则,在信息安全过程中狩猎也是如此,这里只是稍微做了一些介绍,也许已经给大家一种印象:狩猎是一项充满挑战、极具难度的活动。
这种认识无疑是正确的,幸运的是有了安全分析产品的存在,使其难度有了大幅的降低,在本文最后部分会介绍这方面的信息。
事件响应事件响应不是新鲜事物,很早就存在了,但这并不意味着这方面的知识与技能已被正确掌握。
即使在被动响应为主的时代,因为缺乏必要的安全分析,难以对事件进行定位并确定正确的响应活动,从而很多时候无法对已发现的攻击做到干净彻底地清除,更不要说进一步完善防御措施了。
下面介绍一个我比较认同的、行动前的分析过程[1]:1、确认是否为误报:这是需要首先回答的问题。
在这个行业,还不知道有什么办法可以消失误报,同时保证没有漏报。
既然误报总是存在,并且在某些情况下可能比例还是比较高的,我们需要尽快的区分误报和真实的报警。
报警相关的上下文信息、PCAP包等信息对识别误报非常有用。
2、确认攻击是否奏效:很多攻击尝试都可能失败,特别是一些自动化工具,它们不区分攻击目标的OS、软件类型和版本等。
此类报警数量往往会很多,以至于有些分析师会倾向于检测攻击链的下一步。
但是有些时候我们无法完全避免,例如针对driven-by下载或者水坑攻击的报警,分析师是需要了解浏览器是否真的访问、下载了恶意代码。
这时他们需要结合上一阶段相似的上下文等信息来进行判断。
3、确定是否损害了其它资产:如果确认攻击成功,那么必须划定事件的影响范围,即建立受影响资产清单,其中包括组织IT空间的任何事物:计算机、网络设备、用户账号、电子邮件地址、文件或者目录等任何攻击者希望攻击、控制或窃取的IT资产。
例如你发现攻击者可能从失陷的设备获得了一份用户名和密码的名单,我们就需要找到可能影响的主机,建立清单,进行排查。
此资产清单是一个不断完善、变化的,在分析过程中可能有不断的删除或添加。
4、确定攻击者的其它活动:在调查分析中,我们需要回答的不仅是去了哪儿,还需要了解何时做了何事。
如果发现的是攻击后期的报警,那么这点就更为重要,我们需要了解从第一次漏洞利用尝试开始和攻击相关的所有警报,了解我们被渗入的脆弱点,确认失陷的资产。
步骤3、4往往是交互进行的。
5、确定如何应对这种攻击:事件响应策略是个非常大的话题,因为没有一个标准可以适合所有的情况,不同类型的事件需要不同的响应计划。
即使一个管理良好的应急中心有一批提前准备好的应急响应计划,但事到临头往往还是要进行调整,这时采用模块化的方法也许是一个好的选择。
从资深的IR人员了解到的信息,这个过程需要高度的技巧和经验,也许可以考虑找一个有这方面经验的顾问来帮助、指导。
这部分就是OODA周期中的定位、决策的过程了,如果不考虑狩猎这种积极的检测方式,它差不多就是安全分析师的全部工作了。
安全分析平台很大程度上,一个组织检测和响应安全事件的能力取决于其工具的质量,一个好的安全分析平台有可能数十倍或百倍提高分析师的效率,但遗憾的是,业界满足其需要的产品还非常少,Splunk和Palantir是我看到比较完善的产品。
今年RSA大会上也有更多这方面的厂商出现,但它们还是更多从某一场景的需求开始做起,距离完整的分析平台尚有一段距离。
关于一个好的分析平台需具备的关键特性,在此我提出一些个人看法,欢迎大家来拍砖。
首先需要说明,这里不想涉及底层架构相关的问题,大数据如何存储、备份、索引、计算;如何保证架构的弹性扩展;如何处理非结构化数据等等,这些业界有很多架构设计,流行的如HDP、ELK,也有一些比较小众,但具备自身特定的优势的方案,这里不再多讲。
重点从业务层面提出满足分析师需要的关键特性。
1、集成相对丰富的分析模型:狩猎需要基于已知攻击行为模式去查找线索,如果作为一个分析平台可以默认集成这样的模型,那么对于分析师来说,入门的成本将会极大的降低。
如果模型足够丰富,则会超过一些资深分析师所掌握的技能,这无疑会成为平台最大的价值点。
2、提供接口供用户自定义:这和前两天阿里安全峰会上道哥提到非常一致,相信总会有人比我们聪明,因此我们需要给用户空间,让他在自己的使用中,可以继续丰富这些模型,或者能够形成更适合行业特点的分析方式,这就需要以开放的心态,和用户一起来共同完善分析能力。
3、集成威胁情报功能:作为以威胁为中心的产品,这是应有之义。
考虑到现今提供威胁情报的厂商,其关键性数据重叠性不高(参考DBIR 2015[2]),就要求分析平台可以集中多个来源的情报数据,较好的支持OpenIOC、STIX等标准。
4、利用数据挖掘降低人的工作量:数据挖掘可以帮助完成一部分人的工作,特别是当分析平台可以自动化识别很多线索的时候,那么数据挖掘就可以根据线索的特定组合判定一个事件,这是我看到它可以提供的一个重要价值点。
根据弓峰敏博士去年ISC大会的演讲以及Cyphort的产品介绍推测,他们利用数据挖掘主要完成的也是这方面的工作。
这里特别想提出一个问题:数据挖掘的局限性在哪儿?Palantir给出了自己的答案,可以作为一个参考[3]。
他们认为某些情况下数据挖掘能做到的只是将一个非常庞大的数据集缩小到一个较小而有意义的集合,让人来分析,因为以下情况机器算法并不适用:The data comes from many disparate sourcesThe data is incomplete and inconsistentYou’re looking for someone or something that doesn’t want to be found, and that can adapt to avoid detection.5、针对工作流程,提供满足场景需要的设计:在安全分析过程中涉及到诸多的场景,不同种类线索的观察分析,事件的确认、影响范围及关联攻击的分析等等。