浅析加密DNS(附子域名爆破工具)
字数 1342 2025-08-18 11:37:15

加密DNS协议详解:DNS over HTTPS与DNS over TLS

1. DNS的安全与隐私问题

1.1 传统DNS的缺陷

  • 传输方式:主要使用UDP,也可用TCP,但两者均无加密和签名机制
  • 隐私泄露风险:中间人可以监听用户访问的域名
  • 篡改风险:中间人可以修改DNS返回的IP地址,导致钓鱼攻击

1.2 DNSSEC的局限性

  • 引入了签名机制,确保从权威DNS到客户端的数据未被篡改
  • 未解决隐私问题:查询内容仍然是明文的

1.3 隐私问题未被重视的原因

  1. 中间人通常能通过IP地址推断访问的网站
  2. 上层协议泄露域名信息:
    • HTTP明文传输
    • TLS的SNI(Server Name Indication)暴露明文域名
  3. 上层协议(如TLS)能识别DNS篡改

1.4 加密DNS的优势

  1. 减小攻击面
  2. 保护纯DNS查询场景:如子域名爆破等不实际访问域名的操作

2. 两种加密DNS协议

2.1 DNS over TLS (DoT)

  • 标准文档:RFC7858
  • 实现方式
    • 客户端与递归服务器进行TLS握手
    • 使用TCP端口853
    • DNS数据包作为TLS payload传输
  • 报文格式:与普通DNS over TCP相同

2.2 DNS over HTTPS (DoH)

  • 当前状态:尚无RFC,只有草案《DNS Queries over HTTPS》
  • 实现方式
    • POST方法
      • DNS over UDP报文作为HTTP body
      • Content-Type设为application/dns-message
    • GET方法
      • DNS over UDP报文用base64编码
      • 编码字符串作为URL的dns参数
  • 厂商特定实现
    • Google和CloudFlare支持JSON格式
    • 知名公共DNS服务器:
      • Google: 8.8.8.8, 8.8.4.4
      • CloudFlare: 1.1.1.1, 1.0.0.1 (2018年4月1日上线)

3. 应用实例:子域名爆破工具

3.1 工具特点

  • 使用JSON格式的DNS over HTTPS
  • 可选择不同DNS服务器
  • 基于字典的搜索方式
  • 字典来源:dnsrecon项目

3.2 运行环境要求

  • 操作系统:Windows 10+
  • 开发环境:Visual Studio 2017+
  • .NET Framework 4.6.1+
  • 注意:旧版Windows可能因证书验证问题无法连接1.1.1.1

3.3 工具地址

GitHub仓库:https://github.com/xiaoyinl/securedns

4. 参考资料

  1. RFC7626 - DNS Privacy Considerations
  2. Announcing 1.1.1.1: the fastest, privacy-first consumer DNS service
  3. DNS over TLS - Cloudflare Resolver
  4. DNS over HTTPS - Cloudflare Resolver

5. 协议适用范围说明

截至2018年4月:

  • 仅适用于客户端与递归服务器之间的通信
  • 不适用于递归服务器与权威服务器之间的通信
  • 未来可能扩展至全链路加密
加密DNS协议详解:DNS over HTTPS与DNS over TLS 1. DNS的安全与隐私问题 1.1 传统DNS的缺陷 传输方式 :主要使用UDP,也可用TCP,但两者均 无加密和签名机制 隐私泄露风险 :中间人可以监听用户访问的域名 篡改风险 :中间人可以修改DNS返回的IP地址,导致钓鱼攻击 1.2 DNSSEC的局限性 引入了签名机制,确保从权威DNS到客户端的数据未被篡改 未解决隐私问题 :查询内容仍然是明文的 1.3 隐私问题未被重视的原因 中间人通常能通过IP地址推断访问的网站 上层协议泄露域名信息: HTTP明文传输 TLS的SNI(Server Name Indication)暴露明文域名 上层协议(如TLS)能识别DNS篡改 1.4 加密DNS的优势 减小攻击面 保护纯DNS查询场景 :如子域名爆破等不实际访问域名的操作 2. 两种加密DNS协议 2.1 DNS over TLS (DoT) 标准文档 :RFC7858 实现方式 : 客户端与递归服务器进行TLS握手 使用 TCP端口853 DNS数据包作为TLS payload传输 报文格式 :与普通DNS over TCP相同 2.2 DNS over HTTPS (DoH) 当前状态 :尚无RFC,只有草案《DNS Queries over HTTPS》 实现方式 : POST方法 : DNS over UDP报文作为HTTP body Content-Type设为 application/dns-message GET方法 : DNS over UDP报文用base64编码 编码字符串作为URL的 dns 参数 厂商特定实现 : Google和CloudFlare支持JSON格式 知名公共DNS服务器: Google: 8.8.8.8, 8.8.4.4 CloudFlare: 1.1.1.1, 1.0.0.1 (2018年4月1日上线) 3. 应用实例:子域名爆破工具 3.1 工具特点 使用JSON格式的DNS over HTTPS 可选择不同DNS服务器 基于字典的搜索方式 字典来源:dnsrecon项目 3.2 运行环境要求 操作系统:Windows 10+ 开发环境:Visual Studio 2017+ .NET Framework 4.6.1+ 注意 :旧版Windows可能因证书验证问题无法连接1.1.1.1 3.3 工具地址 GitHub仓库:https://github.com/xiaoyinl/securedns 4. 参考资料 RFC7626 - DNS Privacy Considerations Announcing 1.1.1.1: the fastest, privacy-first consumer DNS service DNS over TLS - Cloudflare Resolver DNS over HTTPS - Cloudflare Resolver 5. 协议适用范围说明 截至2018年4月: 仅适用于 客户端与递归服务器 之间的通信 不适用于 递归服务器与权威服务器之间的通信 未来可能扩展至全链路加密