闲谈:
刚开始学习SIEM、态势感知这类产品的时,翻阅老外们的文章总是谈什么真阳性,假阳性告警、告警疲劳,当时在国内资料中没找到很合理的解释,慢慢就淡忘这件事了。随着慢慢深入工作,感觉大概理解了这些概念并且有了一些新的领悟。心血来潮写了这篇文章,想给刚接触SIEM类产品的新同学做一下科普吧,希望你看完本文后能不再对所谓"误报"无从先下手,从而缓解你的告警疲劳。
既然要讲SIEM的告警疲劳,简单介绍一下SIEM。
SIEM( S ecurity I nformation and E vent M anagement),安全信息和事件管理。
先简单讲一下其他概念。
SIM( S ecurity I nformation E vent M anagement):安全信息管理,也称日志管理,用于日志的长周期存储、日志分析,报告输出。
SEM( S ecurity E vent M anagement):安全事件管理,用于事件关联,告警监控,通知管理。
其实这样就不难理解,实际上 SIEM = SIM + SEM,即SIEM类产品融合了两者的功能:该产品用于收集日志数据并进行长期存储,将收来的数据进行标准化处理,并通过日志搜索,关联告警,可视化图表,报告输出,告警通知等功能来提供安全事件的监测,调查,分析,响应的能力。
鉴于SIEM强大的数据采集存储、标准化能力,关联分析等能力,分析师将各种各样的数据源日志接入SIEM,其中包括了防火墙、行为管理、终端杀毒、IDS/IPS、WAF、VPN、堡垒机、3A、NDR、EDR、应用数据等等等。
本身当一个企业(默认是大型企业,如果是小型企业,我相信你也不会用SIEM这种产品)在做安全的基础建设时,铺的安全设备的数量就很多,随之而来告警的数量也会翻倍。更由于等保合规等要求,可能实际设备类型也会变得足够多,告警类型涉猎就更广泛。当两者碰撞起来就会造成海量告警。
实际海量告警对于分析师理论上也应该不足为惧,因为本身SIEM有 标准化 和 关联 的能力,理想状态下,其实告警不应该很多。但是以目前工作来看,理想终归是理想,目前现状依旧是有效告警被淹没在海量无效告警中。
简单总结一句话: 有效的告警(值得分析的告警)被淹没在海量无效告警(“误报”或不值得分析的告警)中,从而导致分析师力不从心,分析效率下降,对告警产生疲劳.
常表现出的现象如下:
上级监管部门通报XXX告警,我们的安全设备捕获到该攻击,但是SIEM的“误报”太大,我们还没分析到这个告警。
本身这个安全设备在没发送给SIEM时,我们长期优化后,这个设备的告警已经足够精准,“误报”已经足够少了,为什么接入SIEM后这个设备的告警量比原来多这么多?
既然聊到告警疲劳,肯定要涉及到误报。肯定要这里细心的同学可能发现,上面的"误报"我都打了引号。
这里讲一下工作来我对误报本质的看法。
个人观点: “误报”其实是甲乙双方对攻击认知的不同。
目前的安全设备规则库中已经很少那种写的很粗并且逻辑错误的误报了。像:单纯只匹配了个select就告警sql注入了。这种现象已经很少了,如果还存在,你应该推动你的安全设备的规则库进行升级啦或者你该思考一下你采购的安全设备了。
至于为什么说是双方认知的不同,举一个例子:
某天,作为分析师的你接到通知,NDR没有告警a.php。你经过分析,这次攻击行为没有payload,并没有成功,只是一次扫描尝试行为。
问题来了,甲方认为这是一种对攻击的漏报行为,设备出现问题。而你与厂商沟通,厂商的回复是:这是一种爬虫行为或这扫描尝试行为,这种行为不存在攻击特征,不应该告警。因为这种行为没有明显攻击特征,当有明显的payload或者代码执行特征,NDR一定会有代码执行或者webshell等告警。这种单纯的爬虫或者尝试的行为,不应该告警,如果这种都告警,会导致有海量告警。而且把这些无分析意义的扫描告警进行告警出来交给分析师来判断,这是一种不负责任的行为。
这个故事就是我所谓双方对攻击的认知不同,至于谁对谁错,见仁见智吧。至于为什么讲这个故事,是希望在工作中多思考事物的两面性,有些所谓的误报真的是误报么?所以我不是很喜欢国内用一个“误报”来一言蔽之,相比之下,我更倾向于国外对告警的分类,倒不是因为国外的月亮圆,只是说这种分类较为科学。
国外对告警的分类,个人觉得应该是基于机器学习中的True positives(TP,真正)、True negatives(TN,真负)、False positives(FP,假正)、False negatives(FN,假负)的方法进行的分类。
即他们经常所谓的:
以上为国外的概念,是不是听的云里雾里。如果结合新冠来理解呢?
即:
理论上说,优秀的安全建设通过长期运营,真阳性告警应该最少,大部分为真阴性告警。不存在伪阴性告警,假阳性告警特别少。
而实际国内安全运营的现状:
大量伪阴性告警,即由于数据采集不全面、不做BAS检测、长期不做非HW的红蓝对抗而过分信任设备而漏报的攻击行为。
巨量的真阴性告警,即攻击失败的扫描器探测,端口扫描,爬虫等。
巨量的假阳性告警,即安全设备检测规则不严谨或不切合业务导致的误报,SIEM开箱自带的规则不适配导致的告警,一些失效的威胁情报告警等。
大量的“良性”的真阳性告警,即由于某些原因无法推进整改的大量弱口令告警,违规的办公软件的远控告警,开发人员为了偷懒写的脚本导致的SSH暴破等。
少量的“恶性”的真阳性告警,即真正攻击者的恶意攻击行为,已导致失陷。
PS:其实真阳性告警,并不存在良性与恶性的区分,对于攻击者而言有机可乘的都是薄弱点。这样说,仅是为了做区分。
讲完告警的分类,和运营的现状,总结一下告警疲劳的根本原因。
结合工作经验,总结为以下几个原因:
SIEM的告警疲劳是业内的一个难题.告警疲劳会对分析师的分析效率造成巨大影响,并且有效告警被淹没到无效告警中,同时也会导致安全问题无法暴露,影响企业的安全.
如果你也面临文中提到的问题,可以参考文中的观点,或发散思维,提供更好的解决方法进行分享。群策群力,共同进步!
PS:非常感谢你能看到这里,以上为个人观点,欢迎一起交流讨论,:)