《IOT废物学习之路》(2)–提取IOT固件与静态分析IOT固件

1、提取固件

工具介绍

binwalk

image-20231009171610385

提取固件系统的参数是-e,可以加上-t -vv参数查看详细的提取过程。

1
binwalk -t -vv -e RT-N300_3.0.0.4_378_9317-g2f672ff.trx

通过输出信息,可以得知该固件系统没有加密压缩,且系统为Squashfs。

image-20231009172413631

提取出来的文件夹系统为_RT-N300_3.0.0.4_378_9317-g2f672ff.trx.extracted

image-20231009172631945

其中的squashfs-root就是需要的固件文件系统。

image-20231009172803129

binwalk原理

binwalk通过自带的强大的magic特征集,扫描固件中文件系统初始地址的特征码,若匹配成功,则将该段数据dump下来,这个magic特征集已公开。

1
https://github.com/ReFirmLabs/binwalk/blob/62e9caa164305a18d7d1f037ab27d14ac933d3cf/src/binwalk/magic/filesystems

image-20231009173221219

本次固件的例子,系统是squashfs文件系统,对应的扫描特征码为hsqs

image-20231009173331921

2、静态分析IOT固件

得到固件

image-20231009173741515

发现很多.yaffs2后缀的文件,这些都是固件的文件。

其中有几个看起来像是recovery镜像

recovery镜像简单来说就是修复文件系统。

核心的看起来就是2K-mdm-recovery-image-mdm9625.yaffs2,如果用binwalk提取的话,文件系统不清晰,直接用yaffs原生工具unyaffs工具提取。

1
unyaffs 2K-mdm-recovery-image-mdm9625.yaffs2 yaffs2-root/

image-20231010080950949

image-20231010081459886

敏感配置文件分析

接下来查找路径下的所有.conf文件,.conf文件大多是配置文件,可能会发现敏感信息。

1
find . -name '*.conf'

image-20231010083728168

其中./etc/inadyn-mt.conf文件引起了注意,这是no-ip应用的配置文件,no-ip就是动态域名解析系统,相当于是一个给自己套了个壳,可以申请动态域名。我们从中可以发现泄露的no-ip的登陆账号及密码。

1
cat etc/inadyn-mt.conf

image-20231010091728103

可以发现泄露的no-ip的登陆账号和密码。

除了上述泄露的no-ip账号密码,还可以从shadow文件中找到root账号的密码。

image-20231010092102287

通过爆破可以得到root的密码为1234

并不只有.conf文件会泄露信息,还有其他很多后缀的敏感文件会泄露信息。

firmwalker自动化遍历固件系统中的所有可疑文件

工具下载

1
git clone https://github.com/craigz28/firmwalker.git

image-20231010151308768

命令如下,firmwalker会将结果保存在firmwalker.txt

1
./firmwalker.sh ~/IOT/02/DWR-932_B1_FW_v.02.02EU/yaffs2-root/

image-20231010151839078

原理就是遍历文件后缀名

以上是一些对敏感配置文件的分析。接下来对二进制风险程序进行分析。

风险二进制程序分析

查看自启动程序

1
ll etc/init.d

image-20231010152430844

发现一个start_appmgr脚本。mgr一般是主控程序的意思。

image-20231010152816221

发现该脚本在程序运行启动时会启动bin/appmgr程序。

反编译看一下bin/appmgr程序,发现只要连接该固件的39889端口并且输入了“HELODBG”字符串之后,就可以远程执行命令

image-20231010170133371