APP下载

DNS重绑定对路由器的影响及防护策略研究

2014-01-05辛宏明王勇军赵芮元郭双飞

成都信息工程大学学报 2014年6期
关键词:外网域名攻击者

辛宏明,王勇军,赵芮元,郭双飞

(国防科学技术大学计算机学院,湖南长沙410073)

1 概述

路由器是网络攻击者的理想目标,因为路由器可以被用于窃听发送到或从企业接入点流出的流量。在攻击者控制路由器后,能够监控、重定向、阻止或篡改广泛的在线活动。一旦路由器被攻击,路由器防火墙保护的设备也成为攻击目标。即使是技术型用户都很难发现路由器网络攻击,因为路由器用户接口很小,从感染设备发送到网络攻击者的流量通常很难被发现。

DNS重绑定通过一个域名与两个ip地址对应,以此迷惑浏览器,使浏览器误认为两个ip属于相同的区域源,进而将受害主机作为代理,把目标服务器的内容传送给攻击者,效果如图1所示。

由于利用内网受害主机访问目标服务器,所以,内网防火墙很难提供有效的防护。利用DNS重绑定的手段入侵路由器,攻击者能够在受害者毫不知情的情况下,登陆路由器配置界面,对路由器的配置进行更改,甚至以此为支点,访问内网其他目标。

图1 DNS重绑定效果

图2 相同区域源策略的实际应用

2 相同区域源策略

为显示Web页面,浏览器要进行网络访问请求,HTML进行静态网页请求,Java脚本、Flash及CSS进行动态网页请求。为防止Web网站被恶意连接,限制有些网络访问请求,相同区域源策略根据区域源限制某些访问,从而部分资源被隔离[1]。该策略规定从一个区域源下载的文件或程序不能与其他区域源的文件或程序进行连接。

浏览器的相同区域源策略主要是基于统一资源定位符(URL)包括的几个部分:

<protocol>://<server-host>:<port-number>/<path>

同源策略规定:

Origin={<protocol>,<server-host>,port-number>}

因此,如果两个对象的URL具有相同的协议、主机名、端口号,那么它们就属于相同的区域源[2]。来自于一个区域源的对象可以访问另外一个相同的区域源,如图2所示。

尽管相同区域源策略对网络服务器起到一定的保护作用,但是,设计的缺陷和其他不安全的服务使该策略的安全性受到很大的影响。比如,浏览器需要将域名转化为IP地址,然后开放一个SOCKET到指定的IP。如果一个DNS请求返回两个或多个IP,由于这些IP所对应的域名相同,浏览器会认为它们属于相同的区域源,因此可以直接访问这些IP。事实上,攻击者可以控制DNS服务器,使其中的一个IP指向攻击者,一个ip指向目标服务器,进而实施攻击。DNS重绑定就是利用了相同区域源策略的这个漏洞[3]。

3 DNS重绑定的发展动态

3.1 1996年Princeton DNS重绑定

1996 Princeton计算机科学实验室最早实现了DNS重绑定攻击[4]。这个攻击利用了java虚拟机的漏洞[5],同时也第一次使用DNS服务器实现一个域名对应多个IP地址的映射。攻击过程如图3所示。

图3 Princeton DNS重绑定

攻击者控制自己的WEB服务器和DNS服务器,并且将服务器域名attacker.com与两个ip地址绑定,一个为攻击者服务器ip,另一个为目标服务器ip(该目标服务器与受害者主机处于同一内网中)。另外,攻击者的web页面包含了java恶意程序。

受害者浏览器向DNS服务器发出域名解析请求,获得两个ip地址,并首先访问第一个ip地址,浏览器下载并运行恶意代码,该代码请求浏览器开放一个socket到第二个ip地址,也就是目标ip,由于该ip在DNS记录中,所以,java虚拟机会允许这个连接。这样,攻击者可以绕开防火墙的保护,通过受害者主机访问目标服务器,获取信息。

随着java安全的升级,Princeton DNS重绑定攻击很快退出了历史舞台。

3.2 2001年Low TTL DNS重绑定

Low TTL DNS重绑定攻击给DNS记录增加了TTL值。另外,该攻击使用了 XmlHttpRequest对象[6],该对象被用于与源服务器进行数据交换。攻击过程如图4所示。

受害者浏览器向DNS服务器发出域名解析请求,返回的ip地址为攻击者服务器的ip地址,但是该DNS记录的TTL非常短,近似于零。

受害者访问攻击者的恶意网站,包含XmlHttpRequest对象的恶意程序下载并运行。

当DNS的TTL为零时,浏览器会进行第二次DNS查询,此时,DNS服务器返回的ip为目标服务器的ip地址。

受害者的浏览器会将目标服务器的ip当做原来的服务器进行登陆。登陆后,XmlHttpRequest在后台将服务器的内容发送给攻击者,而受害者对此却无从察觉。

两次连接所对应的域名相同,所以,浏览器会以为两个ip属于相同的区域源,而事实上并非如此。在Princeton攻击中,攻击者在外网利用受害者的浏览器攻击内网服务器。此攻击的不同之处在于使用了XmlHttpRequest,尽管XmlHttpRequest只能与源服务器进行数据交换,但是通过重绑定攻击,使目标服务器被认为是来自相同的区域源,使得XmlHttpRequest能够在攻击者服务器和目标服务器之间进行数据的交换。

图4 Low TTL DNS重绑定

3.3 2006年Anti-DNS Pinning重绑定

DNS Pinning技术的诞生,在一段时间内有效地阻止了DNS重绑定攻击,直到2006年Anti-DNS Pinning重绑定攻击[7]的出现。Anti-DNS Pinning重绑定攻击主要利用了大部分浏览器没有完全执行DNS Pinning的漏洞,通过技术手段,迫使DNS Pinning失效,进而进行重绑定攻击[8]。Anti-DNS Pinning重绑定攻击主要利用JavaScript或 Adobe Flash Player[9]实现。以 JavaScript为例,其攻击过程如图5所示[10]。

受害者向DNS服务器发出域名解析请求,获得的ip地址为攻击者的ip地址。

受害者主机访问攻击者的恶意网站,下载含有XmlHttpRequest对象的恶意脚本。

恶意脚本向攻击者服务器发出连接申请,服务器通过某种方式拒绝连,迫使DNS PINNING失效。

受害者浏览器再次进行DNS查询,返回的结果是目标服务器的ip地址。

此时新的ip地址指向内网的服务器,攻击者的恶意程序访问内网服务器并将结果发送给攻击者。

攻击的要点在于服务器拒绝javascript的连接请求,使DNS PINNING失效。拒绝连接的方法很多[11],例如:关闭服务器;使用防火墙屏蔽受害者的ip地址;使用RST中断TCP连接[9];攻击者可以在html代码中加入

<img src=“http://attacker.com:81”>访问不存在的端口,使连接请求失败再次进行DNS查询[11]。

图5 Anti-DNS Pinning重绑定

4 DNS重绑定对路由器的影响

DNS重绑定对WEB服务器的影响主要体现在防火墙欺骗和ip地址劫持两个方面。当目标服务器变成路由器的时候,DNS重绑定能够在外网访问内网路由器的web配置页面,并且对路由器的配置进行更改,进而达到控制路由器的目的。为证实DNS重绑定对路由器的具体影响,搭建以下实验环境进行模拟分析。

4.1 实验拓扑

实验所搭建的环境如图6所示。图中,左侧为受害者网络,右侧为攻击者网络。Router3为目标路由器。

正常情况下,路由器只允许内网用户通过路由器的内网ip对其进行访问。如Victim Client可以在浏览器中输入192.168.16.1访问 router3。在路由器没有开放wan服务的情况下,外网用户不能访问路由器;如果路由器开放wan服务,外网用户也会因为不清楚路由器外网ip或者受到路由器访问限制而不能访问路由器。但是,通过DNS重绑定,攻击者可以在外网,通过内网中的受害主机访问路由器,并将数据传递给攻击者。实验的目标是攻击者实现对router3的控制。

实验所需硬件条件:1台cisco 2600系列路由器;2台TP-link WR841N路由器;2台Catalyst 1900系列交换机;3台联想K49A笔记本电脑。

实验所需软件条件:Victim Client运行 windows 7操作系统,并安装主流浏览器,如 IE10、firefox28.0、chrome33.0 等;DNS Server运行 windows 2003;攻击者 WEB Server运行 ubuntu 11.10。

图6 实验网络拓扑图

4.2 过程模拟

实验使用的工具为Rebind[12],该工具集成了2个WEB服务器和1个http代理服务器,通过Javascript恶意程序实现DNS重绑定。实现过程如图7所示。

Victim向DNS server发出域名解析请求,询问attacker.com的ip地址;

DNS server返回给victim的ip地址为攻击者服务器的地址 192.168.23.6;

Victim 浏览器访问 192.168.23.6,返回的结果是一个新的域名wacme.attacker.com;

Victim再次向DNS server发出域名解析请求,返回两个ip地址,第一个ip为攻击者服务器ip,第二个ip为攻击目标router3的ip地址;

Victim首先访问第一个ip,即攻击者的web服务器 192.168.23.6,恶意 javascript程序自动下载到victim主机中;恶意程序自动连接攻击者web服务器,此时web服务器已经将端口关闭,导致连接失败;Victim浏览器自动连接第二个ip地址,即router3的ip,10.1.10.2;

恶意程序通过Xmlhttprequest对象将路由器的web配置界面传送给攻击者的代理服务器。

攻击过程中,victim访问的域名是attacker.com,却在毫不知情的情况下,被重新绑定到自己的路由器上,导致路由器的数据泄露。攻击实现的技术要点主要有以下几点:

(1)TCP RST。恶意javascript程序连接攻击者web服务器的时候,攻击者已经将80端口关闭,导致连接失败。此举的目的是通过关闭端口的方式迫使 DNS Pinning失效,解除域名 wacme.attacker.com与 ip地址192.168.23.6的绑定关系,使得浏览者自动连接第二个ip地址,即router3的ip地址。此时,wacme.attacker.com已经绑定到10.1.10.2,victim浏览器通过attacker.com:81将数据传送给攻击者的代理服务器。

(2)Subnet priority。子网优先策略的主要目的是通过最短路径连接服务器,以此减少不必要的流量开销。攻击过程中,如果第二次DNS查询返回的IP地址为192.168.23.6和路由器的内网ip192.168.16.1,由于路由器和victim同处于一个子网中,那么victim的浏览器将直接连接到192.168.16.1,导致攻击无法实现。因此,攻击所使用的路由器ip地址为其外网ip。

(3)Xmlhttprequest。XmlHttpRequest该对象主要用于在不重新加载页面的情况下更新网页;在页面已加载后从服务器请求数据;在页面已加载后从服务器接收数据;在后台向服务器发送数据。正是由于该对象的这些特性,重绑定攻击中的数据传输通过该对象实现。

图7 实现过程

4.3 结果分析

由于DNS Server和WEB Server处于router2的内网中,所以,Victim Client不能直接通过域名192.168.23.5和192.168.23.6对其进行访问。因此,需要对Router2进行端口映射的配置。53端口对应DNS Server,负责提供DNS服务,80、81、664端口对应攻击者服务器,分别负责提供WEB服务、callback服务和http代理服务,如图8所示。DNS Server配置如图9所示。

图8 路由器虚拟服务器配置

图9 DNS Server配置

Victim Client访问攻击者服务器后,服务器能够自动获取Victim Client的ip地址,如图10所示。

通过在Rebind控制台点击显示的ip地址,即可实现对Router2的访问,如图11所示。

图10 Rebind自动获取路由器ip

相比其他路由器入侵方式,DNS重绑定主要具有以下几个特点:

(1)操作简单。攻击者只需要发布恶意网站,并吸引受害者访问网站即可发动攻击。

(2)隐蔽性强。由于通过内网受害主机访问路由器,所以,路由器日志中不会留下攻击者的痕迹。

(3)危害性大。通过重绑定攻击,攻击者不仅可以访问路由器,而且可以对路由器的配置进行更改,以及进行进一步的攻击。

当然,并不是所有的路由器都能够受到DNS重绑定攻击,必须满足以下3个条件:路由器的ip stack必须满足week end system model;路由器必须开放wan服务;路由器的防火墙必须是基于端口的,而不是基于ip地址。

5 路由器防护策略研究与实现

根据DNS重绑定的特点,基本的防护方法主要有:修改路由器登陆用户名和密码、升级最新的路由器固件以及关闭路由器wan服务等等。虽然这些方法都能够比较有效的保护路由器远离DNS重绑定攻击,但是,大部分用户甚至是IT专业人员都没有采取有效的措施。

Tripwire公司的一份调查报告指出,30%的IT专业人员和46%的员工从不更改其无线路由器上的默认管理员密码;55%的IT专业人员和85%的员工从不更改其无线路由器上的默认IP地址;52%的IT专业人员和59%的员工没有更新其路由器的固件到最新版本。由此可见,依靠用户的主动性解决问题是很困难的,必须开发自动化的防护工具。

文中开发了Router Protector工具,该工具部署在linux环境下,可实现对路由器的有效防护。工具包括3个模块,即ip getter模块、DNS monitor模块和http blocker模块。3个模块的相互关系如图12所示。Ip getter模块首先获取路由器外网ip地址,然后,将此ip传送给DNS monitor模块和http blocker模块,这两个模块分别负责DNS流量监控和http访问阻拦。

图12 Router Protector模块关系图

Ip getter由于重绑定攻击使用的是路由器外网的ip地址,所以,获取该ip地址是保护路由器的前提。本模块通过java程序访问网站www.ip138.com,从网页中提取路由器的外网ip地址。部分程序代码如下:

该段脚本通过响应Bro系统实时产生的DNS协议“do-reply”事件对是否发生DNS重绑定攻击进行检测。检测规则为:若在此次DNS回复的“reply”字段中发现路由器的外网地址“10.1.10.2”则触发一条报警。另外,为便于调查取证,Bro脚本将报警信息命名为“DNS-Rebinding-Indicators”,并记录此次 DNS会话的原地址(即受害主机)及攻击者网站域名。监控结果如图13所示。

http blocker该模块的作用是限制浏览器对特定ip地址的访问。工具中,主要限制浏览器访问路由器外网ip地址,使得重绑定攻击无法实现。由于用户平时登陆路由器都是使用的路由器内网ip,所以,工具不会对用户正常使用路由器造成不便。该模块的功能主要通过修改linux下iptables配置实现。为限制浏览器访问路由器ip,需要增加以下规则:

图13 Bro监控结果

设置iptables规则后,使用Victim浏览器访问路由器外网ip,结果如图14所示。由于Victim无法访问路由器,所以攻击无法实施,路由器得到了有效的保护。

Router Protector主要具有以下3个特点:

(1)自动化程度高,不需要人工设置。工具能够自动获取路由器外网ip,将此ip自动输入Bro和iptables规则,实现全时段监控和防护。

(2)报警及时,误报率低。通过规则设置,工具能够精确捕获符合规则的数据包。由于用户很少在内网通过路由器外网ip访问路由器,所以,一般情况下不会出现漏报和误报。

(3)处置及时,防护有效。限制浏览器访问路由器外网ip是阻止攻击的最直接最有效的方法。由于攻击所需的时间非常短,如果等到DNS monitor模块报警后,http blocker模块再采取措施的话,很可能已经造成了数据的泄露,所以,DNS monitor模块和http blocker模块必须同步进行。

图14 Victim浏览器访问路由器结果

6 结束语

首先对浏览器的相同区域源策略和DNS重绑定行为的发展过程进行研究。在此基础上,利用工具rebind实现了基于javascript的DNS重绑定对路由器的入侵,并开发了路由器防护工具router protector。通过实验证明,该工具能够有效阻止DNS重绑定攻击,保护路由器。目前,该工具只能部署在linux环境中。由于windows系统没有提供类似linux系统的iptables配置环境,所以,如何在windows系统中实现自动化的防护功能还有待于进一步研究。

[1] 何旭.DNS重新绑定对Web浏览器的影响[J].计算机工程,2010,36(5):156-158.

[2] J Ruderman.Same origin policy for JavaScript[EB/OL].https://developer.mozilla.org/en/Same origin policy for JavaScript.Retrieved May,2008.

[3] M Johns.(somewhat)breaking the same-origin policy by undermining dns-pinning.Posting to the Bugtraq mailinglist[EB/OL].http://www.securityfocus.com/archive/107/443429/30/180/threaded,2006.

[4] Princeton University,CS Department.DNS Attack Scenario[EB/OL].http://www.cs.princeton.edu/sip/news/dns-scenario.html.1996.

[5] D Dean,E Felten,D Wallach.Java Security:From Hot-Java to Netscape and Beyond[J].In roceedings of the 1996 IEEESymposium on Security and Privacy,IEEE Computer Society,1996.

[6] World Wide Web Consortium.The XMLHttpRequest object[EB/OL].http://www.w3.org/TR/XMLHttpRequest/#xmlhttprequest,2008.

[7] M Johns.(somewhat)breaking the same-origin policy by undermining dns-pinning[EB/OL].http://seclists.org/bugtraq/2006/Aug/0290.html,2006.

[8] J Grossman,R Hansen,P Petkov,et al.Cross Site Scripting Attacks:XSS Exploits and Defense[M].Syngress,2007.

[9] Adobe.Policy file changes in Flash Player 9 and Flash Player 10[EB/OL].http://www.adobe.com/devnet/flashplayer/articles/fplayer9-security-03.html,2008.

[10] M Johns,Kanatoko.Using Java in anti DNS-pinning attacks(Firefox and Opera).[online],Security Advisory[EB/OL].http://shampoo.antville.org/stories/1566124/,2007-08-27.

[11] A Megacz.Firewall circumvention possible with all browsers.Posting to the Bugtraq mailinglist[EB/OL].http://seclists.org/bugtraq/2002/Jul/0362.html,July 2002.

[12] C Heffner.How to Hack Millions of Routers[C].Talk at the Black Hat USA conference,2010.

猜你喜欢

外网域名攻击者
机动能力受限的目标-攻击-防御定性微分对策
内网和外网间的同名IP地址转换技术及应用
Combosquatting域名抢注的测量研究
电子政务外网的安全管理研究
正面迎接批判
如何购买WordPress网站域名及绑定域名
内外网隔离条件下如何实现邮件转发
有限次重复博弈下的网络攻击行为研究
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家
浅谈电子政务系统的构成及发展趋势