Darsh71/dns-log-analysis-splunk
GitHub: Darsh71/dns-log-analysis-splunk
该项目演示了如何使用 Splunk Enterprise 对大规模 DNS 日志进行安全威胁狩猎与可视化监控仪表板构建的 SOC 实战流程。
Stars: 0 | Forks: 0
# 🛡️ 使用 Splunk Enterprise 进行 DNS 日志分析
## 📖 项目概述
本项目演示了使用 **Splunk Enterprise** 分析 DNS 日志的安全运营中心(SOC)实际调查过程。
目标是监控 DNS 流量,识别异常模式,调查失败的 DNS 查询,并使用 Splunk 搜索处理语言(SPL)构建专业的监控仪表板。
本项目通过执行日志分析、威胁狩猎和记录调查结果,模拟了 SOC Analyst 的工作流程。
# 🎯 目标
- 使用 Splunk 分析 DNS 流量
- 调查 DNS 响应代码
- 识别最活跃的客户端和 DNS 服务器
- 检测异常 DNS 活动
- 分析 TXT 记录以排查可能的 DNS 隧道
- 调查 NXDOMAIN 响应
- 构建专业的 Splunk 仪表板
- 实践 SOC 调查方法论
# 🛠️ 使用的技术
- Splunk Enterprise
- 搜索处理语言(SPL)
- Windows
- DNS 日志数据集
- GitHub
# 📂 数据集信息
| 项目 | 值 |
|------|-------|
| Sourcetype | dnslogs1 |
| Index | main |
| 总 DNS 事件数 | 422,130 |
# 📊 仪表板
该仪表板提供了 DNS 活动的概览,包括:
- 总 DNS 事件数
- 随时间变化的 DNS 查询
- 查询频率最高的域名
- 源(客户端)IP 地址排行
- 目标(DNS 服务器)IP 地址排行
- DNS 记录类型
- DNS 响应代码
- TXT 记录域名排行
- NXDOMAIN 响应最多的客户端

# 🔍 执行的调查
## 1. 总 DNS 事件数
### 查询
```
index=main sourcetype=dnslogs1
| stats count
```
### 发现
- 总 DNS 事件数:**422,130**
## 2. 查询频率最高的域名
### 查询
```
index=main sourcetype=dnslogs1
| top fqdn
```
### 发现
- tools.google.com
- www.apple.com
- time.apple.com
- stats.norton.com
- imap.gmail.com
### 分析
大多数 DNS 请求都指向知名服务,这表明属于正常的用户和应用程序活动。
## 3. 最活跃的客户端 IP 地址
### 查询
```
index=main sourcetype=dnslogs1
| top src_ip
```
### 分析
找出了生成 DNS 请求数量最多的客户端,以便进行进一步调查。
## 4. 排名前列的 DNS 服务器
### 查询
```
index=main sourcetype=dnslogs1
| top dst_ip
```
### 分析
大多数 DNS 流量都指向了组织的主要 DNS 服务器。
## 5. DNS 记录类型
### 查询
```
index=main sourcetype=dnslogs1
| top record
```
### 发现
- A
- AAAA
- TXT
- PTR
- AXFR
- SOA
- NS
### 分析
大部分 DNS 流量由标准的 IPv4 和 IPv6 查询组成。
## 6. DNS 响应代码分析
### 查询
```
index=main sourcetype=dnslogs1
| rex field=_raw "(?NXDOMAIN|NOERROR|REFUSED|SERVFAIL)"
| top rcode
```
### 发现
- NXDOMAIN
- NOERROR
- REFUSED
- SERVFAIL
### 分析
观察到了大量的 NXDOMAIN 响应,并对此进行了进一步调查,以确定它们是否表明存在恶意活动。
## 7. NXDOMAIN 调查
### 查询
```
index=main sourcetype=dnslogs1
| rex field=_raw "(?NXDOMAIN|NOERROR|REFUSED|SERVFAIL)"
| search rcode=NXDOMAIN
| top fqdn
```
### 分析
大多数失败的 DNS 查询涉及合法域名,这表明属于正常的应用程序行为,而非恶意软件所为。
## 8. 产生 NXDOMAIN 响应的客户端
### 查询
```
index=main sourcetype=dnslogs1
| rex field=_raw "^\S+\s+\S+\s+(?\d+\.\d+\.\d+\.\d+)"
| rex field=_raw "(?NXDOMAIN|NOERROR|REFUSED|SERVFAIL)"
| search rcode=NXDOMAIN
| top client_ip
```
### 分析
调查找出了导致失败 DNS 请求数量最多的客户端,并检查了它们尝试解析的域名。
## 9. TXT 记录分析
### 查询
```
index=main sourcetype=dnslogs1
record=TXT
| top fqdn
```
### 分析
大多数 TXT 记录请求指向 Apple 和 Google 域名。在此数据集中未观察到明显的 DNS 隧道迹象。
# 📈 仪表板功能
✔ 总 DNS 事件数
✔ 随时间变化的 DNS 查询
✔ 排名前列的域名
✔ 排名前列的客户端
✔ 排名前列的 DNS 服务器
✔ DNS 记录类型
✔ DNS 响应代码
✔ NXDOMAIN 调查
✔ TXT 记录分析
# 📚 展示的技能
- Splunk Enterprise
- SPL 查询编写
- DNS 日志分析
- 威胁狩猎
- 安全监控
- 仪表板创建
- 日志调查
- SOC 调查工作流程
# 📸 截图
| 仪表板 | 排名前列的域名 |
|-----------|-------------|
|  |  |
| 响应代码 | 记录类型 |
|---------------|--------------|
|  |  |
| NXDOMAIN 分析 | TXT 记录 |
|------------------|-------------|
|  |  |
# 🎯 关键学习点
- 了解了 DNS 日志的结构。
- 获得了使用 Splunk 搜索处理语言(SPL)的经验。
- 构建了专业的安全仪表板。
- 使用 NXDOMAIN 分析调查了 DNS 失败。
- 认识到了在确定可疑活动之前验证调查结果的重要性。
- 通过实践日志分析提升了实际的 SOC 调查技能。
# 🚀 未来改进
- 集成 Sysmon 日志以进行端点关联。
- 添加 Windows 事件日志分析。
- 检测暴力破解登录尝试。
- 构建 MITRE ATT&CK 映射仪表板。
- 为可疑的 DNS 活动创建自动化的 Splunk 警报。
# 👨💻 作者
**Darsh Patel**
有志成为 SOC Analyst | 网络安全爱好者 | Splunk 学习者
如果您有任何建议或反馈,欢迎与我联系或在此仓库中提出 issue。
⭐ 如果您觉得这个项目有用,请考虑给它点个 star!
标签:DNS监控, IP 地址批量处理, 代码示例, 安全运营, 扫描框架, 数据分析