Samir-K9/SOC-Automation-Lab
GitHub: Samir-K9/SOC-Automation-Lab
一个集成 Wazuh、Shuffle 与 TheHive 的 SOC 自动化实验室,用于加速威胁检测、情报关联与事件响应。
Stars: 0 | Forks: 0
# SOC自动化实验室
## 目标
SOC自动化实验室项目对于我加深对安全运营的理解以及培养作为一名安全分析师的技能至关重要。我专注于使用这个平台来构建自动化安全运营的能力。与不同的安全工具合作让我获得了实践经验,这提升了我的技术知识以及通过自动化加快威胁检测和响应的能力。
### 获得的技能
- 开发了安全流程的自动化技能,提升了运营效率并减少了人为错误。
- 创建了用于威胁检测的自定义脚本,例如识别和缓解像 Mimikatz 这样的复杂工具,增强了 SOC 应对高级网络安全威胁的能力。
- 获得了系统化的事件记录、分析和管理的专业知识,确保对安全事件进行有组织、策略性的响应。
- 提高了使用威胁情报平台进行深入分析的能力,提升了告警准确性和威胁缓解效果。
- 获得了在多种环境中配置和管理安全基础设施的实践经验,包括云平台,以支持 SOC 运营。
- 增强了在 SOC 中集成和管理不同操作系统的能力,确保了健壮且全面的安全态势。
## 先决条件
### 硬件要求
- 一台具备足够 CPU、内存和磁盘空间的主机,以支持虚拟机及其预期的工作负载。
### 软件要求
| 软件 | 描述 |
|----------|-------------|
| **VMware** | 用于创建和管理虚拟机的软件平台。 |
| **Windows 10** | 用于模拟真实世界安全威胁的客户端设备,允许测试和调整 SOC 自动化工作流程。 |
| **Ubuntu 22.04** | 用于部署 Wazuh 和 TheHive 的 Linux 发行版,将托管在云端。 |
| **Sysmon** | 提供系统活动详细信息的 Windows 系统服务与设备驱动程序。 |
### 工具与平台
| 工具 | 描述 |
|------|-------------|
| **Wazuh** | 一个开源的安全监控平台,提供入侵检测、安全信息与事件管理(SIEM)以及日志管理能力。 |
| **Shuffle** | 一个开源的安全编排、自动化与响应(SOAR)平台,旨在帮助安全团队自动化并简化其安全运营。 |
| **TheHive** | 一个开源、可扩展的安全事件响应平台(SIRP),旨在协助安全团队高效地管理、调查和响应安全事件。 |
| **VirusTotal** | 一个免费的在线服务,用于分析文件、URL 和其他潜在有害内容以检测恶意软件、病毒及其他威胁类型。 |
| **Digital Ocean** | 将托管 Wazuh 和 TheHive 的云基础设施提供商。 |
| **Mimikatz** | 一个广泛使用的开源工具,专用于网络安全中的后利用活动,尤其用于测试 Windows 环境的安全性。 |
## 工作流程概述

- **遥测生成:** 在 Windows 10 虚拟机上启动 Mimikatz 以模拟恶意行为,从而生成将被 Sysmon 捕获的遥测数据。
- **告警生成:** Sysmon 数据被 Wazuh 代理采集,然后转发到 Wazuh 服务器。基于预设规则和配置生成告警。
- **告警处理:** Shuffle 从 Wazuh 接收告警,并使用 VirusTotal 对威胁分析进行威胁情报平台(IOC)增强。
- **事件管理:** Shuffle 将告警发送到 TheHive,后者创建事件以进行事件响应和调查。
- **响应自动化:** 分析人员将在 Shuffle 中选择适当的响应操作,然后通过 Wazuh 管理器编排这些操作在 Wazuh 代理上的执行。
## 步骤
### 步骤 1:在 VMware 上安装 Windows 10 并配置 Sysmon
- 在 VMware 上安装 Windows 10 并下载 Sysmon。
- 从 [Sysmon 模块化配置](https://github.com/olafhartong/sysmon-modular) 下载 Sysmon 配置文件。
- 解压下载的 Sysmon 压缩包,并将配置文件放置在同一目录中。
- 最后,以管理员身份运行 PowerShell 并切换到同一目录,使用以下命令安装 Sysmon:
```
.\Sysmon64.exe -i .\sysmonconfig.xml
```

- 通过检查正在运行的服务来验证 Sysmon 是否已安装。

### 步骤 2:在 DigitalOcean 上构建 Wazuh 服务器
- 在 DigitalOcean 上创建一个新的云滴(droplet)以搭建具有以下规格的 Wazuh 服务器:
- 操作系统:Ubuntu 22.04(LTS)x64
- 滴类型:基础型
- CPU 选项:高级英特尔(8GB 内存,160GB 存储)
- 密码:(创建我们自己的 root 密码)
- 主机名:Wazuh
- 通过左侧导航栏选择“网络”并点击“防火墙”选项卡来设置防火墙。
- 修改入站防火墙规则,仅允许来自我们自身公网 IP 地址的访问。

- 将新的防火墙规则应用到 Wazuh 云滴。

- 使用 SSH 连接到 Wazuh 服务器并运行以下命令以更新、升级系统并安装 Wazuh:
```
sudo apt-get update && sudo apt-get upgrade
```
```
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh && sudo bash ./wazuh-install.sh -a
```
- 复制用户名和密码,并访问 Wazuh Web 界面使用这些凭据登录。

### 步骤 3:在 DigitalOcean 上构建 TheHive
- 按照在 DigitalOcean 上与 Wazuh 相同的步骤来托管 TheHive,并添加相同的防火墙规则。
- 使用 SSH 连接到 TheHive 并安装依赖项。
**安装依赖项:**
```
apt install wget gnupg apt-transport-https git ca-certificates ca-certificates-java curl software-properties-common python3-pip lsb-release
```
**安装 Java:**
```
wget -qO- https://apt.corretto.aws/corretto.key | sudo gpg --dearmor -o /usr/share/keyrings/corretto.gpg
echo "deb [signed-by=/usr/share/keyrings/corretto.gpg] https://apt.corretto.aws stable main" | sudo tee -a /etc/apt/sources.list.d/corretto.sources.list
sudo apt update
sudo apt install java-common java-11-amazon-corretto-jdk
echo JAVA_HOME="/usr/lib/jvm/java-11-amazon-corretto" | sudo tee -a /etc/environment
export JAVA_HOME="/usr/lib/jvm/java-11-amazon-corretto"
```
**安装 Cassandra:**
```
wget -qO- https://downloads.apache.org/cassandra/KEYS | sudo gpg --dearmor -o /usr/share/keyrings/cassandra-archive.gpg
echo "deb [signed-by=/usr/share/keyrings/cassandra-archive.gpg] https://debian.cassandra.apache.org 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
sudo apt update
sudo apt install cassandra
```
**安装 ElasticSearch:**
```
wget -qO- https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt install elasticsearch
```
**安装 TheHive:**
```
wget -O- https://archives.strangebee.com/keys/strangebee.gpg | sudo gpg --dearmor -o /usr/share/keyrings/strangebee-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/strangebee-archive-keyring.gpg] https://deb.strangebee.com thehive-5.2 main' | sudo tee -a /etc/apt/sources.list.d/strangebee.list
sudo apt-get update
sudo apt-get install -y thehive
```
- 通过修改以下文件来配置 Cassandra:
```
nano /etc/cassandra/cassandra.yaml
```
- 将 `listen_address` 修改为 TheHive 的公网 IP。
- 将 `rpc_address` 修改为 TheHive 的公网 IP。
- 将 `seeds` 修改为 TheHive 的公网 IP(例如 `178.128.228.152:7000`)。
- 停止 Cassandra 服务,删除旧文件,然后重启:
```
systemctl stop cassandra.service
rm -rf /var/lib/cassandra/*
systemctl start cassandra.service
systemctl status cassandra.service
```
- 通过修改以下文件来设置 ElasticSearch:
```
nano /etc/elasticsearch/elasticsearch.yml
```
- 取消注释并修改 `cluster.name` 为 `thehive`。
- 取消注释 `node.name`。
- 取消注释并修改 `network.host` 为 TheHive 的公网 IP。
- 取消注释 `http.port`。
- 取消注释 `cluster.initial_master_nodes` 并移除 `node-2`。
- 启动并启用 ElasticSearch:
```
systemctl start elasticsearch
systemctl enable elasticsearch
systemctl status elasticsearch
```
- 确保 thehive 用户和组对所需文件路径具有访问权限:
```
ls -la /opt/thp
chown -R thehive:thehive /opt/thp
```
- 配置 TheHive 配置文件:
```
nano /etc/thehive/application.conf
```
- 将数据库和索引配置主机名修改为 TheHive 的公网 IP。
- 将 `cluster-name` 修改为与 Cassandra 相同(例如 `Test Cluster`)。
- 将 `application.baseURL` 修改为 TheHive 的公网 IP(例如 `http://178.18.228.152:9000`)。
- 启动并启用 TheHive:
```
systemctl start thehive
systemctl enable thehive
systemctl status thehive
```
- 导航至 TheHive 的公网 IP 并使用端口 9000 登录,默认凭据为:`admin@thehive.local` / `secret`。

### 步骤 3:配置 Wazuh
- 登录 Wazuh Manager 并添加一个 Windows 代理,服务器地址填写 Wazuh 服务器的公网 IP。
- 分配一个代理名称并复制安装命令。

- 在 VMware 中打开 Windows 10,使用管理员权限运行 PowerShell 并粘贴安装命令后执行。

- 使用以下命令启动 Wazuh 服务:
```
net start wazuhsvc
```
- 通过进入“开始菜单”中的“服务”来检查 Wazuh 是否正在运行,确认在 Wazuh Manager 中有一个活跃的代理。

### 步骤 4:生成遥测并将其摄入到 Wazuh
- 在 Windows 10 机器上,使用管理员权限打开 `ossec.conf`。导航至 `C:\Program Files (x86)\ossec-agent\ossec.conf` 找到该文件。
- 移除此项目相关的 Application、Security 和 System 部分。仅通过以下更改使 Sysmon 事件被摄入到 Wazuh:

- 保存 `ossec.conf` 文件并在服务中重启 Wazuh。

- 下载 Mimikatz,暂时禁用 Windows Defender 或将下载目录排除在扫描之外。
- 成功下载 Mimikatz 后,打开 PowerShell 并切换到 Mimikatz 目录,然后执行它。

- 配置 Wazuh 以记录此事件,通过修改 `ossec.conf`:
- 使用 SSH 连接到 Wazuh 服务器并修改 `ossec.conf`:
```
nano /var/ossec/etc/ossec.conf
```
- 将 `` 和 `` 从 `no` 修改为 `yes`。
- 重启 Wazuh Manager 服务:
```
systemctl restart wazuh-manager.service
```
- 修改 Filebeat 配置,因为日志保存在归档文件中需要被摄入:
```
nano /etc/filebeat/filebeat.yml
```
- 将 `enabled: false` 修改为 `true`,保存文件并重启 Filebeat:
```
systemctl restart filebeat
```
- 在 Wazuh 仪表板中创建一个名为 `wazuh-archives-*` 的新索引。在左侧菜单中,转到 **Stack Management > Index Management** 以使用时间字段创建此索引。
- 在 Windows 10 机器上执行 Mimikatz,日志应出现在我们的索引中。

- 从 Wazuh 仪表板创建一个使用 `originalFileName` 字段的自定义规则,以确保即使攻击者更改了 Mimikatz 可执行文件名,告警仍会被触发。
- 在“管理”部分选择“规则”,进入“管理规则文件”并找到 Sysmon 规则。这些是内置在 Wazuh 中用于事件 ID 1 的 Sysmon 专用规则。复制其中一条规则作为参考,并修改它以创建自定义的 Mimikatz 检测规则。

- 点击“自定义规则”按钮并编辑 `local_rules.xml` 文件。粘贴规则并进行以下修改。

- 通过将 `mimikatz.exe` 重命名为 `potato.exe` 并执行它来测试该规则。

- 该自定义规则将在 Wazuh 中触发针对 Mimikatz 的告警,即使我们重命名了该文件。

### 步骤 5:连接 Shuffle (SOAR) 并将告警发送到 TheHive 并通过电子邮件通知 SOC 分析员
- 访问 shuffler.io 并创建一个 Shuffle 账户。
- 点击“新建工作流”,创建一个名为 SOC Automation Lab 的新工作流,并设置任意随机用例。
- 通过点击左下角的“触发器”添加一个 Webhook 触发器,并将其连接到“修改我”节点。为 Webhook 设置一个名称,并从右侧复制 Webhook URI。

- 点击“修改我”节点,将其设置为“重复回复给我”模式。对于调用选项,选择“执行参数”。保存工作流。
- 通过 SSH 连接到 Wazuh Manager 并修改以下文件:
```
nano /var/ossec/etc/ossec.conf
```
将以下集成添加到该文件中:
```
shuffle
https://shuffler.io/api/v1/hooks/webhook_0af8a049-f2cb-420b-af58-5ebc3c40c7df
3
json
```

- 重启 Wazuh Manager 服务:
```
systemctl restart wazuh-manager.service
```
- 在 Windows 10 客户端机器上执行 Mimikatz,Shuffle 中应出现相关事件。在 Shuffle 中点击 Webhook 触发器(“Wazuh-Alerts”)并点击“开始”。

**创建 Mimikatz 工作流程:**
1. 将 Mimikatz 告警 Shuffle。
2. Shuffle 接收告警并提取文件哈希值 SHA256。
3. 使用 VirusTotal 检查信誉评分。
4. 将详细信息发送到 TheHive 以创建告警。
5. 向 SOC 分析员发送电子邮件以开始调查。
- 要自动化此工作流程,我们需要解析出哈希值。点击“修改我”节点,选择“正则表达式捕获组”而不是“重复回复给我”。在“输入数据”中选择“hashes”选项。在“正则表达式”选项卡中输入用于解析 SHA256 哈希值的正则表达式模式:`SHA256=([A-Fa-f0-9]{64})`。将“修改我”重命名为“SHA256_Regex”并保存工作流。

- 前往 VirusTotal 网站,创建账户并复制 API 密钥。
- 在 Shuffle 中,点击“应用”选项卡,搜索“VirusTotal”。将“VirusTotal”应用拖到工作流中,它将自动连接。
- 点击 VirusTotal 并粘贴您的 API 密钥以进行身份验证。将“查找操作”更改为“获取哈希报告”,并将“ID”字段更改为之前创建的 SHA256_Regex 值。

- 保存工作流并重新运行。VirusTotal 将返回包含恶意检测数量的输出。

- 在 Shuffle 中搜索 TheHive 并将其拖到工作流中。
- 前往 TheHive 并使用默认凭据登录:`admin@thehive.local` / `secret`。
- 登录后,创建一个新组织。

- 向这个新组织添加用户。添加一个分析师账户和一个用于 SOAR 的账户。

- 为分析师账户设置密码,并为 SOAR 创建 API 密钥并复制它。
- 退出 TheHive 并使用您的用户账户重新登录。

- 在 Shuffle 中,点击“TheHive1”节点,然后点击“验证 TheHive”按钮并输入之前创建的 API 密钥。对于 URL,输入 TheHive 的公网 IP 地址加上端口号 9000,然后点击提交。

- 在“查找操作”下,点击“TheHive”并选择“创建告警”。点击“高级”并使用以下 JSON 有效负载编辑正文:
```
{
"description": "Mimikatz Detected on host:",
"externallink": "",
"flag": false,
"pap": 2,
"severity": "2",
"source": "Wazuh",
"sourceRef": "Rule:100002",
"status": "New",
"summary": "Details about the Mimikatz detection",
"tags": ["T1003"],
"title": "Mimikatz Detection Alert",
"tlp": 2,
"type": "Internal"
}
```
- 保存工作流。在 DigitalOcean 上添加一个自定义防火墙规则以允许端口 9000 的所有流量。

- 重新运行工作流,如果一切正常,TheHive 中应该会弹出告警。


- 要向 SOC 分析员发送有关该告警的电子邮件通知,请在 Shuffle 中搜索“Email”应用。将其拖到工作流中并连接到 VirusTotal。
- 配置电子邮件设置,包括收件人、主题和正文,以发送包含相关事件信息的告警电子邮件。

- 最后,保存工作流并重新运行。现在应该会向该地址发送一封包含告警详细信息的电子邮件。

## 结论
我们构建并配置了 SOC 自动化实验室,集成了 Wazuh、TheHive 和 Shuffle,以自动化事件监控、告警和事件响应。此设置为进一步定制和扩展自动化工作流程以更好地符合我们特定的 SOC 需求奠定了坚实的基础。通过这个实验室,我们获得了使用强大的开源工具实现自动化 SOC 工作流程的实际经验。这些知识现在使我们能够增强组织的安全运营、加快事件响应时间并优化 SOC 流程。
标签:AMSI绕过, CIDR查询, masscan, Mimikatz, OISF, Shuffle, SOAR, SOC自动化, Sysmon, TheHive, Ubuntu 22.04, VMware, Wazuh, Windows 10, 威胁情报平台, 威胁检测, 安全基础设施, 安全运营, 扫描框架, 数字取证, 日志管理, 智能代码审计, 自动化脚本, 跨平台集成, 速率限制