AarohiK/DNS-Attack-Detection-Project
GitHub: AarohiK/DNS-Attack-Detection-Project
基于 PCAP 流量分析的混合式 DNS 隧道与 C2 通道检测引擎,通过统计特征和机器学习启发式算法对可疑 DNS 会话进行异常评分和报告生成。
Stars: 0 | Forks: 0
# DNS 攻击检测项目
本项目演示了如何从 24 小时的 PCAP 抓包记录中检测 DNS 隧道(dnscat2)和 C2 通道。
## 特性
- 从 PCAP 中提取 DNS/TCP 特征。
- 使用序列启发式算法和简单的 ML 计算异常评分。
- 生成 SOC 风格的 CSV 和 HTML 报告,并标记可疑会话。
## 用法
1. 在 VM 中安全地下载 dnscat2 PCAP 文件:
[ActiveCountermeasures dnscat2 PCAP](https://www.dropbox.com/s/4r9mcn792dbzonf/dnscat2_dns_tunneling_24hr.pcap?dl=0)
2. 运行脚本:
python3 detect_dnscat.py /path/to/dnscat2_dns_tunneling_24hr.pcap
## 使用的流程与逻辑:
| 特征 | 描述 | 原理 |
|---------|------------|-----------|
| **DNS 查询长度 (`dns_len`)** | DNS 查询中的字符数 | DNS 隧道通常在查询中对数据进行编码,导致其异常长。 |
| **DNS 查询熵 (`dns_entropy`)** | 查询字符串的香农熵 | 与普通域名相比,经过随机化或编码的查询具有更高的熵。 |
| **TCP 负载存在情况 (`tcp_payload_present`)** | 二进制标志:存在负载为 1,否则为 0 | 恶意 DNS 隧道可能会在 TCP/UDP 负载中携带额外数据。 |
## 异常评分计算 = 简单的预测模型
每个数据包的异常评分计算方式如下:
score = 0.4 * dns_len + 0.4 * dns_entropy + 0.2 * tcp_payload_present
- 得分越高 → 越有可能属于 DNS 隧道。
- 权重设置侧重于 DNS 长度和熵,同时也兼顾了负载是否存在。
| 调整项 | 目的 |
|------------|---------|
| **阈值调整** | 降低阈值 → 提高敏感度,但可能会增加误报。提高阈值 → 减少误报,但可能会漏掉隐蔽的隧道。 |
| **权重调整** | 调整特征的相对重要性(例如,如果编码行为占主导,则增加熵的权重)。 |
| **附加特征** | 数据包间的时序、查询类型模式、重复域名的频率可以提高检测效果。 |
标签:逆向工具