DNS重绑定对内部网络安全的影响

2020-08-11 16:06郭烜臻潘祖烈沈毅
网络安全技术与应用 2020年8期
关键词:同源域名IP地址

◆郭烜臻 潘祖烈 沈毅

(国防科技大学电子对抗学院 安徽 230037)

伴随着科技的日新月异,互联网技术的飞速发展,网络应用的规模性和复杂性显著提高。内部网络是构成当今互联网一种最主要的组网方式之一。一般来说,内部网络是基于TCP/IP协议框架,使用私有IP地址的网络,即本地局域网(LAN),包括企业、政府和家庭内部网络[1]。通过防火墙将内部网络同互联网相隔离,可组成一个独立网络。但随着内部网络规模和应用范围的不断扩大,以及内部网络中包含的敏感信息及关键设备,如何保证内部网络安全与平稳,逐渐成为研究的热点。

对内部网络的威胁主要来源于对敏感信息的窃取和对内部网络中设备的控制。而随着物联网的普及,预计到2020年,全球的IoT设备将达到204亿台[2],更加剧了此种风险。Web浏览器是每台现代电脑必备的应用,因为Javascript、Flash、DOM和Java等技术的出现,不仅让浏览器的功能愈发丰富,同时也带来了巨大的安全隐患。功能的富集、插件的繁多,也意味着出现漏洞的可能性越大,为攻击者带来了可乘之机。诸如“跨站”脚本攻击(XSS[3])、“跨站”伪造攻击(CSRF[4])、服务端伪造攻击(SSRF[5])等的存在,内部网络安全也因而受到了巨大的威胁。为了限制此类攻击威胁,浏览器通过采用同源策略(SOP[6])等安全措施来保障内部网络的安全。然而一种基于DNS协议的攻击方式——DNS重绑定,却能够很好地绕过同源策略的限制,对内部网络带来影响。

DNS系统支撑着整个互联网的正常运转,它能够将人类能够阅读的域名转换为难以记忆的IP地址。但是DNS缺乏加密、认证及访问控制等安全措施,使得基于DNS协议的攻击行为层出不穷。根据CNNIC权威部门的调查研究问卷显示,基于DNS协议的攻击已然成为位居第二的攻击方式如图1[7]。

鉴于此,本文将研究DNS重绑定对内部网络安全,尤其是对IoT设备的威胁。

本文的贡献有如下四点:

(1)讨论了DNS重绑定攻击对内部网络的威胁;

(2)提出了一种DNS重绑定测试框架;

(3)将DNS重绑定同传统的XSS、CSRF做对比,验证DNS重绑定的有效性;

(4)针对DNS重绑定,提出了相应的防御方法。

图1攻击行为

1 相关概念

1.1 同源策略

同源策略(same origin policy)是浏览器采用的一系列管理策略的总和,用来管理web应用内不同域之间资源的交互[3]。

同源策略是大多数浏览器所采用的防止网站跨域访问资源的一种标准防御策略。它是web应用安全中所使用的一种十分重要的安全策略。所谓的同源,需要URL的协议、域名、端口号均相同,只要存在一项不同,则不能视为同源。在这种策略中,域名www.A.com包含的脚本不被允许获取www.B.com中的资源。一个网页下的脚本只被允许访问同源网页下的资源。

表1同源策略

同源策略能够有效地防御大多数的跨域攻击,成为恶意攻击者的噩梦。同源策略发挥的限制作用体现在两方面:

DOM同源策略:禁止对不同源页面DOM进行操作。这里主要针对的场景是iframe跨域情况,不同源下域名的iframe标签是禁止访问的。

XHR同源策略:XHR是可被浏览器内嵌脚本语言调用的API组件。同源策略禁止使用XHR对象向不同源的服务器地址发起HTTP请求。

然而目前并没有对同源策略的正式定义。现今同源新策略的基础主要基于RFC 6454[8]。对于web同源的定义。

依据SOP所发挥的作用,可以对其进行分类,如表2所示。

表2同源策略分类

1.2 跨域资源请求访问

合法地跨域请求资源,需要使用到CORS协议[9]。一个web页面通过使用XMLHttpRequest,可以向任何一个web服务器发送请求。并且通过XMLHttpRequest,可以对http报头实现完全控制。而同源策略限制XMLHttpRequest只能访问本域内的资源。为了满足跨域资源请求,同时确保跨域资源访问的安全,CORS协议应运而生。CORS的工作原理遵循以下几个步骤:

首先发起预请求,向目标web服务器申请CORS权限,并附上自身所在域的信息(域头:http://a.com);

目标服务器反馈一个CORS头文件,比如:

Access-Control-Allow-Origin:http://a.com,允许来访问本域的资源。

CORS协议是用来缓解SOP所带来的影响,确保安全跨域访问。

1.3 绕过同源策略

DNS重绑定主要作用是绕过同源策略。早在二十世纪九十年代就已经出现,并带来了较大的影响。比如1996年普林斯顿大学的研究团队提出了基于java applet的DNS重绑定攻击[10]。斯坦福大学web安全研究团队,在2007年发表了一份关于DNS重绑定攻击的白皮书。随着物联网设备的逐渐普及,这种略显古老的攻击方法获得了新的生命。在第27届Defecon上,研究人员展示了利用DNS重绑定技术,对Google home、Roku TV、sony音响设备、Sonos Wifi Speakers、radio thermostat等设备进行攻击,并获取设备控制权限[11]。利用DNS重绑定窃取以太坊中的比特币。物联网安全公司Armis披露全球有近五亿台设备受到这种攻击方式的威胁[12]。CVE-2018-1002103中展示了通过DNS重绑定,在Minikube上达到远程代码执行,并实现虚拟机逃逸的效果。2018年,暴雪游戏平台修补了一项DNS重绑定的漏洞,攻击者可以利用该漏洞,通过JSON-RPC服务,向目标发送特权命令。

DNS重绑定利用精心构造的DNS映射,能够有效绕过防火墙和同源策略。攻击者构造的钓鱼网页会导致访问者运行客户端脚本,攻击内部网络内其他的计算机和设备。内部网络中的服务器、打印系统、监控系统等对内部网络安全造成极大的威胁。

2 DNS重绑定

2.1 实现步骤

DNS重绑定绕过同源策略,路由器防火墙,将浏览器作为代理,同内部网络中的设备进行通信。

DNS重绑定的具体过程是:

(1)攻击者事先准备钓鱼网站attack.com和恶意DNS域名服务器。钓鱼网站中包含精心构造的恶意Javascript脚本,能够在目标浏览器上运行,达成攻击目的。恶意DNS域名服务器受攻击者控制,能够按照攻击者的意愿对域名解析过程进行操纵。

(2)受害者访问钓鱼网站attack.com。钓鱼网站中的信息能够吸引受害者访问,并且驻留一段时间。

(3)浏览器请求解析attack.com。恶意域名服务器将域名解析为受攻击者控制的Web服务器IP地址,并且TTL值。受害者向该IP地址发送HTTP GET请求,浏览器加载含有恶意Javascript脚本的网页。

(4)恶意脚本持续请求向attack.com/secret发送GET请求。在浏览器DNS解析记录过期之前,web服务器一直返回HTTP请求200 OK。

(5)攻击者改变attack.com的DNS解析。前一个DNS解析记录过期,浏览器再次向DNS服务器请求解析。此次DNS服务器返回目标设备的内网IP地址。

(6)浏览器再次解析attack.com/secret,此次解析的IP地址是目标设备的IP地址。成功绕过同源策略的限制。

(7)此刻加载在浏览器中的Javascript脚本开始执行。攻击向载荷开始运行,目标设备发送payload,直接向目标web服务器发送http请求,读取响应,获取敏感信息,或直接控制设备。至此,整个DNS重绑定攻击完成。如图3、图4。

2.2 攻击种类

根据实现方式的不同,DNS重绑定可以分为三类。

第一类叫作基于时间变化的DNS重绑定攻击(time-varying)。即很短的时间内,对同一域名有两种不一样的解析结果。这就要求,DNS服务器返回的域名解析报文设置的TTL值很短(<=10s),并且第一次解析对应的是攻击者web服务器的IP,受害者访问该IP并下载恶意网页及代码。当第一次解析记录TTL到期时,申请第二次解析,而第二次解析返回的是一个内网IP[13]。

第二类方法叫做基于多个A记录的DNS重绑定(multiple A records)。一个域名可以对应多个IP地址。域名系统将域名映射为IP地址,需要收到DNS A记录响应报文。1996年普林斯顿大学首次实施的DNS重绑定就是利用这种攻击方法来欺骗JVM虚拟机[14]。对钓鱼网站的域名解析反馈的A记录,既能解析成内网地址,又能解析成攻击者服务器IP,以此达到攻击目的。

第三类叫做基于插件的DNS重绑定。浏览器使用很多插件去渲染web页面,许多插件都允许与同源内的其他资源建立socket连接为了对抗DNS pinning这种防御手段,DNS重绑定利用了各个插件维持了不同的DNS pin数据库。如果一种插件的pin映射到的是攻击者的IP地址,另外一种插件映射的是内网地址[15]。。

图3 DNS重绑定过程(1)

图4 DNS重绑定过程(2)

2.3 相关工作

Yunxing Dai等人在2013年提出了一种名为Firedrill的攻击方式[16],整合DNS重绑定攻击和DNS flooding攻击,通过利用浏览器的DNS cache表,结合已有的DNS重绑定的攻击技术,实现了对DNS pinning的有效绕过。并且Dai等人将Firedrill同其他的DNS重绑定方法进行对比,总结出该方法的动态性和实效性。虽然攻击手法种类繁多,但是DNS重绑定的核心思想始终是不变的,即通过DNS answer报文的IP变换来达到绕过同源策略的目的。Dai等人设立恶意的DNS服务器,在受害者的主机上搭建了恶意的JavaScript代理。它维持一个同攻击者webserver的websocket连接,并接收JSON格式的代理命令。

Acar[17]等人于2018年提出了一种针对IoT设备的渗透方法。此方法主要基于两个步骤,第一步,需要提前了解目标设备endpoint的情况。通过控制一个有恶意的JS脚本TLS-enabled web server,并把恶意代码镶嵌到网页和广告中。当用户访问恶意代码的网页时,自动搜索LAN中的IOT设备。搜集信息以便进一步攻击,或者分析受害者的生活习惯。第二步,利用DNS重绑定绕过同源策略,对目标设备实施攻击。

3 方法设计

一次完整的DNS重绑定攻击应该包括信息收集、目标识别、攻击执行、远程控制及扩大攻击面几个步骤。

信息收集,需要了解目标使用互联网的行为特征以及可能使用的内网IP地址。目标识别,判断目标是否易遭受DNS重绑定攻击。具体攻击的执行,需要搭建恶意的DNS服务器,恶意的javascript脚本和实现DNS重绑定的攻击载荷。远程控制与信息窃取,即通过DNS重绑定能达到的具体的效果。扩大攻击面,将DNS重绑定与其他内网渗透方式相结合,扩大攻击面(图5)。

为了更好地验证DNS重绑定对内部网络的影响,提出了DNS重绑定测试框架(图6)。

信息收集模块:数据收集,在发动DNS重绑定之前,需要事先获取目标内网的一些信息,诸如内网IP地址及设备型号,以方便使用合适的payload对目标设备进行渗透。本攻击框架通过WebRTC服务来泄露内网IP,并猜测子网的IP段,扫描Lan网络内的http服务。

服务器搭建模块:DNS重绑定的成功执行,需要DNS server的配合。该框架结合Whonow,一款可实时重绑定的DNS服务器,整合到server building模块中去,来为渗透测试人员搭建DNS server提供便利。该whonow能够很好地契合DNS重绑定而设计。该模块能通过一些简单的命令,即可实现对DNS响应报文的控制。对DNS报文的行为实现动态控制,使得DNS重绑定的实现更加灵活多样。同时该模块也能够对web服务器进行配置。扫描技术使用WebRTC ICE服务。ICE服务是WebRTC RTCPeerConnection用于自我发现、NAT遍历和中继的STUN或TURN服务,通过将服务器列表传递到RTCPeerConnection的构造器来实现[18]。目前无论是Chrome还是Firefox浏览器都已经部署webRTC服务,用户能够向内网中的STUN服务器发送请求,获取IP地址。

DNS重绑定模块:该模块用以实施DNS重绑定攻击,在这里采取的DNS重绑定方法为基于时间变化的DNS重绑定。

控制利用模块:利用UPnP协议对目标进行控制利用。UPnP协议无任何身份验证机制,并且现在大部分路由器都默认开启了UPnP服务。大量的设备可利用UPnP进行配置修改。UPnP通过SOAP[19]协议控制设备,按照XML描述文件中的信息,以设备,运行的服务,行为,变量,即[device,service,action,variable]的形式控制设备。

在本地环境下,以老版本的主流浏览器

进行测试,实际效果如表3所示。

表3测试效果

4 实验设计

4.1 控制智能灯泡

包括路由器、智能家用电器、摄像机、打印机在内的内部网络中的大量设备受到DNS重绑定攻击的威胁。本实验用以验证,相较于传统的攻击方式,DNS重绑定攻击对内部网络的威胁更大。在本实验中,假设已知内部网络的IP地址与拓扑结构,各种设备的API接口等信息。

假设已知目标网络存在智能灯泡。且认为局域网内比较安全,该智能灯泡接收局域网内传递的消息,通过简单的GET请求,即可对智能灯泡进行控制。并且通过http scan模块,以获知目标网络的拓扑结构及存活IP。攻击主机IP 169.254.107.120,智能灯泡对应IP 192.168.0.1。

开关灯泡的payload如下:

为了加快实验进程,及时将浏览器中的DNS缓存清零。在本实验中使用的是firfox浏览器,在firefox中输入about:config命令,修改network.dnsCacheExpirationGracePeriod项的相关配置。修改为5,加速DNS记录过期速度。

成功实现对智能灯泡的控制。如图7所示。

图7测试成功

5 防御措施

DNS重绑定不为人们所知,但是却造成了巨大的损失。设备开发商和使用者需要提高针对此类威胁的重视程度。

DNS pinning是一种应对DNS重绑定攻击的常见防御方式,它要求浏览器对于同一域名,只记录收到的第一条DNS解析记录的,将域名与IP地址进行映射,之后无论DNS报文TTL值是否到期,阻止域名映射到其他的IP地址。

部署eSOP策略[19]。常规的同源策略对从DNS服务器中并未加以验证,导致DNS重绑定能够绕过同源策略。eSOP通过在浏览器端添加对来源于DNS服务器信息及http“报文头”验证策略,来阻止DNS重绑定攻击。

可以通过提升浏览器、各类插件、DNS解析器、防火墙和服务器的防御等级来应对此类攻击,比如如今较常见的DNS pinning,以及入侵检测系统。

IoT生产商需要提升IoT设备的安全性能,对“报文头进行检测。启用Origin header字段,进行验证。可以在防护类产品中加入对于SSDP和SOAP[20]的流量检测能力,及时发现客户网络中存在的安全威胁。

在DNS服务器端“部署”dnswall,将含有私有IP地址的DNS报文进行甄别和过滤。

6 总结与展望

本文研究了DNS重绑定对内部网络安全的影响。利用DNS重绑定能够成功控制家庭网络内智能灯泡的亮灭。将DNS重绑,同“跨站”请求,伪造攻击、“跨站”脚本攻击进行比较,对四款IoT设备进行测试,验证了DNS重绑定对内部网络安全的实质性威胁。并为如何防御DNS重绑定提出了解决方案。

为了完善有关DNS重绑定的研究,在未来的研究工作中,将着眼于DNS重绑定在互联网中实际的存在情况,对网络中真实存在DNS重绑定行为进行检测。

猜你喜欢
同源域名IP地址
基于“乙癸同源”理论辨治股骨头缺血性坏死
以同源词看《诗经》的训释三则
《江苏教育研究》官方网站域名变更公告
“铤”有“直”义的词源学解释——兼说/直/义的同源词族
同源宾语的三大类型与七项注意
公安网络中IP地址智能管理的研究与思考
《IP地址及其管理》教学设计
计算机的网络身份IP地址
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家