rehmanwaraich07/SOC-Home-Lab-SIEM-Monitoring-and-Triage

GitHub: rehmanwaraich07/SOC-Home-Lab-SIEM-Monitoring-and-Triage

一个面向检测工程与自动化响应的 SOC 家庭实验室方案,通过 Sigma 规则、Elastic Stack、LimaCharlie 和 Tines 构建从端点遥测到 SOAR 自动化的完整安全运营流水线。

Stars: 1 | Forks: 0

# SOC-Home-Lab-SIEM-监控与Triage 本项目是一个用于检测工程、验证和响应自动化的生产级家庭实验室构建方案。 ## 架构 - **GitHub repo** 是 Sigma 规则和部署代码的单一事实来源。 - **GitHub Actions** 在 pull request 时验证规则,并在合并到 `main` 分支时进行部署。 - **自托管的 Ubuntu runner** 执行 Sigma 转换并与 Elastic/Kibana API 通信。 - **LimaCharlie sensors** 从 Windows 和可选的 Linux 主机收集端点遥测数据。 - **Elastic Stack** 存储遥测数据并运行检测引擎。 - **Tines** 通过 webhook 接收告警,对其进行丰富,创建工单,通知 Slack,并在批准后通过 LimaCharlie 隔离主机。Tines 的 Webhook action 旨在接收 webhook 告警,其 HTTP Request action 用于 REST API 调用。LimaCharlie 还支持 Tines 输出目标,其输出被拆分为 `event`、`detect`、`audit` 和 `deployment` 流。Elastic 的检测 API 是 Kibana API 的一部分,支持创建、检索、更新、列出、导入和导出操作。citeturn912908search0turn912908search1turn495546search6turn495546search0turn857042view0turn752098view2 ## 步骤 1:搭建实验室 创建四个虚拟机: - 用于 Elastic 的 Ubuntu 22.04 - 用于受害者/测试主机的 Windows 10/11 - 可选的 Ubuntu Linux sensor 主机 - Ubuntu 22.04 自托管的 GitHub runner 将 Elastic 和 Tines 的密钥保留在 Windows 主机之外。Runner 只需访问 GitHub 和 Kibana 的网络权限,无需直接访问每个端点。 ## 步骤 2:安装 Elastic Stack 在 Ubuntu 上安装 Elasticsearch 和 Kibana。使用 Kibana 进行检测规则 API 操作,因为 Elastic 的检测 API 位于 Kibana 而不是 Elasticsearch 中。Elastic 提供了通过 Kibana API 以编程方式创建和管理检测规则的文档。citeturn857042view0turn752098view2 ## 步骤 3:安装 LimaCharlie sensors 在 Windows 主机和可选的 Linux 主机上安装 LimaCharlie sensor。使用 `event` 流获取遥测数据,如果以后添加 LimaCharlie 原生检测,可以选择使用 `detect` 流。LimaCharlie 的输出模型将 `event`、`detect`、`audit` 和 `deployment` 流分开,因此在您的设计中要保持这些角色的清晰。citeturn495546search0turn495546search2turn495546search8 ## 步骤 4:将遥测数据发送到 Elastic 配置 LimaCharlie 输出到 Elastic 以获取可搜索的遥测数据。在实验室中,将 event 流发送到 Elasticsearch 进行存储和威胁狩猎。 ## 步骤 5:将 Elastic 告警连接到 Tines 在 Elastic 中构建一个规则操作,将告警数据发送到 Tines webhook。Tines Webhook action 用于接收传入的 webhook 事件,而 Tines HTTP Request action 用于调用 VirusTotal、Slack、TheHive、GitHub 或 LimaCharlie 等 API。citeturn912908search0turn912908search1 ## 步骤 6:在 Tines 中添加自动化 适合此实验室的良好 Tines 流程如下: 1. Webhook 接收 Elastic 告警 2. Transform action 对 payload 进行标准化处理 3. HTTP Request action 使用 VirusTotal 进行丰富 4. HTTP Request action 发送 Slack 消息 5. HTTP Request action 在 TheHive 中创建一个 case 6. 可选的审批步骤 7. HTTP Request action 在 LimaCharlie 中隔离主机 8. HTTP Request action 将响应状态写回 Elastic 或 GitHub LimaCharlie 官方的 Tines 输出文档确认可以通过输出目标将检测或事件发送到 Tines。citeturn495546search6turn912908search0turn912908search1 ## 步骤 7:添加 GitHub CI/CD 仓库应在每次 pull request 时验证 Sigma 语法,并且仅从 `main` 分支进行部署。使用稳定的 `rule_id` 字段并更新现有规则而不是创建重复的规则,以保持部署的幂等性。Elastic 的检测规则 API 支持通过 `rule_id` 或 `id` 检索规则、创建规则、更新规则、导入规则和导出规则。citeturn615743search0turn752098view2turn615743search4turn615743search8 ## 步骤 8:使用 Atomic Red Team 进行验证 在 Windows 主机上运行 Atomic Red Team 以生成真实的遥测数据。这为您提供了针对每个 Sigma 规则的可重复的紫队验证路径,然后由 Tines 处理响应工作流。 ## 仓库结构 ``` detection-as-code/ ├── .github/workflows/detection-ci.yml ├── scripts/deploy_to_elastic.py ├── scripts/validate_sigma.py ├── rules/ │ ├── windows/credential_access/lsass_process_access.yml │ ├── windows/persistence/registry_run_key.yml │ ├── windows/defense_evasion/powershell_encoded_command.yml │ └── linux/command_and_control/suspicious_curl_wget.yml ├── docs/tines_story.md └── detection-engineering-tines.drawio ``` ## 关于修正设计的说明 - 使用 **Kibana** 进行规则管理。 - 使用 **LimaCharlie** 获取端点遥测数据。 - 使用 **Tines** 进行响应自动化和审批。 - 将 **GitHub** 作为检测内容的单一事实来源。 - 保持规则 `rule_id` 稳定,以便将来的重新部署保持干净和幂等。 ## 安全的实验室默认设置 - 使用专用的 Elastic API key。 - 使用专用的 Tines webhook 密钥。 - 为自托管的 runner 使用单独的 GitHub token。 - 在扩展到 Linux 之前,先从单个 Windows 主机开始。
标签:MIT许可证, 安全运营中心, 网络映射, 越狱测试, 逆向工具