SIEM中基于多层网络分析引擎的安全威胁预警研究

栏目: 服务器 · 发布时间: 6年前

内容简介:在大型企业生产环境中,实现安全事件的处理和攻击行为的分析,需要尽可能多地收集各种安全设备的安全事件数据,例如:网络防火墙、WAF、服务器防护、VPN,、流量监控、APT检测、IDS、IPS、蜜罐等。然而,过多的安全事件日志(特定场景下,如每天40万条日志),将无法人工地进行分析和处理,如何从中过滤出真正的渗透攻击者,供安全运维人员和响应人员进行处理,是现有所有类SIEM设备所共同面临的挑战。在大型组织内部部署了多种多数量不同厂商安全设备的环境中存在如下三个具体问题:

*本文作者:kczwa1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

前言

在大型企业生产环境中,实现安全事件的处理和攻击行为的分析,需要尽可能多地收集各种安全设备的安全事件数据,例如:网络防火墙、WAF、服务器防护、VPN,、流量监控、APT检测、IDS、IPS、蜜罐等。然而,过多的安全事件日志(特定场景下,如每天40万条日志),将无法人工地进行分析和处理,如何从中过滤出真正的渗透攻击者,供安全运维人员和响应人员进行处理,是现有所有类SIEM设备所共同面临的挑战。

在大型组织内部部署了多种多数量不同厂商安全设备的环境中存在如下三个具体问题:

1、由于安全厂商设备能力问题及日志规范问题会出现一台安全设备发出大量同一攻事件相同时间或者事件间隔很小的大量日志,人工无法判断这些日志是同一个攻击者的重复行为还是安全设备的重复告警.

2、各家安全设备厂商对同一攻击事件都会告警,SIEM都收到类似日志,无法区分这个是一个IP的一个动作还是重复动作。

3、各家安全厂商的设备都会存在误报,由于系统中的安全设备量表大,因此误报的日志数量也很多,SIEM系统或者人工分析都无法实时去过滤掉这些误报。

因此无法通过简单通过攻击日志的数量来筛选找出真实的渗透攻击。

解决思路

在无自动化 工具 的支持下,人工的过滤事件数据,基本是不可能实现的;现有SIEM类系统解决了多元异构数据的归一化问题,即将各种安全设备和主机服务器的日志统一收集,并按照统一标准对不同安全厂商的安全事件日志进行标准化,如下图所示:

SIEM中基于多层网络分析引擎的安全威胁预警研究

标准化完成之后,根据安全业务模型对日志进行简单的关联形成告警,然后在系统中进行查询分析和处理。在实际部署环境中,这种简单关联形成的告警将会产生很多,结果造成告警退化为了安全事件,继而又再次无法有效处理。

为了真正实现有效告警的生成与处理,简单的关联模型是无法完成的;因此模仿安全运维分析人员解决安全问题的思路和方法,采用多层网络时序关联模型,应用多层网络技术,推理出高层结论作为有效预警输出,能够实质上提升安全事件包括渗透攻击的预警能力。可以解决如下的问题:

1、我们发现某些情况下,某安全设备一直对同一IP产生重复的5K条告警日志,告警内容是该IP使用某2013年的软件漏洞攻击某服务器,实际上该服务器并未使用该软件。如果单纯使用数量统计,会发现大量的此类重复(误报)事件,但这IP跟攻击无关。多层网络时序关联模型可以有效的过滤掉此类重复误报事件。

2、通过对安全日志的分析发现,每天的日志中会有约上千的IP对内网尝试了攻击,比如某外网IP尝试了对服务器进行了1次 SQL 注入,在3家不同厂商的设备中发现了告警,观察日志后发现此IP确实进行了1次注入尝试( 使用‘and 1=1),但是后面再无此IP日志,因此虽然此IP进行了SQL注入,但我们不能因此就对此IP对运维人员告警,因为他并无后续的持续信息侦查和其他渗透手段。

实现设想

在大数据环境下,实现多层网络推理引擎,将结合复杂事件处理(Complex Event Processing,CEP)和行为模型识别引擎(Attacking Recognition Modeling Engine,ARME)技术结合,前者处理实时发生的事件信息,提供必要的事件聚合和变换等,后者实现复杂行为匹配业务逻辑。

ARME中使用的模型用JSON格式的领域语言DSL(Domain Specific Language)编写,支持值比较、逻辑运算、集合运算、时间窗口和序关系测定等复杂操作;ARME把模型编译为内部表达形式,编译过程中将处理逻辑、关联关系和事件触发都联系在一起. 当外部事件进入ARME时,将选择性执行事件相关联的一个或多个模型;大致上模型执行阶段分为如下三个阶段:逻辑判定,确定模型是否符合条件引起后续操作;模型链反应,在某一条模型触发后,是否继续执行模型依赖链中下一条模型;事件触发,是否向模型引擎之外输出事件消息。

为了处理重复日志聚合及有效攻击筛选问题, MLS-CEP-ARME实现了多层网络架构时间窗口时序处理引擎,通过多层网络告警处理模型让MLS-CEP-ARME实现对海量日志中攻击行为的筛选,具体处理步骤:

第一级处理:

1、对日志同源同目的同手段日志简单时间聚合,在某类型日志数量达到阈值后生成一级聚合事件并启动时间窗口,在窗口未关闭前的时间内所有相同条件日志也继续聚合到同一事件中。

2、对符合一定攻击步骤的日志做时序聚合产生一级时序聚合事件。

第二、三级处理:

模型引擎会将上一级中生成的简聚合事件再当作普通事件发往所有对此事件感兴趣的模型对象,对于每一条模型对象来说聚合事件和日志事件是同一类对象.第二,三级聚合模型会继续根据模型对日志和聚合事件进行行为含义聚并生成新的弱行为含义告警。

第四级网络结构继续按模型序列及时间窗口继续生成高行为含义告警,此时的告警不仅会聚合上一级的事件且会根据模型需要聚合任意层级的事件,最终输出我们需要找到的渗透攻击IP告警,如下图所示:

SIEM中基于多层网络分析引擎的安全威胁预警研究

模型是对渗透测试步骤及方法的模拟,可以通过安全人员依靠已知经验完成,也可以通过对已经的渗透攻击进行机器学习完成,因此多层网络时序聚合模型最终找出跟渗透测试人员一样行动步骤的日志,如果某IP按一定时间顺序尝试了某些渗透步骤,那我们判定此IP为渗透攻击IP,普通的误报或者无意的访问尝试触发的安全设备日志,或者强度不够的渗透扫描,从数量,步骤时序,目标特点等上面都无法满足模型,即普通的单一的POC扫描及安全设备误报最多产生第一二级聚合事件,因为行为不存在步骤性,即便数量非常多也只会生成一条一级聚合并不会产生第4级告警。

实际测试效果-预警渗透攻击

(由于需要对用户信息保密已抹去真实信息)

用户实际网络中部署MLS-CEP-ARME后,实际在1天的40W日志中仅产生2个4级告警,百条级2,3级事件,2K条1级聚合事件,选择其中一条威胁告警进行分析,可以看到此攻击IP的4级告警使用了总共64条日志: SIEM中基于多层网络分析引擎的安全威胁预警研究

这个4级告警由4条3级事件聚合,其中每条3级聚合又由N多低级事件聚合而成。由于未对该IP进行封堵。所以我们继续分析该IP流量后发现,该IP成功上传文件名为tett.asp的一句话后门,如下图: SIEM中基于多层网络分析引擎的安全威胁预警研究

可以看到MLS-CEP-ARME告警的IP确实是攻击者。

总结

经过一段时间的测试,发现MLS-CEP-ARME不存在误报,实际上触发4级告警的IP非常少。

但是存在漏报的情况,说明安全设备日志处理也只是在某些特定场景下有效,一但遇到:

1、攻击者使用新漏洞安全设备无法告警
2、其他情况下渗透测试者能在少步骤内成功渗透进入系统
3、其他未知的告警非常少的情况下,此日志处理模型也不会生效。

同时还发现由于现在使用的全部安全设备日志,会遇到如下问题:

1、由于只有安全设备的日志,因此丢失了很多重要信息。
2、没有纵深防御,一旦攻击者突破边界安全设备,SIEM就不会再给出告警提示。
3、安全设备对攻击的告警类型不准确导致攻击识别模型对告警识别错误。

下一步准备进一步研究如何MLS-CEP-ARME和设备(非安全设备)日志来检测已经成功进入到内网的威胁。

*本文作者:kczwa1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python网络编程基础

Python网络编程基础

John Goerzen / 莫迟 等 / 电子工业出版社 / 2007 / 68.00元

《Python网络编程基础》可以作为各层次Python、Web和网络程序的开发人员的参考书,在实际工作中使用书中的技术,效果更佳。一起来看看 《Python网络编程基础》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具