DNS污染——domain name的解析被劫持了返回无效的ip
看下dns污染:
bash-3.2$ dig twitter.com +trace ; <<>> DiG 9.10.6 <<>> twitter.com +trace ;; global options: +cmd . 484068 IN NS d.root-servers.net. . 484068 IN NS j.root-servers.net. . 484068 IN NS l.root-servers.net. . 484068 IN NS g.root-servers.net. . 484068 IN NS h.root-servers.net. . 484068 IN NS b.root-servers.net. . 484068 IN NS m.root-servers.net. . 484068 IN NS e.root-servers.net. . 484068 IN NS a.root-servers.net. . 484068 IN NS f.root-servers.net. . 484068 IN NS c.root-servers.net. . 484068 IN NS i.root-servers.net. . 484068 IN NS k.root-servers.net. . 484069 IN RRSIG NS 8 0 518400 20180805170000 20180723160000 41656 . yl9YhwsdxJhUHr7/8S6Mv0mu4LqVFiN/aR+3zp7KIfyAthz21d2qUtdC hqOK16OhSAItXf3uZ5ent5NtswMSAvyxcS46/tMQm3kEsuoRiDNrbMAK k8XKcZC2HQ7tNPoPuUbjGrKeMuxqvDUecJ4/j0x30SRF9M9+1cL9BADb X22m65beu/bwfZuR70wsOyW56mIE/QVb6Q1X7nr3fwkl9MPD9p1wz6y5 HBcND8XhKepMY0v5hfV7CEmbM4b67p0U1+fGWybkDqudi2D9qLXW8SYT W+Wr3Df8pl/uriYpFCpd49ryVzEfdqte8IdyyNxQezgIX4ys8PvfKIWs xTcCsQ== ;; Received 1097 bytes from 2408:84e1:a0:5ce1::c9#53(2408:84e1:a0:5ce1::c9) in 613 ms twitter.com. 234 IN A 66.220.149.32 ;; Received 56 bytes from 2001:500:2::c#53(c.root-servers.net) in 805 ms bash-3.2$ dig twitter.com +trace ; <<>> DiG 9.10.6 <<>> twitter.com +trace ;; global options: +cmd . 484066 IN NS j.root-servers.net. . 484066 IN NS i.root-servers.net. . 484066 IN NS g.root-servers.net. . 484066 IN NS e.root-servers.net. . 484066 IN NS f.root-servers.net. . 484066 IN NS h.root-servers.net. . 484066 IN NS c.root-servers.net. . 484066 IN NS a.root-servers.net. . 484066 IN NS m.root-servers.net. . 484066 IN NS d.root-servers.net. . 484066 IN NS l.root-servers.net. . 484066 IN NS k.root-servers.net. . 484066 IN NS b.root-servers.net. . 484067 IN RRSIG NS 8 0 518400 20180805170000 20180723160000 41656 . yl9YhwsdxJhUHr7/8S6Mv0mu4LqVFiN/aR+3zp7KIfyAthz21d2qUtdC hqOK16OhSAItXf3uZ5ent5NtswMSAvyxcS46/tMQm3kEsuoRiDNrbMAK k8XKcZC2HQ7tNPoPuUbjGrKeMuxqvDUecJ4/j0x30SRF9M9+1cL9BADb X22m65beu/bwfZuR70wsOyW56mIE/QVb6Q1X7nr3fwkl9MPD9p1wz6y5 HBcND8XhKepMY0v5hfV7CEmbM4b67p0U1+fGWybkDqudi2D9qLXW8SYT W+Wr3Df8pl/uriYpFCpd49ryVzEfdqte8IdyyNxQezgIX4ys8PvfKIWs xTcCsQ== ;; Received 1097 bytes from 2408:84e1:a0:5ce1::c9#53(2408:84e1:a0:5ce1::c9) in 54 ms twitter.com. 181 IN A 69.171.235.16 ;; Received 56 bytes from 192.36.148.17#53(i.root-servers.net) in 51 ms
有没有发现每次返回的ip都是比较随机的。就算你指定dns服务器也会出现这个问题:
bash-3.2$ dig twitter.com +trace @8.8.8.8 ; <<>> DiG 9.10.6 <<>> twitter.com +trace @8.8.8.8 ;; global options: +cmd . 52616 IN NS k.root-servers.net. . 52616 IN NS m.root-servers.net. . 52616 IN NS c.root-servers.net. . 52616 IN NS l.root-servers.net. . 52616 IN NS e.root-servers.net. . 52616 IN NS b.root-servers.net. . 52616 IN NS j.root-servers.net. . 52616 IN NS f.root-servers.net. . 52616 IN NS i.root-servers.net. . 52616 IN NS g.root-servers.net. . 52616 IN NS d.root-servers.net. . 52616 IN NS a.root-servers.net. . 52616 IN NS h.root-servers.net. . 52616 IN RRSIG NS 8 0 518400 20180803050000 20180721040000 41656 . cwJz/99k74CqzPMcyjdYkufFaulgc6jXObkNsE1xBM1O+TcAYXnMw8e5 qr5GR5WrFdzd845+n8rP6LhuidOwvrooKbZn6R39ig+VXEZJa/UsMnIY OkTVoXXQZKXyQRjxJMbvNm01H0F6z6mOFnwcv1DjFWOjIG+/IYNvPu+o giA/B5hS2h3AaRvsBm4PdroHmG7dbgNfWq4Blh9WeonpVGL+j83mwerc Lz8O8j8oZQf8fWQuXr3JArW12likpx0Wf43cbWq+7E6boJ8+UA7lvpJv 2aPR/hi5+XPUppknRXPKGD6sn6eR1HuCDXQptWS2QnqcepwtNYraJZHs DWqztA== ;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 79 ms twitter.com. 98 IN A 75.126.135.131 ;; Received 56 bytes from 192.36.148.17#53(i.root-servers.net) in 44 ms bash-3.2$ dig twitter.com +trace @8.8.8.8 ; <<>> DiG 9.10.6 <<>> twitter.com +trace @8.8.8.8 ;; global options: +cmd . 193723 IN NS a.root-servers.net. . 193723 IN NS b.root-servers.net. . 193723 IN NS c.root-servers.net. . 193723 IN NS d.root-servers.net. . 193723 IN NS e.root-servers.net. . 193723 IN NS f.root-servers.net. . 193723 IN NS g.root-servers.net. . 193723 IN NS h.root-servers.net. . 193723 IN NS i.root-servers.net. . 193723 IN NS j.root-servers.net. . 193723 IN NS k.root-servers.net. . 193723 IN NS l.root-servers.net. . 193723 IN NS m.root-servers.net. . 193723 IN RRSIG NS 8 0 518400 20180803170000 20180721160000 41656 . BBPz7lF9LPdrl3G0HZbOlt6SVIns4c2jfzqM9lFCdr++4DztnNWN+vpk hkCgTsZWnO3ZNRTww4ItXNEfAcID8BIKGVTQr1U57PNqfeY4PLGJWfGT XTtkq3BK2NMzekqYIfKMhIyyoHry+qSpfKiCQxPWevXw9D+lA1n8otRl WsN9yTH9jHzyOippGplZNMAPZ2qxDP2CvXuDaH665hybELwLbcpbCCTn drOu7vXBBRx0r2xXDFv90079+4WdgEMQFTqiAc9JQhBODydH4NAW4Re+ swSbUhmdQ0oO+ocSEIK+fWxipnzzE11KWeeuZOkUy5V0iHR8JwPcWYmy t1SLTg== ;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 96 ms twitter.com. 149 IN A 8.7.198.45 ;; Received 56 bytes from 2001:500:2::c#53(c.root-servers.net) in 38 ms
DNS污染事件跟踪:为什么.cn和.org域名逃过一劫
2014年
关于中国境内用户访问.com 和.net 域名被解析到65.49.2.178 一事我又有新发现,我发现了为什么.cn 和.org 的域名没有受到影响指向65.49.2.178的原因,证明此事事故与根域名服务器无关。
在上一篇文章中,我查到了65.49.2.178这个IP的背景,验证了根域名服务器在中国有镜像,驳斥了各大媒体和维基百科上说“根域名服务器只有13台,亚洲唯一的一台在日本”的说法,猜测这事件是一次来自国内机房的DNS污染事故。
我注意到 国家互联网应急中心的通告提到仅有“.com”、“.net”等结尾的网站受到影响,而.cn结尾的网站没有受到影响,.org 结尾的网站没有被提到,也应该是没有受到影响:
关于1月21日我国境内互联网访问异常情况的通报 来源:CNCERT 时间:2014-01-22 2014年1月21日15:20,中国境内大量互联网用户无法正常访问域名以“.com”、“.net”等结尾的网站。事件发生后,国家互联网应急中心第一时间启动应急响应机制,协调组织部分技术支撑单位进行调查和应急处置,16:50左右,用户访问基本恢复正常。 经对已掌握的数据进行分析,初步判断此次事件是由于网络攻击导致我国境内互联网用户通过国际顶级域名服务解析时出现异常,攻击来源正在进一步调查中。
为什么.cn 和 .org 结尾的网站没有受到影响?
我们先来看正常的域名解析过程:
- 第一步,DNS会返回“根域名服务器”地址和IP, 上图中是root-servers.net结尾的地址;
- 第二步,根域名服务器192.33.4.12返回通用顶级域名(gTLD)的服务器地址和IP;
- 第三步,gTLD服务器返回NS(name server)地址和IP,上图中是ns1.dreamhost.com;
- 第四步,NS返回域名对应的真正的IP地址, 上图中是69.163.141.215。
下面是dig +trace zuola.com 和 dig +trace dbanotes.net 的结果,显示以“.com”、“.net”等结尾的域名在第二步返回的都是 gtld-server.net结尾的服务器地址; 而以“.org”的域名用的是另一种域名的服务器。
下面是dig +trace 1kg.org 这个域名的结果,同样需要向DNS发起第一步查询,返回的结果是相同的根域名服务器地址,第二步返回的却不是以 gtld-server.net结尾的服务器地址,是org.afilias-nst.org 和 org.afilias-nst.info 结尾的地址
下面是dig +trace hightechlowlife.cn 这个域名的结果,.cn 和 .org 的域名同样需要向DNS发起第一步查询,得到了正确的根域名服务器地址; 第二步返回的却不是 以gtld-server.net结尾的服务器地址,也不是以org.afilias-nst.org 和 org.afilias-nst.info 结尾的地址,是以dns.cn结尾的地址:
好了,.cn 和 .org 的域名同样需要向DNS发起第一步查询,也都得到与.com 跟.net 域名相同的“根域名服务器”查询结果了,仅有第二步返回的结果不同。这证明此次事件与“根域名服务器”完全没有关系。这样一区分,也许能解释为什么.cn 和.org 的域名没有受到影响了。
下图来自DNSPod的BLOG,证实2014年1月21日访问.com 域名会得到65.49.2.178这个IP:
没有返回返回通用顶级域名(gTLD)的服务器地址和IP,也没有返回name server 地址。
没有返回返回通用顶级域名(gTLD)的服务器地址和IP,也没有返回name server 地址。
我再贴一张2014年1月22日在中国境内用dig追踪twitter.com 域名解析过程的图片:
图片由陈少举提供
Twitter.com的域名被劫持到203.98.7.65这个IP了,从 http://whois.webhosting.info/203.98.7.65 来看,这个IP不是twitter的IP,表现和2014年1月21日的劫持域名到65.49.2.178完全一样:没有返回返回通用顶级域名(gTLD)的服务器地址和IP,也没有返回name server 地址。
完整无误的解析应该是如下图一样分四次返回数据:
图片由陈少举提供
结论:
我国境内互联网用户通过国际顶级域名服务解析时出现异常,“.com”、“.net”域名被解析到 65.49.2.178是一次DNS污染行为,和GFW污染Twitter.com 、Facebook.com Youtube.com 、 Zuola.com 等域名的表现是一致的,与根域名服务器完全无关。.cn 和 .org 结尾的网站没有受到影响则证明,可能是此次GFW不小心把gtld-servers.net 加入污染域名的列表了,下次遇到同样的部分域名受影响的话用用dig +trace gtld-servers.net来排查吧。