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许可证, 安全运营中心, 网络映射, 越狱测试, 逆向工具