phredreeq/dns-analysis-threat-detection

GitHub: phredreeq/dns-analysis-threat-detection

基于 Splunk 的 DNS 日志分析方案,通过查询长度和 NXDOMAIN 模式检测 DNS 隧道与 DGA 恶意软件活动。

Stars: 0 | Forks: 0

# 使用 Splunk 进行 DNS 分析与威胁检测 ## 检测 DNS 隧道和 DGA 恶意软件活动 ## 问题描述 DNS 是网络安全中最常被滥用的协议之一。 由于防火墙很少拦截 DNS 流量,攻击者 利用它来隐藏恶意活动,包括数据 泄露和恶意软件通信。本项目 分析 DNS 日志以检测两个关键威胁: DNS 隧道和域名生成算法 (DGA) 恶意软件。 ## 目标 - 模拟包含正常和 恶意流量模式的真实 DNS 日志 - 使用查询长度分析检测 DNS 隧道 - 使用 NXDOMAIN 失败模式识别 DGA 恶意软件 - 比较正常与可疑 IP 的行为 ## 使用的工具 | 工具 | 用途 | |---|---| | **Splunk** | 用于日志分析的 SIEM 平台 | | **Python** | DNS 日志模拟 | | **SPL** | Splunk 搜索语言 | | **DNS 日志** | 网络协议事件数据 | ## 攻击背景 ### 什么是 DNS? DNS (Domain Name System) 将人类可读的 域名(如 google.com)转换为 IP 地址。 每个互联网连接都始于一个 DNS 查询。 ### 为什么攻击者滥用 DNS DNS 几乎从不会被防火墙拦截,因为 组织需要它来维持正常运作。攻击者利用 这种信任,将恶意流量隐藏在看似 正常的 DNS 查询中。 ### DNS 隧道 攻击者将窃取的数据隐藏在 DNS 查询中: - 使用 TXT 记录类型来携带大型 payload - 查询异常长(50-100 个字符或更多) - 流量在防火墙看来就像正常的 DNS 一样 ### 域名生成算法 (DGA) 恶意软件生成随机的域名以查找受攻击者控制的服务器: - 每天生成数百个随机域名 - 大多数返回 NXDOMAIN(域名不存在) - 当攻击者注册其中一个域名时——恶意软件就会连接 ## 数据集 包含 180 条记录的模拟 DNS 日志: | 类别 | 数量 | 描述 | |---|---|---| | 正常流量 | 100 | 合法的 DNS 查询 | | DGA 恶意软件 | 50 | 随机域名 —— NXDOMAIN 响应 | | DNS 隧道 | 30 | 异常长的 TXT 查询 | **日志字段:** - `timestamp` — 查询发生的时间 - `source_ip` — 发起查询的机器 - `query` — 查询的域名 - `query_type` — A(正常)或 TXT(可疑) - `response_code` — NOERROR 或 NXDOMAIN - `query_length` — 查询域名的长度 - `response_length` — DNS 响应的大小 ## 检测查询 (SPL) ### 查询 1 — DNS 查询类型分布 index=main source="dns_logs.csv" | stats count by query_type 显示 A 记录与 TXT 记录的分布情况。 TXT 记录数量高表明可能存在隧道传输。 ### 查询 2 — 检测 DNS 隧道 index=main source="dns_logs.csv" | stats count as total_queries, avg(query_length) as avg_length by source_ip, query_type | where avg_length > 40 AND query_type="TXT" | sort -avg_length 标记具有异常长 TXT 查询的 IP,这是 DNS 隧道活动的一个关键指标。 ### 查询 3 — 检测 DGA 恶意软件 index=main source="dns_logs.csv" response_code="NXDOMAIN" | stats count as failed_queries, dc(query) as unique_domains by source_ip | where failed_queries > 10 | sort -failed_queries 识别对 唯一域名发起许多失败查询的 IP —— 典型的 DGA 恶意软件行为。 ### 查询 4 — 完整 IP 行为比较 index=main source="dns_logs.csv" | stats count as total_queries, dc(query) as unique_domains, avg(query_length) as avg_length by source_ip | sort -total_queries 并排比较所有 IP,以识别 异常行为模式。 ### 查询 5 — DGA 域名示例 index=main source="dns_logs.csv" source_ip="10.0.0.99" | table timestamp, query, response_code | sort timestamp | head 10 显示受感染机器生成的 实际 DGA 域名。 ## 结果 ### 查询 1 — DNS 查询类型 ![查询 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/a4a38cca37041712.png) ### 查询 2 — 检测到 DNS 隧道 ![查询 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/fc02c510f5041713.png) ### 查询 3 — 检测到 DGA 恶意软件 ![查询 3](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d38258f2fa041714.png) ### 查询 4 — IP 行为比较 ![查询 4](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/91b260e212041714.png) ### 查询 5 — DGA 域名示例 ![查询 5](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6a5a1b9fa1041715.png) ## 分析 ### 发现 1 — DNS 隧道已确认 IP 10.0.0.55 发起了 30 次 TXT 记录查询, 平均长度为 76.5 个字符。正常的 DNS 查询平均长度为 10-30 个字符。这种 极端的长度表明数据正通过 DNS 查询被泄露。 ### 发现 2 — DGA 恶意软件已确认 IP 10.0.0.99 对 50 个完全 唯一的随机域名发起了 50 次查询,且全部返回 NXDOMAIN。 检测到的域名示例: | 域名 | 响应 | |---|---| | afvtfylxvbyedor.com | NXDOMAIN | | vaxazldemmorvzfkn.info | NXDOMAIN | | edokgyxivvxajstdoz.org | NXDOMAIN | | ucfsdibpuoyozpnqyec.org | NXDOMAIN | 没有人会生成这样的域名,这 是 100% 的自动化恶意软件行为。 ### 发现 3 — 正常 IP 已识别 IP 10.0.0.5、10.0.0.8 和 10.0.0.12 表现出 正常行为 —— 查询了 8-9 个唯一的已知 域名,平均长度为 17-22 个字符。 ### 发现 4 — 协议滥用 这两种攻击都利用了 DNS,因为: - DNS 很少被防火墙拦截 - 看起来像合法的网络流量 - 如果不进行查询长度分析则很难检测 ## DNS 攻击比较 | 攻击 | 指标 | 检测方法 | |---|---|---| | **DNS 隧道** | 较长的 TXT 查询(50-100+ 字符) | avg(query_length) > 40 | | **DGA 恶意软件** | 大量 NXDOMAIN 失败 | dc(query) 并进行 NXDOMAIN 过滤 | | **正常流量** | 对已知域名的短 A 记录查询 | 基线比较 | ## 结论与建议 ### 立即采取的行动 | 优先级 | 行动 | |---|---| | 1 | 🚫 封禁 10.0.0.55 — DNS 隧道已确认 | | 2 | 🔒 隔离 10.0.0.99 — 已感染 DGA 恶意软件 | | 3 | 🔍 调查被泄露的数据内容 | | 4 | 🧹 在 10.0.0.99 上运行恶意软件扫描 | | 5 | 📢 升级至 Tier 2 进行取证调查 | ### 预防建议 | 建议 | 目的 | |---|---| | DNS 查询长度监控 | 标记异常长的查询 | | NXDOMAIN 速率限制 | 提前检测 DGA 行为 | | DNS 过滤解决方案 | 封禁已知的恶意域名 | | 实时 Splunk 告警 | 异常情况的即时通知 | | 网络分段 | 限制受感染机器的通信 | ## 🔗 相关项目 - [暴力破解检测](https://github.com/Phredreeq/brute-force-detection) - [密码喷洒检测](https://github.com/Phredreeq/password-spray-detection) - [防火墙日志分析](https://github.com/Phredreeq/firewall-log-analysis) - [网络流量分析](https://github.com/Phredreeq/network-traffic-analysis-wireshark) ## 👤 作者 Fredrick Agufenwa 网络安全学生 | SOC 与威胁检测
标签:AMSI绕过, DGA恶意软件, DNS分析, DNS隧道, NXDOMAIN, Python, SPL, 域名安全, 域名生成算法, 威胁检测, 安全运营, 扫描框架, 数据外泄检测, 无后门, 网络安全, 网络流量分析, 逆向工具, 隐私保护