-
-
[原创]loT设备如何进行固件分析系列一
-
发表于: 2021-11-8 16:01 6977
-
物联网(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:免费的可执行硬件虚拟化的开源托管虚拟机,用于固件仿真。
固件提取
笔者一般获取固件的方法主要包括:
从loT设备厂商网站下载,这是获取固件最简单的方法。
中间人攻击,获取loT固件下载地址或固件包。有时候loT设备厂商不支持网站下载固件,例如华为厂商,此时就需要选择该方法或第三种方法。
直接从loT设备存储芯片提取固件。如果以上两种方法均无法获取固件,还可以尝试通讨UART、JTAG等接口直接提取转储固件。该方法需要拆解loT设备找到其中的存储固件的闪存芯片,然后通过UART接口或烧录夹、编程器等工具提取转储固件。
固件分析
提取到固件后,接下来就需要对固件进行深入分析,发现固件中的安全隐患。
固件通常由bootloader、内核、文件系统以及其他资源组成,其中文件系统是固件分析过程中最重要的一部分,文件系统中一般包括口令、存在漏洞的服务、私钥等。
本文以某路由器为例,演示如何提取固件中的文件系统进行分析。
1)使用binwalk提取固件压缩包时,发现该压缩包被加密,这是路由器厂商为了保护固件而进行的密码保护,防止攻击者进行逆向。
2)我们可以使用fcrackzip工具进行密码破解,得出密码后再次进行解压。
3)解压固件压缩包完成,查看文件
4)发现解压后的有一部分yaffs2格式的文件系统,需要使用unyaffs工具来提取。
5)在yaffs2文件夹中查看提取到完整的文件系统
6)我们可以查看不同目录下的文件进行安全审计,寻找可能存在漏洞的文件。最常见是遍历所有.conf配置文件,运行find查询来查找所有配置文件:
7)在该路由器固件中,inadyn-mt.conf配置文件保存了访问网站 https://www.no-ip.com 的用户名和密码等敏感信息,如下图所示:
以上分析方式属于固件手工分析,我们还可以采用自动化的方式来挖掘漏洞,常见的自动化工具有Craig Smith开发的工具Firmwalker,该工具通过静态分析来识别固件中可能包含的常见敏感信息。本文由于篇幅限制,不再阐述该工具的使用。下个系列会为大家讲解该工具,敬请期待。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)