热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「驭龙」开源主机入侵检测系统了解一下

传送门:「驭龙」Linux执行命令监控驱动实现解析 0x00 简介驭龙HIDS是一款由 YSRC 开源的入侵检测系统,由 Agent, Daemon, Server 和 Web 四个部分组成。集异常检

传送门:「驭龙」Linux执行命令监控驱动实现解析

 

0x00 简介

驭龙HIDS是一款由 YSRC 开源的入侵检测系统,由 Agent, Daemon, Server 和 Web 四个部分组成。集异常检测、监控管理为一体,拥有异常行为发现、快速阻断、高级分析等功能,可从多个维度行为信息中发现入侵行为。

简单的讲,驭龙提供了一个OSSEC/OSSIM之外的开源HIDS选择。对于“一个人的安全部/没有钱的安全部”来说,是一个功能更丰富,二次开发门槛更低一些的“轮子”。

除了agent中涉及到驱动的部分是c写的,其他后端、web都是golang写的,天然跨平台。agent支持32位/64位win、linux环境,后端所依赖的Elasticsearch、MongoDB本身也支持多平台,所以后端部署在win、linux皆可。如果只有小几百个agent部署实例,最少单台机器就能支撑。

0x01 功能特点



  • 实时监控、秒级响应

  • 全局首次出现概念,可发现未知威胁

  • 支持自定义规则,高扩展性

  • 高级分析功能,可溯源

  • 全局快速阻断(进程、文件)

  • 威胁情报查询(可自定义接口)


0x02 整体架构

Agent为采集者角色,收集服务器信息、开机启动项、计划任务、监听端口、服务、登录日志、用户列表,实时监控文件操作行为、网络连接、执行命令,初步筛选整理后通过RPC协议传输到Server节点。

Daemon为守护服务进程,为Agent提供进程守护、静默环境部署作用,其任务执行功能通过接收服务端的指令实现Agent热更新、阻断功能和自定义命令执行等,任务传输过程使用RSA进行加密。

Server为整套系统的大脑,支持横向扩展分布式部署,解析用户定义的规则(已内置部分基础规则)对从各Agent接收到的信息和行为进行分析检测和保存,可从各个维度的信息中发现webshell写入行为、异常登录行为、异常网络连接行为、异常命令调用行为等,从而实现对入侵行为实时预警。

架构图

测试演示

0x03 web 控制台



  • 控制台拥有以下功能:统计查看、主机查看管理、数据分析、告警处理、任务推送、规则配置、系统设置。

展示驭龙HIDS的各项数据信息,包括:警报分布、警报信息TOP、警报类型统计、主机数、任务、数据总览等等。



  • 主机列表


    展示当前已部署agent的主机列表,可通过搜索功能和快速标签进行筛选并进行实时监控主机行为和查看关键信息。




  • 主机信息查看

  • 实时监控

  • 警告所有触发规则的记录都会在此显示,通过此面板进行处置,网络连接、进程和文件可在此面板进行全网阻断。

  • 任务可通过此功能对指定主机发送任务指令,包括以下:



  • kill: 结束进程(传入进程名)

  • uninstall: 卸载自身

  • update: agent更新

  • delete: 文件删除(传入文件路径)

  • exec: 自定义命令(这个功能其实比较“危险”,所以对外发布的代码中我们注释掉了。如需启用这个功能,请去掉注释,自行编译agent)

  • reload: 重启agent

  • quit: 结束自身



  • 规则引擎定义告警规则,可通过此面板进行添加、修改、删除、启用、关闭、导出,具体格式可查看规则编写文档。

其他还有些设置相关的,这边就不再贴了。

0x04 规则

具体的规则格式、结构、字段定义请参照Github上的文档。

这里引用职业欠钱前辈写的《大型互联网企业入侵检测实战总结》中关于入侵检测基本原则的描述,在定义规则的时候可以思考一下。


  1. 不能把每一条告警都彻底跟进的模型,等同于无效模型 ——有入侵了再说之前有告警,只是太多了没跟过来/没查彻底,这是马后炮,等同于不具备发现能力;

  2. 我们必须屏蔽一些重复发生的相似的误报告警,以集中精力对每一个告警都闭环掉 —— 这会产生白名单,也就是漏报,因此单个模型的漏报是不可避免的;

  3. 由于任何单模型都会存在漏报,所以我们必须在多个纬度上做多个模型,形成纵深 —— 假设WebShell静态文本分析被黑客变形绕过了,在RASP(运行时环境)的恶意调用还可以监控到,这样可以选择接受单个模型的漏报,但在整体上仍然不漏;

  4. 任何模型都有误报漏报,我们做什么,不做什么,需要考虑的是“性价比” —— 比如某些变形的WebShell可以写成跟业务代码非常相似,人的肉眼几乎无法识别,再追求一定要在文本分析上进行对抗,就是性价比很差的决策,通过RASP的检测方案,其性价比更高一些;

  5. 我们不可能知道黑客所有的攻击手法,也不可能针对每一种手法都建设策略(不具备性价比),但是,针对重点业务,我们可以通过加固的方式,让黑客能攻击的路径极度收敛,仅在关键环节进行对抗(包括加固的有效性检测)可能会让100%的目标变得现实


基于上述几个原则,我们可以知道一个事实,或许,我们永远不可能在单点上做到100分,但是,我们可以通过一些组合方式,让攻击者很难绕过所有的点。

更多细节的介绍以及系统部署、编译步骤、规则编写的文档请参照GitHub  https://github.com/ysrc/yulong-hids

0x05  又及

驭龙项目目前的开源版本已经可以正常使用,基础功能也基本都有了。

但是目前并没有完全开发完毕,这边列了一些 To do:


  • 建立入侵行为case库,自动化重放case模拟测试

  • 机器学习判断可疑行为,作为规则之外的补充

  • 资产盘点,例如识别补丁,应用版本、负责人,各种包/kernel版本…辅以漏洞库,能更快速的应急响应,哪些必须要修,那些不修可以接受

  • 区分通讯模式(主动、被动)

  • 使用消息队列代替RPC

  • 基线核查,没有代码能力的社区成员也可以整理好相关文档,YSRC来实现

  • 幻影蜜罐,agent动态代理蜜罐端口,大规模提升蜜罐覆盖密度

  • 支持多场景(办公环境、Docker),目前驭龙仅适合线上服务器环境

  • 轻量级的linux内核防护,在不升级内核的情况下,免疫一些攻击

除了希望社区在二次开发过程中会回馈一部分代码给上游之外,YSRC这边急需补充一些人手:

渗透测试核心,不限学历,要求无黑产经历,熟悉各种渗透姿势,猥琐流;

资深golang开发,配合安全同事、带领开发同事进行功能及架构迭代;

具体JD就不写了,跟大部分厂商的要求大同小异。

地点base苏州,感兴趣的可以关注公众号后对话或者发送简历至 sec@ly.com

最后,感谢驭龙项目的两位核心开发同事 wolf、nearg1e,贡献了驱动代码的Z000000、mlsm,帮助review驱动代码的 taylor3768,以及对外测试期间提供了协助、反馈及建议的 kingjin、superhuahua、Johnny

你们的贡献在开源社区留下了自己的印记

we salute you~

YSRC 坚持开源不易,git clone 的时候顺手转发一下文章吧

关注公众号后回复 驭龙,加入驭龙讨论群。


推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • Elasticsearch 嵌套调用中动态类导致数据返回异常分析与解决方案 ... [详细]
  • 本文详细介绍了如何在Azure DevOps Services和Azure DevOps Server中调整时区设置,以及这些设置对不同功能的影响。 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文探讨了一种统一的语义数据模型,旨在支持物联网、建筑及企业环境下的数据转换。该模型强调简洁性和可扩展性,以促进不同行业间的插件化和互操作性。对于智能硬件开发者而言,这一模型提供了重要的参考价值。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 本文深入解析了Elasticsearch写入与查询的底层机制。在数据写入过程中,首先会将数据暂存至内存缓冲区,在此阶段数据尚不可被搜索。同时,为了保证数据的持久性和可靠性,系统会将这些数据同步记录到事务日志(translog)中。当内存缓冲区接近满载时,系统会触发刷新操作,将缓冲区中的数据写入到磁盘上的段文件中,从而使其可被搜索。此外,文章还探讨了查询过程中涉及的索引分片、倒排索引等关键技术,为读者提供了全面的技术理解。 ... [详细]
  • MySQL 数据变更后如何实现实时同步至 Elasticsearch
    在 MySQL 数据变更后,如何实现与 Elasticsearch 的实时同步是一个常见的需求。本文介绍了通过配置 MySQL 的 Binlog 功能,结合中间件如 Canal 或 Debezium,将数据变更事件实时捕获并同步到 Elasticsearch 中的方法。此外,还探讨了如何处理数据删除操作,确保 Elasticsearch 中的数据与 MySQL 保持一致。文章还简要对比了 VSCode 和 Dev 两种开发环境的优缺点,为开发者提供参考。 ... [详细]
  • 人人租机作为国内领先的信用免押租赁平台,为企业和个人提供全方位的新租赁服务。通过接入支付宝小程序功能,该平台实现了从零到百的迅猛增长,成为全国首家推出“新租赁小程序”开发服务的阿里巴巴小程序服务商(ISV)。这一创新举措不仅提升了用户体验,还显著增强了平台的市场竞争力。 ... [详细]
author-avatar
mobiledu2502914555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有