预期 DNS 查找结果示例(1):
nslookup google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: google.com
Address: 173.194.123.41
Name: google.com
Address: 173.194.123.33
...
我所问的问题的示例(2)是否有效:
nslookup google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: google.coM
Address: 173.194.123.33
Name: google.coM
Address: 173.194.123.34
...
请注意第二个例子中的最后一个字母 M。最近在 Verizon Fios Quantum 网络上发现了这一点。
DNS 规范是否规定可以接受与请求不同的响应?我知道 DNS 不区分大小写,如果您输入 www.GooGLe.cOM,您将获得与 www.google.com 相同的 IP 地址,但我认为在这两种情况下,响应都应该/必须与查询完全匹配。
答案1
就你的情况而言,解析器可能会添加0x20 编码根据您的请求,并且此编码正在本地缓存并提供,这与常见做法相反:
###虽然 DNS 允许使用混合大小写,并且 IETF 草案也利用了这一点,“使用 DNS 标签中的位 0x20 来改进交易身份“作为 DNS 伪造/中毒缓解技术,它不受 DNS 规范强制执行 - 服务器不是有义务返回准确的字符编码,尽管很少见;这是草案中讨论的一个潜在问题。###
因为所有** DNS 实现都会复制请求确切地回应(在实践中),则返回大小写混合的域名请求。客户端可以随机化字符大小写,并比较服务器的响应,结果应该匹配:
(第 2.2 节) 例如,以下问题名称将被响应者视为相等,但可能被请求者视为不相等:
www.ietf.org WwW.iEtF.oRg wWw.IeTf.OrG WWW.IETF.ORG
攻击者需要成功猜出随机编码,否则客户端将忽略它。由于编码的强度与域名的长度有关,因此域名越长,安全性越高 - 字符越多,熵越大。
对于未实现 0x20 的客户端(并且消除了中间人引入编码的可能性),可能会返回带有编码的响应不是在原始请求中 - 可能是投毒企图的结果。