《IOT废物学习之路》(2)--提取IOT固件与静态分析IOT固件
《IOT废物学习之路》(2)–提取IOT固件与静态分析IOT固件
1、提取固件
工具介绍
binwalk
提取固件系统的参数是-e
,可以加上-t
-vv
参数查看详细的提取过程。
1 | binwalk -t -vv -e RT-N300_3.0.0.4_378_9317-g2f672ff.trx |
通过输出信息,可以得知该固件系统没有加密压缩,且系统为Squashfs。
提取出来的文件夹系统为_RT-N300_3.0.0.4_378_9317-g2f672ff.trx.extracted
。
其中的squashfs-root
就是需要的固件文件系统。
binwalk原理
binwalk通过自带的强大的magic特征集,扫描固件中文件系统初始地址的特征码,若匹配成功,则将该段数据dump下来,这个magic特征集已公开。
1 | https://github.com/ReFirmLabs/binwalk/blob/62e9caa164305a18d7d1f037ab27d14ac933d3cf/src/binwalk/magic/filesystems |
本次固件的例子,系统是squashfs
文件系统,对应的扫描特征码为hsqs
2、静态分析IOT固件
得到固件
发现很多.yaffs2
后缀的文件,这些都是固件的文件。
其中有几个看起来像是recovery
镜像
recovery镜像简单来说就是修复文件系统。
核心的看起来就是2K-mdm-recovery-image-mdm9625.yaffs2
,如果用binwalk
提取的话,文件系统不清晰,直接用yaffs
原生工具unyaffs
工具提取。
1 | unyaffs 2K-mdm-recovery-image-mdm9625.yaffs2 yaffs2-root/ |
敏感配置文件分析
接下来查找路径下的所有.conf
文件,.conf
文件大多是配置文件,可能会发现敏感信息。
1 | find . -name '*.conf' |
其中./etc/inadyn-mt.conf
文件引起了注意,这是no-ip
应用的配置文件,no-ip
就是动态域名解析系统,相当于是一个给自己套了个壳,可以申请动态域名。我们从中可以发现泄露的no-ip
的登陆账号及密码。
1 | cat etc/inadyn-mt.conf |
可以发现泄露的no-ip的登陆账号和密码。
除了上述泄露的no-ip
账号密码,还可以从shadow
文件中找到root
账号的密码。
通过爆破可以得到root
的密码为1234
。
并不只有.conf
文件会泄露信息,还有其他很多后缀的敏感文件会泄露信息。
firmwalker
自动化遍历固件系统中的所有可疑文件
工具下载
1 | git clone https://github.com/craigz28/firmwalker.git |
命令如下,firmwalker
会将结果保存在firmwalker.txt
。
1 | ./firmwalker.sh ~/IOT/02/DWR-932_B1_FW_v.02.02EU/yaffs2-root/ |
原理就是遍历文件后缀名
以上是一些对敏感配置文件的分析。接下来对二进制风险程序进行分析。
风险二进制程序分析
查看自启动程序
1 | ll etc/init.d |
发现一个start_appmgr
脚本。mgr
一般是主控程序的意思。
发现该脚本在程序运行启动时会启动bin/appmgr
程序。
反编译看一下bin/appmgr
程序,发现只要连接该固件的39889端口并且输入了“HELODBG”字符串之后,就可以远程执行命令