0x00、业务需求
应急响应小伙伴们估计还记得上个月Thinkphp RCE那个漏洞吧,目前这个漏洞影响非常广泛,特别是使用php写的CMS大部分都遭殃了,而且这种攻击还不断的出现各种花式利用,最近的蜜罐报警中也出现了。在本事件中,我们发现获取这种0day的渠道其实很有限,通常都是从:[email protected],www.exploit-db.com,pastebin.com等公开的漏洞跟踪平台获得,但是大多数信息都是滞后的。无法完成快速响应。圈内的人都说,“这都还不如自己的朋友圈知道的早”。
如果你掌握全球Top流量的互联网大厂,云厂商,现有的0 day应急响应流程大致:查询现有的日志流程留存,比如:http流数据,观察是匹配的应用指纹服务是否存在异常的请求,然后查看这些主机是否被入侵,比如说:对外可疑连接、失陷主机检测等。然后深度分析提交的payload是否为0 day。但是MTTD时间基本上是超过24小时的。那么,我们如何更快的降低MTTD时间,快速抓取0 day Payload呢?
0x01、解决方案
可否使用全流量检测探针自动化做这个事?传统的全流量检测引擎,是基于规则检测模型,发现Payload才能写规则加载到IDS检测引擎中,才能发现告警。而且大厂也不能一直存储http流数据,存储成本太高而且价值不大。所以,也没法发现最早在你的环境中的攻击行为。
这里只是和大家抛砖引玉,尽量通过自动化的手段提升发现效率。
1、捕捉0-day 恶意软件入侵,然后反查入侵路径中的payload。
目前态势感知产品一般处理十几T的网络流量数据,并且发现威胁(关联分析结果),告警的MTTD时间大约几十秒(还取决于硬件设备投入),如果可以自动化发现未知恶意文件,那么可以大幅降低0 day Payload的检测时间。其次,我们在确认威胁的时候,其实通常是以造成危害后,有确切证据才能判断是0 day攻击。
那么如何检测到未知的恶意文件呢?
前提条件:
1、你企业环境中的态势感知产品具备动态行为检测能力,也就是我们常说的沙箱检测。你的NIDS探针具备文件还原能力,可以捕捉到我们关注的文件类型。
2、对海量的5元组数据、http、DNS数据、服务器进程、端口、关键文件变更快照有一定的留存时间。
其次通过AI优化检测引擎:
1、网络层面或者主机层面获取到未知文件,进入反病毒集群、沙箱集群跑一边。因为现代的防病毒厂商也在用机器学习方法提升自己的检测率。
2、传统的沙箱无法检测到的未知文件,需要进入特殊的AI检测流程。如下图:
· 通过商业手段或者在自己环境中积累的文件,安装我们关注的文件类型划分训练文件。
· 不同的文件类型通过文件静态特征获取到AI算法需要的特征向量,输入到大数据预测引擎(spark Mlib)中做实施分类训练,形成不同类型文件的恶意文件分类器。
· 接收一个或者多个未知文件,通过分类器判断,得出threat score
· 如果现有分类器也无法分类,那么把未知文件的沙箱检测出来的执行结果做聚类分析。查看统计分析结果,属于那个恶意分类概率大的就投入到这个分类,动态调整其threat score
· 对主机上孤岛文件做以上流程分析。通过聚类算法分析出主机上的运行进程关联的文件,定义成未知文件走以上流程。
3、文件信誉度
以上流程当然可以配合文件在你环境中的文件信誉。
文件信誉可以从以下三个方面判断:
· 第一次发现时间:什么时候第一次发现你跟踪的文件
· 流行度:有多少用户使用这个文件
· 存活时间:你跟踪的文件存活多久。
通过统计分析手段打分,我们可以发现未知可疑文件。
0x02、总结
通过传统沙箱、AI优化检测引擎和文件信誉度等多种方式检测未知恶意文件,然后反查相关日志,可以降低捕捉0 day Payload的MTTD时间。