浅析加密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 隐私问题未被重视的原因
- 中间人通常能通过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参数
- POST方法:
- 厂商特定实现:
- 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月:
- 仅适用于客户端与递归服务器之间的通信
- 不适用于递归服务器与权威服务器之间的通信
- 未来可能扩展至全链路加密