【技术分享】劫持一个国家的顶级域名之旅-域名后缀的隐藏威胁(下)

http://p9.qhimg.com/t01c6816c8a87675dfb.jpg

翻译:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

传送门

【技术分享】劫持一个国家的顶级域名之旅:域名后缀的隐藏威胁(上)

【技术分享】劫持一个国家的顶级域名之旅:域名后缀的隐藏威胁(中)

通用认证&国际域名

当然了,这些漏洞不仅仅只会影响安哥拉和纳米比亚等国家的域名后缀,受影响的国家还有很多很多。比如说,很多热门的网络服务为了给全球各地的用户提供更好的本地体验,它们的主页会使用很多国家的域名后缀。其中的大多数网站会将其所有的主页绑定在一个通用认证流中,并将登录服务的用户自动重定向到使用本地区域名后缀的主页。

其中的一个例子就是谷歌的搜索主页,这个主页就使用了多个域名后缀(有关谷歌域名后缀的信息请参考【这里】)。比如说其中的google.co.ao

http://p4.qhimg.com/t01a65b00799ef04b0b.png

另外一个例子是google.com.na

http://p4.qhimg.com/t0135f7bbb829b5b575.png

为了享受更加无缝的网络体验,你可以直接点击页面右上角的蓝色按钮(Sign in-登录)在任何一个后缀的谷歌主页登录你的账号。点击这个按钮约等于访问下面这条链接:

https://accounts.google.com/ServiceLogin?hl=pt-PT&passive=true&continue=https://www.google.co.ao/%3Fgws_rd%3Dssl

如果直接访问这个链接的话,后台服务器会将你重定向至下面这个链接:

https://accounts.google.co.ao/accounts/SetSID?ssdc=1&sidt=[SESSION_TOKEN]&continue=https://www.google.co.ao/?gws_rd=ssl&pli=1

链接会通过sidt参数传递一个会话令牌,它会将你登录到google.co.ao域名并允许进行跨域认证。

但这些东西对于我们的漏洞利用有何帮助呢?如果你成功入侵了任意一个谷歌主页域名后缀,那么你就可以利用这个漏洞来劫持任何一个谷歌账号。但这毕竟是一种非常奇特的威胁模型,因为在攻击一个谷歌账号之前你必须要入侵两百个谷歌域名后缀NS中的其中一个才行。而且攻击的难度也不低,毕竟谷歌拥有一个非常强大的安全团队,而这些技术人员会不断审查他们的基础设施状态。

为了成功利用这种类型的DNS劫持漏洞,你需要按照以下步骤进行操作(所有操作必须悄悄进行,以免被抓个现行):

1.入侵一个域名后缀的域名解析服务器(或记录),然后修改目标网站的域名解析服务器。

2.开始返回你针对目标域名所设置的新域名解析服务器,并设置时间较长的TTL(BIND的解析器默认支持至少一周的时间)。这一点非常重要,因为这样我们就可以尽可能地得到更多的缓存,我们还需要为google.co.ao/google.com.na子域名的A记录设置较短的TTL,这样我们就可以在它们之间进行快速切换了。

3.接下来,我们要拿到一份针对google.co.ao/google.com.na域名的有效SSL证书。这是其中最棘手的一个步骤了,因为证书透明(Certificate Transparency)很可能会暴露我们的恶意行为。有关SSL证书的内容请参考【这篇文章】。

4.现在我们设置了多台服务器来托管恶意的google.co.ao/google.comna网站并启用了SSL,然后将所有的A记录响应更改为指向我们的恶意服务器。接下来,我们就可以开始让尽可能多的谷歌用户去访问上面给出的链接,访问之后我们就能够获取到他们的认证令牌了。这种攻击方法的一个优势就是目标用户甚至不用去手动访问那个URL地址,因为我们可以通过类似<img>这样的标签来发送GET请求,并利用这些请求来完成302重定向操作。


影响范围非常大

另一个需要考虑的方面是,受这个DNS劫持漏洞影响的并非只有*.co.ao、*.it.ao和*.na域名,实际上任何一个依赖于这些域名后缀的站点都将会受到该漏洞的影响。比如说,其他同样使用了*.co.ao/*.it.ao/*.na域名服务器的主机将有可能受到代理攻击,而且WHOIS联系方式中如果暴露了域名后缀的相关信息,那么这些网站同样是非常危险的,因为攻击者可以利用WHOIS信息来获取SSL证书。


总结与思考

我希望可以通过这篇文章让大家意识到顶级域名或域名后缀的安全性其实是非常不可靠的。请大家一定要记住,虽然现在有很多针对DNS的欺骗技术,但是最简单的攻击方法就是利用域名后缀NS中某项服务的漏洞来实施攻击。在我看来,我认为互联网服务商和广大社区应该采取下列措施来提升DNS的安全性:

1.对于修改顶级域名中重要参数的行为,需要对操作者的身份进行电话验证,最低的要求是对WHOIS联系信息中的电子邮件地址进行确认。

2.对顶级域名的域名解析服务器设置更加严格的安全要求,限制暴露在网络中的接口,尽可能地只开启UDP/TCP端口53。

3.对顶级域名的DNS进行定期的自动化安全审计,一旦自动化检测系统发现了DNS错误,则立刻通知DNS管理员。

4.向域名拥有者告知购买多种域名后缀/顶级域名的安全风险,并保存过去曾发生的安全事件记录。这样一来,当用户准备购买某个域名时,我们就可以确保他们能够作出明智的决定了。除此之外,我们还应该重视例如响应时间和解析时间等安全因素,因为它们对于域名的安全性也同样重要。

5.提高对DNSSEC(DNS安全扩展)的认知,并让DNS解析器支持使用DNS安全扩展。如果我们采用了DNSSEC,并且域名和解析器都采用了的话,它将可以帮助我们更好地抵御这些DNS劫持攻击。根据我的个人经验来看,我平时根本没有见过DNSSEC失效的情况,因为几乎没有一个网络采用过这项安全防护技术。在这里我并不想强迫大家去部署DNSSEC,但我想告诉大家的是DNSSEC绝对可以为你的基础设施带来一层额外的安全保护,并帮助你更好地抵御DNS劫持攻击。

注:DNSSEC,即Domain Name System Security Extensions,中文意思为DNS安全扩展。DNSSEC是由IETF提供的一系列DNS安全认证机制(具体请参考RFC2535),它提供了一种请求来源鉴定和数据完整性验证的功能扩展,而正是由于DNS基础设施中存在这样那样的劫持漏洞,所以我们才需要引入这种被称为DNS安全扩展的技术以保护互联网中这一部分重要的通信基础设施。

http://p0.qhimg.com/t01676cf65c9309a888.png

虽然一些涉及到ccTLDs(即国家和地区顶级域名,目前200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,日本是jp等)的情况会非常棘手,但我相信本系列文章所给出的安全观点和操作建议可以帮助你提升网站以及DNS基础设施的安全性,而与此同时我也非常明白,确保这些安全方案得到真正的实施其实也是一件非常困难的事情,因为永远都是说起来容易做起来难。

无论怎样,DNS目前的安全情况都不容乐观,而且考虑到DNS基础设施面临着非常大的攻击面,我认为今后顶级域名或域名后缀被攻击的事件将会发生得愈加频繁。


传送门


【技术分享】劫持一个国家的顶级域名之旅:域名后缀的隐藏威胁(上)

【技术分享】劫持一个国家的顶级域名之旅:域名后缀的隐藏威胁(中)

(完)