derekxmartin/SentinelSIEM

GitHub: derekxmartin/SentinelSIEM

基于 Go 和 Elasticsearch 构建的单二进制 SIEM 平台,支持 Sigma 规则、ECS 标准化和跨源关联检测。

Stars: 0 | Forks: 0

# SentinelSIEM 一个使用 Go 构建并由 Elasticsearch 支持的安全信息与事件管理(SIEM)概念验证平台。设计作为 Sentinel 安全产品组合的核心检测与调查大脑。 ## 为什么选择 SentinelSIEM? 大多数 SIEM 平台要么是内部机制不透明的昂贵商业产品,要么是需要将十几个松散耦合的工具拼凑在一起的开源项目。SentinelSIEM 采用了一种不同的方法: - **单二进制文件的简洁性。** 每个组件都是一个独立的 Go 二进制文件 —— 无需 JVM,无需 Python 运行时,无需容器编排。构建它,复制它,运行它。 - **原生 Sigma 支持。** 检测规则使用 [Sigma](https://github.com/SigmaHQ/sigma),这是全球数千名检测工程师使用的开放标准。首日即附带 3000 多条社区规则。无需学习专有的规则语言。 - **ECS 优先的标准化。** 来自每个来源的每个事件在进入存储之前都会被标准化为 [Elastic Common Schema](https://www.elastic.co/guide/en/ecs/current/index.html)。跨源关联之所以有效,是因为数据模型是一致的,而不是因为您编写了自定义连接。 - **跨产品组合关联。** SentinelSIEM 原生关联 EDR、AV、DLP、Windows 和 syslog 来源。在一台主机上的恶意软件检测加上同一用户在 15 分钟内的 DLP 策略违规?那是一个警报,而不是两个控制台中的两个工单。 - **内置案例管理。** 警报升级、可观测对象跟踪、分析师协作和解决指标,无需 TheHive 或 ServiceNow 等外部工具。 - **透明且可定制。** 整个代码库是可读的 Go 代码,依赖项极少。如果您想添加解析器,请编写一个实现了一个接口的结构体。如果您想添加检测,请编写一个 YAML 文件。 SentinelSIEM 专为那些想要理解其工具而不仅仅是操作它们的安全团队而设计。 ## 它的功能 SentinelSIEM 从多个安全来源摄取遥测数据,将事件标准化为 ECS,实时评估 Sigma 检测规则,并提供用于威胁狩猎的查询接口 —— 所有这些都通过具有内置案例管理的基于 React 的仪表板实现。 ### 数据源 | Source | Protocol | Status | Description | |--------|----------|--------|-------------| | SentinelEDR | JSON/HTTP | 已实现 | 端点行为遥测(进程、网络、注册表、文件事件) | | Sentinel AV | JSON/HTTP | 已实现 | 恶意软件扫描结果、隔离操作、实时拦截 | | Sentinel DLP | JSON/HTTP | 已实现 | 数据分类、策略违规、可移动媒体事件 | | Windows Event Logs | WEF/HTTP | 已实现 | 通过 XML 或 Winlogbeat JSON 的 Security、Sysmon 和系统事件 | | Syslog | TCP/UDP/TLS | 已实现 | 防火墙、Linux auditd、网络设备(RFC 5424 & 3164) | ### 摄取管道 - **HTTP 端点** (`/api/v1/ingest`) — NDJSON 和 JSON 数组批处理支持,API 密钥认证,单 IP 限速 - **WEF 端点** (`/api/v1/ingest/wef`) — Windows Event Forwarding,自动检测 XML 与 JSON 负载,BOM 处理,批量 XML 拆分 - **Syslog 监听器** — 可配置端口上的 TCP(换行符分隔 + 八位字节计数帧)、UDP 和 TLS,具有连接限制和空闲超时 - **标准化引擎** — 在启动时注册的按源类型解析器,通过 `source_type` 字段路由。可通过 `normalize.Parser` 接口扩展 - **Syslog 子解析器** — 用于结构化字段提取的 YAML 驱动正则表达式配置(附带 iptables、auditd、通用 KV)。正则表达式在启动时使用 Go 的 RE2 引擎预编译(线性时间,无 ReDoS) ### 检测引擎 - **Sigma 规则** — 开放标准 YAML 检测格式的原生解析和评估 - **单事件规则** — 具有完整修饰符支持的字段匹配(`contains`、`re`、`cidr`、`base64`、`all` 等) - **关联规则** — 多事件模式:`event_count`(阈值)、`value_count`(不同值)、`temporal`(时间窗口内的有序序列) - **跨产品组合检测** — 关联 EDR + AV + DLP 来源以检测多阶段攻击链的规则 - **热重载** — 文件监视器 + CLI 触发器,用于零停机规则更新 ### 案例管理 内置事件响应工作流:警报升级、可观测对象提取(IP、哈希、域、用户名)、通过时间轴进行的分析师协作、MITRE ATT&CK 标记以及带有检测效能指标(MTTD/MTTR)的解决跟踪。 ## 架构 ``` [SentinelEDR] ─┐ [Sentinel AV] ─┤ [Sentinel DLP] ─┤─→ [sentinel-ingest] → [sentinel-normalize] → [sentinel-store (ES)] [Windows WEF] ─┤ ↓ [Syslog] ─┘ [sentinel-correlate] ↓ [alerts + cases in ES] ↓ [sentinel-query / dashboard] ``` | Component | Description | |-----------|-------------| | `sentinel-ingest` | HTTP/syslog/WEF 监听器,API 密钥认证,NDJSON 批处理支持,TLS syslog | | `sentinel-normalize` | ECS 标准化引擎,具有按源类型解析器和 YAML 子解析器 | | `sentinel-store` | Elasticsearch 客户端 —— 索引模板、ILM、批量索引 | | `sentinel-correlate` | 具有关联状态管理的实时 Sigma 规则引擎 | | `sentinel-query` | REST API 服务器,查询语言 → ES DSL 转换,为仪表板提供服务 | | `sentinel-cli` | 用于规则、来源、密钥、健康检查和临时查询的管理 CLI | | `sentinel-dashboard` | React SPA —— 警报分类、案例、威胁狩猎、规则管理、源健康状况 | ## 项目结构 ``` ├── cmd/ │ ├── sentinel-ingest/ # HTTP/syslog ingestion server │ ├── sentinel-correlate/ # Sigma rule evaluation engine │ ├── sentinel-query/ # Query API + dashboard server │ └── sentinel-cli/ # Management CLI ├── internal/ │ ├── common/ # Shared types (ECS event, auth, metrics) │ ├── config/ # TOML config loading │ ├── store/ # Elasticsearch client wrapper │ ├── ingest/ # HTTP/syslog/WEF listeners, pipeline │ ├── normalize/parsers/ # Per-source-type ECS parsers │ ├── correlate/ # Sigma rule engine + logsource mapping │ ├── query/ # Query parser, ES translator, REST API │ ├── cases/ # Case management service │ ├── sources/ # Source configuration + snippets │ └── alert/ # Alert pipeline ├── rules/ # Sigma detection rules │ ├── sigma_curated/ # Curated SigmaHQ community rules │ └── sentinel_portfolio/ # Cross-source correlation rules ├── parsers/ # Logsource maps + syslog sub-parser YAML configs ├── scripts/ # Helper scripts (ES wait, cert gen) ├── web/ # React dashboard └── tests/ # Integration + benchmark tests ``` ## 技术栈 **后端:** Go 1.22+,使用 `go-elasticsearch`、`chi`(路由)、`zap`(日志记录)、`gopkg.in/yaml.v3` **存储:** Elasticsearch 8.x,具有符合 ECS 的索引模板和 ILM 策略 **前端:** React、Tailwind CSS、TanStack Table + Query、Recharts、Nivo(ATT&CK 热力图)、CodeMirror 6(查询编辑器)、Zustand、Headless UI ## 入门指南 ### 前置条件 - Go 1.22+ - Docker & Docker Compose(用于 Elasticsearch) - Node.js 18+(用于仪表板开发) - Make ### 构建 ``` make build # Compiles all binaries to bin/ make test # Runs tests make lint # Runs go vet ``` ### 运行 ``` docker-compose up -d # Start Elasticsearch make run-ingest # Start ingestion server make run-correlate # Start correlation engine make run-query # Start query API + dashboard ``` ### Syslog TLS 设置 ``` ./scripts/gen-certs.sh # Generate self-signed certs for development # 然后在 sentinel.toml 中设置 tls_port、tls_cert、tls_key ``` ## 实现阶段 | Phase | Description | Tasks | Depends On | Status | |-------|-------------|-------|------------|--------| | P0 | 脚手架 —— Go module、Docker Compose、ECS 结构体、配置、ES 客户端 | 5 | — | 完成 | | P1 | HTTP 摄取 + SentinelEDR 解析器 | 4 | P0 | 完成 | | P1a | Sentinel AV & DLP 解析器 + 跨产品组合规则 | 4 | P1 | 完成 | | P2 | Windows 事件日志摄取(XML + Winlogbeat JSON) | 4 | P1 | 完成 | | P3 | Syslog 摄取(TCP/UDP/TLS,RFC 5424 & 3164) | 4 | P1 | 完成 | | P4 | Sigma 单事件检测引擎 | 5 | P1 | 待定 | | P5 | Sigma 关联规则(event_count, value_count, temporal) | 5 | P4 | 待定 | | P6 | 查询语言 + REST API | 4 | P0, P1 | 待定 | | P7 | React 仪表板 + 源配置 | 10 | P6 | 待定 | | P8 | CLI 管理工具 | 4 | P0–P7 | 待定 | | P9 | 案例管理(升级、可观测对象、时间轴) | 7 | P4, P7 | 待定 | | P10 | 集成测试(55 条规则,700 个事件,跨源关联) | 5 | 全部 | 待定 | | P11 | 加固(指标、负载测试、DLQ、优雅关闭) | 4 | 全部 | 待定 | | P12 | AI 调查助手 | 10 | P6, P7, P9 | 待定 | 有关完整规范和任务细分,请参阅 `REQUIREMENTS.md`。 ## 许可证 专有 —— Sentinel Security Portfolio。
标签:AMSI绕过, ECS, EDR, Elasticsearch, EVTX分析, Go, Ruby工具, Sigma规则, Terraform, 威胁检测, 安全信息与事件管理, 安全关联分析, 安全运营, 扫描框架, 搜索引擎爬取, 数据规范化, 日志审计, 目标导入, 端点安全, 网络安全, 脆弱性评估, 补丁管理, 请求拦截, 隐私保护