??这是IOT安全系列的第一篇文章,教程来自于崔老师的《物联网安全漏洞挖掘实战》,我只是简单的把其中一个实验复现了一下,也记录了一些坑。如果对文章内容感兴趣,大家可以自己去购买书籍学习。
??我们首先要获得D-Link DIR-822-US的固件,根据后面的US我们就知道需要去国外的网站下载,国内是没有这款产品的。具体地址如下所示:D-Link Technical Support (dlink.com),考虑到有些同学的网可能不是“很好”,所以我会放在网盘里面供大家学习**(差点忘记了,放评论区了)**。
??然后我们把固件放入我们的kali~~(KALI PURPLE好帅!!!)~~ ,使用binwalk进行分析,我们输入:
binwalk DIR822C1_FW315WWb02.bin
??然后结果一片空白:
??所以我们猜测可能是加密了,使用 binwalk -E 命令来查看一下:
??一条直线,看来肯定是加密了,所以我们就要看一下有没有解密的办法。我们点开发行说明,发现了一些蛛丝马迹:The firmware v3.15 must be upgraded from the transitional version of firmware v303WWb04_middle.
??也就是 固件 v3.15 必须从固件v303WWb04_middle的过渡版本升级。所以我们可以从固件v303WWb04_middle入手。
??我们执行binwalk -Me DIR822C1_FW303WWb04_i4sa_middle.bin命令之后,得到如下结果:
??然后我们进入生成的_DIR822C1_FW303WWb04_i4sa_middle.bin.extracted/squashfs-root文件夹,就能看到我们的文件系统了(有一些其他文件别在意,那是后面要用的)。
??然后我们在文件夹里面使用grep -r "download"搜索一下有关下载的东西,如下所示,有一个StartFirmwareDownload.php很显眼,我们单独拿出来看看。
??使用VIM打开后发现好东西:
??下面是对代码的解释:
setattr("/runtime/tmpdevdata/image_sign","get","cat /etc/config/image_sign");
:这行代码设置了一个属性,将 /runtime/tmpdevdata/image_sign
的获取操作映射到了 cat /etc/config/image_sign
命令。这样,当尝试获取 /runtime/tmpdevdata/image_sign
的内容时,实际上会执行 cat /etc/config/image_sign
命令来获取 /etc/config/image_sign
文件的内容。
??总的来说,这段代码执行了以下操作:
/etc/config/image_sign
文件中获取内容。encimg
命令。/runtime/tmpdevdata
目录及其内容。??然后查看/etc/config/image_sign的内容:
??最后研究一下下encing,这是一个可执行文件,所以我们来启动一下,当然了,要按照上面代码的格式启动。
??使用sudo apt install qemu-user-static安装一下QEMU,然后输入下面的命令,注意,你要把qemu-mips-static文件放到这个目录下面来,还有DIR822C1_FW315WWb02.bin固件。
sudo chroot . ./qemu-mips-static ./usr/sbin/encimg -d -i DIR822C1_FW315WWb02.bin -s wrgac43s_dlink.2015_dir822c1
??然后我们就可以分析这个解密了的固件了:
??一切正常,这次学习就到这里了。