首页/安全/取证与溯源速查/DNS 隧道流量特征

DNS 隧道流量特征

DNS 隧道把数据塞进查询名:超长子域、高频 TXT/NULL 记录与固定编码前缀是常见可观察特征。

取证与溯源速查安全更新于 2026-10-13

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 域名也可能很长。判断时叠加熵值、查询频率与目的权威服务器三个维度,单看长度会大量误报。
隧道流量可能只到本地解析器,再由解析器向上转发。排查时同时看解析器上游日志,否则只能看到本地那一层。
排查时先按目的域名聚合,再看查询量最大的主机,比逐条翻查询日志更快定位到发起方。

易错点

  • 只看查询名长度就判定隧道,正常长域名会被误报
  • 只抓主机侧 DNS 日志不看解析器上游,漏掉逐级转发的通道
  • 忽略记录类型维度,用 TXT 或 NULL 承载的隧道不容易被长度特征发现
  • 不与终端进程对照,线索落不到具体程序,后续处置无从下手

数据来源与参考

  • SANS 关于 DNS 隧道检测的实践文章
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌