原文:https://www.netsparker.com/blog/web-security/discovering-hacking-iot-devices-using-web-based-attacks/

对于DNS重绑定攻击来说,安全社区都已经讨论了20年了;尽管安全研究人员在这方面做出了很大的努力,但是,浏览器供应商仍然没有实现一种稳定的防御方法。不过,据说八年前有人声称已经将这种漏洞降服了,哪曾想,随着新型新攻击手段的出现,此类攻击又重新露出水面。

总的来说,目前黑客攻击手法的发展趋势是,组合多种现有攻击手法,形成新的攻击手段。举例来说,将加密货币钱包打得落花流水的DNS重绑定攻击就是这些新攻击手段中的一个典型例子。

在本文中,我们将为读者介绍普林斯顿大学和加州大学伯克利分校在针对物联网(IOT)设备发动的基于Web的攻击方面的研究,利用这些攻击方法,黑客可以发现、攻击并接管这些物联网设备。该研究发表于2018年8月,所以,目前还是比较新颖的。

相关的设备和方法

研究人员的目标是对15个物联网设备进行安全测试。测试时,研究人员发现在这些设备中,只有7个提供了本地HTTP服务器,因此,决定集中研究这些设备。其中包括:Google Chromecast、Google Home,一台智能电视、一个智能开关以及三个摄像头。

他们使用的攻击方法旨在:

  1. 欺骗受害者,让他们访问攻击者所控制的网站
  2. 发现受害者本地网络上的IoT设备
  3. 使用基于Web的攻击来控制这些物联网设备

攻击所需时间

严格来说,这不是一种全新的手法。研究论文引用了之前的研究成果,这些研究发现,攻击者利用这些攻击方法拿下这些设备的平均时间为一分钟。奇怪的是,一项著名的研究结果(What You Think You Know About the Web is Wrong)表明,对于55%的用户来说,通常在一个网站上逗留的时间不会超过15秒。由此看来,大多数用户似乎不会受到物联网漏洞的影响。

然而,在普林斯顿和加州大学伯克利分校的研究中,研究人员显著降低了攻击所需的时间。他们指出,如果使用他们发现的方法,可以更快地发现和访问本地网络中的设备——但是Chrome除外,因为它会缓存DNS请求并“无视”TTL,如果它低于某个阈值的话。需要注意的是,非军事区(DMZ、内部网络、防火墙后面的网络)中的设备通常被认为是安全的,因为用户通常假设外部人员无法访问这些设备。但是,在这项研究中描述的攻击中,攻击者已经获得了访问受害者内部网络中的浏览器的权限!

HTTP端点的发现

研究人员通过将设备连接到Raspberry Pi无线接入点来分析这些设备。研究人员观察和分析的数据分组分为两种类型,即发送到设备以及从设备接收的数据分组,以及发送到绑定到每个设备的移动应用和从移动应用接收的分组。分析结果表明,共发现了35个GET请求端点和8个POST请求端点。这些端点的作用在于,在研究的发现阶段识别相应的IP地址。

物联网设备的研究阶段

研究人员将这项研究过程分为了两个不同的阶段,即发现设备和获取访问权限阶段:

发现设备阶段:识别物联网设备

以下是在该研究的发现设备阶段需要采取的步骤:

  1. 通过WebRTC获取本地IP地址。
  2. 向81端口上相应IP地址范围内的所有IP地址发送请求。由于81端口通常很少使用,因此,处于活动状态的设备会立即使用TCP RST数据包进行响应。对于IP范围内的非活动设备,发送的这些请求数据包将超时。
  3. 每个活动IP地址都会接收到在初始阶段使用HTML5为35个GET端点收集的请求。攻击脚本能够根据返回的错误消息来判断相应的IP地址是否与7台设备中的某一台相匹配。

该研究本来打算使用3种不同的操作系统(Windows10、MacOS和Ubuntu)和4种不同的浏览器(Crome、Firefox、Safari、Microsoft Edge)进行测试。然而,后来发现只有Chrome和Firefox这两款浏览器适合这项研究。所以,Safari和Edge浏览器就被排除在外了,具体原因为(Web-based Attacks to Discover and Control Local IoT Devices):

对于Safari来说,所有的Fetch请求都会超时,因此,攻击脚本认为所有IP地址都处于非活动状态。相反,该脚本可以使用Fetch请求来正确标识Edge上的活动IP地址,但Edge浏览器并没有公开详细的HTML5错误消息。因此,该攻击脚本无法识别Edge上的任何设备。

获取访问权限阶段:控制物联网设备

以下是本研究在获取访问权限阶段中所采取的步骤:

  1. 受害者访问攻击者控制的域(domain.tld),然后,受害者的浏览器执行在攻击者的站点上发现的恶意JavaScript。这个域仍然解析为攻击者的服务器IP。
  2. JavaScript代码请求domain.tld域上的另一项资源,并且该资源是仅存在于攻击者服务器上的一项资源(例如http://domain.tld/hello.php上的消息"hello")。
  3. 如果受害者的本地DNS缓存仍然解析为攻击者的远程IP地址,那么/hello.php的查询结果将生成字符串“hello”,然后JavaScript代码将重复步骤2。
  4. 但是,如果受害者缓存中的domain.tld过期,则会向攻击者的名称服务器发送一个新的DNS查询。
  5. 最终,将返回发现阶段中获得的本地IP地址,而非攻击者的远程IP地址,同时,/hello.php也不会使用字符串“hello”进行回复,而是使用其他内容进行响应,如404错误,从而通知恶意脚本DNS重绑定攻击已得手。

借助于这种攻击方法,恶意脚本能够绕过同源策略,并获得设备上运行的Web应用程序的访问权限。这样,攻击者就可以重新启动Google Chromecast、Google Home、智能电视和智能交换机设备,并录制视频或音频了。

如何防御针对物联网设备的DNS重绑定攻击

研究人员称,用户、浏览器供应商、物联网制造商和DNS提供商都必须采取相应的预防措施,才能够避免DNS重绑定攻击。以下是本研究给出的一些对策:

  1. 用户可以在浏览器上禁用WebRTC,从而防止泄露私有IP地址。即使如此,攻击者也可以通过向私有IP范围内的所有*.1地址(路由器地址)发送请求,来发现用户的私有IP地址。
  2. 攻击者通常会假定所有IoT设备与受害者的PC具有相同的IP地址范围。用户可以将其家庭路由器的DHCP服务器配置为在另一个子网(如/16)上分配IP地址。
  3. 用户可以安装DNSMASQ,它通过从DNS回复中删除RFC1918地址来防止DNS重新绑定。用户还可以使用使用DNSMASQ的OpenWRT路由器。
  4. IoT制造商可以控制发送到Web接口的请求中的Host头部。如果它们与RFC1918中规定的私有IP地址不符的话,就阻止其访问。
  5. DNS提供商可以使用DNSWall之类的防御机制过滤DNS应答中的私有IP地址。
  6. 浏览器供应商可以开发将公共网站的访问限制在私有IP范围内的插件。

参考文献

有关本文中讨论的普林斯顿和BC Berkeley研究报告的更多信息,请访问Web-based Attacks to Discover and Control Local IoT Devices

关于针对本地网络中的应用程序和设备的基于Web的攻击手法的详细信息,请参阅Vulnerable Web Applications on Developers' Computers Allow Hackers to Bypass Corporate Firewalls

源链接

Hacking more

...