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 响应最多的客户端 ![仪表板](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/dashboard.png) # 🔍 执行的调查 ## 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 调查工作流程 # 📸 截图 | 仪表板 | 排名前列的域名 | |-----------|-------------| | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/dashboard.png) | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/top_domains.png) | | 响应代码 | 记录类型 | |---------------|--------------| | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/response_codes.png) | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/record_types.png) | | NXDOMAIN 分析 | TXT 记录 | |------------------|-------------| | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/nxdomain.png) | ![](https://raw.githubusercontent.com/Darsh71/dns-log-analysis-splunk/main/screenshots/txt_records.png) | # 🎯 关键学习点 - 了解了 DNS 日志的结构。 - 获得了使用 Splunk 搜索处理语言(SPL)的经验。 - 构建了专业的安全仪表板。 - 使用 NXDOMAIN 分析调查了 DNS 失败。 - 认识到了在确定可疑活动之前验证调查结果的重要性。 - 通过实践日志分析提升了实际的 SOC 调查技能。 # 🚀 未来改进 - 集成 Sysmon 日志以进行端点关联。 - 添加 Windows 事件日志分析。 - 检测暴力破解登录尝试。 - 构建 MITRE ATT&CK 映射仪表板。 - 为可疑的 DNS 活动创建自动化的 Splunk 警报。 # 👨‍💻 作者 **Darsh Patel** 有志成为 SOC Analyst | 网络安全爱好者 | Splunk 学习者 如果您有任何建议或反馈,欢迎与我联系或在此仓库中提出 issue。 ⭐ 如果您觉得这个项目有用,请考虑给它点个 star!
标签:DNS监控, IP 地址批量处理, 代码示例, 安全运营, 扫描框架, 数据分析