基于图的下一代入侵检测系统
青藤云安全是一家主机安全独角兽公司,看名字就知道当前很大一块方向专注云原生应用安全,目前主营的是主机万相/容器蜂巢产品,行业领先,累计支持 800万 Agent。当前公司基于 NebulaGraph 结合图技术开发的下一代实时入侵检测系统已经初步投入市场,参与了 2022 护网行动,取得了不错的反响。
本文将简单介绍基于图的入侵检测系统,抛砖引玉,期望能有更多优秀人才参与挖掘图与安全的结合应用。
入侵检测的现状与挑战
主流入侵检测系统
入侵检测一直是安全研究的一大方向,青藤的万相和蜂巢两套产品分别为基于主机和容器的主机入侵检测产品,它们的原理都类似,如下图。
Agent 埋在主机/容器侧,接收服务端下发的规则结合采集的原始事件(进程/网络连接/文件读写等),通过安全专家编写规则,比如:进程文件 MD5/文件 MD5/执行命令行/机器学习等特征,命中当做告警报出来,相关告警上报到服务端;另外全量的原始事件也上报给服务端日志收集系统,入库保存到 SIEM 系统。
这套系统一旦告警上报到服务端,安全人员会拿当前告警相关信息到 SIEM 中查询告警发生时刻前后相关的事件,必要时登录相关机器查看相关信息,综合判断当前攻击告警是否有效并做相关处置。
这套系统是当前入侵检测的主流架构,但是也存在诸多问题:
- 基于单事件+规则做单点检测,可能造成大量误报(规则太松)或漏报(规则太严)
- 同一次攻击触发的告警可能过多,安全分析人员分析溯源工作量巨大
- 同一次告警相关原始事件需要借助 SIEM 人工分析,缺乏可视化手段
图与安全研究方向
其实,可以看到这里的几个问题点本质上都是独立去看待每个告警和事件,实际上一次攻击相关的告警/事件应该是彼此关联的,这里很自然想到用图去把这些原始事件/告警关联起来整体分析。事实上,这也是当前安全研究的一个热门方向——溯源图,借助溯源图我们做如下多方面的安全分析和检测:
1.图检测
传统安全解决的类似 IOC 检测,也就是单点判断,针对进程/网络连接/文件等实体判断是不是安全的;实际攻击面临的问题,可能各个点都检测不出来,但实际行为是危险的——1 个规则写不全,就算规则能写出来,比如命中某个命令行,但是触发告警很多,最终也无法应用。也就是要综合判断各种组合关系,这是图擅长的事情,也就是安全中图检测的问题——把所有相关的事件放在一张图中来综合判断分析是否为有效攻击。
图检测研究很早,但是面临计算量和算法的双重挑战,目前行业应用很少,基本上组合判断都还是序列检测方式。问题是序列规则能写多少确定规则,规则太多也有问题,无法应用;刚才提到确定规则,无法很好模糊匹配,也就是挖掘,安全中规则太确定就可以被绕过,黑客很聪明且借助自动化攻击更容易绕过这些规则。
2.图关联和溯源
刚才提到告警,也就是当前所有安全产品面临的另一个问题——要不是规则命中不了,要不就是规则命中太多,我们叫告警淹没,安全运营处理能力有限,可能一天 100 个告警还好,如果一天甚至一小时 10000 条告警就没法处理了,那和没告警没差别。
这其实是一个安全中关联分类和溯源的问题:
- 一次攻击会产生很多告警,比如:暴力破解登录,用了恶意文件,执行了恶意命令等等,关联分类把一次攻击中相关的告警关联在一起,这是图擅长的事情。这些告警关联在一起,还可以综合评判也就是多个告警联合判断当前攻击是否有效;
- 每个告警只会告诉你当前你是进程、文件、网络有问题,那这个问题是如何发生的,黑客是怎么进来的,文件是从哪里下载的,先干了什么后干了什么。安全产品需要帮助客户完成这个分析过程,目前行业是借助 SIEM/THP/SOC 等安全产品,所有原始事件都上传保存,找安全专家,从告警开始查原始事件日志,看告警前发生了什么,哪些有关系可能导致攻击,这个过程短则几分钟,长甚至数个小时。安全是个对抗过程,早就是优——越早发现越早对抗,封禁或隔离,否则就算发现也为时过晚。可以把相关的原始事件实体(进程/网络等)入图,借助图可以可视化探索和溯源整个攻击过程,这就是图溯源的过程,学术叫因果图、溯源图。
3.图知识图谱和预测
我们知道当前安全从根本上讲还是基于规则或者说先验知识,每种漏洞/木马/攻击工具/攻击过程/攻击组织都有它的特征,前几种规则还比较好描述,攻击过程、攻击组织等就很难完整描述了。
目前的主流做法是基于安全框架构建知识库,当前主流有 Kill Chain/ATT&CK 等框架,这是美国国防部主导的网络攻击战争相关两家公司提出的安全分析框架,相当于划分了攻击的战术和具体攻击技术的映射,这个具体如何实施比较难。安全学术界,比如:伊利诺伊大学/普渡大学近两年都在研究类似问题,也就是安全知识库(安全知识图谱)的构建。有了这个完善的知识库,就可以完成安全的终极设想,比如:我知道你的攻击过程/攻击组织,是不是就可以在攻击真正开始前,好比你打仗刚拿起枪冲到阵地上,判断你是要朝我开枪,预判直接击毙。
国内外现状
目前基于图的入侵检测系统,真正率先投入到实战中的是美国的安全明星公司——Crowd Strike,它完全基于图构建安全系统,现在相当于做了图检测和图关联溯源这两块的事情,目前估值 670 亿美元。云计算巨头 AWS 和 Azure 都在跟进它的方法。国内基于图做入侵检测系统的,目前有公开资料的是微步在线和深信服,他们相当于做了部分图关联和溯源的工作。
青藤云安全的万相和蜂巢在入侵检测深耕多年,已经取得了行业认可的安全检测能力,所以选择从图关联和溯源入手,基于 NebulaGraph 结合图技术开发的下一代实时入侵检测系统,先重点解决告警淹没和关联溯源的痛点问题。
青藤云安全下一代入侵检测系统
检测原理架构图
如下,核心是上报的攻击告警和部分原始事件统一在图中实时关联。
产品效果
经过关联引擎关联处理输出的就是攻击事件,一个攻击事件可能关联多个攻击告警并可视化呈现出来,当前产品效果图如下:
同一次攻击利用恶意文件和木马
敏感容器挂载
自定义脚本检测
NebulaGraph 的优势
选择 NebulaGraph 主要基于如下考虑:
- 图查询的刚需,特别是关联和溯源时多级进程关系查询,借助 Cypher查询图数据库能够比借助 SQL 在关系数据库中查询多级关系容易多;
- 大规模存储,涉及到大量事件和告警的存储;
- 高性能查询场景需求,关联需要保证近实时,当前相关查询都在 ms 级别;
得益于 NebulaGraph 的良好性能,关联引擎以近实时的方式入图和计算关联,入图部分是青藤自己基于 Flink 打造的实时入图组件,只需要更改配置文件即可完成图点边映射入图。
下一步研究方向和计划
当前青藤云安全新入侵检测主要支持单机和部分多机场景的关联和溯源,下一步重点是借助图支持更多多机关联的场景,特别是一些典型的安全攻击场景(反弹/横移),进一步以图赋能安全,为客户提供更好的服务。
当然,当前在将 NebulaGraph 应用到图安全应用过程中,也遇到了很多问题,提一些建议供参考。
1.下推优化
在开发过程中,极关心查询效率问题。我们在使用过程中,最大的问题就是下推优化,比如一颗发散的进程树,同时指定根节点和叶子节点,语句书写顺序不同就可能导致查询从叶子节点开始还是根节点开始,查询效率千差万别,最后不得不只指定叶子节点条件强制从叶子节点开始查。
MATCH 性能本质上也是下推优化问题,这个问题遇到也很多,目前我们的做法是对于部分已经查询过语句维持一个缓存池,也注意到官方企业版其实提供了部分缓存功能,这个点要是能考虑加到社区版就好了,是一个实际应用刚需。
2.实时场景一些技术需求点
因为我们是基于 NebulaGraph 做实时关联,一个较大的问题是如何实现一致性和速度的平衡——因为目前 NebulaGraph 实现的是最终一致性,写入图后其实是不知道到底是否真实入图完成。在实际应用中,关联引擎需要在下游轮询等待判断当前的点边是否真正的入图完成。这个对于实际使用和性能都会造成一定影响,是否有更好的方式值得思考。
另一块其实还是效率相关的问题,我们可以看到一些竞品 TigerGraph/TuGraph 都提供了自定义匹配/遍历算法和能力,比如:在我们多机关联场景中就遇到这种需求,目前只能通过拆分多条路径然后拼接起来的实现方式,效率和速度无疑是打折扣的。
3.TOB 部署
另一个,感受较深的是 NebulaGraph 对 TOB 部署的痛点。安全这个行业,目前国内还是走现场部署的较多,特别是国企和政务相关对上 SaaS 相对敏感,那么面临的问题就是效率和成本的问题——
第一个是单机部署,默认生产版本是为云设计的存算分离分布式部署方式,对于 TOB 部署还是太繁琐,且资源占用相对也较其他数据库多。
第二个是 HDD 部署,成本考虑,很多公司特别中小公司安全预算有限,很难提供 SSD 环境,更别说官网要求的大容量 SSD 高配置机器,也就是针对 HDD 和低配机器的优化上需要考虑更多。
以上,为青藤云安全团队工程师文洲带来的分享。
谢谢你读完本文 (///▽///)
要来近距离体验一把图数据库吗?现在可以用用 NebulaGraph Cloud 来搭建自己的图数据系统哟,快来节省大量的部署安装时间来搞定业务吧~ NebulaGraph 阿里云计算巢现 30 天免费使用中,点击链接来用用图数据库吧~
想看源码的小伙伴可以前往 GitHub 阅读、使用、(з)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~