WiTTPs/Wazuh-tools-etc

GitHub: WiTTPs/Wazuh-tools-etc

针对 Wazuh SIEM 的工具集合,核心功能是将 Windows DNS 调试日志规范化后接入 Wazuh 进行安全分析和告警。

Stars: 0 | Forks: 0

# Wazuh-tools-etc 用于 Wazuh SIEM 部署的工具、脚本和配置集合。 ## 1. `/wazuh_win_dns_debug` — Windows DNS Debug Log 集成 此模块收集并规范化 Windows DNS 调试日志,并将其转发给 Wazuh agent 进行分析。 Wazuh 目前不支持通过 Microsoft-Windows-DNSServer/Analytical ETW 日志通道进行记录。 因此,这是一个变通方案,经证实足以满足我的需求。 从技术上讲,在轮换日志文件期间,DNS 调试日志会短暂停用,因此在此期间的 DNS 查询不会被记录。 好在这只是几秒钟的时间,对于我的使用场景来说是可以接受的。 也许未来会有更优雅的方式。 ### 概述 Windows DNS 调试日志以线格式(wire format)写入 DNS 查询和响应,这种格式无法直接被人类阅读或被 Wazuh 解析。 此工具集: 1. 每 15 分钟轮换一次活动的 DNS 调试日志文件 2. 将 DNS 线格式标签规范化为可读的 FQDN(例如 `(5)ctldl(13)windowsupdate(3)com(0)` → `ctldl.windowsupdate.com`) 3. 通过通配符 localfile 配置将规范化后的日志转发给 Wazuh 4. 在 Wazuh 中使用自定义 decoder 和 rules 解码并创建告警 ### 系统要求 - 安装了 DNS Server 角色的 Windows Server - PowerShell 5.1 或更高版本 - DNS 服务器上安装了 Wazuh Agent - Wazuh Manager 具有部署自定义 decoder 和 rules 的权限 ### 目录结构 ``` wazuh_win_dns_debug/ ├── Rotate-DnsLog.ps1 # Rotates the active DNS debug log file ├── Normalize-DnsLog.ps1 # Normalizes wire format to readable FQDNs ├── Register-DnsTasks.ps1 # Registers both scripts as Scheduled Tasks ├── 0001_windows_dns_debug_decoder.xml # Wazuh custom decoder (deploy on Manager) └── custom_dns_rules.xml # Wazuh custom rules (deploy on Manager) ``` ### 工作原理 ``` DNS Service │ │ writes dns_TIMESTAMP.log ▼ Rotate-DnsLog.ps1 (every 15 min) │ │ copies active log to dns_TIMESTAMP_done.log │ restarts DNS logging with new filename ▼ Normalize-DnsLog.ps1 (every 15 min, 2 min offset) │ │ converts wire format → FQDN │ writes dns_normalized_TIMESTAMP.log to output\ │ deletes raw _done.log ▼ Wazuh Agent │ │ reads output\dns_normalized_*.log ▼ Wazuh Manager │ │ decodes and applies rules ▼ Wazuh Dashboard ``` ### 安装说明 #### 1. 准备 DNS 服务器 创建工作目录: ``` New-Item -ItemType Directory -Path "C:\dns_debug\output" -Force ``` 将以下脚本复制到 `C:\dns_debug\`: - `Rotate-DnsLog.ps1` - `Normalize-DnsLog.ps1` - `Register-DnsTasks.ps1` #### 2. 启用 DNS Debug Logging 通过 PowerShell 或 DNS 管理器启用 DNS 调试日志。脚本要求日志记录处于活动状态,并且至少启用 **Queries**、**Answers**、**TCP** 和 **UDP**: ``` Set-DnsServerDiagnostics -ComputerName $env:COMPUTERNAME ` -LogFilePath "C:\dns_debug\dns_initial.log" ` -EnableLoggingToFile $true ` -Queries $true ` -Answers $true ` -ReceivePackets $true ` -SendPackets $true ` -TcpPackets $true ` -UdpPackets $true ` -MaxMBFileSize 10000000 ``` #### 3. 注册计划任务 以管理员身份运行以下命令: ``` powershell.exe -ExecutionPolicy Bypass -File "C:\dns_debug\Register-DnsTasks.ps1" ``` 这会在任务计划程序的 `\DNS\` 下注册两个任务: | 任务 | 计划 | |------|----------| | DNS Log Rotate | 每 15 分钟(:00, :15, :30, :45) | | DNS Log Normalize | 每 15 分钟(:02, :17, :32, :47) | 两个任务均以 `SYSTEM` 身份运行。 #### 4. 配置 Wazuh Agent 将以下内容添加到 Wazuh agent 配置(`ossec.conf`)中: ``` syslog C:\dns_debug\output\dns_normalized_*.log ``` 重启 Wazuh agent: ``` Restart-Service -Name "Wazuh" ``` #### 5. 在 Wazuh Manager 上部署 Decoder 和 Rules 将 decoder 和 rules 复制到 Wazuh Manager: ``` cp 0001_windows_dns_debug_decoder.xml /var/ossec/etc/decoders/ cp custom_dns_rules.xml /var/ossec/etc/rules/ ``` 重启 Wazuh Manager: ``` systemctl restart wazuh-manager ``` ### 日志文件生命周期 | 文件 | 描述 | |------|-------------| | `C:\dns_debug\dns_TIMESTAMP.log` | DNS 服务正在写入的活动文件 | | `C:\dns_debug\dns_TIMESTAMP_done.log` | 已复制并准备好进行规范化的文件 | | `C:\dns_debug\output\dns_normalized_TIMESTAMP.log` | Wazuh agent 读取的规范化输出文件 | 规范化输出文件将在 **60 分钟**后自动删除(可通过 `-KeepMinutes` 参数配置)。 ### 脚本参数 **Rotate-DnsLog.ps1** | 参数 | 默认值 | 描述 | |-----------|---------|-------------| | `-LogDir` | `C:\dns_debug` | DNS 日志文件的目录 | | `-MaxSize` | `10000000` | DNS 日志文件的最大大小(字节) | **Normalize-DnsLog.ps1** | 参数 | 默认值 | 描述 | |-----------|---------|-------------| | `-InputDir` | `C:\dns_debug` | 包含原始日志文件的目录 | | `-OutputDir` | `C:\dns_debug\output` | 规范化输出文件的目录 | | `-KeepMinutes` | `60` | 删除前保留规范化文件的时长 | ### 待办事项: 域名白名单。有几种选择方案,但我仍在测试哪种最高效。
标签:AI合规, AMSI绕过, Decoder, DNS 监控, DNS 调试日志, ETW 替代方案, FQDN 解析, IPv6, IP 地址批量处理, Libemu, PB级数据处理, PowerShell, Sysmon, Wazuh, Windows DNS, 威胁检测, 安全脚本, 安全运维, 日志收集, 日志规范化, 日志解析, 日志轮转, 规则配置, 证书伪造