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 长度和熵,同时也兼顾了负载是否存在。 | 调整项 | 目的 | |------------|---------| | **阈值调整** | 降低阈值 → 提高敏感度,但可能会增加误报。提高阈值 → 减少误报,但可能会漏掉隐蔽的隧道。 | | **权重调整** | 调整特征的相对重要性(例如,如果编码行为占主导,则增加熵的权重)。 | | **附加特征** | 数据包间的时序、查询类型模式、重复域名的频率可以提高检测效果。 |
标签:逆向工具