基于图的下一代入侵检测系统

news2024/11/26 16:38:47

青藤云安全是一家主机安全独角兽公司,看名字就知道当前很大一块方向专注云原生应用安全,目前主营的是主机万相/容器蜂巢产品,行业领先,累计支持 800万 Agent。当前公司基于 NebulaGraph 结合图技术开发的下一代实时入侵检测系统已经初步投入市场,参与了 2022 护网行动,取得了不错的反响。

本文将简单介绍基于图的入侵检测系统,抛砖引玉,期望能有更多优秀人才参与挖掘图与安全的结合应用。

入侵检测的现状与挑战

主流入侵检测系统

入侵检测一直是安全研究的一大方向,青藤的万相和蜂巢两套产品分别为基于主机和容器的主机入侵检测产品,它们的原理都类似,如下图。

入侵检测系统架构图

Agent 埋在主机/容器侧,接收服务端下发的规则结合采集的原始事件(进程/网络连接/文件读写等),通过安全专家编写规则,比如:进程文件 MD5/文件 MD5/执行命令行/机器学习等特征,命中当做告警报出来,相关告警上报到服务端;另外全量的原始事件也上报给服务端日志收集系统,入库保存到 SIEM 系统。

这套系统一旦告警上报到服务端,安全人员会拿当前告警相关信息到 SIEM 中查询告警发生时刻前后相关的事件,必要时登录相关机器查看相关信息,综合判断当前攻击告警是否有效并做相关处置。

这套系统是当前入侵检测的主流架构,但是也存在诸多问题:

  1. 基于单事件+规则做单点检测,可能造成大量误报(规则太松)或漏报(规则太严)
  2. 同一次攻击触发的告警可能过多,安全分析人员分析溯源工作量巨大
  3. 同一次告警相关原始事件需要借助 SIEM 人工分析,缺乏可视化手段

图与安全研究方向

其实,可以看到这里的几个问题点本质上都是独立去看待每个告警和事件,实际上一次攻击相关的告警/事件应该是彼此关联的,这里很自然想到用图去把这些原始事件/告警关联起来整体分析。事实上,这也是当前安全研究的一个热门方向——溯源图,借助溯源图我们做如下多方面的安全分析和检测:

1.图检测

传统安全解决的类似 IOC 检测,也就是单点判断,针对进程/网络连接/文件等实体判断是不是安全的;实际攻击面临的问题,可能各个点都检测不出来,但实际行为是危险的——1 个规则写不全,就算规则能写出来,比如命中某个命令行,但是触发告警很多,最终也无法应用。也就是要综合判断各种组合关系,这是图擅长的事情,也就是安全中图检测的问题——把所有相关的事件放在一张图中来综合判断分析是否为有效攻击。

图检测研究很早,但是面临计算量和算法的双重挑战,目前行业应用很少,基本上组合判断都还是序列检测方式。问题是序列规则能写多少确定规则,规则太多也有问题,无法应用;刚才提到确定规则,无法很好模糊匹配,也就是挖掘,安全中规则太确定就可以被绕过,黑客很聪明且借助自动化攻击更容易绕过这些规则。

2.图关联和溯源

刚才提到告警,也就是当前所有安全产品面临的另一个问题——要不是规则命中不了,要不就是规则命中太多,我们叫告警淹没,安全运营处理能力有限,可能一天 100 个告警还好,如果一天甚至一小时 10000 条告警就没法处理了,那和没告警没差别。

这其实是一个安全中关联分类和溯源的问题:

  1. 一次攻击会产生很多告警,比如:暴力破解登录,用了恶意文件,执行了恶意命令等等,关联分类把一次攻击中相关的告警关联在一起,这是图擅长的事情。这些告警关联在一起,还可以综合评判也就是多个告警联合判断当前攻击是否有效;
  2. 每个告警只会告诉你当前你是进程、文件、网络有问题,那这个问题是如何发生的,黑客是怎么进来的,文件是从哪里下载的,先干了什么后干了什么。安全产品需要帮助客户完成这个分析过程,目前行业是借助 SIEM/THP/SOC 等安全产品,所有原始事件都上传保存,找安全专家,从告警开始查原始事件日志,看告警前发生了什么,哪些有关系可能导致攻击,这个过程短则几分钟,长甚至数个小时。安全是个对抗过程,早就是优——越早发现越早对抗,封禁或隔离,否则就算发现也为时过晚。可以把相关的原始事件实体(进程/网络等)入图,借助图可以可视化探索和溯源整个攻击过程,这就是图溯源的过程,学术叫因果图、溯源图。

3.图知识图谱和预测

我们知道当前安全从根本上讲还是基于规则或者说先验知识,每种漏洞/木马/攻击工具/攻击过程/攻击组织都有它的特征,前几种规则还比较好描述,攻击过程、攻击组织等就很难完整描述了。

目前的主流做法是基于安全框架构建知识库,当前主流有 Kill Chain/ATT&CK 等框架,这是美国国防部主导的网络攻击战争相关两家公司提出的安全分析框架,相当于划分了攻击的战术和具体攻击技术的映射,这个具体如何实施比较难。安全学术界,比如:伊利诺伊大学/普渡大学近两年都在研究类似问题,也就是安全知识库(安全知识图谱)的构建。有了这个完善的知识库,就可以完成安全的终极设想,比如:我知道你的攻击过程/攻击组织,是不是就可以在攻击真正开始前,好比你打仗刚拿起枪冲到阵地上,判断你是要朝我开枪,预判直接击毙。

国内外现状

目前基于图的入侵检测系统,真正率先投入到实战中的是美国的安全明星公司——Crowd Strike,它完全基于图构建安全系统,现在相当于做了图检测和图关联溯源这两块的事情,目前估值 670 亿美元。云计算巨头 AWS 和 Azure 都在跟进它的方法。国内基于图做入侵检测系统的,目前有公开资料的是微步在线和深信服,他们相当于做了部分图关联和溯源的工作。

青藤云安全的万相和蜂巢在入侵检测深耕多年,已经取得了行业认可的安全检测能力,所以选择从图关联和溯源入手,基于 NebulaGraph 结合图技术开发的下一代实时入侵检测系统,先重点解决告警淹没和关联溯源的痛点问题

青藤云安全下一代入侵检测系统

检测原理架构图

如下,核心是上报的攻击告警和部分原始事件统一在图中实时关联。

检测原理架构图

产品效果

经过关联引擎关联处理输出的就是攻击事件,一个攻击事件可能关联多个攻击告警并可视化呈现出来,当前产品效果图如下:

同一次攻击利用恶意文件和木马

同一次攻击利用恶意文件和木马

敏感容器挂载

敏感容器挂载

自定义脚本检测

自定义脚本检测

NebulaGraph 的优势

选择 NebulaGraph 主要基于如下考虑:

  1. 图查询的刚需,特别是关联和溯源时多级进程关系查询,借助 Cypher查询图数据库能够比借助 SQL 在关系数据库中查询多级关系容易多;
  2. 大规模存储,涉及到大量事件和告警的存储;
  3. 高性能查询场景需求,关联需要保证近实时,当前相关查询都在 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 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据库]初识数据库

●🧑个人主页:你帅你先说. ●📃欢迎点赞👍关注💡收藏💖 ●📖既选择了远方,便只顾风雨兼程。 ●🤟欢迎大家有问题随时私信我! ●🧐版权:本文由[你帅…

[C语言]offseto宏的认识与模拟实现

目录 1.offseto的认识 2.offseto的模拟实现 1.offseto的认识 在结构体中,因为内存对齐的存在我们需要进行计算才能知道结构体成员的地址对于结构体首地址的偏移量为多少,今天认识的offseto就是将结构体中成员地址对于结构体首地址的偏移量的大小所计算…

静态代理,JDK动态代理,Cglib动态代理的写法

目录静态代理JDK动态代理Cglib动态代理小结使用代理模式可以在不改变被代理类的情况下,实现对被代理类的进行增强。 例如:在被代理类中有一个div()方法,方法中只是计算除法,然而想要对其进行增强,如添加异常捕获等。 …

Element UI框架学习篇(一)

Element UI框架学习篇(一) 1.准备工作 1.1 下载好ElementUI所需要的文件 ElementUI官网 1.2 插件的安装 1.2.1 更改标签的时实现自动修改 1.2.2 element UI提示插件 1.3 使用ElementUI需要引入的文件 <link rel"stylesheet" href"../elementUI/element…

【JavaScript】理解面向对象以及构造函数的推导

&#x1f4bb; 【JavaScript】理解面向对象以及构造函数的推导 &#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xf…

面试题:Redis网络模型

1 用户空间和内核空间以Centos 7 linux操作系统为例。计算机系统被内核操控&#xff0c; 内核被应用操控。为了避免用户应用导致冲突甚至内核崩溃&#xff0c;用户应用与内核是分离的进程的寻址空间会划分为两部分:内核空间、用户空间。用户空间只能执行受限的命令(Rin3&#x…

解决Mac 安装应用提示:xx已损坏,无法打开。 您应该将它移到废纸篓问题

许多新手mac 用户安装应用得时候会出现 “已损坏&#xff0c;无法打开。您应该将它移到废纸娄” 导致无法正常安装&#xff0c;其实应用软件b并没有损坏&#xff0c;只是系统安全设置&#xff0c;我们改如何解决呢&#xff1f; 1、开启允许任何来源 苹果已经取消了允许“任何…

以数据驱动管理场景,低代码助力转型下一站

数据驱动 数据驱动&#xff0c;是通过移动互联网或者其他的相关软件为手段采集海量的数据&#xff0c;将数据进行组织形成信息&#xff0c;之后对相关的信息讲行整合和提炼&#xff0c;在数据的基础上经过训练和拟合形成自动化的决策模型&#xff0c;简单来说&#xff0c;就是…

Python项目实战——外汇牌价(附源码)

前言 几乎每个人都在使用银行卡&#xff0c;今天我们就来爬取某行外汇牌价&#xff0c;获取我们想要的数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 requestsrequests是一个很实用的Python HTTP客户端库&#xff0c;爬虫和测试服务器响应数据时经常会用到&…

5分钟搞懂 强缓存与协商缓存

Ⅰ、http缓存 HTTP 缓存策略 分为 > 「强制缓存」 和 「协商缓存」 为什么需要 HTTP 缓存 呢 ? &#x1f447; 直接使用缓存速度 >> 远比重新请求快 缓存对象有那些呢 &#xff1f;&#x1f447; 「图片」 「JS文件」 「CSS文件」 等等 文章目录Ⅰ、http缓存Ⅱ…

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…

Flink反压如何排查

Flink反压利用了网络传输和动态限流。Flink的任务的组成由流和算子组成&#xff0c;那么流中的数据在算子之间转换的时候&#xff0c;会放入分布式的阻塞队列中。当消费者的阻塞队列满的时候&#xff0c;则会降低生产者的处理速度。 如上图所示&#xff0c;当Task C 的数据处…

nuxt 学习笔记

这里写目录标题路由跳转NuxtLinkquery参数params参数嵌套路由tab切换效果layouts 文件夹强制约定放置所有布局文件&#xff0c;并以插槽的形式作用在页面中1.在app.vue里面2.component 组件使用Vue < component :is"">Vuex生命周期数据请求useFetchuseAsyncDat…

鸿蒙设备学习|快速上手BearPi-HM Micro开发板

系列文章目录 第一章 鸿蒙设备学习|初识BearPi-HM Micro开发板 第二章 鸿蒙设备学习|快速上手BearPi-HM Micro开发板 文章目录系列文章目录前言一、环境要求1.硬件要求2.软件要求3.Linux构建工具要求4.Windows开发工具要求5.工具下载地址二、安装编译基础环境1.安装Linux编译环…

【速通版】吴恩达机器学习笔记Part1

准备速通一下吴恩达的机器学习 很快做个笔记5.2.3 监督学习 part 2_哔哩哔哩_bilibili 1.概述&#xff08;P1-P3) ML是AI的重要部分&#xff0c;AI的目标是AGI&#xff08;artificial general intelligence&#xff09;但是目前就。。。。 supervised learning&#xff1a;目…

如何开发L2毫秒接口?

L2毫秒接口普遍应用于大众的日常生活中&#xff0c;并且很多的企业通过api进行数据内容的调用&#xff0c;从而在技术上和成本上得到福利。 进行数据的整合与共享是L2毫秒接口的主要用途之一&#xff0c;所以开发L2毫秒接口就必须慎重&#xff0c;注意安全隐患&#xff0c;防止…

VHDL语言基础-组合逻辑电路-其它组合逻辑模块

目录 多路选择器&#xff1a; 逻辑功能&#xff1a; 常用的类型&#xff1a; 4选1多路选择器的实现&#xff1a; 求补器&#xff1a; 求补器的实现&#xff1a; 三态门&#xff1a; 三态门的应用实例&#xff1a; 三态门的实现&#xff1a; 缓冲器&#xff1a; 什么是…

Lesson 6.4 逻辑回归手动调参实验

文章目录一、数据准备与评估器构造1. 数据准备2. 构建机器学习流二、评估器训练与过拟合实验三、评估器的手动调参在补充了一系列关于正则化的基础理论以及 sklearn 中逻辑回归评估器的参数解释之后&#xff0c;接下来&#xff0c;我们尝试借助 sklearn 中的逻辑回归评估器&…

Ts笔记第一天

文章目录安装 ts运行环境 nodeTS类型数字 、字符串 和布尔类型字面量any 和unknown类型断言void和neverobjectArraytuple 元组enum 枚举安装 ts运行环境 node node-v看版本号 2. 安装ts -g全局安装 npm i -g typescript // 这里全局安装 -s安装无法使用tsc 创建一个01.ts文…

第五十章 动态规划——数位DP模型

第五十章 动态规划——数位DP模型一、什么是数位DP数位DP的识别数位DP的思路二、例题1、AcWing 1083. Windy数&#xff08;数位DP&#xff09;2、AcWing 1082. 数字游戏&#xff08;数位DP&#xff09;3、AcWing 1081. 度的数量&#xff08;数位DP&#xff09;一、什么是数位DP…