mdmujahidhasan/wazuh-virustotal-threat-intelligence-lab

GitHub: mdmujahidhasan/wazuh-virustotal-threat-intelligence-lab

该项目是一个 Wazuh SIEM 与 VirusTotal 威胁情报集成的实操 SOC 实验室,详细记录了完整的配置流程以及 Windows FIM 告警失效时的诊断与变通方案。

Stars: 0 | Forks: 0

# 🛡️ Wazuh + VirusTotal 威胁情报实验室 ![Wazuh](https://img.shields.io/badge/SIEM-Wazuh-1a73e8?style=for-the-badge&logo=wazuh&logoColor=white) ![VirusTotal](https://img.shields.io/badge/Threat%20Intel-VirusTotal-394eff?style=for-the-badge&logo=virustotal&logoColor=white) ![Status](https://img.shields.io/badge/Status-Completed-success?style=for-the-badge) ![Platform](https://img.shields.io/badge/Platform-Ubuntu%20Server-e95420?style=for-the-badge&logo=ubuntu&logoColor=white) 一个实操性的 SOC 实验室,记录了 **VirusTotal 威胁情报** 与 **Wazuh SIEM** 的集成过程,包括一个真实的故障排查场景:Windows FIM 告警未能触发,以及如何对其进行诊断和采取变通方案。 ## 📑 目录 - [概述](#-overview) - [实验环境](#-lab-environment) - [架构](#-architecture) - [初始设置](#-initial-setup) - [配置步骤](#-configuration-steps) - [面临的问题](#-problem-faced) - [根本原因](#-root-cause) - [变通方案](#-workaround-solution) - [测试与验证](#-testing--validation) - [最终结果](#-final-result) - [根本原因总结](#-root-cause-summary) - [经验教训](#-lessons-learned) - [结论](#-conclusion) ## 🔍 概述 本项目记录了一个实操性的 SOC 实验室,其中将 **VirusTotal 威胁情报** 与 **Wazuh SIEM** 集成,以便在 Wazuh dashboard 中生成基于 VirusTotal 的告警。 **主要目标:** 构建一个有效的威胁情报工作流 — ``` File Event → Wazuh FIM/Syscheck → VirusTotal API Lookup → Wazuh Alert → Dashboard ``` ## 🧩 实验环境 | 组件 | 详情 | |---|---| | SIEM | Wazuh | | 服务器 OS | Ubuntu Server | | Endpoint | Windows Agent | | 威胁情报 | VirusTotal API | | Dashboard | Wazuh Dashboard | | 测试目录 | `/opt/vt-test` | | 最终告警来源 | Wazuh FIM + VirusTotal | ## 🏗️ 架构 ``` Windows Endpoint │ │ Wazuh Agent ▼ Ubuntu Wazuh Server │ ├── Wazuh Manager ├── Wazuh Dashboard ├── Wazuh FIM / Syscheck └── VirusTotal Integration │ ▼ VirusTotal API │ ▼ Wazuh Alert ``` ## ✅ 初始设置 在开始集成工作之前,已确认基础环境处于健康状态: - [x] Wazuh Manager 运行中 - [x] Wazuh Dashboard 可访问 - [x] Windows agent 已连接 - [x] 威胁狩猎中可见 Windows 事件日志 - [x] 漏洞检测正常工作 - [x] 已收集 VirusTotal API key 📸 `screenshots/01-wazuh-manager-running.png` ## ⚙️ 配置步骤 ### 步骤 1 — 检查 Wazuh Manager 状态 ``` sudo systemctl status wazuh-manager --no-pager ``` **预期结果:** ``` active (running) ``` ### 步骤 2 — 检查 VirusTotal 集成文件 ``` ls -la /var/ossec/integrations/ ``` **预期文件:** ``` virustotal virustotal.py ``` ### 步骤 3 — 备份 Wazuh 配置 在编辑之前始终备份 `ossec.conf`: ``` sudo cp /var/ossec/etc/ossec.conf /var/ossec/etc/ossec.conf.backup ``` 在添加 `/opt/vt-test` 目录之前,创建了另一个检查点备份: ``` sudo cp /var/ossec/etc/ossec.conf /var/ossec/etc/ossec.conf.before-vt-test ``` 📸 `screenshots/04-ossec-conf-backup.png` ### 步骤 4 — 配置 VirusTotal 集成 编辑 Wazuh Manager 配置文件,并在 **闭合标签 `` 之前** 添加以下代码块: ``` virustotal YOUR_VIRUSTOTAL_API_KEY syscheck json ``` 📸 `screenshots/05-virustotal-config-block.png` ### 步骤 5 — 验证 Wazuh 配置 ``` sudo /var/ossec/bin/wazuh-analysisd -t ``` 如果未出现错误,则配置有效。 ### 步骤 6 — 重启 Wazuh Manager ``` sudo systemctl restart wazuh-manager sudo systemctl status wazuh-manager --no-pager ``` **预期结果:** ``` active (running) ``` ### 步骤 7 — 验证 VirusTotal 集成是否加载 ``` sudo grep -i virustotal /var/ossec/logs/ossec.log | tail -20 ``` **预期日志:** ``` wazuh-integratord: INFO: Enabling integration for: 'virustotal' ``` 📸 `screenshots/06-virustotal-integration-loaded.png` 至此,VirusTotal 集成已成功加载。✅ ## ❌ 面临的问题 配置 VirusTotal 后,在 Windows endpoint 上创建文件时未出现任何 VirusTotal 告警。 **在威胁狩猎中测试的查询:** ``` agent.name:windows AND rule.groups:syscheck ``` ``` rule.id:550 OR rule.id:553 OR rule.id:554 ``` Dashboard 返回 **无结果**。 📸 `screenshots/07-no-syscheck-alerts.png` ## 🔎 根本原因 问题 **不在于** VirusTotal API 本身。真正的问题在于: Windows agent 已连接并正在发送正常的事件日志,但缺少文件完整性告警。 **证据:** | 检查项 | 状态 | |---|---| | Windows 登录事件可见 | ✅ 正常工作 | | 漏洞检测 | ✅ 正常工作 | | Windows agent 连接 | ✅ 活跃 | | Syscheck / FIM 告警 | ❌ 为空 | ## 🔧 变通方案 为了证明 VirusTotal 集成运行正常,通过在 Wazuh 服务器自身上配置 **本地 Linux 目录** 绕过了 Windows FIM 问题。 **最终的工作流:** ``` /opt/vt-test file created ↓ Wazuh local FIM / Syscheck ↓ VirusTotal Integration ↓ VirusTotal API Response ↓ Wazuh Alert ↓ Dashboard Alert ``` ### 步骤 8 — 创建本地测试目录 ``` sudo mkdir -p /opt/vt-test sudo chown root:wazuh /opt/vt-test sudo chmod 775 /opt/vt-test ``` **验证:** ``` ls -ld /opt/vt-test ``` **预期结果:** ``` drwxrwxr-x root wazuh /opt/vt-test ``` 📸 `screenshots/09-opt-vt-test-directory.png` ### 步骤 9 — 将 `/opt/vt-test` 添加到 Wazuh FIM ``` sudo nano /var/ossec/etc/ossec.conf ``` 在 `` 块内部,在 `yes` 之后,添加: ``` /opt/vt-test ``` **最终部分应如下所示:** ``` yes /opt/vt-test no ``` 📸 `screenshots/12-opt-vt-test-fim-config.png` #### ⚠️ 此步骤中的问题 早期编辑意外地引入了 **HTML 编码字符**,而不是有效的 XML 标签: ``` >/opt/vt-test</directories> ``` 这导致 Wazuh Manager 在重启时失败。 **正确的行:** ``` /opt/vt-test ``` 📸 `screenshots/10-wrong-xml-error.png` #### 🔄 恢复 由于存在备份,因此恢复了正常工作的配置: ``` sudo cp /var/ossec/etc/ossec.conf.before-vt-test /var/ossec/etc/ossec.conf sudo /var/ossec/bin/wazuh-analysisd -t sudo systemctl restart wazuh-manager sudo systemctl status wazuh-manager --no-pager ``` 恢复后,Wazuh Manager 返回到: ``` active (running) ``` 📸 `screenshots/11-wazuh-manager-recovered.png` ### 步骤 10 — 再次验证并重启 重新添加正确的 `/opt/vt-test` 目录行后: ``` sudo /var/ossec/bin/wazuh-analysisd -t sudo systemctl restart wazuh-manager sudo systemctl status wazuh-manager --no-pager ``` **预期结果:** ``` active (running) ``` ## 🧪 测试与验证 ### 步骤 11 — 生成 FIM 告警 ``` echo "hello wazuh" | sudo tee /opt/vt-test/test.txt echo "second line" | sudo tee -a /opt/vt-test/test.txt sleep 15 ``` 检查告警日志: ``` sudo grep -a "/opt/vt-test" /var/ossec/logs/alerts/alerts.json | tail -10 ``` **告警包含:** ``` "file": "/opt/vt-test/test.txt" "location": "syscheck" ``` 📸 `screenshots/13-fim-alert-alerts-json.png` ### 步骤 12 — 生成 VirusTotal 告警 FIM 事件发生后,VirusTotal 集成被触发。 ``` sudo grep -ia "virustotal" /var/ossec/logs/alerts/alerts.json | tail -30 ``` **结果:** ``` VirusTotal: Alert - No records in VirusTotal database ``` ``` "integration": "virustotal" "groups": ["virustotal"] ``` 📸 `screenshots/14-virustotal-alert-terminal.png` 这确认了整个链路实现了端到端的工作: ``` FIM Alert → VirusTotal API → Wazuh Alert ``` ### 步骤 13 — EICAR 测试 创建了一个 EICAR 测试文件以触发检测型告警: ``` printf '%s\n' 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee /opt/vt-test/eicar.com ``` 检查 VirusTotal 告警: ``` sudo grep -ia "virustotal" /var/ossec/logs/alerts/alerts.json | tail -30 ``` **输出:** ``` VirusTotal: Error - Public API request rate limit reached ``` ### 步骤 14 — 最终 Dashboard 告警 在 **Wazuh Dashboard → 威胁狩猎 → 事件** 中,使用了以下过滤器: ``` rule.groups:virustotal ``` ``` VirusTotal ``` ``` rule.id:87101 OR rule.id:87104 ``` **最终的 dashboard 结果:** | 告警 | 规则 ID | Agent | |---|---|---| | VirusTotal:错误 - 已达到公共 API 请求速率限制 | 87101 | Wazuh | | VirusTotal:告警 - 未发现阳性结果 | 87104 | windows | 📸 `screenshots/15-final-dashboard-alert.png` ## 🏁 最终结果 ``` /opt/vt-test/test.txt or eicar.com ↓ Wazuh FIM / Syscheck ↓ VirusTotal Integration ↓ VirusTotal API Response ↓ Wazuh Alert ↓ Threat Hunting Dashboard ``` ### 最终状态 | 组件 | 状态 | |---|---| | Wazuh Manager | ✅ 正常工作 | | Wazuh Dashboard | ✅ 正常工作 | | Windows Agent | ✅ 已连接 | | Windows 事件日志 | ✅ 正常工作 | | 漏洞检测 | ✅ 正常工作 | | VirusTotal 集成 | ✅ 正常工作 | | `/opt/vt-test` FIM 监控 | ✅ 正常工作 | | VirusTotal API 触发 | ✅ 正常工作 | | Dashboard 告警 | ✅ 可见 | ## 🧾 根本原因总结 | # | 问题 | 根本原因 | |---|---|---| | 1 | 最初未出现 VirusTotal 告警 | 未生成 Windows FIM/Syscheck 告警 | | 2 | Wazuh Manager 重启失败 | 插入了无效的 XML 字符(`<` / `>`)而不是 `<` / `>` | | 3 | VirusTotal 速率限制错误 | 重复测试后达到了免费的 VirusTotal 公共 API 限制(但仍确认请求已发送) | ## 📚 经验教训 - VirusTotal 集成需要正常工作的 FIM/Syscheck 告警——没有它们就无法触发。 - 已连接的 agent 并不总是意味着 FIM 告警确实在正常工作。 - 当 dashboard 结果不清晰时,请始终直接检查 `alerts.json`。 - 在编辑之前始终备份 `ossec.conf`。 - 微小的 XML 语法错误(如 HTML 编码字符)可能会完全破坏 Wazuh Manager。 - VirusTotal 速率限制错误仍然证明集成已正确触发。 - 当 Windows 端的 FIM 失败时,可以使用 Wazuh 服务器上的本地 FIM 监控来验证 VirusTotal 集成。 ## 🎯 结论 本实验室成功演示了 Wazuh 与 VirusTotal 威胁情报的集成。尽管最初的 Windows FIM 工作流未生成 Syscheck 告警,但通过对 `/opt/vt-test` 配置本地 Wazuh FIM 监控,对该问题进行了诊断和绕过。此目录中的文件更改生成了 Syscheck 告警,触发了 VirusTotal API 查询,并生成了在 Wazuh dashboard 中可见的 VirusTotal 告警。 **最终实现的 pipeline:** ``` Wazuh → FIM/Syscheck → VirusTotal API → Alert → Dashboard ``` ## 📂 建议的仓库结构 ``` wazuh-virustotal-threat-intelligence-lab/ ├── README.md ├── screenshots/ │ ├── 01-wazuh-manager-running.png │ ├── 04-ossec-conf-backup.png │ ├── 05-virustotal-config-block.png │ ├── 06-virustotal-integration-loaded.png │ ├── 07-no-syscheck-alerts.png │ ├── 09-opt-vt-test-directory.png │ ├── 10-wrong-xml-error.png │ ├── 11-wazuh-manager-recovered.png │ ├── 12-opt-vt-test-fim-config.png │ ├── 13-fim-alert-alerts-json.png │ ├── 14-virustotal-alert-terminal.png │ └── 15-final-dashboard-alert.png └── configs/ └── virustotal-integration-block.xml ```
标签:Wazuh, 威胁情报, 安全实验环境, 安全运营, 开发者工具, 扫描框架