前言
在企业安全运营中,安全运营中心(SOC)部署了各种安全设备,收集到了海量安全数据,并针对这些数据开发出各种检测模型,但随之而来的问题就是:
- 如何高效地对安全告警进行分析和处置
- 如何保证当前的模型可以覆盖检测到所有攻击,同时保持最低的误报
- 如何深入分析挖掘数据的潜在价值
一 安全告警的意义
首先想探讨的是,产生和分析安全告警能给我们带来什么?总结起来,安全告警分析能做到:
1 识别已成功的攻击行为
安全告警的核心目的,也是安全设备的初衷,如:
- 系统存在wordpress漏洞被命令执行成功
- 攻击者正在内网执行端口扫描、数据外带动作
- xx主机被内置挖矿病毒
2 识别正在进行的攻击行为
通常在边界处,识别还未成功的攻击探测行为,同时可监控外部攻击态势,防患于未然:
- 某IP正在使用针对性的log4j payload扫描某站点
- NIPS监控到某IP正在尝试爆破某台主机RDP服务
- 某组织使用新型攻击手段针对某特定业务进行攻击
3 识别异常行为
安全告警还可用于检测内部异常或违规行为,虽然本身非攻击行为,但通常会间接导致安全问题,如:
- 业务使用内部禁用的xxx工具/命令
- 健康巡检:xx主机waf下线、日志中断
4 资产梳理
不仅是攻击流量,正常流量也会被安全设备监控到,所谓的“高误报率”正是由这部分流量导致,这部分流量同样可以被利用起来,用于做资产梳理,梳理内网环境等,如:
- 监控内部资产变化:新增域名、IP
- 通过waf流量等监控内部url资产
二 安全告警分析方法
在告警量较大、处置人员较少的情况下,处置告警可采用以下方法:
1 告警聚类分类
对告警进行过滤、分类,首先将数量大、重要度低的告警过滤掉,对剩下的告警进行针对性分析,筛选出真实攻击以及潜在的针对性攻击。
这个分析可从各个维度展开,如攻击源角度:少量攻击源贡献了大部分告警,告警类型角度:路径爆破占据了较大比重、时间维度、业务维度等。
举个例子,图为某IP与业务主机的所有告警类型的数量随时间变化的曲线图,黄色为路径穿越告警,红色为其他类型web攻击告警:
分析后可发现如下规律:
- 告警类型单一。两个IP之间仅触发两种类型的告警,虽然可能存在一定误报的可能,但是单一的告警类型体现出两者之间通信行为的单一,若是攻击者,很难只触发这两种类型告警。
- 告警数量大且持续性高。在5天之内,每小时都触发大约650条告警,数量巨大、持续性强的告警只有正常业务才有可能触发,攻击者很难做到24小时在线,持续大量地触发安全设备告警而不被发现。
- 告警载荷规律性明显。两者之间的所有告警基本全部形如图所示,仅仅是URL路径存在些许差别,从payload可以看出这些告警大概率由正常业务所引发。
经由以上3点,基本可以确定这些告警由正常业务触发。
通过这些规律总结,我们可以针对现网告警提炼出典型攻击特征,正常业务流量导致的告警特征呈现什么规律?无差别扫描/蠕虫在时间维度上呈现什么规律?什么特征的告警更有可能是真实攻击?
正常的流量总是相似的,异常流量却各有各的不同,这些特征都可以形成更具体的专家经验沉淀下来。
2 关注重要资产
关注核心资产,特定目标的告警量往往不多,可以进行重点分析。
3 关注特定类型告警
像应用层RASP、主机层HIDS、网络层NDR,这类安全产品的置信度较高、危害较大,可考虑优先关注。
三 告警研判
对安全告警进行分析调查后,最终需对安全告警进行定性,按危害程序从低到高排序,告警最终可粗略分为以下几类:
1 正常行为
判定为正常业务行为导致的误报,包含正常的内部漏洞扫描动作,这些基本可认为是“无害”的,现网大部分告警基本都属于这一类。
为了避免后续重复处置,可通过一些手段排除,如提取业务特征添加告警白名单,或以某种形式给其打标签来区分攻击流量。
2 低危告警
现网大量僵尸网络或扫描器会执行无差别扫描等大量常态化的攻击行为,这些攻击往往都不会成功,可以认定为低危告警,做IP封禁操作或持续观察即可。
3 异常行为
该部分告警需要做出一定的处置,联系相应的资产负责人进行进一步核查确认。
4 高危告警
正在发生或者已经成功的入侵行为,列为高危告警,需立即着手处置。
四 模型开发/规则维护
现网大部分无效告警最终还是需要通过优化告警模型和规则来解决。攻击检测效果的提升本质上还是基于对攻击行为和数据的深刻理解。
但囿于当前安全运营人员攻防经验的缺乏,检测场景不够细化,检测规则不够细粒度,是现网产生大量误报的一个核心原因。
我理解,一种相对科学的规则维护和模型开发过程是:
1 选定攻击类型/日志源
这是模型开发的出发点,通常是两种思路:
- 从日志源出发:比如新接入了crontab日志,思考可检测哪些攻击
- 攻击类型出发,比如计划检测外联恶意域名,思考可使用哪些规则
2 思考攻击场景
从攻击者角度,列举具体攻击场景,细化到常用的攻击命令,比如针对crontab,有哪些攻击场景?
参考ATT&CK提供了三种攻击场景:执行命令、持久化后门、权限提升。那我们下面就需要针对这三种攻击战术制定更具体的检测场景:
- 执行命令:
攻击者通常通过crontab执行系统命令,可检测crontab中是否包含命令:shbashpython等。
- 持久化后门:
攻击者通常通过crontab命令下载后门木马,执行反弹shelll等,可检测crontab中是否包含命令:bashcurlwgetscp等。
- 权限提升:
攻击者常通过典型的SUI提权:可检测crontab中是否包含命令:chmod等
3 规则实现
最后一步,则是将上面的各个场景转化为具体的检测规则语法。
为了减少误报同时避免漏报,模型开发者需要更多的思考,从行为模式的角度,寻找一些元素,来细分业务正常操作和攻击者操作。
参考:
https://cloud.tencent.com/developer/article/1883282
http://blog.nsfocus.net/siem-soc2/