DNS 隧道与数据外泄
通过 DNS 偷运数据。
DNS 隧道与数据外泄 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
通过 DNS 偷运数据
DNS 隧道会将任意数据编码到 DNS 查询和应答中,把名称系统变成隐蔽的通信信道。由于几乎所有网络都允许 DNS 离开边界网络,因此它成为数据外泄和命令与控制(C2)最常用的路径之一。
如果您的防火墙阻止了其他所有流量,但解析器仍然能够应答,攻击者就可以通过 DNS 建立完整的双向信道。
信道的工作方式
攻击者控制某个域名的权威名称服务器,例如 tunnel.evil.com。植入程序会将出站数据编码到查询的子域名(左侧标签)中:
- 数据以
<base32-chunk>.tunnel.evil.com的形式发出。 - 权威服务器会在
TXT、CNAME或NULL记录中返回指令。
每一对查询和应答都携带一小段载荷。
ZXhmaWx0cmF0ZWQtc2VjcmV0.tunnel.evil.com
# Encoded chunk smuggled in the query label编码选择
DNS 标签不区分大小写且长度有限,因此二进制数据通常使用 Base32 编码(Base64 会混用大小写并使用不安全字符)。请遵守以下限制:
- 每个标签最多 63 个字符。
- 名称总长度最多 255 个字符。
- 因此,每个查询最多只能携带几百字节。
吞吐量低,因此通过 DNS 外泄数据既缓慢又频繁,这也使其更容易被检测。
所使用的记录类型
不同的记录类型可以最大化下行容量:
TXT— 可携带较大的自由文本载荷,是 C2 应答的主力记录类型。NULL— 携带原始字节,较早的工具(如 iodine)会使用它。CNAME/MX— 容量中等,可以混入合法流量。A/AAAA— 容量较低,但非常常见且不引人注意。
常见工具
在检测中应能识别以下知名隧道工具:
- iodine — 使用 NULL/TXT 记录的 DNS 隧道,用于传输 IP。
- dnscat2 — 通过 DNS 建立加密的 C2 信道。
- DNSExfiltrator — 分阶段进行文件外泄。
- Cobalt Strike DNS 信标 — 在红队行动和真实入侵中都很常见。
这些工具具有可识别的查询模式和熵特征。
慢速和快速模式
攻击者会调整隧道模式:低速隐蔽模式每分钟只发送少量查询,以规避流量阈值,适合隐蔽地外泄凭据或密钥等少量机密。
高吞吐量模式会尽可能增加查询数量,用于交互式 C2 或批量传输,以隐蔽性换取速度。检测逻辑必须能够捕获这两种极端情况。
检测信号:熵
编码后的子域名看起来像随机字符串,因此与自然域名相比具有高熵。计算每个标签的香农熵是一种有效的启发式方法。
合法名称通常更容易发音,熵也较低;xj4k9d2mq7zp1.tunnel.evil.com 就十分显眼。请标记子域名熵超过经过调优阈值的域名。
检测信号:流量和长度
其他行为指标包括:
- 一台主机向单个域名发起的查询数量异常高。
- 查询名称很长,接近 255 字节的上限。
- 不成比例地使用
TXT或NULL记录。 - 同一父域名下存在许多唯一子域名(基数很高)。
- 查询指向新注册或信誉较低的域名。
# Top talkers by unique subdomain count per parent domain
sort dns.log | awk '{print $domain}' | sort | uniq -c | sort -rn | head为什么出站过滤有帮助
端点不应直接与互联网通信 DNS。请强制所有客户端通过内部解析器进行解析,并在防火墙上阻断出站的 UDP/TCP 53。
这样可以将 DNS 流量集中到受控的瓶颈位置,您可以在那里记录日志、检查流量并应用威胁情报。这也能阻断将外部解析器硬编码为 8.8.8.8 的植入程序。
分层缓解措施
结合多种控制措施来阻断隧道:
- 集中进行解析;阻断直接访问外部 53 端口。
- 部署带有信誉数据源的 DNS 防火墙 / RPZ。
- 针对熵、查询长度、NXDOMAIN 比率和每个域名的基数设置警报。
- 在可能的情况下限制速率并限制查询大小。
- 监测指向未知端点的 DoH,因为它会将隧道隐藏在 HTTPS 中。
DoH:检测盲区
基于 HTTPS 的 DNS 会将查询封装在 TLS 中并发送到 443 端口,因此传统的 53 端口监控什么也看不到。植入程序通过 DoH 连接恶意端点时,可以将数据隧道化,并避开被动 DNS 日志记录。
可以通过将端点固定为批准使用的 DoH 解析器、在受管设备上阻断已知公共 DoH IP 和主机名,以及检查 TLS SNI 和目标信誉来缓解这一问题。
快速检查
检验您的检测判断力。
回顾
DNS 隧道会滥用查询子域名和应答记录(TXT、NULL、CNAME)来建立用于外泄和 C2 的隐蔽信道。吞吐量较低,因此传输缓慢但隐蔽。iodine 和 dnscat2 等工具会留下可识别的模式。
可以通过熵、查询长度、流量和基数分析进行检测;可以通过集中式解析器、出站过滤、DNS 防火墙/RPZ 以及对 DoH 的控制来进行防护。下一节将介绍 DNSSEC 和过滤如何共同保护整个名称系统。
用 AI 导师学习 Cyber Security Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 76
- 课程
- 303
常见问题解答
「DNS 隧道与数据外泄」课时是免费的吗?
是的 — 「DNS 隧道与数据外泄」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「DNS 隧道与数据外泄」这节课中我会学到什么?
通过 DNS 偷运数据。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「DNS 隧道与数据外泄」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- DNS 的工作原理及其风险
- DNS 欺骗与缓存投毒
- DNS 隧道与数据外泄
- DNSSEC 与 DNS 筛选