概述
物联网(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、内核、文件系统以及其他资源组成,其中文件系统是固件分析过程中最重要的一部分,文件系统中一般包括口令、存在漏洞的服务、私钥等。
本文以某路由器为例,演示如何提取固件中的文件系统进行分析。
binwalk提取
使用binwalk提取固件压缩包,提取时发现该压缩包被加密,这是路由器厂商为了保护固件而进行的密码保护,防止攻击者进行逆向。
fcrackzip 破解
我们可以使用fcrackzip工具进行压缩包密码破解,得出密码后再次进行解压。
解压固件
解压固件压缩包完成,查看文件
unyaffs工具提取
解压后,发现有一部分yaffs2格式的文件系统,此时需要使用unyaffs工具来提取。
完整的文件系统
提取完成后,在yaffs2文件夹中查看提取到的完整文件系统。
解压固件
提取到完整文件系统后我们可以查看不同目录下的文件进行安全审计,寻找可能存在漏洞的文件。最常见的操作是遍历所有.conf配置文件。
运行find查询来查找所有配置文件:
获取敏感信息
在该路由器固件中,inadyn-mt.conf配置文件保存了访问网站 https://www.no-ip.com 的用户名和硬编密码等敏感信息,如下图所示:
攻击者通过以上安全漏洞可以批量攻击此版本的路由器,造成信息泄露。
以上分析方式属于固件手工分析,我们还可以采用自动化的方式来挖掘漏洞,常见的自动化工具有Craig Smith开发的工具Firmwalker,该工具通过静态分析来识别固件中可能包含的常见敏感信息。本文由于篇幅限制,不再阐述该工具的使用。下个系列会为大家讲解该工具,敬请期待~
=END=
原文始发于微信公众号(雷石安全实验室):loT设备固件分析系列一