威胁感知的方法论

文 | 楚安

使某个物体陷入或可能陷入危险的状态即为威胁;通过获取、选择和组织不同类型的信息来理解周围的环境的过程即为感知。而对于威胁感知,目前有据可查的,只有Symantec给了如下这样一个定义 :

The monitoring, identification, analysis, and notification of potential threats or vulnerabilities that can cause harm to system and network environments.

我们把威胁感知分为两大类:被动威胁感知和主动威胁感知。被动威胁感知,是指根据已知的线索或威胁,还原出整个威胁场景;主动威胁感知,是指通过威胁感知模型,主动发现潜在的威胁或线索。

被动威胁感知

设想一个不现实的场景,假如我们拥有一个能截获全互联网所有流量的系统,那么理论上来说,一切互联网上发生的威胁在这套系统里面都能查得到。但现实是,即便是NSA也不可能获取得到所有的数据,当然也完全没有这个必要。

所以我们需要思考的是,当做不到能获取所有数据的时候,我们需要获取哪些数据?事实上只需要能获取到威胁场景中每条链路上的每个节点的数据,就能覆盖住这次威胁。所以问题的解法就变为,想要感知哪一类威胁,那么就去复盘这一类威胁的所有链路,然后,采集链路上的数据。

数据源的获取永远是个思路问题,很多人一想到采集数据,就觉得一定要到骨干网上去分光,或者是要到海底光缆上去搭线。这是国家级威胁感知的玩法,事实上在公司层面,很多数据平时都是淹没在茫茫业务之下,没人去思考过这些数据在哪以及有什么用。

然而有了数据源还完全不够,没有对应的数据基础设施,数据只是一堆垃圾。数据基础设施不是搭建一套Hadoop、Spark,而是完善的数据生命周期解决方案,从数据诞生、采集、传输、清洗、存储、计算、交互……直至数据消亡。

数据的生命力更多是体现在数据质量上,而数据质量,恰恰又是整个数据生命周期中最容易被忽视的环节,同时也是最难做好的环节。良好的数据质量,决定了上层的数据建筑,需要持续的投入,不断的观察数据、使用数据、迭代数据。

另外一个更为重要的环节,就是数据交互。情报分析人员如果每次想要分析一条线索都需要启动一个很大的分布式计算任务,计算几个小时才能拿到结果,这一定是一个很差的交互,甚至都谈不上交互。同时,反复的对海量原始数据做重复冗余的提取计算,当计算资源的耗费远超计算结果带来的价值,威胁感知也就失去了意义。

那么,到底什么才是好的数据交互?回答这个问题之前需要搞明白我们之所以需要数据交互,是因为数据的数量或包含的信息量已经超过我们大脑处理能力的负荷。倘若数据只有10来条,单条信息量2bit,我们需要交互吗?不需要。所以数据交互第一个重要意义就是帮助我们屏蔽信息的复杂性,让我们更能集中关注我们感兴趣的数据。

自然而然就联系到了搜索,搜索一直是屏蔽信息复杂性最简单也最基本的工具。但在被动威胁感知中,有了搜索也是不够的。其行列式的数据表达仅仅只是数据展示,而可供人机交互的,也只有『搜索』一个按钮,同时,数据与数据之间的关系,也尚不能表达。

回想一下犯罪电影中经常出现的情节,主人公在卧室的墙上贴满了各种线索,再逐个思考线索之间的联系,对于有联系的两个顶点,就加上一条边……直至绘制出整个事件的证据链关系图,找到幕后的大老板。

这其实就是一个还原威胁场景的过程,而这当中用到的数据交互,就是简单的connnet the dots。不要小瞧这种基本的图论分析方式,萨达姆被抓,靠的就是社交图论关系链分析。目前估值高达几百亿美金但却只有FBI一个客户的情报公司Palantir,其唯一的产品,靠的还是图论分析。

可以说数据交互的另外一个重要意义,是以正确的方式尽可能呈现数据最真实的一面,帮助我们更好的理解数据所要传达的信息。好的数据交互,能让情报分析人员摆脱淹没在海量数据中的困境。当我们不再提海量,不再提数据有多大的时候,才是我们真正具备驾驭数据能力的时候。

单一的数据交互就好比高维物体投影在低维空间,因此组合各种不同的交互如和弦、力导向等等能帮助我们从不同的角度来透视高维数据。当然,不同的交互有不同的表达优势,选择恰当的数据交互,需要我们在深入理解交互的同时,也要深入理解业务场景。

线索的追踪和分析,有时候受限于情报分析人员的经验和能力,知识结构的不同,导致每个人看到的可能都是片面化的场景。而分析结果快照、可多人协作机制等这些配套的交互设施,也有助于复杂威胁场景的还原。

可以说,被动威胁感知能力的建设,本质上建设的就是安全数据的基础设施。这绝对是一件知之非难,行之不易的事情,同时也需要很多顶层设计和资源整合。但是如同瓜哥所言,『这件事昨天没有积累今天就不会成功,今天不去积累明天就没有机会』。

主动威胁感知

被动威胁感知加上情报分析人员,让我们具备了看得见整个威胁场景的能力,但是前提条件是要有一条已知的线索或威胁。这就使得我们也需要具备能主动发现线索和威胁的能力,而这,就是主动威胁感知。

在强人工智能尚未实现的年代,别指望有了主动感知能自动完成所有事情自动拼凑出完整的大图。安全的本质依旧还是攻防的对抗,放到威胁感知中也是一样。所以主动感知的定位首先应该是发现浅层次线索,深层挖掘还是需要依赖人来完成,弱人工智能时代永远逃不开有多少人工,才能有多少智能。

通俗来讲,主动威胁感知是一门关于主动寻找你不知道你该寻找什么东西的科学。听起来有点奇怪,想要发现一些线索,却不知道这些线索会长成什么样。在不知道一个威胁是什么的情况下,又怎么能做到感知它的存在呢?

可以肯定的一点是,任何威胁首先一定是一个异常。所以无论威胁感知模型怎么来建,当中一定要先有一个异常模型。既然是异常模型,首先就需要搞清楚什么是异常。

关于异常的定义,最早可追溯到1969年,统计学家Grubbs在论文《Procedures for detecting outlying observations in samples》中给出了如下的定义:

An outlier is an observation point that is distant from other observations.

而现在广为流传的是Hawkins在1980年《Identification of Outliers》一书中给出的定义:

An outlier as an observation that deviates so much from other observations as to arouse suspicion that it was generated by a different mechanism.

数学角度所说的离群点(outlier),对应到业务角度,其实就是异常(anomaly)。以上两个定义中隐含了一个重要的信息,一个异常是否是异常,不是由异常自身决定的,而是由它所处的环境决定的,而这个环境由其他数据构成。简单地来说,明显不同于大多数其他数据对象的数据对象,就是异常。

一个真正的异常模型,并不是要去检测异常,而是要去pattern正常。这一点不难理解,假设能够知道整个数据集中所有可能的异常,那么我们可以去检测异常,可以用分类聚类等等各种模型,或者单是规则也够。但事实上大多数时候,我们不光不知道异常长什么样,甚至都不知道有多少种异常。正常总是基本相似,但异常却各有个的异常,这就是为什么要pattern正常的原因。

理解了异常,那么什么又是正常呢?『明显不同于大多数其他数据对象的数据对象…』,这句话其实还隐含着另外一个重要的信息,那就是majority voting。大多数人都在进行着某一种模式,那么这就是正常。多数表决的思想在很多地方都有应用,如Google著名的PageRank。

所以在异常模型中,第一我们不要去设置什么是异常,第二我们不要去设置什么是正常。我们需要的只是设计一个科学的机制,剩下的,一切都是由数据自己来决定。异常由正常决定,正常由『大多数』决定。那么,『大多数』由什么决定呢?

答案是概率。概率是量化描述『大多数』最有力的工具,因为通常情况下,一个异常事件往往有较低的概率值。这也是为什么我们一直比较偏好概率模型、概率图模型的原因。真异常模型pattern概率,伪异常模型检测随机事件。

任何再好的模型,都必定有衰减期,只是时间长短而已。同时由于攻防对抗的存在,更加加快了安全模型的衰减。所以异常模型中需要设计一个良好的迭代训练或重训练的机制,用来抵消衰减的影响。而什么时候该触发迭代训练或重训练,遵照的原则依然还是『大多数』。当模型产生的误报远多于训练模型所用的数据的时候,那么当下这些看似的『误报』,事实上才是能真正代表『大多数』。

前面说到,威胁首先一定是一个异常。但是反过来,异常却不一定是一个威胁。事实上在这个到处充满误差的世界里,99%的异常可能都不是威胁。所以在异常模型的基础上,还需要威胁模型,通过pattern威胁来赋予异常一个安全上的解释,没有安全解释的异常是没有意义的。而pattern威胁往往是最难的,需要大量数据探索,以及思考背后的安全原因,抽象,才能将某一类威胁固化成模型。永远记得:No Explore No Secret。

单层模型输出单层浅层的线索,当不断的实现各种单层模型后,就可以通过一层层搭积木一样来组合各个模型,使众多不同层次的浅层线索能串起来形成较深层的线索。不存在一个万能模型能三头六臂覆盖掉所有场景,也不要指望一个完美模型就能直接产生深层线索。

结语

建设整个威胁感知体系是项浩瀚的Helicarrier工程,不是一朝一夕就能达成的目标,也不是一篇文章就能写得清楚的事情。但是,只要掌握一些科学的方法论,要做到感知互联网中发生的任何威胁也不是遥不可及。最后,如果你愿意投身这个充满挑战的领域,也有一些你自己独到的见解的话,欢迎加入我们。

阿里安全招聘威胁感知专家

岗位职责:

1. 通过安全数据科学构建威胁感知体系;

2. 结合安全业务场景设计威胁感知模型。

我们对您的期望:

1. 对安全数据科学、安全数据分析有持续的热情和兴趣;

2. 熟悉攻击检测、恶意软件、僵尸网络等安全背景知识;

3. 熟练使用Python、SQL,有扎实的Java基础优先;

4. 具有统计、数学、计算机、安全等相关专业背景 ;

5. 熟悉ODPS、Hadoop、Spark、Hive等大数据处理框架;

6. 熟悉机器学习、异常检测、复杂网络、深度学习等算法。

联系方式:

有意者可微博联系@楚安

推荐阅读更多精彩内容