看到一篇很有意思的文章,讲述的是如果通过控制一个域名的Nameservers服务来实现一定概率的劫持域名的DNS解析权,下面简述下笔记。
dig查看域名解析记录
mandatory@script-srchttpsyvgscript ~> dig NS iom.int
; <<>> DiG 9.8.3-P1 <<>> NS iom.int
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9316
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;iom.int. IN NS
;; ANSWER SECTION:
iom.int. 86399 IN NS ns1.gva.ch.colt.net.
iom.int. 86399 IN NS ns1.zrh1.ch.colt.net.
;; Query time: 173 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 8 14:12:47 2016
;; MSG SIZE rcvd: 81
跟踪域名解析过程
如上看到的是正常来自8.8.8.8的解析记录,但是我们使用dig +trace跟踪下域名的解析过程就会发现,其实一个域名的解析是通过了很多不同的Nameservers服务器的,如下
mandatory@script-srchttpsyvgscript ~> dig iom.int +trace
; <<>> DiG 9.8.3-P1 <<>> iom.int +trace
;; global options: +cmd
. 209756 IN NS g.root-servers.net.
. 209756 IN NS m.root-servers.net.
. 209756 IN NS i.root-servers.net.
. 209756 IN NS l.root-servers.net.
. 209756 IN NS f.root-servers.net.
. 209756 IN NS b.root-servers.net.
. 209756 IN NS c.root-servers.net.
. 209756 IN NS h.root-servers.net.
. 209756 IN NS d.root-servers.net.
. 209756 IN NS k.root-servers.net.
. 209756 IN NS j.root-servers.net.
. 209756 IN NS e.root-servers.net.
. 209756 IN NS a.root-servers.net.
;; Received 228 bytes from 172.16.0.1#53(172.16.0.1) in 30 ms
int. 172800 IN NS ns.icann.org.
int. 172800 IN NS ns1.cs.ucl.ac.uk.
int. 172800 IN NS ns.uu.net.
int. 172800 IN NS ns0.ja.net.
int. 172800 IN NS sec2.authdns.ripe.net.
;; Received 365 bytes from 192.5.5.241#53(192.5.5.241) in 88 ms
iom.int. 86400 IN NS ns1.iom.org.ph.
iom.int. 86400 IN NS ns2.iom.org.ph.
iom.int. 86400 IN NS ns1.gva.ch.colt.net.
iom.int. 86400 IN NS ns1.zrh1.ch.colt.net.
;; Received 127 bytes from 128.86.1.20#53(128.86.1.20) in 353 ms
iom.int. 86400 IN A 54.154.14.101
iom.int. 86400 IN NS ns1.zrh1.ch.colt.net.
iom.int. 86400 IN NS ns1.gva.ch.colt.net.
;; Received 97 bytes from Cnlouds#53(212.74.78.22) in 172 ms
出现问题
现在就存在这么一种情况,这些个不同的Nameservers服务中有一个域名已经失效了、已经被注销了,目标域名解析过程中,系统并不会告诉你解析过程中有一个Nameservers服务已经失效,而是一个Nameservers服务查询不到时就会继续转给下一个Nameservers去查询。
由此导致的一个问题是,当失效的那个Nameservers服务域名被恶意注册的话,就可以实现劫持目标域名的DNS解析权限。目标域名被我们控制的Nameservers服务解析的概率50%左右,而且DNS缓存也存在一定的时间限制,可以通过增加DNS缓存TTL生存时间的生效期解决,然后就可以做一些流量劫持,DDOS等危害操作。
可能出现的场景
- 很多网站中引入了第三方资源,而当第三方资源域名失效且未被注册时,即可导致网站引入恶意的第三方代码资源,如XSS代码窃取用户cookie/博彩/DDOS等持久化控制。 案例:hackone - twitter
- 直接使用dig查询一个网站的域名解析过程,查看解析过程中的Nameservers服务域名是否失效且未被注册(或已被控制),亦可打到目的。
原文
Hijacking Broken Nameservers to Compromise Your Target