TerrifiedBug/chad

GitHub: TerrifiedBug/chad

CHAD 是一个基于 OpenSearch 的轻量级 Sigma 检测引擎,为安全团队提供低成本、无供应商锁定的实时威胁检测能力,填补了日志存储与传统 SIEM 之间的空白。

Stars: 0 | Forks: 0

# CHAD - Cyber Hunting And Detection **CHAD** 是一个轻量级、Sigma 优先的检测引擎,专为将日志存储在 **OpenSearch** 中,但不想承担传统 SIEM 的成本、复杂性或供应商锁定的团队而设计。 它专注于做一件事并做到极致: CHAD *不是* 一个完整的 SIEM。它旨在刻意填补廉价的日志存储与昂贵、重量级 SIEM 平台之间的空白。 ## 为什么要有 CHAD 当今许多安全团队: - 已经将日志发送到 OpenSearch 或 Elasticsearch - 将其用作数据湖,因为它更便宜且更灵活 - 仍然需要真正的检测,而不仅仅是仪表盘 现有的选项通常会陷入以下陷阱之一: | 方案 | 问题 | |----------|---------| | 完整的 SIEM(Splunk、Sentinel) | 成本高,供应商锁定 | | 定时查询告警 | 噪音大、难以管理、存在延迟 | | 内置的“安全分析” | 不成熟、不灵活、Sigma 支持有限 | CHAD 通过提供一个位于 OpenSearch 之上的**专用检测引擎**来弥合这一差距。 ## CHAD 是什么(以及不是什么) ### CHAD **是**: - 一个原生支持 Sigma 的检测引擎 - 专为 OpenSearch 用户设计 - 事件驱动且接近实时 - API 优先且对自动化友好 - 专注于告警质量和规则维护 ### CHAD **不是**: - 一个完整的 SIEM - 一个日志存储平台 - 一个 UEBA 或 SOAR 系统 - 仪表盘或调查工具的替代品 CHAD 假设您的日志已经存在于 OpenSearch 中,并纯粹专注于检测。 ## 核心概念 ### Sigma 作为唯一事实来源 所有的检测都是用 **Sigma** 编写的 —— 这是一种开放、供应商中立的检测格式。 Sigma 规则具有以下特点: - 可跨平台移植 - 被安全工程师广泛理解 - 像代码一样进行版本控制 CHAD 使用 [pySigma](https://github.com/SigmaHQ/pySigma) 将 Sigma 规则转换为 OpenSearch 查询 DSL,并将其存储为 percolator。 ### 基于 Percolator 的检测 CHAD 使用 **OpenSearch percolator** 进行检测 —— 这是对常规搜索的一种反转: | 常规搜索 | Percolation | |---------------|-------------| | 存储文档 | 存储查询(规则) | | 对它们运行查询 | 发送一个文档(事件) | | 获取匹配的文档 | 获取匹配的规则 | 这非常适合安全检测。 **为什么使用 percolator?** - 无需维护自定义查询引擎 - 匹配语义与 OpenSearch 搜索完全相同 - OpenSearch 能高效地预过滤候选规则 - 规则集中存储且可搜索 - CHAD 保持无状态且易于操作 ## 架构 ``` ┌─────────────┐ │ Fluentd │ └──────┬──────┘ │ ┌───────────────┼───────────────┐ │ │ │ ▼ ▼ │ ┌─────────────┐ ┌─────────────┐ │ │ OpenSearch │ │ CHAD │ │ │ (storage) │ │ (detect) │ │ └─────────────┘ └──────┬──────┘ │ │ │ ┌───────▼────────┐ │ │ Percolate API │ │ └───────┬────────┘ │ │ │ ┌───────▼────────┐ │ │ Alerts │◄────┘ │ (OpenSearch) │ └───────┬────────┘ │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ ┌────────┐ ┌─────────┐ ┌─────────┐ │Webhooks│ │ Jira │ │ Email │ └────────┘ └─────────┘ └─────────┘ ``` ### 检测流程 1. **Fluentd 将日志发送**到 OpenSearch(用于存储)和 CHAD(用于检测) 2. **CHAD 使用**基于每个 index pattern 的身份验证 token **对请求进行身份验证** 3. **CHAD 将**每个事件与已部署的规则进行 percolate 匹配 4. **匹配的规则**生成包含完整日志上下文的告警 5. **告警被**威胁情报和 GeoIP 丰富 6. **通知通过** webhook、Jira 或其他集成触发 ## 功能 ### 规则管理 - **Monaco YAML 编辑器**,带有 Sigma schema 验证和自动补全 - **字段验证**,基于实际的 OpenSearch index mapping 进行验证 - **版本历史**,带有差异视图和一键回滚功能 - **SigmaHQ 集成** - 浏览、搜索和批量导入社区规则 - **规则测试**,在部署前针对示例日志进行测试 ### 检测 - **实时匹配**,通过 OpenSearch percolator 实现 - **阈值告警** - 基于计数的聚合(例如,5 分钟内 10 次登录失败) - **关联规则** - 多事件检测模式 - **例外规则** - 在不禁用规则的情况下消除误报 ### 丰富 - **威胁情报** - CrowdStrike、MISP、VirusTotal、AbuseIPDB - **IOC 提取** - 自动提取 IP、域名、哈希、URL - **GeoIP 丰富** - 为 IP 地址提供地理上下文 ### 运维 - **MITRE ATT&CK 覆盖图** - 可视化检测盲区 - **健康监控** - 基于每个 index pattern 的延迟和错误跟踪 - **审计日志** - 所有用户操作的完整历史记录 - **批量操作** - 一次性启用、禁用、删除多个规则 ### 安全 - **基于角色的访问控制** - Admin、Analyst、Viewer 角色 - **SSO 支持** - OIDC 和 SAML 集成 - **基于 Index 的身份验证 Token** - 安全的日志发送身份验证 - **IP 允许列表** - 限制哪些来源可以发送日志 ## 快速开始 ### 前置条件 - Docker 和 Docker Compose - 现有的 OpenSearch 集群 - 日志转发器(Fluentd、Logstash 等) ### 1. 克隆并配置 ``` git clone https://github.com/terrifiedbug/chad.git cd chad cp .env.example .env ``` 使用安全的值编辑 `.env`: ``` POSTGRES_PASSWORD=your-secure-password JWT_SECRET_KEY=$(openssl rand -base64 32) SESSION_SECRET_KEY=$(openssl rand -base64 32) CHAD_ENCRYPTION_KEY=$(openssl rand -base64 32) APP_URL=https://chad.example.com ``` ### 2. 启动 CHAD ``` docker compose up -d ``` ### 3. 完成设置向导 打开 `http://localhost` 并完成以下操作: 1. **创建管理员账户** 2. **配置 OpenSearch 连接** 3. **创建第一个 Index Pattern** ### 4. 配置日志传输 必须将日志发送到 CHAD(用于检测)和 OpenSearch(用于存储)**两者**中。 **Fluentd 示例:** ``` @type copy @type http endpoint https://chad.example.com/api/logs/winlogbeat headers {"Authorization": "Bearer YOUR_INDEX_PATTERN_AUTH_TOKEN"} json_array true @type memory flush_interval 1s @type opensearch host opensearch.example.com port 9200 index_name winlogbeat-%Y.%m.%d ``` 从以下位置获取您的身份验证 token:**Index Patterns → [您的 Pattern] → Settings → Auth Token** ## CHAD 的适用人群 | 非常适合 | 不太适合 | |----------|-----------| | 使用 OpenSearch 的安全团队 | 想要一体化 SIEM 的团队 | | 被传统 SIEM 价格劝退的组织 | 没有日志数据湖的环境 | | 希望实现检测即代码的工程师 | 纯粹由 GUI 驱动的安全运营 | | 重视 Sigma 可移植性的团队 | 需要内置 UEBA 的团队 | ## 设计理念 - **检测优先** - 一件事,做到极致 - **简单胜于取巧** - 易于理解和操作 - **无处不在的 Sigma** - 可移植、供应商中立的规则 - **将 OpenSearch 视为合作伙伴** - 充分利用其最擅长的功能 - **让常见场景变得简单** - 让复杂场景成为可能 ## 配置 初始设置完成后,大多数设置都通过 Web UI 进行管理。 ### 环境变量 | 变量 | 必填 | 描述 | |----------|----------|-------------| | `POSTGRES_PASSWORD` | 是 | 数据库密码 | | `JWT_SECRET_KEY` | 是 | JWT 签名密钥 | | `SESSION_SECRET_KEY` | 是 | 会话加密密钥 | | `CHAD_ENCRYPTION_KEY` | 是 | 凭证加密密钥 | | `APP_URL` | 是 | 用于 CSRF、SSO 重定向的公共 URL | | `CHAD_SSO_ONLY` | 否 | 设置为 `true` 以禁用本地登录 | | `LOG_LEVEL` | 否 | 日志详细程度(默认:`warning`) | ### 可通过 GUI 配置的设置 - **OpenSearch** - 连接、凭证、SSL - **Index Patterns** - 日志源、字段映射、身份验证 token - **通知** - webhook、Jira 集成 - **威胁情报** - TI 提供商的 API 密钥 - **身份验证** - SSO(OIDC/SAML)配置 - **AI 映射** - 使用 Ollama、OpenAI 或 Anthropic 提供字段映射建议 ## 开发 ``` # 启动开发环境 docker compose -f docker-compose.dev.yml up -d # 运行后端测试 docker compose -f docker-compose.dev.yml run --rm backend pytest # 运行前端测试 docker compose -f docker-compose.dev.yml run --rm frontend npm test # Linting docker compose -f docker-compose.dev.yml run --rm backend ruff check . docker compose -f docker-compose.dev.yml run --rm frontend npm run lint ``` ## 文档 完整文档请访问:**[docs.chad.terrifiedbug.com](https://docs.chad.terrifiedbug.com)** - [快速入门指南](https://docs.chad.terrifiedbug.com/quickstart) - [架构概述](https://docs.chad.terrifiedbug.com/architecture) - [规则管理](https://docs.chad.terrifiedbug.com/guide/rules) - [字段映射](https://docs.chad.terrifiedbug.com/guide/field-mappings) ## 状态 CHAD 正在积极开发中。欢迎贡献代码、提供反馈和参与设计讨论。 ## 许可证 MIT License - 详情请参阅 [LICENSE](LICENSE)。
标签:AMSI绕过, SIEM组件, Sigma规则, 威胁检测, 安全运营, 扫描框架, 日志告警, 测试用例, 目标导入, 网络安全, 请求拦截, 逆向工具, 隐私保护