通过控件提高物联网设备的网络安全
你知道破解物联网设备有多么容易吗?除了显而易见的——大多数物联网设备缺乏安全性——这很容易,因为黑客可以使用大量的软件和硬件工具,这往往使他们发现和利用物联网漏洞的工作变得微不足道。这些工具利用不安全的接口、反编译固件、模拟和分析代码以发现导致网络攻击的缺陷。没有适当网络安全的物联网设备可以在几个小时内被黑客入侵,如果它没有网络安全,则可以在几分钟内被黑客入侵。在最近的 DEFCON 会议上,一些比较著名的物联网设备黑客包括 Apple Air Tag、Sonos 网络音频设备以及 Landis 和 Gyre 电表。
本文是研究真实世界的物联网黑客以及如何解决暴露的漏洞的系列文章的第三部分。目标是通过提供可以减轻攻击的控件来帮助您提高物联网设备的网络安全。在第一篇文章《 从殖民管道攻击中吸取的教训》中,我们回答了为什么勒索软件攻击导致操作技术系统(即管道)关闭的问题。第二, 汽车网络安全:进步,但仍有改进空间,通过比较 5 年前与去年披露的攻击的努力程度和结果,回顾了汽车网络安全的进步程度。
在这里,我们将回顾网络对手用来攻击物联网设备的工具。在办公电话中暴露真实漏洞的方法将说明这些工具的使用。通过使用硬件和软件工具,发现了许多缺陷。然而,包括软件更新和加密代码在内的基本安全功能可以缓解攻击。在这种情况下,代码加密不仅是为了保护敏感数据,也是为了保护设备的整体安全性,使其免受这些黑客工具的侵害,因为它使代码的纯文本列表几乎不可能获得。
Fraunhofer FIT 的 Stephan Huber 和 Philipp Roskosch完成了在 33 种不同 VoIP 办公电话中发现 40 个漏洞的工作,并在 DEFCON 27 上进行了展示。发现的漏洞类型多种多样。总共有 13 个,包括错误的密码学、堆栈溢出和无需身份验证即可更改的密码。广泛使用从闪存转储固件以访问纯文本代码列表的做法。这极大地帮助了逆向工程工作和识别漏洞。静态和动态分析都用于提取的纯文本代码。如果这些手机包括安全启动、闪存加密和安全软件更新,那么访问纯文本列表和发现可利用的弱点就会变得更加困难。
尝试获取纯文本代码通常是黑客采取的第一步。由于纯文本列表的价值,尝试了许多不同的方法来提取它。在这项研究中,一项是检查固件是否可以直接从制造商处获得。另一种是触发软件更新,如果未加密,则嗅探下载的网络流量的数据包以获取纯文本代码列表。使用 HTTPS(即加密)发送的更新可关闭此漏洞。第三种方法也是最常用的方法是从手机本身获取代码。
有数量惊人的逆向工程/黑客工具可用。电话研究使用工具来获取 root 访问权限、提取代码和模拟提取的代码。用于提取代码的工具包括 BuSPIrate 和 JTAGulator。两者都使用串行终端和来自 PC 的 USB 连接。BuSPIrate 被描述为“开源黑客多功能工具”。它可以与 I2C、SPI、JTAG 和其他几个接口。JTAGulator 将检测到 JTAG/IEEE 1149.1、ARM 单线调试 (SWD) 或 UART 引脚的连接。当电路板的调试接口未知时,JTAGulator 的检测功能使连接变得更加容易,因为它会自动识别接口类型。它将运行不同的引脚排列并寻找与这三种协议之一的匹配。
一旦从手机中提取纯文本代码,就会使用软件模拟工具。其中包括 QEMU 和 Unicorn。QEMU 是一个开源仿真器/虚拟器,支持对特定操作系统(Linux、Windows 等)和指令集(MIPS、ARM、x86)的仿真。在这项研究中,QEMU 工具的 ARM/MIPS 处理器内核仿真功能与 gdb 一起使用,以获取代码痕迹。Unicorn 是一个基于 QEMU 的 CPU 仿真器,但重量更轻,并提供了一些附加功能,包括检测。
其他没有用于电话安全研究但值得一提的仿真工具是 Ghidra(由 NSA 开发)、IDA Pro 和 Angr。Ghidra 和 IDA Pro 是逆向工程工具,支持对多种处理器类型的二进制文件进行反编译,包括 x86、ARM、PPC、MIPS、MSP430 和 AVR32。Angr 是一个用于分析二进制文件的 Python 框架。它使用静态和动态符号分析。
由于这些工具可以很容易地对物联网设备进行逆向工程,从而揭示代码中的漏洞,因此保护物联网设备免受这些工具的利用至关重要。为防止轻松提取代码,应锁定串行/JTAG 接口。此外,对于纵深防御方法,代码也应该被加密。这提供了另一层保护,以防设备接口被破坏或使用其他方法破坏非易失性存储器。
采用多种方法从各种手机的闪存中获取代码。BuSPIrate 和 JTAGultor 设备用于通过 SPI、UART 或 JTAG 接口获取访问权限。检查 UART 接口是否有带有命令接口的引导加载程序或对 Linux shell 的可能 root 访问权限。基于 IP 的方法会导致内存转储,而 Telnet 命令注入会导致 root 访问。如果闪存中的代码被加密,访问代码列表将更加困难。
由于访问纯文本代码,几个漏洞被利用。如果没有这些代码清单,识别这些缺陷会更加困难。他们有助于识别以下漏洞:未经授权远程更改管理员密码,在代码中发现管理员密码的硬编码密钥,以及弱密码加密方案。在另一部手机中,使用了不安全的 DES 加密方案。DES 是在 40 多年前引入的,现在可以在合理的时间(几天)内使用单个现代 PC 进行暴力破解。
这项工作中出现的许多漏洞都在运行时被利用。这凸显了良好运行时保护的重要性,例如使用 TrustZone 和入侵检测系统 (IDS) 软件等可信执行环境,这些软件可以检测由于攻击导致的代码操作变化。
审核编辑:郭婷