基于图的下一代入侵检测系统
青藤云安全是一家主机安全独角兽公司,看名字就知道当前很大一块方向专注云原生应用安全,目前主营的是主机万相/容器蜂巢产品,行业领先,累计支持 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 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~
相关文章:
基于图的下一代入侵检测系统
青藤云安全是一家主机安全独角兽公司,看名字就知道当前很大一块方向专注云原生应用安全,目前主营的是主机万相/容器蜂巢产品,行业领先,累计支持 800万 Agent。当前公司基于 NebulaGraph 结合图技术开发的下一代实时入侵检测系统已…...
若依框架---树状层级部门数据库表
👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 Ǵ…...
【Mysql第十期 数据类型】
文章目录1. MySQL中的数据类型2.类型介绍2.2 可选属性2.2.2 UNSIGNED2.2.3 ZEROFILL2.3 适用场景2.4 如何选择?3. 浮点类型3.2 数据精度说明3.3 精度误差说明4. 定点数类型4.1 类型介绍4.2 开发中经验5. 位类型:BIT6. 日期与时间类型6.1 YEAR类型6.2 DAT…...
2023-2-9 刷题情况
删除子文件夹 题目描述 你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就…...
Homekit智能家居DIY设备-智能通断开关
智能通断器,也叫开关模块,可以非常方便地接入家中原有开关、插座、灯具、电器的线路中,通过手机App或者语音即可控制电路通断,轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及,越来越多的人想将自己的家改…...
【java】EJB(Enterprise Java Bean)概述
EJB概述目录一、什么情况下需要企业Bean需要使用EJB的N个理由二、EJB的基本分类2.1、Enterprise Bean2.2、 Message Driven Bean(MDB)——消息驱动Bean,基于JMS三、定义客户端访问的接口3.1、 远程客户端——客户端与其调用的EJB对象不在同一个JVM进程中3.2、本地客户端——客户…...
Android 10.0 Launcher3桌面禁止左右滑动
1.1概述 在10.0的rom定制化开发中,由于Launcher3有一些功能需要定制,这样的需求也好多的,现在功能需求要求桌面固定在Launcher3的app列表页,不让左右移动,就是禁止左右移动的功能实现,所以需要禁止滑动分析页面滑动部分的功能,然后禁用 2.1Launcher3桌面禁止左右滑动的核…...
日期类的实现
文章目录1. 日期类的具体实现1.查询当前月份的天数2. 构造函数的实现(注意)3.d1d24. d1!d25. d1<d26. d1<d27. d1>d28. d1>d29. 日期天数10.日期天数11.日期-天数12. 日期-天数13. d和 d14. --d 和 d--15.日期日期 返回天数2. 函数的声明——date.h3. 函数的定义—…...
2022年这5款熟悉的软件退出了历史舞台
在过去的一年里,有很多新产品发布,当然也有很多产品与我们就此别过。这些产品曾陪伴我们的生活,给我们带来欢乐,帮助我们成长。所以本文将盘点一下在2022年和我们告别的产品。1.微软IE浏览器IE浏览器1995年8月16日正式上线&#x…...
用Nginx打包部署vue3项目及404和500解决
打包vue3 npm run build安装Nginx 这里安装步骤比较繁琐,现在服务器比较便宜,如果想用Nginx,可以去菜鸟教程https://www.runoob.com/linux/nginx-install-setup.html 配置安装一下找到安装路径下的 conf 文件夹 下 nginx.conf文件࿰…...
Java面试——多线程并发篇
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
维基百科数据抽取
1. 数据路径 https://dumps.wikimedia.org/enwiki/latest/ ----英文 https://dumps.wikimedia.org/zhwiki/latest/ ----中文 https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2 --下载最新的 https://dumps.wikimedia.org/wikidatawiki/2023…...
2020年因果推断综述《A Survey on Causal Inference》
最近阅读了TKDD2020年的《A Survey on Causal Inference》,传送门,自己对文章按照顺序做了整理,同时对优秀的内容进行融合,如有不当之处,请多多指教。 文章对因果推理方法进行了全面的回顾,根据传统因果框…...
嵌入式linux系统测试程序编写
文章目录 网络CPU load监测性能设定开源测试工具iozone —— 文件系统测试工具iperf —— 网络性能测试工具LMbench —— 系统性能评测LTP —— linux功能/性能压力测试memtester —— 内存测试,坏位检测stressapptest —— 内存流量压力测试stream —— 内存性能测试fio ——…...
力扣SQL刷题5
目录597. 好友申请 I:总体通过率602. 好友申请 II :谁有最多的好友603. 连续空余座位1045. 买下所有产品的客户597. 好友申请 I:总体通过率 官方讲的题目太繁琐了,大概就是(表2中列1列2不全相同的行数)/&a…...
动态规划详解(完结篇)——如何抽象出动态规划算法?以及解题思路
今天直接开始讲解FIRST:如何抽象出动态规划算法?这个问题,困扰了无数代OIER,包括本蒟蒻在比赛的时候,看一道题,怎么想到他是什么算法的呢?这就需要抽象能力而不同的算法,往往有着不同…...
C语言一维数组篇【下】——每日刷题经验分享
一维数组篇——每日刷题经验分享~😎前言🙌有序序列插入一个整数 😊序列中删除指定数字 😊序列中整数去重小乐乐查找数字筛选法求素数总结撒花💞😎博客昵称:博客小梦~ 😊最喜欢的座右…...
VHDL语言基础-组合逻辑电路-其它组合逻辑模块
目录 多路选择器: 逻辑功能: 常用的类型: 4选1多路选择器的实现: 求补器: 求补器的实现: 三态门: 三态门的应用实例: 三态门的实现: 缓冲器: 什么是…...
初识Vue
文章目录1. 前言2. Vue 的特点3. 安装 Vue4. HelloWord1. 前言 vue是什么 ? 引用 : vue.js 文档 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层…...
TOUGH系列软件建模实践方法及在地下水、CO2地质封存、水文地球化学、地热等多相多组分系统多过程耦合
查看原文>>> https://mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247578057&idx7&sn75f8d2c1c6edb28af76a8db4bb773de3&chksm9be2aed9ac9527cf0081082cdcf781e6c37f9f3ba383332ed1116abcbee0f05c0593187e964d&token2070450548&langzh_CN#r…...
Codeforces Round #699 (Div. 2)
E. 题意:n本书,每本书有颜色a[i],一次操作可以将其中一本书放在末尾,求满足:相同颜色的书都是相邻的 的最小操作次数. 显然最多只需要n次,考虑能节省多少次.倒着考虑,记f[i]为i~n最多能节约的次数.先预处理出每种颜色的出现的位置范围l[i],r[i]. 1.不节约这本书f[i] f[i 1]…...
MySQL存储过程的传参和流程控制
目录 一.存储过程传参—in 演示 二.存储过程传参—out 演示 三.存储过程传参—inout 演示 四.流程控制—判断 格式 演示 五.流程控制—case 语法 演示 六.流程控制—循环 循环—while 循环—repeat 循环—loop 一.存储过程传参—in in表示传入的参数,可以传…...
MySQl学习(从入门到精通11)
MySQl学习(从入门到精通11)第 14 章_视图1. 常见的数据库对象2. 视图概述2. 1 为什么使用视图?2. 2 视图的理解3. 创建视图3. 1 创建单表视图3. 2 创建多表联合视图3. 3 基于视图创建视图4. 查看视图5. 更新视图的数据5. 1 一般情况5. 2 不可…...
关于ThreadLocal
弱引用 1.1 java中的各种引用和测试: https://blog.csdn.net/thewindkee/article/details/102723838 1.2 treadlocal中的弱引用测试: https://blog.csdn.net/thewindkee/article/details/103726942 (这篇很重要) 内存泄露: https://zhuanlan.zhihu.com/p/523628871 综合考虑 …...
【C++】类和对象(中)
文章目录1. 类的6个默认成员函数2. 构造函数概念特性3. 析构函数概念特性4. 拷贝构造函数概念特征5. 运算符重载5.1 前置和后置重载5.2 赋值运算符重载6. 日期类的实现7. const成员8. 取地址及const取地址操作符重载1. 类的6个默认成员函数 如果一个类中什么成员都没有&#x…...
js下载文件
url为文件的src地址 url必须符合同源策略或者url的接口地址允许跨域,否则浏览器会报跨域错误 axios.get(data.url ,{ responseType: ‘blob’, }) .then( response>{ let blob new Blob([response.data]); let url window.URL.createObjectURL(blob); // 创建 …...
ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟
ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟 📍相关篇《ESP8266 + STC15基于AT指令通过TCP通讯协议获取时间》 📌ESP8266 AT固件基于安信可AT固件,相关刷AT固件可以参考《NodeMCU-刷写AT固件》 🔖STC15 单片机采用的是:STC15F2K60S2 晶振频率采用内部:22.11…...
计算机入门基础知识大全
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽…...
Python程序出现错误怎么办?
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 python标准异常 异常名称 描述 BaseException 所有异常…...
【Vue3】v-if和v-for优先级
🎈博客主页:🌈我的主页🌈 🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏 🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩…...
如何查看网站开发的语言/西安百度公司地址介绍
当碰到较小自动时间步时,我们应采取哪些策略来提高仿真效率?本文我们列举了一些示例,并讨论了如何通过调整求解器设置来应对较小的时间步。在求解器日志中追踪时间步和离散阶次当使用 BDF 时间步进方法检查与时间有关的仿真求解器日志时&…...
wordpress名字修改/济南网站万词优化
1、什么是jQuery jQuery是一个JavaScript函数库。 jQuery是一个轻量级的"写的少,做的多"的JavaScript库。 jQuery库包含以下功能: HTML元素选取 HTML元素操作 CSS操作 HTML事件函数 JavaScript特效和动画 HTML DOM遍历和修改 AJAX Utilites 提…...
重庆网站建设零臻靠谱/无经验能做sem专员
目录 〇,最强大脑同款游戏 《第1-4季》 一,盲填数独 二,盲指过天桥 三,盲填折线数独 四,盲填骑士跳 五,七阶幻立方 六,泰森多边形 七,分形 八,数独王中王&…...
网站建设的软件/seo博客模板
来看看strdup在Glibc 2.20(标准C库)中的实现: 默认参数s不为空指针,这个在我们的数据结构库中是有问题的 改进: 当前版本g编译器不允许析构函数抛异常这么做 打印出来结果:1 3 然后程序崩溃 我们都删除了…...
徐州做网站费用/北京百度推广代理公司
2019独角兽企业重金招聘Python工程师标准>>> Jenkins是代码持续集成工具,Sonar则是一个代码质量管理平台。在编译代码时,可以使用SonarQube提供的sonar-maven-plugin插件执行执行sonar代码质量检查,将检查结果传给SonarQube服务器…...
沈阳网站制作找网势科技/百度客服在线咨询
第一,谈谈final, finally, finalize的区别。第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class 和 Inner Class的不同,说得越…...