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,该工具通过静态分析来识别固件中可能包含的常见敏感信息。本文由于篇幅限制,不再阐述该工具的使用。下个系列会为大家讲解该工具,敬请期待~


相关文章
|
安全 物联网 Linux
带你读《物联网渗透测试》之三:固件分析与漏洞利用
本书介绍物联网渗透测试的原理和实用技术。主要内容包括IOT威胁建模、固件分析及漏洞利用、嵌入式web应用漏洞、IOT移动应用漏洞、IOT设备攻击、无线电入侵、固件安全和移动安全最佳实践、硬件保护以及IOT高级漏洞的利用与安全自动化。
|
网络协议 Java 网络安全
如何处理“协议异常”错误
当遇到“协议异常”错误时,通常需要检查网络连接、防火墙设置和软件版本。确保所有组件都是最新的,并尝试重新启动设备或应用程序。如果问题持续存在,请联系技术支持以获取进一步的帮助。
1003 59
|
存储 缓存 监控
性能利器Caffeine缓存全面指南
通过以上指南,您应该能够有效利用Caffeine缓存来优化您的Java应用程序。Caffeine的强大功能和灵活性,使它成为提升应用性能的理想选择。
852 4
|
JSON JavaScript 前端开发
一篇文章讲明白json文件格式详解
一篇文章讲明白json文件格式详解
440 2
|
数据建模 程序员
程序员必知:ZVS振荡电路工作原理分析
程序员必知:ZVS振荡电路工作原理分析
284 1
|
JSON 缓存 前端开发
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
|
Linux Shell KVM
Kali系统基于qemu虚拟化运行img镜像文件
QEMU是一个由Fabrice Bellard创建的开源虚拟化器,能在多种平台上运行,如x86、ARM、PowerPC。它支持硬件仿真和虚拟化,允许在宿主系统上运行不同架构和OS,如Windows、Linux。QEMU特点包括硬件仿真、虚拟化支持(与KVM配合)、磁盘和网络仿真、快照及回滚功能。此外,文档还展示了在Kali Linux中安装和配置QEMU的步骤,包括下载、内存设置、源更新、软件安装、创建桥接脚本以及启动和管理虚拟机。
970 1
Kali系统基于qemu虚拟化运行img镜像文件
|
前端开发 JavaScript 测试技术
自动化测试定位方式那么多,应该选哪个?
本文介绍了移动应用自动化测试中的定位策略,包括 ID、XPath、ClassName、AccessibilityID、Name、XPath 模糊定位、Android UI Automator、iOS Predicate 等。在Web测试中,使用class name、css selector、id等定位元素。选择定位器应遵循与研发约定、优先使用特定属性及组合定位的原则。当元素定位不到时,可能因定位信息错误、元素状态等问题,可通过调整策略、等待元素加载或使用JS操作解决。特殊控件如弹框、下拉框等,需采用特定方法如JS注入或send_keys()处理。
|
Ubuntu C语言
【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04
以上就是在Ubuntu 20.04和Ubuntu 18.04上安装gcc11和g++11的步骤。
2626 0
|
数据采集 传感器 存储
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】