0%

DNS Rebinding Attack Lab

一.实验目标

本实验室的目标有两个:(1)演示DNS重绑定攻击是如何工作的,(2)提供帮助学生获得如何使用DNS重绑定技术攻击物联网设备的第一手经验。在在设置中,我们有一个模拟物联网设备,它可以通过一个web界面进行控制(这是典型的许多物联网设备)。即使攻击者可以,许多物联网设备也没有强大的保护机制直接与他们互动,他们可以很容易地破坏这些设备。

在这个实验室中模拟的物联网设备是一个恒温器,它可以控制房间的温度。成攻设置温度后,客户端需要能够与物联网服务器进行交互。因为物联网设备防火墙后,外部机器不能与物联网设备交互,因此不能控制恒温器。为了突破防火墙的保护,攻击代码必须进入内部首先网络。这并不难。当来自内部网络的用户访问攻击者的任何时间网站,攻击者的代码(JavaScript代码)实际上是从用户的浏览器运行的,因此在浏览器内部运行受保护的内部网络。但是,由于浏览器实现了沙盒保护,因此攻击者的代码仍然不能与物联网设备交互,即使它现在在内部网络中。

本实验室的目的是利用DNS重绑定攻击来绕过沙盒保护,因此攻击者的JavaScript代码可以成功获取物联网设备的基本信息然后利用这些信息将恒温器的温度设置到一个危险的高值。这个实验室涵盖了以下主题:

•DNS服务器设置

•DNS重绑定攻击

•攻击物联网设备

•同源政策

二.实验原理

2.1 DNS协议

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

2.2 同源策略

在Web浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的URI、主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据。

同源策略对Web应用程序具有特殊意义,因为Web应用程序广泛依赖于HTTP cookie来维持用户会话,所以必须将不相关网站严格分隔,以防止丢失数据泄露。

值得注意的是同源策略仅适用于脚本,这意味着某网站可以通过相应的HTML标签访问不同来源网站上的图像、CSS和动态加载脚本等资源。而跨站请求伪造就是利用同源策略不适用于HTML标签的缺陷。

2.3 拓扑搭建

DNS重新绑定攻击的网络拓扑如下图所示:

在这个实验室里,我们将使用六台机器。实验环境设置如图1所示。只有用户机器将使用VM,其他的都是容器。在设置中,我们有两个网络,一个家庭网络和外部网络。家庭网络模拟了一个典型的家庭网络。User机器物联网服务连接到该网络,该网络由路由器容器上的防火墙保护。防火墙会阻止所有到达192.168.60.80的流量。这样,外部机器就不能访问物联网设备。我们还在路由器上设置了一个NAT服务器,这样家庭网络中的机器就可以访问外部(回复包可以返回)。

第二个网络模拟外部网域。除了路由器之外,还有三个容器连接到这个网络,一个作为本地DNS服务器,另外两个作为攻击者的名称服务器和web服务器。攻击者拥有attacker32.com 域,它由攻击者的命名服务器容器。该web服务器上有一个用于攻击的恶意网站。

三.实验器材

1.Ubuntu20.04。

2.Docker.

四.实验步骤及运行结果

4.1 实验环境配置

4.1.1 减少Firefox的DNS缓存时间

减少DNS服务器的负载,加快响应速度时间,Firefox浏览器缓存DNS结果。缺省情况下,缓存过期时间为60秒。这意味着我们的DNS重绑定攻击需要等待至少60秒。为了使我们实验更容易,我们减少了时间为10秒或更短。在URL字段中输入about:config。在点击一个警告页面后,我们将看到首选项名称及其值的列表。搜索dnsCache,找到以下条目和改变它的值。修改如下:

4.1.2 修改/etc/host文件

我们需要在/etc/hosts文件中添加以下条目。我们将使用 www.seedIoT32.com 作为物联网服务器的名称。IP地址为192.168.60.80

4.1.3 本地DNS服务

我们需要让User VM使用特定的本地DNS服务器。这是通过将本地DNS服务器设置为解析器配置文件中的第一个名称服务器条目来实现(/etc/resolv.conf)。一个挑战是所提供的虚拟机使用动态主机配置通过DHCP协议获取网络配置参数,如IP地址、本地DNS服务器等。DHCP客户端使用DHCP服务器提供的信息覆盖/etc/resolv.conf文件。

在/etc/resolvconf/resolv.conf文件中添加以下条目。D /头文件(10.9.0.53是本地DNS服务器的IP地址)。

4.1.4 测试实验配置

配置完User虚拟机后,使用dig命令获取 www.attacker32.com 的IP地址和 ns.attacker32.com 。你应该分别得到10.9.0.180和10.9.0.153。如果你有不明白这个,你的实验室环境没有正确设置。我们现在可以测试攻击者的网站了。将浏览器指向User VM上的以下URL,然后你应该能够看到攻击者的网站。请在你的实验报告中提供一个截图。

攻击者网站的内容如下:

说明实验配置搭建成功。

4.2 在物联网设备上进行攻击

4.2.1 理解同源策略保护机制

在本任务中,我们将做一些实验来了解实现的同源策略保护浏览器。点击第二页和第三页的按钮,描述你的观察。哪个页面可以成功设定恒温器的温度?请解释原因。要查找原因,请单击下面的菜单序列从Firefox。将出现一个控制台窗口,其中显示错误消息(如果有的话)。提示:原因与浏览器强制的同源策略有关。请解释为什么这个政策会导致一个失败的页面。

首先在 http://www.seedIoT32.com/change 网站中点击按钮,可以发现温度被成功修改,如下图所示:

利用浏览器中的工具,可以观察到下列报文:

可以观察到他们都有正确的password,并且报文的来源ip地址与物联网设备的ip地址相同。

然后在攻击者的网站 http://www.attacker32.com/change 中点击按钮,发现该设备的温度并不会发生改变,并且利用火狐浏览器中的工具,可以捕获到以下的报错内容。

可以观察到GET报文中报错cross-origin request blocked

Reason: CORS header ‘Access-Control-Allow-Origin’ missing 经过查询可以得知原因在于对于跨站请求的响应缺少必须的Access-Control-Allow-Origin报头,而该报头用于确定当前站点源内的操作是否可以访问目的网站。这便是同源策略进行保护的原理所在。

4.2.2 打破同源策略保护机制

从前面的任务来看,从攻击者的页面设置恒温器的温度似乎是不可能的由于浏览器的同源策略保护。这项任务的目的就是要摧毁这种保护,所以我们可以从这一页设定温度。打击原产地保护的主要思路来自于政策的实施是基于主机名,而不是IP地址,所以只要我们在URL,我们遵守SOP政策,但这并不意味着我们被限制与 www.attacker32.com web服务器。在用户的浏览器向 www.attacker32.com 发送请求之前,它首先需要知道IP地址: www.attacker32.com 。一个DNS请求将从用户的机器发出。如果IP地址没有缓存到本地DNS服务器,DNS请求最终将被发送attacker32.com的名称服务器,由攻击者控制。因此,攻击者可以决定在响应中放入什么。

攻击步骤如下:

Step1:修改JavaScript代码

成功修改后,重新打开攻击者的页面,并且点击按钮,发现仍然报错,如下所示:

原因在于未定义password。

Step2:进行DNS重新绑定

我们的JavaScript代码将请求发送到 www.attacker32.com ,也就是说,请求将返回到攻击者的web服务器。这不是我们想要的;我们想要请求到物联网服务器。这可以通过DNS重绑定技术实现。我们首先绘制映射 www.attacker32.com 到攻击者的web服务器的IP地址,这样用户就可以获得实际的页面从 http://www.attacker32.com/change 。在点击页面上的按钮之前,我们要重新映射

www.attacker32.com 主机名设置为物联网服务器的IP地址,因此该请求由按钮将转到物联网服务器。这正是我们想要的。

根据实验手册中的指导,我们可以进行如下攻击:

首先在攻击者的域名服务器上修改默认的TTL响应时间,应该设置一个较小的值,然后将www的DNS解析绑定为物联网设备的IP地址

然后清除本地DNS的缓存

此处重新绑定DNS时,应该是在打开攻击者页面,点击按钮之前,否则攻击就会失败。

然后再攻击者页面中点击按钮,可以观察到如下内容:

可以发现攻击者所发送的报文中有正确的password,其报文也成功被物联网设备所接收,修改其温度为99℃。

在物联网设备的页面也可以观察到其温度被修改,并且来自于攻击者网站的请求报文。

攻击成功

4.2.3 自动进行攻击

在前面的任务中,用户必须单击按钮将温度设置为危险的高值。显然,用户不太可能这么做。在这个任务中,我们需要自动完成。我们有已经为此创建了一个网页将此页面加载到User VM后,应该能够看到一个带有计时器的页面从10降到0。一旦它达到0,该页上的JavaScript代码将发送设置温度请求 http://www.attacker32.com ,然后将计时器值重置为10。学生需要使用DNS重绑定技术,所以一旦计时器达到0,恒温器的温度被设置为88摄氏度。

攻击过程同上,使用DNS重新绑定的方法,需要在页面的计时器数到0的时候进行重新绑定,即可在该页面实现其自动攻击

如下图所示:

攻击者的页面内容发生改变,证明其已经连接到了物联网设备

在物联网设备的页面,可以观察到其不断收到来自于攻击者网站的请求,使其温度修改到88℃,证明攻击成功。