DNS 隧道流量特征是什么
DNS 隧道把数据塞进查询名或应答内容,借 DNS 协议本身当传输通道。由于几乎所有网络都放行 DNS,这类通道很容易穿透出口管控。可观察的特征集中在两处:查询名的形态(超长子域、高熵随机串、固定编码前缀)与记录类型的分布(TXT、NULL 的异常使用),再加上单域名的查询频率。
基本信息
| 用途 | 识别经 DNS 建立的数据通道 |
|---|---|
| 观察点 | 查询名长度、记录类型分布、单域查询频率 |
| 常见框架 | iodine、dnscat2 等,编码形态各不相同 |
| 数据来源 | DNS 查询日志、解析器上游日志、抓包 |
典型使用场景
- 出口管控很严但仍需发现数据外带通道
- 发现某主机对单一域名的持续高频查询
- 排查超长且随机化的子域请求
- 核查是否有 TXT 记录承载载荷
- 与终端侧进程对照,把线索落到具体程序
长度分布与类型
长度分布与类型
awk '{print length($9)}' dns.log | sort -n | uniq -c | tail # 查询名字段长度分布
zeek-cut query qtype id.orig_h < dns.log | awk '{print length($1)}' | sort -n | tail
tshark -r sample.pcap -Y 'dns.qry.type==16' -T fields -e dns.qry.name | sort | uniq -c | sort -rn | head # TXT 查询排行
tshark -r sample.pcap -Y 'dns.qry.name' -T fields -e dns.qry.name | awk '{print length($1), $1}' | sort -rn | head
# 先看长度分布的尾部,再看记录类型与查询频率特征与判读
| 特征 | 正常表现 | 隧道迹象 |
|---|---|---|
| 查询名长度 | 多数在几十字符内 | 出现接近长度上限的长标签 |
| 标签形态 | 可读单词或拼音 | 随机串、base32 或 base64 字符集 |
| 记录类型 | 以 A、AAAA 为主 | TXT 或 NULL 占比异常 |
| 查询频率 | 受缓存影响有起伏 | 固定高频且几乎没有缓存命中 |
| 目的域名 | 常见大厂与 CDN 域名 | 单一陌生域名承载全部查询 |
正常 CDN 域名也可能很长。判断时叠加熵值、查询频率与目的权威服务器三个维度,单看长度会大量误报。
隧道流量可能只到本地解析器,再由解析器向上转发。排查时同时看解析器上游日志,否则只能看到本地那一层。
排查时先按目的域名聚合,再看查询量最大的主机,比逐条翻查询日志更快定位到发起方。