loT设备固件分析系列一

简介: loT设备固件分析系列一

概述


物联网(IoT)设备一般指通过某种方式连接到网络的嵌入式设备。在过去的几年中,loT设备数量不断增长,loT设备几乎已经融入各行各业,如工业、能源业等领域,但也成为了攻击者的首要目标。如果物联网设备存在安全隐患,将会给企业、国家和个人带来安全隐患。

现阶段有多种方法可以检测物联网设备中的漏洞。本文将探索固件分析,这种方法的优点是不需要被测设备的实体,而且固件是loT设备的核心,这也是从固件分析开始的原因。


固件入门


固件是—种写入硬件设备的软件,固件中包含底层代码,这些代码能够帮助软件实现对硬件的操作。运行固件的设备一般称为嵌入式系统。智能手机(iPhone、小米)、智能汽车(特斯拉、蔚来)、无人机(大疆)都属于运行固件的嵌入式设备。


固件分析推荐工具


·Kali Linux:笔者入门安全的第一工具,非常6的一款系统。下载链接:

https∶//www.kali.org/downloads/,如果虚拟机运行,可以直接下载Kali的虚拟镜像。


·Binwalk:用于提取固件映像,Kali Linux中已经默认安装Binwalk。


·fcrackzip:密码破解工具。


·Ettercap:该软件能够拦截网段上的流量,捕获密码并针对多种常见协议进行主动窃听。Kali Linux中已经默认安装Ettercap。


·Wireshark:免费开源的网络数据包分析软件,Kali Linux中已经默认安装Wireshark。


·SSLstrip:web登录密码嗅探神器,Kali Linux中已经默认安装SSLstrip。


·Flashrom:Flashrom是一种通用闪存编程实用程序,Kali Linux中未默认安装Flashrom需自行安装该工具。


·Qemu:免费的可执行硬件虚拟化的开源托管虚拟机,用于固件仿真。



固件分析流程


固件提取

v

固件分析

v

文件系统提取

v

文件系统加载

v

文件系统分析


固件提取


笔者一般获取固件的方法主要包括:

Ø 从loT设备厂商网站下载,这是获取固件最简单的方法。

Ø 中间人攻击,获取loT固件下载地址或固件包。有时候loT设备厂商不支持网站下载固件,例如华为厂商,此时就需要选择该方法或第三种方法。

Ø 直接从loT设备存储芯片提取固件。如果以上两种方法均无法获取固件,还可以尝试通讨UART、JTAG等接口直接提取转储固件。该方法需要拆解loT设备找到其中的存储固件的闪存芯片,然后通过UART接口或烧录夹、编程器等工具提取转储固件。


固件分析


提取到固件后,接下来就需要对固件进行深入分析,寻找固件中的安全隐患。

固件通常由bootloader、内核、文件系统以及其他资源组成,其中文件系统是固件分析过程中最重要的一部分,文件系统中一般包括口令、存在漏洞的服务、私钥等。

本文以某路由器为例,演示如何提取固件中的文件系统进行分析。


01binwalk提取


使用binwalk提取固件压缩包,提取时发现该压缩包被加密,这是路由器厂商为了保护固件而进行的密码保护,防止攻击者进行逆向。

7b1e71668a508e1d10e6d4012116b245_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


02fcrackzip 破解


我们可以使用fcrackzip工具进行压缩包密码破解,得出密码后再次进行解压。

60c06efe0f3b32ee6010272f639b61d5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


03解压固件


解压固件压缩包完成,查看文件

3649d5933fd8f27bf5ef7af9c3f8b6af_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


04unyaffs工具提取


解压后,发现有一部分yaffs2格式的文件系统,此时需要使用unyaffs工具来提取。

16799a5e4c9fb4d50d630ea397381e3f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


05完整的文件系统


提取完成后,在yaffs2文件夹中查看提取到的完整文件系统。

abfadafcb4ec990c994de51a2760e475_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


06解压固件


提取到完整文件系统后我们可以查看不同目录下的文件进行安全审计,寻找可能存在漏洞的文件。最常见的操作是遍历所有.conf配置文件。

运行find查询来查找所有配置文件:


07获取敏感信息


在该路由器固件中,inadyn-mt.conf配置文件保存了访问网站 https://www.no-ip.com 的用户名和硬编密码等敏感信息,如下图所示:

eabc4c64cfe39d8f0167768156b5aae2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

攻击者通过以上安全漏洞可以批量攻击此版本的路由器,造成信息泄露。


以上分析方式属于固件手工分析,我们还可以采用自动化的方式来挖掘漏洞,常见的自动化工具有Craig Smith开发的工具Firmwalker,该工具通过静态分析来识别固件中可能包含的常见敏感信息。本文由于篇幅限制,不再阐述该工具的使用。下个系列会为大家讲解该工具,敬请期待~


相关文章
|
11月前
|
Ubuntu Linux 开发工具
【Matter】esp-matter环境下的应用实践(程序烧录及串口监视)
【Matter】esp-matter环境下的应用实践(程序烧录及串口监视)
196 0
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
124 0
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
西门子S7-200 SMART硬件设备组态
西门子S7-200 SMART提供各种类型I/O点数丰富的CPU模块、扩展模块和信号板,对于不同的应用需求能够提供更加经济、灵活的解决方案。S7-200 SMART CPU本体集成了一个以太网端口和一个RS485端口,必要时还可以通过信号板扩展一个RS485端口或者一个RS232端口。其中,编程设备只能通过以太网接口连接到CPU。
西门子S7-200 SMART硬件设备组态
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
上篇文章中我们学习了西门子S7-200 SMART的全局变量和局部变量以及如何编写带参数子程序并调用,本篇我们来介绍西门子S7-200 SMART使用存储卡复位CPU到出厂设置、固件升级和程序传输。S7-200 SMART CPU使用FAT32文件系统格式,支持容量为4G至32G范围内的标准商用MicroSD HC卡。
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
|
AliOS-Things 物联网 开发者
Wifi- nodeMCU 之配置编译下载 alios-things 到 esp8266 实现天猫精灵语音控制 | 学习笔记
快速学习 Wifi- nodeMCU 之配置编译下载 alios-things 到 esp8266 实现天猫精灵语音控制
206 0
Wifi- nodeMCU 之配置编译下载 alios-things 到 esp8266 实现天猫精灵语音控制 | 学习笔记
|
存储 物联网 API
AliOS Things 网络篇之 Wi-Fi 配网|学习笔记
快速学习 AliOS Things 网络篇之 Wi-Fi 配网。
444 0
AliOS Things 网络篇之 Wi-Fi 配网|学习笔记
|
SoC 内存技术 Perl
【DVCon-US-2020】在硬件仿真平台调试SoC Firmware的方法
【DVCon-US-2020】在硬件仿真平台调试SoC Firmware的方法
194 0
【DVCon-US-2020】在硬件仿真平台调试SoC Firmware的方法
|
物联网
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(二)
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(二)
206 0
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(二)
|
物联网 Linux API
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(一)
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(一)
228 0
【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )(一)
|
存储 物联网 Linux
AliOS Things基于USB通道外接4G模组的方案
本文介绍AliOS Things关于USB外接广域网芯片连接入云的方案。物联网设备联网方案,可分为OpenCPU的方式与外接通信芯片的方式。OpenCPU的应用层与网络层运行在同一芯片上,该方式具有较高的集成度,但使得应用、协议在接口、配置、性能等方面产生了耦合,不利于方案的移植与推广。而采用外接的方式,可以分离应用层与网络层,较好地降低耦合度,提高联网方案的灵活性。例如,MCU运行MQTT应用层协议,而由外接通信芯片(如Wi-Fi、LTE)完成网络层的TCP/IP连接与传输。当然,外接通信芯片的代价,是MCU与通信芯片之间增加了交互成本,需要开发者选择适合应用场景的外接方式。
AliOS Things基于USB通道外接4G模组的方案