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

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 的主机列表,可通过搜索功能和快速标签进行筛选并进行实时监控主机行为和查看关键信息。

  • 主机信息查看

  • 实时监控

  • 数据分析

    通过此功能可搜索分析查看所有从 agent 收集到的信息,包括以下:用户列表、服务列表、开机启动项、计划任务、监听端口、登录日志、文件行为、网络连接、执行命令以及统计信息。可对整个企业主机行为信息进行人工分析和入侵行为进行溯源。

  • 警告

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

  • 任务

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

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

  • uninstall: 卸载自身

  • update: agent 更新

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

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

  • reload: 重启 agent

  • quit: 结束自身

  • 规则引擎

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

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

0x04 规则

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

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

  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 苏州,感兴趣的可以关注公众号后对话或者发送简历至 [email protected]

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

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

we salute you~

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

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

往期文章

思科 Smart Install 远程命令执行漏洞探测及应急处置 (opens new window)

利用插件对 Chrome 进行 UXSS (opens new window)

驭龙 EventLog 读取模块的迭代历程 (opens new window)

巡风已支持检测 CVE-2017-3506 weblogic 漏洞 (opens new window)

moloch 网络流量回溯分析系统 (opens new window)

Exploiting Python PIL Module Command Execution Vulnerability (opens new window)

同程旅游四层负载实战 (opens new window)

基于 ASM 的 java 字符串混淆工具实现 (opens new window)

为 OLLVM 添加字符串混淆功能 (opens new window)

Jenkins 高危代码执行漏洞检测 / 开源漏洞靶场 (opens new window)

Eat.Hack.Sleep.Repeat - YSRC 第二期夏日安全之旅 (opens new window)

带你一程,守卫者们,集结了! (opens new window)

Django 的两个 url 跳转漏洞分析: CVE-2017-7233&7234 (opens new window)

应急不扎心 巡风现已支持检测 S2-045 漏洞 (opens new window)

同程安全研究员获谷歌、腾讯安全致谢 (opens new window)

Android 字符串及字典混淆开源实现 (opens new window)

我可能是用了假的隐身模式 (opens new window)

同程旅游 Hadoop 安全实践 (opens new window)

点我的链接就能弹你一脸计算器 (opens new window)

点我的链接我就能知道你用了哪些 chrome 插件 (opens new window)

YSRC 诚意之作,巡风 - 企业安全漏洞快速应急、巡航系统 (opens new window)

基于文件特征的 Android 模拟器检测 (opens new window)

Android 逆向与病毒分析 (opens new window)

F-Scrack 弱口令检测脚本 (opens new window)

unsafe 模式下的 CSP Bypass (opens new window)

被动扫描器 GourdScan v2.0 发布! (opens new window)

Android App 常见逆向工具和使用技巧 (opens new window)

XSS Trap - XSS DNS 防护的简单尝试 (opens new window)

A BLACK PATH TOWARD THE SUN - HTTP Tunnel 工具简介 (opens new window)

初探 Windows Fuzzing 神器 ----Winafl (opens new window)

全文完

本文由 简悦 SimpRead (opens new window) 优化,用以提升阅读体验

使用了 全新的简悦词法分析引擎 beta,点击查看 (opens new window)详细说明

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

Last Updated: 2022/7/8 下午2:41:42