物联网安全-7.物联网固件逆向

admin 2023年10月13日22:10:25评论9 views字数 3432阅读11分26秒阅读模式

物联网安全-7.物联网固件逆向

固件逆向工程:简介

本文是“物联网安全”系列的一部分。如果您还没有阅读本系列之前的文章(第 1 部分到第 6 部分),我强烈建议您先阅读它们,除非您已经熟悉这些概念并且只想阅读当前主题。
 

物联网安全-物联网介绍及其架构

物联网安全-2.物联网攻击面

物联网安全3.物联网10大安全漏洞

物联网安全-4.低功耗蓝牙BLE

物联网安全-5.ZigBee协议

物联网安全-6.ZigBee安全


固件是物联网设备的软件部分。构建功能性物联网固件涉及许多技术,有许多厂商为这些技术的开发做出贡献,如 Cisco、Linux、Wind River 等。在这篇文章中,当我说固件时,我将主要是指设备的软件组件。固件具有不同的复杂性,从驱动功能较弱的微型微控制器的裸机固件到基于微处理器的成熟操作系统,如 Linux。后者用于更复杂的设备,如路由器、电视等。

在这篇文章中,我们将研究组成固件所涉及的不同组件,然后我们将讨论如何使用各种开源工具对固件进行逆向工程。逆向是一个重要的步骤,它将帮助您对设备和固件进行进一步的分析。那么让我们开始看看裸机固件是什么?

裸机固件(Bare Metal Firmware)

根据设备的需要使用的应用程序,决定设备使用的技术栈。如果一个设备的任务是读取和报告周围温度和湿度,那么它不需要非常复杂的软件,比如 Linux。对于这些情况,就可以使用裸机固件。现在,您可能会问什么是裸机固件?简单来说,这类固件直接与硬件接口直接进行交互,不涉及驱动程序或内核。

裸机固件不会做太多复杂的事情,它们通常被分配不超过 3 或 4 个任务,这些任务被放入循环中,因为它们被安排在特定的顺序/条件下运行。厂商会为这些设备提供的 SDK 提供了生命周期方法,程序员编写的这些函数在循环中运行。这些 SDK 的一些复杂功能变体是 FreeRTOS、mbed-os,它们是实时操作系统,允许您进行任务调度并对某些中断请求做出非常快速的响应。

裸机固件是用 C 编写的,因此所有针对C语言的攻击(如缓冲区溢出相关漏洞)也对这些固件有效。这些设备通常收集数据并将其发送到中央服务器或与通过 UART/SPI 总线(其外围设备)与其他设备进行通信。有机会发现通信协议中的漏洞、错误处理数据包、密钥交换、缓冲区溢出等。

基于裸机固件的微控制器设备不仅用于传感器网络;它们无处不在,从冰箱、微波炉、安全警报系统,您的汽车上有几十个,您的笔记本电脑/电脑也是如此。通常,当您没有此固件的源代码时,您会采用逆向工程的方法。

逆向这些二进制文件与逆向 Windows EXE 和 Linux ELF 文件有点不同。那么它们就没有预定义的结构。对于裸机二进制文件,您需要芯片组的数据表(data-sheet )并在您的反汇编工具(如 IDA、Ghidra 等)中创建内存映射,以进行正确的反汇编。另一个非常关键的问题 memory-map 也可以帮助用户回答是什么 GPIO,设备与其他外设进行交互?此信息将有助于了解设备的功能。关于这一点还有很多可以说的,我会在另一篇文章中说明,因此有关更多详细信息,请访问此链接。现在让我们看看什么是成熟的基于操作系统的固件。

成熟操作系统固件

当您看到更复杂的系统(如路由器、智能家居仪表板、无人机和医疗保健设备)时,它们的作用与裸机系统无异。举个例子;典型的无线路由器具有通过局域网和WIFI连接等功能;他们可以将指定的 MAC 地址列入黑名单/白名单,并且一些现代路由器具有防病毒软件和其他保护功能。要实现所有这些功能,您需要一个成熟的操作系统来支持所有这些复杂的功能。

嵌入式系统有许多不同的操作系统选项,如 Linux、Windows CE、Cisco IOS、Symbian、Android、VxWorks 等。其中一些是专用的,如用于路由器的 Cisco,而大多数是更通用的。一般统计数据表明,嵌入式系统产品中最受欢迎的操作系统选择是 Linux。造成这种情况的原因有很多,其中一些原因是它的开源特性、灵活性,最重要的是,它是免费的。您可以在周围找到 Linux 驱动的设备,例如路由器、信息娱乐系统等。

这种固件通常至少包含三个组件,引导加载程序 Bootloader、内核 Kernel 和文件系统 file-system。引导加载程序是帮助加载操作系统内核并传递各种信息需求的软件。一旦引导加载程序完成加载,内核就将接管执行。一旦内核开始执行,它就会启动其他用户应用程序以使最终用户可以使用操作系统。这通常涉及在后台启动各种应用程序和服务。完成所有这些后,用户就可以与系统进行交互。所有用户应用程序和应用程序数据都存储在文件系统上。

这些设备的安全评估通常从审核这些设备上运行的应用程序开始;最有趣的目标是远程应用服务程序。在这些服务程序中发现的漏洞对设备的安全性有很大影响,因为攻击者不需要靠近它就可以破坏它。如果互联网上的任何人可以利用该漏洞,他们都可以控制它。这些服务通常是用于配置和控制设备功能或其他服务(如 UPnP)的 Web 服务器,这些服务有助于其他设备发现该设备。

固件分析安全工具

既然我们对固件的整体有了一个高层次的概述,那么您想到的下一个问题是如何开始剖析固件并开始分析固件。分析大致可以分为静态分析和动态分析。在静态分析中,您阅读代码并查找错误,如果您没有源代码,请开始对二进制文件进行逆向工程并阅读汇编说明以了解其功能。另一方面,动态分析涉及运行应用程序并观察其行为。
在分析固件时,我通常结合使用这两种分析技术来实现我的目标。以下是我经常使用的一些工具的列表:

  • Binwalk - 这可能是最流行的固件解包工具之一。它是一个固件提取工具,它试图在任何二进制 blob 中提取二进制文件。它通过搜索许多常见二进制文件格式(如 zip、tar、exe、ELF 等)的签名来实现这一点。 Binwalk 拥有二进制文件头签名数据库,可以根据该数据库完成签名匹配。使用此工具的共同目标是提取嵌入在固件二进制文件中的文件系统,如 Squashfs、yaffs2、Cramfs、ext*fs、jffs2 等。文件系统包含将在设备上运行的所有应用程序代码。此工具还有许多参数,您可以调整这些参数以更好地进行提取。您可以访问此链接以阅读有关什么是不同参数以及如何使用它们的更多详细信息。

  • Qemu - 对于在跨架构(如 ARM、MIPS 等)环境中工作的人来说,这是一个有价值的工具,嵌入式开发人员通常就是这种情况。该工具提供了一种在主机系统上模拟不同架构(如 ARM、MIPS 等)的二进制固件的方法,主机系统具有不同的架构,如 x86、amd64。当您想审核固件但没有设备或为该系统设置调试器非常困难时,这种工具非常方便。Qemu 可以帮助您对 Linux 系统和许多不同平台进行全系统仿真或 ELF 文件的单个二进制仿真。您可以查看此链接以获取有关该项目的更多详细信息。

  • gdb-multiarch - GDB 是一种动态调试工具,用于中断正在运行的进程并检查其内存和寄存器。但是,gdb 只支持编译它的体系结构。但是当你要调试不同架构的应用程序进行跨架构支持时,你会需要它的姊妹项目gdb-multiarch,它可以帮助你进行跨架构调试。

  • Firmware ModKit - 此工具可帮助您Patch固件并重新打包。它使用 Binwalk 提取固件,并为您提供一个包含固件文件系统布局的目录。然后,您可以根据需要Patch任何内容,添加/删除文件或修补现有文件,ModKit 可以将其打包备份,以便您可以在设备存储上刷新新固件并启动新修补的固件。您可以从此链接下载此工具的代码。

我分析固件时的工作流程涉及所有这些工具。第一步通常从使用 Binwalk 解压固件开始。接下来,尝试使用 Qemu 模拟固件中感兴趣的应用程序。如果我无法模拟二进制文件,那么我会通过 gdb 调试并发现问题然后修复,以便 Qemu 可以运行它并查找安全问题。通过这个步骤还帮助我对服务进行模糊测试。

结论

本文阐述了固件是什么,以及在评估 IoT 设备时您会遇到哪些不同类型的 IoT 固件。我向您概述了如何处理不同类型的固件,我们还研究了不同的工具如何帮助我们对固件进行安全分析。

这就是这篇的全部内容。

其它课程

windows网络安全一防火墙


物联网安全-7.物联网固件逆向

windows文件过滤(更新完成)

物联网安全-7.物联网固件逆向

USB过滤(更新完成)

物联网安全-7.物联网固件逆向

游戏安全(更新中)

物联网安全-7.物联网固件逆向

二进制漏洞(更新中)

物联网安全-7.物联网固件逆向

ios逆向

物联网安全-7.物联网固件逆向

还有很多免费教程(限学员)

物联网安全-7.物联网固件逆向


物联网安全-7.物联网固件逆向

 

 

物联网安全-7.物联网固件逆向




原文始发于微信公众号(安全狗的自我修养):物联网安全-7.物联网固件逆向

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月13日22:10:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   物联网安全-7.物联网固件逆向http://cn-sec.com/archives/2109383.html

发表评论

匿名网友 填写信息