【安全告警数据分析之道:一】数据透视篇

       日前,在企业安全运营当中,SIEM的热潮已经逐渐淡去,很多企业已经逐渐成立了安全运营中心(SOC),收集到了海量安全数据。但是如何利用这些数据,如何进行分析等问题并没有很好地解决。数据往往只是做简单存储,数据价值未得到体现。其实在网络安全领域最重要的还是“数据”,做攻击离不开各种资产数据、漏洞数据,做防御离不开资产数据、设备告警数据,对各种攻击活动的分析更是离不开DNS、样本、用户行为等数据,《安全告警数据分析之道》为系列文章,旨在对企业网络侧安全告警数据进行深入分析,挖掘数据的潜在价值,助力企业日常安全运营。

       实际上为了分析安全告警,近年来一些公司以数据分析、人工智能的方法来分析这些数据,而分析、理解数据,进而对数据进行标记往往是使用人工智能算法等高级算法的必备条件,但这一前置过程往往被忽略。本文为系列文章的首篇,浅谈对安全告警数据分析的思考,并且以一次实际网络攻防演习数据为例,介绍对告警数据进行标记的方法,分析并总结可能的研究点和数据的潜在价值。

一、概述

       随着现代企业网络结构的复杂化,如复杂的网络分区、企业上云、新型网络设备等,安全设备的告警量与日剧增。虽然SOC团队一般会对这些告警数据进行存储,但是暴增的数据量与合理分析方法的缺失进一步加重了SOC团队的压力。根据实际经验,一般来说,一个业务稍微复杂一点的大中型企业,每天的告警数据量会达到百万量级。在工业界,这类数据基本组成少有暴露,数据的整体轮廓往往不得而知,而处理方法往往太过抽象,如使用UEBA的方法,目前笔者也尚未接触到对此类数据进行完整分析的方法;另一方面,在学术领域,对IDS的数据研究从本世纪初就开始了,然而那时候的网络结构比较简单、攻击手法较为单一,近些年虽然也有零星的研究成果出现,但依然使用20年前的数据集,借鉴意义不大。那么安全告警分析之路该何去何从?安全告警数据到底有何价值?本文将给出见解。

二、安全告警分析的能与不能

如图1所示,企业一般会在内网和企业网络出口部署安全设备,这些安全设备会对流经的网络流量进行威胁分析。而主流的安全设备的检测方式还是基于规则的检测,并且对于加密流量并没有什么好方法,最多也就是能记录一些加密通信的日志,如SSL协商日志。总结来说基于网络侧的安全告警数据分析无法解决以下问题:

  1. 不经过安全设备的流量。实际上这种场景很常见,企业往往只会在重要资产前或者大的区域前部署安全设备,而且攻击者也有各种各样的方式让流量不经过安全设备;
  2. 不在规则中的攻击行为。大型网络演习中,攻击者往往会掏出珍藏的0-day漏洞进行攻击,这种攻击不会在网络侧产生告警,往往需要在主机上做进一步的检测;
  3. 加密流量。基于DPI的安全设备无法解密加密流量,只能设法(如,拿到目标网站的证书)解密后再处理;
图1 安全设备部署方式

为了分析海量安全告警数据,以比较成熟的安全运营人员为例,他们往往会采取如下方式进行数据处理:

  1. 只关注重要资产。特定目标的告警量往往不多,可以进行分析;
  2. 只关注特定类型的告警。有经验的运营人员知道特定安全产品的置信度比较高的告警,他们往往只会关注置信度比较高、危害较大的告警类型;

虽然这种方式能够对告警做一个粗略的排序,挑选出高威胁的告警进行分析,但是显然这种方法是不完善的,且不说有时候需要进行多个告警的联合分析,不得不关注其余告警,就算是只关注特定的告警,还是有大量的攻击行为在剩余告警中,不能弃之不顾。

那么分析安全告警能分析出什么来呢?我们知道,不仅是攻击流量,正常流量也会被安全设备看到,所谓的“高误报率”就是由这部分流量导致的,这部分流量同样可以被利用起来,用于做资产梳理,梳理内网环境,具体来说,安全告警分析能做到:

  1. 资产梳理。我们知道大型企业资产往往很混乱,人工很难梳理清楚,这在日常安全运营中也是一大痛点。但是实际上,通过告警数据可以对IP做部分资产梳理工作,不同类型的资产对应的告警差异性往往较大,可以进行分析归类;
  2. 灰色行为识别。以漏洞扫描为例,例行的漏洞扫描是正常操作,而没有报备的扫描行为则是异常操作,对这种灰色行为的跟踪也是发现攻击的有效途径;
  3. 攻击行为识别。安全设备的初衷。

三、安全告警数据分析

本小节将对一次网络攻防演习数据做简单分析,分析这些数据的组成以及可能的处置方法,阐述数据价值。

3.1 数据基本组成

本文收集了某中型企业的一次网络攻防演习(共计5天)的网络侧安全告警数据,基本的数据统计信息如图2所示,可以看到在这5天之内,每天收集到的告警数据多达上千万条,五天总计5000多万条告警。其中,认证类、目录遍历类和文件传输类的告警为数量占比前三的告警类型,三者之和可占总告警量的70%以上。除了少量的真实攻击,绝大部分的告警都是无害的,让我们抽丝剥茧,看看这些“奇葩”数据的真面目!

图2 安全告警数据数量和类型统计

3.2 数据分析步骤

1)提取有用字段

由于原始数据包含很多无用信息,我们需要对数据的可用字段做一定的筛选,最终,对于每条告警我们挑选出如下9个有用字段:

timestamp:告警产生时间

sip:源IP

dip:目的IP

device_ip: 产生此条告警的探针IP

dport:目的端口

log_message:告警类型

payload:告警载荷(IP层以上数据)

q_body:Web访问的请求体

r_body:Web请求的响应体

其中,若告警是由Web请求触发的,则有q_body字段,否则只有payload字段,另外,可能会因为设备原因导致部分字段不完整。

特别说明,几乎所有的对IDS告警分析的学术文章都不会将payload等数据包载荷信息纳入分析范围,而在日常运营中这部分信息也是判断攻击的重要依据,不能舍弃。故保留payload、q_body字段,而r_body是判断攻击是否成功的重要依据,同样需要考虑;另一方面,由于不同探针产生的攻击告警(如外网、内网)的分布会呈现一定差异,为了区分,device_ip字段同样需要保留。

2)数据去重

       我们知道一个数据包从企业外部到内部的传输过程中,往往会经过多个检测设备,这样就会产生重复告警,这部分的告警应该删除。理想情况下,同一时刻,同一攻击者对同一目标的攻击行为应该只有一条告警。为了达到这个目标我们依据(timestamp,sip,dip,dport ,payload)对原始告警进行去重。当然这样也有例外情况,如:报文延时过大,timestamp不一致,设备问题,对于不同的payload截断后payload相同等等,不过这些情况基本可以忽略。

3)数据分析

       一般来说,除去某些特别不准的告警类型之外,log_message字段可以比较准确地反映出当前数据包的攻击类型。我们对告警类型做了分布分析,如图3左图所示,横坐标为log_message编号,纵坐标为该告警类型发生的次数,可以看到告警类型体现出明显的长尾分布特性,如图3右图所示。我们按照幂律分布的统计方法,横坐标为告警发生次数的对数,纵坐标为这类告警的数量,以图中红框标记的点(0,58)为例,说明在整个数据集中,只有1条记录的告警类型有58种。这类数据分布上的分析,有助于后续高级算法模型的选择。

图3 以告警类型为角度的统计分布图

通过以上数据,我们可以看到,从告警类型(log_message)的维度,告警呈现出明显的长尾分布特性。其实不光是告警类型这一属性,在源IP、目的IP等多个属性上,如图4,图5所示,分别以sip、dip为维度进行统计,横纵坐标的含义与图3类似,告警分布均展现出了类似的特性。在多种维度上,告警均展现出明显长尾分布特性,这一特性不仅可以为选择高级算法模型(如word2vec算法)提供有效信息,还很直观地告诉我们:告警分布具有一定的规律性!而告警的这种规律性和流量的自相似性是分不开的,对于这种现象的成因我们在本文不做深入讨论,我们仅需要利用这种特性帮我们进行下一步告警分析:由于攻击流量或者说异常流量本身占比极小,告警的这种规律性是长期存在的,过滤这些占绝大多数的规律性的告警,剩下的就是重要度较高的告警了。

图4 以源IP为角度的统计分布图
图5 以目的IP为角度的统计分布图

4)数据分类

       整体上我们可以按照:数量大到数量小,重要程度低到重要程度高的原则对告警进行过滤、分类,尽量首先将数量大、重要度低的正常告警过滤掉,我们以数据集中触发告警量最多的源IP:10.5.237.232为例,如图6左图所示,该IP与大量目的IP均有告警产生.图6右图表明,触发告警类型最多的是代理连接,并且呈现明显的规律性,对外网的代理连接在一般处理过程中重要度较低,因此10.5.237.232在此期间内触发的“HTTP协议CONNECT隧道功能(http proxy)连接访问”类型的告警分类为正常告警(正常业务导致),这一条过滤规则即可过滤600多万条告警,约13%的告警量。

图6 正常告警示例(10.5.237.232触发)

       需要特别注意的是,我们需要以一种较细的粒度来对告警进行分类,即结合多种维度对告警进行分类筛选,举个例子:IP地址A经常性的触发告警,我们不能就直接忽略A所触发的告警,而应该关注其具体的内容,什么类型的告警是常见的,什么类型的告警是不常见的。更具体的,如图7上半部分所示,10.66.240.216整体上触发的告警数量比较均匀,乍看没有异常.下半部分表明,10.66.240.216在短时间内对10.245.38.183发起了大量的扫描,而这种扫描行为是突发的、不常规的,对于企业内网来说,存在较大隐患,但是由于其隐藏于源IP触发的大量告警之中,在上半部分的图中很难被发现。

图7 异常告警示例(10.66.240.216触发)

总结来说,我们需要以数量大到数量小,重要程度低到重要程度高的原则找出大部分正常告警,在执行过程中,以一种较细的粒度进行归并统计(如,[sip,dip]的双重维度)。

5)分析结果

通过自动化结合人工的方法,我们得以对大部分的告警做出分析结果,并打上标签。总结来说,告警数据可以分为4大类:

  1. 正常告警。该部分由正常行为组成,通常都是由形形色色的正常业务导致,包含正常的漏洞扫描任务等;
  2. 低危告警。互联网上存在大量的蠕虫、僵尸网络,这些肉鸡会进行大量常态化的攻击行为,这些攻击往往都不会成功,可以认定为低危告警,做IP封禁操作;
  3. 灰色行为。该部分告警展现出一定的威胁性,需要做出一定的处置,如:未报备的内网扫描行为、内网蠕虫传播行为等等,需要联系相应的资产负责人做进一步核查;
  4. 高危告警。正在发生或者已经发生的入侵行为。

这4类告警数据量依次递减,重要程度依次增加。

四、总结

本文从宏观上讨论了告警分析所能带来的价值,以一次真实的网络攻防演习数据为例,在对数据简单统计分析的基础上,探讨了对这类数据进行分类分析的大致方向,并对数据进行了简单的归类。本文为系列文章的首篇,讨论进行安全告警数据分析的整体方向,接下来的文章将进一步介绍我们对数据打标签的具体算法,敬请期待。

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author

Leave Comment