kboykov/wazuh-infoblox-ruleset

GitHub: kboykov/wazuh-infoblox-ruleset

为 Wazuh 提供 Infoblox BloxOne 和 Universal DDI 的 CEF Syslog 解码器与安全检测规则集,覆盖 DNS、RPZ、DHCP 等事件并映射至 MITRE ATT&CK。

Stars: 0 | Forks: 0

# 用于 Infoblox Data Connector (BloxOne Threat Defense / Universal DDI) 的 Wazuh 规则集 用于将 **Infoblox Data Connector** CEF syslog 接入 [Wazuh](https://wazuh.com) 的解码器和规则。涵盖 DNS 解析遥测、DNS Firewall / RPZ 威胁事件、DHCP 租约活动和 BloxOne 服务日志,并提供针对 DGA、DNS 隧道/数据泄露、DHCP 饥饿和 RPZ 策略命中的安全检测 — 已映射至 MITRE ATT&CK。 字段映射派生自 Infoblox 官方文档,并已通过实际的 2.1.3 Data Connector 捕获数据进行验证。 - [DNS 查询/响应日志消息映射](https://docs.infoblox.com/space/BloxOneThreatDefense/35406922) - [DNS 安全策略命中和 RPZ 命中日志消息映射](https://docs.infoblox.com/space/BloxOneThreatDefense/35438586) - [DHCP 消息映射](https://docs.infoblox.com/space/BloxOneThreatDefense/35472716) - [事件字段日志](https://docs.infoblox.com/space/BloxOneThreatDefense/770048012) ## 日志源格式 Data Connector 发出 RFC5424 syslog,并在消息体中包含 CEF payload: ``` <134>1 2026-06-08T18:20:08Z host dataconnector - RPZ-QNAME-REDIRECT - CEF:0|Infoblox|Data Connector|2.1.3|RPZ-QNAME-REDIRECT|RPZ EVENT QNAME REDIRECT|8|key=value key=value ... ``` CEF header 的 `NAME` 字段(第 5 个以 `|` 分隔的字段)编码了事件系列,对于 RPZ,还包含触发器类型 + 策略动作(例如 `RPZ-QNAME-NXDOMAIN`)。 解码器锚定在 CEF header 而非 syslog app-name 上,因为 app-name 的提取在不同的 syslog 收集器之间并不一致。 将您的 Data Connector 指向 Wazuh manager/worker 的 syslog 监听器: ``` syslog 514 udp 0.0.0.0/0 ``` ## 涵盖范围 | 事件系列 | CEF NAME header | 已解码 | 规则 | |-------------------------|--------------------------|---------|-------| | DNS Response | `DNS Response` | ✅ | 118001–118007 | | DNS Firewall / RPZ | `RPZ-*` (所有触发器类型) | ✅ | 118010–118017 | | DHCP 租约 | `DHCP-LEASE-*` | ✅ | 118020–118022 | | BloxOne 服务日志 | `BloxOne-Service-Log` | ✅ | 118030–118031 | | 审计日志 | _(预置,已注释)_ | ⏸️ | 118040–118041 | | SOC Insights | _(预置,已注释)_ | ⏸️ | 118050 | ## 规则参考 ID 占用 `118000–118099` 区块。`118000` 是静默的基础规则;所有其他规则均链接自它。 ### DNS | ID | Level | 触发条件 | MITRE | |--------|-------|----------|-------| | 118000 | 0 | 任意 Infoblox CEF 事件 (基础) | — | | 118001 | 0 | DNS NOERROR (遥测) | — | | 118002 | 3 | DNS NXDOMAIN | — | | 118003 | 10 | 60秒内来自同一客户端的 20+ 次 NXDOMAIN — **DGA 恶意软件** | T1568.002 | | 118004 | 5 | DNS SERVFAIL / REFUSED | — | | 118005 | 8 | 60秒内来自同一客户端的 15+ 次 SERVFAIL/REFUSED | — | | 118006 | 0 | 成功的 TXT/NULL 查询 (遥测) | — | | 118007 | 11 | 60秒内来自同一客户端的 40+ 次 TXT/NULL — **DNS 隧道/数据泄露** | T1048.003, T1071.004 | ### RPZ / DNS Firewall | ID | Level | 触发条件 | MITRE | |--------|-------|----------|-------| | 118010 | 8 | 任意 RPZ 命中 (存在策略动作) | T1071.004 | | 118014 | 9 | RPZ 命中,威胁等级 **30–79 (Medium)** | T1071.004 | | 118011 | 12 | RPZ 命中,威胁等级 **80–100 (High)** | T1071.004 | | 118012 | 12 | RPZ 威胁属性 = malware / C2 / phishing / botnet | T1071.004, T1568.001 | | 118013 | 10 | 120秒内来自同一客户端的 10+ 次 RPZ 命中 — 受感染主机 | T1071.004, T1568.001 | | 118016 | 10 | RPZ 动作 = Block / NXDOMAIN / NODATA | T1071.004 | | 118017 | 6 | RPZ 动作 = Passthru / Log (覆盖允许名单) | — | ### DHCP | ID | Level | 触发条件 | MITRE | |--------|-------|----------|-------| | 118020 | 3 | DHCP 租约操作 (Create / Update / Delete) | — | | 118021 | 7 | DHCP 租约 **Abandon** (冲突 / 饥饿 / rogue) | T1498 | | 118022 | 10 | 120秒内同一子网上的 10+ 次 abandons — **DHCP 饥饿** | T1498 | ### 服务 / 预置 | ID | Level | 触发条件 | |--------|-------|----------| | 118030 | 0 | BloxOne 服务日志 (遥测) | | 118031 | 5 | 服务日志 WARN / ERROR / FATAL / CRITICAL | | 118040–118041 | 5 / 10 | _(预置)_ 审计日志活动 / 失败的管理员操作 | | 118050 | 12 | _(预置)_ SOC Insight (服务端 Threat Insight) | ## 威胁等级映射 `InfobloxThreatLevel` 是一个 **0–100 分的评分**,而不是小的序号。官方分类(以及本规则集如何映射它们)如下: | 评分 | Infoblox severity | Wazuh 规则 | Wazuh level | |---------|-------------------|------------|-------------| | 0–29 | Low | 118010 | 8 | | 30–79 | Medium | 118014 | 9 | | 80–100 | High | 118011 | 12 | ## 解码器设计 ``` infoblox-cef (parent — prematch on CEF:0|Infoblox|Data Connector) ├── infoblox-cef-dns-v2 DNS Response — enriched (tags/host/network/conn-type/dst/proto) ├── infoblox-cef-dns DNS Response (cloud field order) — fallback ├── infoblox-cef-dns-niosx DNS Response (NIOS-X field order) — fallback ├── infoblox-cef-rpz-v2 RPZ — enriched superset (identity/site/policy/zone/IOC) ├── infoblox-cef-rpz-rich RPZ + feed name + threat confidence/level/property — fallback ├── infoblox-cef-rpz RPZ + threat level/property (no feed) — fallback ├── infoblox-cef-rpz-min RPZ minimal (action/src/domain) — fallback ├── infoblox-cef-dhcp-v2 DHCP lease — enriched (hostname/clientid/lifetime) ├── infoblox-cef-dhcp DHCP lease — fallback └── infoblox-cef-service-v2 BloxOne service log — enriched (error text + service id) ``` **顺序很重要。** Wazuh 会应用其 regex 匹配的*第一个*同级解码器。`-v2` 解码器被放置在**最前面**,并且是规则所需每个字段的严格**超集**,外加完整的上下文。如果 `-v2` 的 regex 不匹配(例如意外的字段顺序),解码会回退到旧版 rich → full → min 解码器,因此规则仍会触发 — 富集信息会平滑降级且绝不会破坏检测。 ### 捕获的字段 **核心(所有事件系列):** `srcip`, `dns_domain`, `dns_type`, `dns_response`, `rpz_action`, `rpz_feed`, `threat_confidence`, `threat_level`, `threat_property`, `dhcp_ip`, `dhcp_mac`, `dhcp_subnet`, `dhcp_leaseop`, `service_name`. **富集(v2 解码器):** | 字段 | 源 CEF key | 适用位置 | 备注 | |-------|----------------|-------|-------| | `srcuser` | `suser` | RPZ | 用户身份 — 在 endpoint / `remote_client` 事件上填充 | | `src_os` | `InfobloxB1SrcOSVersion` | RPZ | Endpoint OS,例如 `macOS 26.3.1` | | `hostname` | `dvchost` / `shost` | DNS, RPZ, DHCP | 设备主机名 (DHCP `shost` = IP↔主机映射) | | `infoblox_network` | `InfobloxB1Network` | DNS, RPZ | 网络 / 站点名称 | | `infoblox_ophost` | `InfobloxB1OPHName` | DNS, RPZ | DFP / 本地主机 (站点) | | `infoblox_conn_type` | `InfobloxB1ConnectionType` | DNS, RPZ | `dfp` / `remote_office` / `remote_client` | | `infoblox_dns_tags` | `InfobloxB1DNSTags` | DNS, RPZ | 应用 / 类别分类 | | `dstip` | `dst` | DNS, RPZ | 解析器 / Sinkhole / 重定向目标 | | `srcport` | `spt` | DNS, RPZ | 源端口 | | `protocol` | `proto` | DNS | UDP / TCP | | `threat_indicator` | `InfobloxB1ThreatIndicator` | RPZ | 匹配的 IOC | | `rpz_zone` | `InfobloxRPZ` | RPZ | 触发的 RPZ 区域 | | `rpz_rule` | `InfobloxRPZRule` | RPZ | 完整重写规则 | | `rpz_policy` | `InfobloxB1PolicyName` | RPZ | 安全策略名称 | | `rpz_feedtype` | `InfobloxB1FeedType` | RPZ | Feed 类型 (FQDN / IP) | | `srcmac` | `smac` | RPZ | 客户端 MAC | | `dhcp_clientid` | `InfobloxClientID` | DHCP | DHCP 客户端标识符 | | `dhcp_lifetime` | `InfobloxLifetime` | DHCP | 租约生存时间 (s) | | `infoblox_msg` | `msg` | Service | 实际的服务日志 / 错误行 | | `infoblox_service_id` | `InfobloxServiceId` | Service | BloxOne 服务 ID | ### 实现说明 - **带引号 / 空值。** v2 解码器使用单个 PCRE2 branch-reset 组捕获可能带引号、包含空格或为空的值: `(?|"([^"]*)"|(\S+))?`。空值会被忽略(索引中没有空字符串字段),而不是存储为 `""`。 - **CEF 字段顺序是按位置的。** 2.1.3 发射器是稳定的,但 Infoblox 可能会在不同 pipeline 版本之间更改顺序。如果未来的版本重新排序 keys,`-v2` 的 regex 可能会停止匹配,解码将回退到旧版解码器(规则会继续触发,但富集信息会减少)。 - **`suser` (用户身份)** 在 `dfp` / `remote_office` 流程上为空,而在 `remote_client` / BloxOne Endpoint 事件上填充;它在 RPZ 事件上作为 `srcuser` 被捕获,为空时则忽略。(它故意*不*在 DNS Response 事件上捕获,因为在实际中它总是空的。) - 纯 IPv6/DUID 的 DHCP 租约(无 `smac`)不会被 DHCP 解码器匹配。 ## 安装 ### 单节点 / manager ``` # 1. 复制文件 cp decoders/112-infoblox-decoders.xml /var/ossec/etc/decoders/ cp rules/112-infoblox-rules.xml /var/ossec/etc/rules/ # 2. 所有权 + 权限(analysisd 以 'wazuh' 用户身份运行) chown wazuh:wazuh /var/ossec/etc/decoders/112-infoblox-decoders.xml \ /var/ossec/etc/rules/112-infoblox-rules.xml chmod 660 /var/ossec/etc/decoders/112-infoblox-decoders.xml chmod 640 /var/ossec/etc/rules/112-infoblox-rules.xml # 3. 重启 systemctl restart wazuh-manager ``` ### Cluster 仅将文件放置在 **master** 节点上。Wazuh 的 cluster 完整性同步会自动将 `etc/rules` 和 `etc/decoders` 分发给所有 worker。重启 master(`systemctl restart wazuh-manager`);worker 会在同步时重新加载。 ## 测试 使用 `wazuh-logtest` 验证解码和规则匹配(写入 stderr): ``` # 单个事件 printf '%s\n' "$(grep -m1 RPZ-QNAME-REDIRECT samples/infoblox-cef-samples.log)" \ | /var/ossec/bin/wazuh-logtest # 所有样本 grep -v '^#' samples/infoblox-cef-samples.log | /var/ossec/bin/wazuh-logtest ``` 对于 level-80 的 RPZ 示例的预期输出: ``` **Phase 2: Completed decoding. name: 'infoblox-cef' rpz_feed: 'Infoblox_High_Risk' threat_confidence: '100' threat_level: '80' threat_property: 'Suspicious_Nameserver' **Phase 3: Completed filtering (rules). id: '118011' level: '12' description: 'Infoblox RPZ: HIGH threat (level 80) ...' ``` ## 调优 相关性的阈值是保守的起点 — 请根据您的基线进行调整: | 规则 | 阈值 | 调整条件… | |--------|------------------|----------| | 118003 | 20 NXDOMAIN / 60s | 存在大量合法的 NXDOMAIN (搜索域后缀,k8s) | | 118005 | 15 SERVFAIL / 60s | 不稳定的上游导致噪音 | | 118007 | 40 TXT/NULL / 60s | 邮件服务器进行 SPF/DKIM/DMARC 查询时触发 | | 118022 | 10 abandons / 120s | 受限的地址池经常正常 abandon | ## Roadmap - 一旦获得实际样本,验证并启用 **Audit log** 和 **SOC Insights** 解码器/规则。 - 添加利用富集字段的检测:用户/主机归因的 RPZ屡犯者(`srcuser` / `hostname`),以及基于 `infoblox_dns_tags` 的类别规则 (DoH、匿名器、个人存储)。 - 如果启用了这些触发器类型,则添加特定于 RPZ-IP / RPZ-CLIENT-IP 的处理(prematch 已经对它们进行了解码;专用规则可以进一步完善)。 ## License MIT — 见 [LICENSE](LICENSE)。 不隶属于 Infoblox 或 Wazuh,也未获得其认可。"Infoblox", "BloxOne" 和 "NIOS" 是 Infoblox 的商标;"Wazuh" 是 Wazuh Inc. 的商标。
标签:AMSI绕过, Infoblox, IP 地址批量处理, Syslog, Wazuh, 威胁检测, 日志解析, 规则集, 证书伪造, 配置错误