DNS 隧道
DNS 隧道 是什么?
DNS 隧道通过将任意数据编码到 UDP/TCP 53 端口的 DNS 查询与响应中而形成的隐蔽通道,常用于命令控制和数据外泄。
DNS 隧道利用了 DNS 流量(UDP/TCP 53 端口)几乎在所有网络中被允许、且很少被深度检查的特点。恶意软件把载荷字节编码进子域名标签(例如在 attacker.example.com 下用 base32 分片),攻击者的权威服务器以 TXT、CNAME、NULL 或 A 记录返回响应或下发命令。由于解析是递归进行的,即使主机只能访问内部解析器、从未直接接触攻击者的 IP,数据仍会被传出。dnscat2、Iodine 以及 Cobalt Strike 的 DNS C2 都实现了这一模式;吞吐量虽低,却十分隐蔽。
真实攻击活动确实依赖它。2020 年 SolarWinds Orion 中的 SUNBURST 后门使用域名生成算法构造 avsvmcloud.com 的子域名,再把受害者内部的 Active Directory 域名以及已安装的安全产品清单编码进这些 DNS 查询中,形成双向 C2 通道。与伊朗相关的 OilRig/APT34 和 DNSpionage 行动同样依靠 DNS 隧道下达任务和实施外泄。
检测依赖于攻击者难以隐藏的信号:单主机查询速率过高、标签异常长、子域熵值偏高(base32/base64/hex 字符串)、TXT 或 NULL 等非典型记录类型,以及此前从未出现过的域名。防御措施包括强制所有客户端经由受控解析器、在出向防火墙阻止直连的 53 出向端口、DNS Sinkhole、查询限速,以及 EDR/NDR 中的异常分析。
flowchart LR M[Infected host] -->|"data.b32label.attacker.com"| R[Internal resolver] R -->|recursive lookup| AUTH[Attacker authoritative NS] AUTH -->|"TXT/CNAME reply = command"| R R --> M AUTH -.reassembles.-> D[(Stolen data and C2)]
● 示例
- 01
受感染主机发出 a1b2c3.exfil.attacker.com 这类查询,其标签编码了被窃取的数据。
- 02
dnscat2 通过 TXT 记录在 DNS 之上建立 shell,从而绕过仅允许 HTTP 的出向代理。
● 常见问题
DNS 隧道 是什么?
通过将任意数据编码到 UDP/TCP 53 端口的 DNS 查询与响应中而形成的隐蔽通道,常用于命令控制和数据外泄。 它属于网络安全的 网络安全 分类。
DNS 隧道 是什么意思?
通过将任意数据编码到 UDP/TCP 53 端口的 DNS 查询与响应中而形成的隐蔽通道,常用于命令控制和数据外泄。
如何防御 DNS 隧道?
针对 DNS 隧道 的防御通常结合技术控制与运营实践,详见上方完整定义。
DNS 隧道 还有哪些其他名称?
常见的别称包括: DNS C2, DNS 数据外泄。