sujay-cj/splunk-dns-threat-hunting-lab
GitHub: sujay-cj/splunk-dns-threat-hunting-lab
基于 Splunk 和 Zeek DNS 日志的威胁狩猎实验室,完整演示 SOC 风格的安全调查流程与可视化分析。
Stars: 0 | Forks: 0
# Splunk DNS 威胁狩猎实验室




## 概述
该项目演示了使用 Splunk Enterprise 和 Zeek DNS 日志进行 DNS 威胁狩猎的工作流程。系统摄入并分析了超过 **422,000 条 DNS 事件**,以识别异常的 DNS 行为、调查 NXDOMAIN 活动、检测异常流量模式,并构建交互式仪表板进行可视化。
该项目遵循 SOC 风格的调查方法论:
```
graph TD
A[Log Ingestion] --> B[Field Discovery]
B --> C[Threat Hunting Queries]
C --> D[Anomaly Investigation]
D --> E[Dashboard Creation]
E --> F[Incident Reporting]
style A fill:#4CAF50,stroke:#333,stroke-width:2px,color:#fff
style B fill:#2196F3,stroke:#333,stroke-width:2px,color:#fff
style C fill:#00BCD4,stroke:#333,stroke-width:2px,color:#fff
style D fill:#FF9800,stroke:#333,stroke-width:2px,color:#fff
style E fill:#9C27B0,stroke:#333,stroke-width:2px,color:#fff
style F fill:#F44336,stroke:#333,stroke-width:2px,color:#fff
```
## 目标
- 在 Splunk 中摄入并分析 Zeek DNS 日志
- 学习并应用 SPL (Search Processing Language)
- 识别异常的 DNS 行为
- 调查 NXDOMAIN 响应
- 分析 Top talkers 和 DNS 流量峰值
- 构建用于 DNS 流量可视化的仪表板
- 通过 SOC 风格的调查记录发现
## 数据集与环境规范
- **日志来源:** Zeek DNS 日志
- **总事件数:** 422,130 条 DNS 事件
- **日志类型:** DNS 查询与响应
- **平台:** Splunk Enterprise 10.2.3
- **操作系统:** Windows
## 执行的调查
### 调查 1:最常查询的域名
**目标:** 识别环境中查询最频繁的域名,以建立正常操作行为的基准。
#### SPL 查询
```
| top domain
```
#### 结果与发现
频繁查询的域名包括:
- `teredo.ipv6.microsoft.com`
- `tools.google.com`
- `www.apple.com`
- `time.apple.com`
- `WPAD`
这些域名主要与正常的操作系统更新、时间同步以及标准应用程序行为相关。

### 调查 2:罕见域名分析
**目标:** 识别可能需要调查的极少查询的域名(例如,潜在的 beaconing 或域名生成算法 - DGA)。
#### SPL 查询
```
| rare domain
```
#### 结果与发现
有几个域名在数据集中仅出现过一次,并被标记为调查线索。经过进一步审查,没有发现可将其归类为恶意的证据。

### 调查 3:Top DNS Talkers
**目标:** 识别产生最高 DNS 流量的主机,以检测潜在的扫描、数据泄露或配置错误。
#### SPL 查询
```
| stats count by src_ip
| sort -count
```
#### 结果与发现
主机 `10.10.117.210` 产生了最高的 DNS 流量,共发起 **75,943 次 DNS 请求**。这种异常活动需要进行更深入的时间线分析。

### 调查 4:DNS 流量峰值分析
**目标:** 检测 Top talker 随时间推移出现的 DNS 活动异常激增。
#### SPL 查询
```
src_ip="10.10.117.210"
| timechart span=1s count
```
#### 结果与发现
在 **2026-06-07 17:00:29** 观察到大约 **40,485 次 DNS 请求** 的短暂且严重的峰值。进一步的调查表明需要进行额外的验证,以确定该活动是由合法的应用程序行为还是异常进程引起的。

### 调查 5:畸形 DNS 查询分析
**目标:** 调查包含畸形字符(例如,null bytes)的异常 DNS 查询,这些字符有时用于 exploit payload 或隧道流量。
#### SPL 查询
```
domain="*\x00\x00\x00\x00*"
| stats count by src_ip
| sort -count
```
#### 结果与发现
在多台主机上观察到畸形的 DNS 查询。这种活动的分布式特性降低了单主机被入侵的可能性,并暗示可能存在畸形数据包、应用程序错误或日志记录产物。


### 调查 6:按源 IP 进行的 NXDOMAIN 分析
**目标:** 识别产生过多 DNS 查找失败 (NXDOMAIN) 的主机,这是恶意软件试图联系已失效的命令控制 (C2) 服务器或 DGA 行为的常见指标。
#### SPL 查询
```
response="NXDOMAIN"
| stats count by src_ip
| sort -count
```
#### 结果与发现
- **NXDOMAIN 响应总数:** 49,944
- **产生最多响应的主机:** 主机 `192.168.202.103` 产生了 **7,409 次 NXDOMAIN 响应**。
- 其他几台主机也产生了大量的 NXDOMAIN 流量,表明该活动分布在多个系统中。
#### 安全分析
大量的 NXDOMAIN 响应有时可能表明存在恶意软件活动、DGA 或 DNS 配置错误。然而,对 `192.168.202.103` 的进一步调查表明,它主要是在尝试解析合法域名,例如:
- `api.twitter.com`
- `api.facebook.com`
- `www.splunk.com`
- `fs-1.one.ubuntu.com`
没有发现可将此活动归类为恶意的证据;这可能是本地应用程序错误或配置问题。
### 调查 7:反向 DNS NXDOMAIN 调查
**目标:** 调查导致过多 NXDOMAIN 响应的域名,以识别相关模式。
#### SPL 查询
```
response="NXDOMAIN"
| stats count by domain
| sort -count
```
#### 钻取查询
```
response="NXDOMAIN" domain="44.206.168.192.in-addr.arpa"
| stats count by src_ip
```
#### 结果与发现
- 域名 `44.206.168.192.in-addr.arpa` 产生了 **4,146 次 NXDOMAIN 响应**。
- 钻取分析显示所有请求均来自单一主机:`192.168.202.83`。
#### 安全分析
该活动代表了来自单一主机的重复失败的反向 DNS 查找。可能的解释包括:
1. 反向 DNS 配置错误
2. 自动化的监控/日志记录进程
3. 应用程序重试行为
4. 潜在的异常扫描活动
在分析之时,没有足够的证据将该活动定性为恶意。然而,这种行为代表了一个值得进一步监控的调查线索。

## DNS 威胁狩猎仪表板
我们在 Splunk 中构建了一个交互式仪表板,用于显示关键的运营和安全相关指标。它包含以下面板:
### 1. DNS 请求总数与 NXDOMAIN 响应总数
显示有关整体流量和错误率的宏观单值指标。


### 2. 最常查询的域名与 Top DNS Talkers
使用水平条形图可视化最活跃的域名和主机,以快速突出异常值。


### 3. 产生最多 NXDOMAIN 的来源与查找失败次数最多的域名
帮助分析师识别产生最高解析错误率的主机和域名。


## 展示的核心技能
- **SIEM 运营与日志摄入:** 在 Splunk Enterprise 中摄入并结构化了大规模的 Zeek 日志。
- **SPL 查询开发:** 构建了优化的 Splunk Search Processing Language 查询以进行威胁狩猎。
- **DNS 安全与威胁狩猎:** 分析了包括高活跃 talkers、流量峰值、畸形数据包和 NXDOMAIN 激增在内的模式。
- **安全调查方法论:** 遵循结构化的 SOC 调查实践来评估异常。
- **数据可视化与仪表板:** 构建了交互式、用户友好的安全仪表板以监控网络流量。
- **SOC 报告与文档:** 撰写了全面的威胁调查和发现报告。
标签:DNS安全, IP 地址批量处理, Rootkit, Zeek, 安全运营中心, 网络映射