导读
11月24日网络安全专场上,完美世界信息安全总监何艺分享了《流量安全分析平台建设》演讲,分享了完美世界搭建企业流量安全分析平台的经验。
演讲嘉宾介绍
何艺
完美世界
信息安全总监
演讲主题:
流量安全分析平台建设
30秒get演讲干货
2015年大数据安全分析,2016年威胁情报,2017年态势感知,AI智能安全,在这些背后都离不开数据源,尤其是基于流量分析的数据,这次完美世界信息安全总监何艺和大家聊聊如何基于一些开源系统搭建自己的企业流量安全分析平台,以及流量数据分析中的一些应用。
需求
安全攻防一直是不对等的状态,即很难通过防御来解决安全问题,所以包括最近几年安全发展一个大的趋势,也都是通过检测的方式去补全防御不能解决的问题。
说到检测一般都需要解决几个问题:第一,当你企业规模比较大的时候,能不能知道自己的资产分布情况,知道里面都跑了哪些应用,是否有一些开发人员都已经不在了,甚至没人知道的一些系统,是否会有一些人去绕过你的安全措施和规则去上线系统,这些情况你怎么去掌握。第二就是服务器上的应用,他们之间的通信过程,比如它被谁访问过又访问过谁?他们通信的内容是什么,请求了什么、返回了什么这些是否能够去了解到。第三就如果搞清上面问题后,如何通过这些去发现问题,不管是业务上的,还是做一些安全的分析,知道安全事件的发生。
说到分析的话,肯定会要涉及到数据这个话题,你的数据是怎么来的。一般数据有三个重要的来源,第一类是终端上的数据,另外一块就是流量,跟终端的相比,流量对业务影响很低,可以在一些关键的出口,在一些边界做监控,很方便的把这些数据采集到。另外一块就是安全系统自身的数据。
流量分析是很早就有的技术,传统流量方式分析有个比较大的弊端,多数是基于网络层做的,所以它知道上层应用层的事情,包括传统一些安全产品也是基于网络层做的设计,例如传统的防火墙,IDS,因为分析检测不能理解上下文,导致很难真正解决问题。
而现在新一代安全系统很多把应用层分析检测给整合进去了。例如PA防火墙,它的基础核心能力是三个ID识别能力。USER-ID通过AD类数据结合流量追踪IP对应的用户关系,APP-ID识别这个流量是哪类应用产生的,例如虽然是http,但可以区分到底是facebook还是qq。另外一个就是content-ID内容识别这块,它负责把一些通用协议做还原,比如HTTP、SMTP等,包括协议内的一些内容信息。最后它再基于这三个ID做各类安全威胁、风险检测,扩展它的安全能力。
有了这些东西之后,我们会比较容易可以把需求整理出来。会有这么几个场景,第一是全流量的存储,主要用于事后分析和追溯。之后是协议解析,掌握网络中发生的事情,谁访问谁、大小时间之类,第三个比较重要,内容解析即DPI,解析出具体的通信内容,请求、应答信息,包括拿到服务的一些版本,协议的特征。下面三层做了之后,我们上面可以进行应用,通过这些数据去解决一些问题,例如资产的自动化发现、威胁或攻击的识别。
架构
架构图主要是为了便于理解,希望带来的好处是,第一比较容易应用到各种不同的场景中,第二是比较容易扩展,不管是分析能力、还是分析的容量、还是功能的扩展。
具体到网络分流这块,要解决的问题是如果处理海量数据,例如IDC,一定会遇到就是你的海量流量,你后面的系统能不能处理过来。解决这类的方法是在将交换机分光或是镜像过来的流量接到分流器上,分流器可以实现复制多路流量或是将一路流量负载均衡到多个服务器上,这样做的好处是说,你一旦遇到大规模的网络问题,你就可以很方便的扩容后端处理服务器。
流量解析层做的事情是对流量进行加工处理,这里我们不用投入太多精力去做底层的事情,把精力放在对数据的处理方面,这里大部分系统是用的开源系统,例如通过Bro,我们用它来做DPI,也就是深度包解析,通过它把协议还原,提取协议的内容。
数据存储层这块,因为流量比较大,实际比这个复杂,基本逻辑是使用logstash做解析,然后再输入到elasticsearch中。这里可以根据你公司的场景做拓展,举个例子,如果公司规模特别小,你装一台去做处理就足够了。如果你的流量规模特别大,这个时候你可能需要扩展,例如使用kafka来缓存和做队列避免logstash被堵死。这里要主要的是做格式处理的时候,要保证所有的字段命名一致,不然再后期的使用关联上会有不少麻烦。
有了数据后,就可以对数据做提取、使用,让它们产生价值了,可以根据应用场景去做一些具体的分析,比较容易的开启了全局视野。
场景
比如像资产发现,你这台服务器对外做一些访问,或者你访问它的时候,都会产生数据包,你可以把一些特征提出来,形成资产信息。这个过程中,你可能会遇到用流量的方式,你可能不一定能够很精准的知道到底是什么应用,什么服务,我们一般会通过ES,把里面的一些数据给抽出来,把这些信息提出来之后,会做一些去重,最后在扫描器里面做二次扫描,结合扫描的指纹特征综合起来,生成资产信息。这样的话,基本上不太可能会出现新上线的业务或者新上线的服务器你不知道,因为只要它的端口开放,有业务去访问,你就必然能抓到。
把数据整理完之后,我们会存到SADB里面去,SADB的目的是希望我们有一个快速处理全公司的资产的地方,能够知道资产状况,它是不是安全的,以及它在什么位置,它的使用人,管理人是谁。这里端口信息大家可以看到,是通过什么方式拿到的。
另外大家都知道,传统的扫描器都是通过爬虫的方式去爬,会遇一下问题,比如很多时候爬虫不一定能爬全所有的页面,你爬不全所有页面的话,就会导致你去做扫描的时候,你没有办法把所有的页面覆盖到,而被动式扫描这种方式,好处就是说一旦你的系统被人访过,你通过DPI,把内容提出来之后,你知道它的访问过程是什么,它的请求,包括它的状态,它的状态是成功还是被拒绝,这些数据全都拿到之后,你就可以去做二次处理了,用自己的扫描器带入这些信息进行二次扫描。
当然这里面应用中会出现一些问题,比如说生产环境中的cookie的话,我们基本上不敢再带进去,因为带进去之后,可能会影响到用户或业务。所以像这种功能,可能更多的场景还是比较适合放在一些开发的网络,测试的网络。当时我们为了解决这个问题,我们会有设置帐号cookie,用手动的方式来解决这个问题。
威胁情报也是这两年比较热的话题,安全检测这块通过规则检测也好,通过今年比较流行的机器学习的方式也好,它都会遇到一些问题,比如说误报的问题,我们可以通过一些情报数据来完善你的检测告警。情报一般而言会有这么几个类型,第一种是订阅,比如说有一些新的安全事件他们会发布一些报告,包括360的报告,都是这种类型,或针对我们行业的攻击。这个更多的是做一些战略上的指导,让你意识到未来可能会面临的攻击和风险,你可以提前进行防护。另外一个方式,就是说一般的厂家会提供一些API的方式,你可以把你的IP地址、域名、文件hash传过去,它会根据你的请求去查情报库然后返回结果。
这里面涉及到访问数据的话就意味着你这边要去收集数据,通过这个平台这些数据基本上是很快就能拿到,比如像域名这块,不管是DNS请求还是http访问都会包含这些信息,这些信息都会通过DPI解码出来。然后像UIL的话,这些信息也都会被记录下来,然后你可以根据这些信息结合威胁情报,看看内部是否有C2、钓鱼等安全事件。
然后文件hash的检测,可以把http、smtp、ftp这些的协议还原后,通过包括像获取http特定格式附件,它的hash,通过这种方式把hash拿到后做检测。文件hash在情报检测里面其实是最准的一种方式,因为IP跟域名变化很快,但恶意文件hash一般确定后就不会变了。
案例
我们讲几个案例,这个是当时有个后门,大家可以看到它访问的方式是通过端口,如果说你网络层流量检测,它都是正常的访问记录,但是你如果用了DPI分析的话,你会发现这个太好识别了,因为你一看端口是80,而且以前跑业务是HTTP,但现在它实际是ssh协议,基本上肯定是出了问题。包括它后面字节的大小,持续的时间,你可以把它攻击的过程通过网络方式给它还原出来。
另外一个也是后门访问,这个因为比较敏感就不在文章中具体说了。
上面两个案例会发现,如果是靠人工不停的去看,其实过程是很低效的,没有办法去做实时告警,或者大量的去处理一些事情。我们其实是把这些数据又放到我们自己开发的SOC平台里面去,这边做的事情是有几个主要功能,第一个是做在线的时时报警,另外一个就是针对离线数据,做离线的分析和报警,以及对后面系统的联动。这个系统本身也还蛮复杂的,因为我们这里面当时为了解决报警的误报,大家如果上过案例审查,不会发现上线之后一堆的深度服务,真正有效的很少。这里的话,如果单纯的通过这个方式,很难去确定这个是有效还是无效。这里我们也会尝试引入一些关联分析,所以我们这里面加了一些处理的机器在里面。这个也是我们重点开发的一个方向,这个是目前的版本,后面还会有一些迭代更新。
机器学习也简单说一下,不管是基于有监督学习,还是无监督学习,都会有数据需求,像深度学习数据的话,因为你要做数据分类,你要知道这个数据到底好还是坏。数据需求的话,因为有完整的网络数据,包括之前一些基于规则特征,也会有一些分类和标记,后面的机器学习的应用,就可以拿数据去跑,做一些建模的过程。这个过程我们也还在摸索,因为还在探索阶段就不拿出来误人子弟了。
领取专属 10元无门槛券
私享最新 技术干货