关于关联分析,也就是关联挖掘,是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。
作为安全从业人员,关联分析在安全威胁分析领域中的地位不可小觑。因此在工作之余,我花了两周的时间,深度调研了信息安全领域关联分析相关的概念、核心思想、总体分类以及细分类别下的具体案例。下面将成果分享给大家。
关联分析概念、核心思想
什么是关联?
信息安全领域的关联分析对于日志分析人员的含义是,将多个相似或者不相似的事件联系起来,形成对更大事件将要发生的认识,而不是简单的只关注单一事件,从而得到所发生情况的不完整视图。
关联分析两大目的:
通过安全事件的关联分析,解决企业两大核心难题:发现攻击事件、防御正在进行的攻击。
关联分析技术的核心思想是通过对某一类事件进行训练建立行为基线,基线范围外的事件视为异常事件来进行分类。
举例说明
黑客利用 SQL注入漏洞进行拖库
某企业业务网站存在 SQL 注入漏洞,黑客发现并利用了应用服务器 SQL 注入漏洞进行拖库,触发了 IDS/WAF 日志事件。同时,数据库审计系统将检测到的应用 WAF SQL 注入查询语句执行事件记录到日志。日志系统通过关联分析 WAF/IDS 告警日志和数据库审计系统日志告警,确认成功 SQL 注入攻击行为触发最终的告警,辅助运维人员解决攻击事件。
应用系统遭受 CC 攻击
该金融企业将 WAF 和 DDoS 防御系统日志纳入日志易平台,某一时间点,日志易系统“疑似 CC 攻击告警”触发,引起值班人员关注。值班人员联系运维工程师,同时反馈应用系统业务人员。业务人员排查发现系统访问变慢,运维人员检测系统,发现连接数变多,系统资源消耗趋势逐步上升,最终确认应用系统正在遭受到 CC 攻击,及时执行应急预案将问题处理
关联分析——总体分类
关联分析总体主要分为两类:微观关联分析、宏观关联分析。宏观与微观的区别在于,宏观分析的注意力在于集体的、系统的、机构的、合成的或团体的层次;而微观分析的注意力在于部分、亚系统、组成部分或组成集体的个体。
在安全领域呢,宏观关联分析和微观关联分析的区别主要在于信息源的不同。微观关联主要分析对象是单一事件或一组事件中关联的字段;而宏观关联主要分析对象是获取了其他信息的融合数据源。当然,信息量的增长,也让宏观关联分析中的方法更加多元化。
下面具体讲解一下两类关联分析方法。
关联分析——微观关联分析
微观关联:单一事件或者一组事件中关联的字段
· 定义:规则关联涉及编写一条能够建立某种行为模型的规则。下面举一个例子说明一下规则的定义。代码框中的规则描述的框架是经典的if……then结构。
代码语言:txt复制If the system sees an event E1 where E1.eventType=portscan followed by
an event E2 where E2.srcip =E1.srcip and E2.dstip=E1.dstip and E2.eventType = fw.reject
then
doSomething
上面这段伪代码的规则含义是,攻击者对主机进行端口扫描,同时导致防火墙拒绝了他的尝试。
可以从以上示例看出,微观关联分析指的是单一事件或者一组事件中关联的字段形成的分析,之所以说是微观分析,则是因为这类关联分析,是深入到了事件或者数据源的某个字段这一维度。
宏观关联分析(融合分析)
宏观关联分析,也称融合分析,即获取其他信息来源,以便进一步验证或者得到事件流上的情报信息。宏观关联分析,可以有以下这些子类:规则关联、漏洞关联、剖面(指纹)关联、反端口关联、观察列表关联、地理位置关联。下面按照该分类讲解宏观关联分析。
规则关联
规则关联比较容易理解,就是将不同的规则组合起来,按照某种顺序,分别识别出其对应的安全事件,然后综合这些安全事件再触发一条规则,即是规则关联。
漏洞关联
漏洞关联,指的是,利用漏洞扫描器帮助寻找容易遭到已知攻击的主机和其他系统。在做漏洞关联分析时,需要的信息有:易遭攻击的主机(主机名或IP地址)、易遭攻击服务或者端口等等。也可以利用可靠的漏洞库,补救步骤:修补版本等等。
举例:结合漏洞扫描数据和实时事件数据,帮助减少假阳性
IDS监测到网络中的多台主机发生端口扫描,会报告一个被扫描的端口范围(有些端口可能不活动)
剖面(指纹)关联
从取证的角度,通过标识抓取、操作系统指纹、漏洞扫描和远程端口扫描收集信息,对分析是有好处的。
作为常规关联的一部分,可以设置一个行动,当特定性质的事件进入系统时,发起这些取证收集任务,并将其保存在数据库中。
这里介绍一种扫描工具:Nmap——能够执行操作系统指纹识别的工具。
如果在该工具中执行以下命令:Sudo nmap –A 192.168.1.6
其中,-A选项命令Nmap执行指纹识别。
基于规则的关联分析举例
看了上面的对于关联分析的分类,下面举一些比较典型的关联分析工具或者说框架。以此深入了解和实践基于规则的关联分析。
Sec——简单事件关联器
简单事件关联器(SEC)是一种基于perl的工具,实现一个简单的关联化。 它具备创建规则的健全语法,能够完成从简单到复杂的工作,规则链接起来组成行为模式,可以用于检测已知的情况,帮助诊断或者发现未知的情况。 SEC核心的上下文的概念,上下文可以看作一个事件或者一系列事件发生的占位符,可以使得SEC可以状态型的风格运作,对于检测多种日志消息是非常关键的。
下面这张表是SEC支持的各种规则类型。
Flink Cep
Flink cep是flink自带的复杂事件处理引擎。他就像是一个正则表达式一样,从一串串流动的数据中,按照规则提取所需的数据进行加工处理。
CEP其实就是一个规则引擎,把符合规则的所有数据都拉出来。Flink在实时处理方面有非常高的性能,很适合做一些实时逻辑判断的事情,比如日志异常检测。
Flink cep的优点非常明显:擅长跨事件的匹配、对事件时间/处理时间语义的支持、对延迟数据的良好处理以及有非常好的社区支持未来优化。然而,在使用过程中,你会发现,Flink cep也有一些缺点:无法动态更新匹配规则、不支持时间触达类型的条件、性能问题等等。
所以要想实现规则动态更新,Flink cep的功能还不太支持。得需要研究其他Flink API。好在Flink社区异常地活跃,我订阅了flink githu项目的邮件组,结果每天都好多人提问、提交pr等等。所以不用担心Flink cep的发展,功能和性能也都在朝着一片光明的方向走。
常见搜索模式(基于云端服务器)
除了上面的一些规则关联,还有一些常见模式能够帮助发现独特的关联。例如下面这张表格给出的。