在考虑“如何从海量告警中筛选出真实有效的攻击?”这个问题前,我一直在思考如何更好的将「告警日志数据」转换为「情报数据」进行输出。
但考虑到「情报数据」的积累是一件相对比较长期的事情,无法在短时间内让政企客户快速感知到「情报数据」的价值。那么想要“即时”的体现「安全感」,还是要在「攻击有效性」的检测上多花点时间。
告警日志数据主要来自:WAF、IPS「入侵防御系统」、IDS「入侵防御系统」、蜜罐、NTA、EDR、APT、防病毒、堡垒机、态势感知等安全设备。
当安全设备检测到来自外部或内部的「攻击尝试行为」就会触发告警,需要对告警日志进行研判分析,从其中找出「真实有效」的攻击事件。
但随着互联网的迅速发展和广泛应用,信息安全问题日益突出,政企单位也越来越重视自身安全能力的“建设“。因此,不少政企单位为了提升自身「感知攻击威胁」的能力,会根据「需求」部署各种各样的安全设备资产在内部。从而导致需要分析处置的告警日志剧增,如果按照中小规模的政企单位来算的话,单日安全设备所产生的告警日志量就有可能达到十几万,遇到特殊时期告警日志量甚至高达百万。
“那我们真的需要逐条逐条去分析这些告警吗?”
“可以,但不建议这样。”
毕竟,很多告警的产生并不是意味着它就是「真实有效」的攻击所触发。而是由于安全设备在检测过程中因「特征规则」感知到「攻击尝试行为」所造成的风险告警,而那些「真实有效」的攻击告警却往往被大量的风险告警所“淹没”。
为了能够降低分析成本,就需要对这类因「攻击尝试行为」大量触发的风险告警进行数据清洗。通过特征规则将无效告警、误报告警过滤掉,剩下的就是「待分析告警」。
“哪些告警属于无效告警?”
比如说:攻击方通过对目标资产所处的C段进行批量扫描,但C段的资产并非都是处于「活跃」状态,甚至根本没有这个资产。而安全设备还是因为这个「攻击尝试行为」产生了告警,那么这种告警就属于「无效告警」。
“怎么判断告警是误报?”
比如说:攻击方尝试利用现成的「EXP&POC集成脚本工具」对资产目标进行检测扫描,安全设备检测到「攻击尝试行为」中的攻击特征就会产生告警。在通常情况下,可以把告警中的URL的“网页状态码”、“页面回显数据”作为「误报告警」判断的条件之一。
“如何对「待分析告警」关联分析?”
从「待分析告警」中提取攻击特征,通过「攻击特征规则库」进行匹配,看能否获取到「情报线索」。
/index/index/index?options=id)%2bupdatexml(1,concat(0x7,user(),0x7e),1) from users%23 **
比如说,在「待分析告警」数据发现这一段Payload,通过「攻击特征规则库」关联到它属于「ThinkPHP5 - 注入漏洞」。但我们通过「资产指纹信息库」进行核查发现「受攻击的资产」并没有使用「ThinkPHP5」框架。
按照这个分析逻辑,将整个流程脚本化输出。就可以排除「待分析告警」中那些真实的攻击尝试行为,却又未攻击成功的告警。然后,人工再对剩余的少量「待分析告警」进行分析研判,从其中捕获到「真实有效」的攻击事件的可能性相对于以往的分析方式会大的多。如果捕获到「真实有效」的攻击事件,还可以利用「资产指纹信息库」巡查具有同样指纹特征的设备是否也存在类似的漏洞。
这篇文章主要是记录当下对“如何从海量告警中筛选出真实有效的攻击?”这个问题的一些思考,文章内容难免会存在一些「表述欠妥」的地方,欢迎各位通过公众号「海绵行动」的后台留言指正。
祝:“身体健康,万事如意。”