固件解密学习

固件解密思路学习

固件例子:https://support.dlink.com/ProductInfo.aspx?m=DIR-822-US

img

先试用:binwalk -E DIR822C1_FW3,指令查看固件的熵值,发现几乎恒定在1左右,意味着可能对固件的不同部分内容进行了加密

img

在官网给出的文档中,有提到firmware v303WWb04_middle这个中间版本,因此我们需要想办法下载这个中间版本

img

dlink有提供一个FTP服务器来下载固件,但是我貌似不会用(悲),我这里是在异步社区下载的这个中间版本

https://box.lenovo.com/l/8ufzWe

将这个中间版本下载之后使用binwalk进行解包,发现能获得一个完整的文件系统

使用grep命令在squashfs-root搜索update,firmware,upgrade,download等关键的字符串

1
grep -r Download

通过对下图进行分析,发现在etc/templates/hnap目录下存在StartFirmwareDownload.php文件,有Download字符串img

打开StartFirmwareDownload.php文件,发现有一行注释为fw encimg

img

可以看到这断代码执行了几个操作:首先使用cat命令读取/etc/config/image_sign的值并赋值给$iamge_sign变量;然后使用fwrite执行了encimg -d -i “.$fw_path.” -s “.$image_sign.

首先查看/etc/config/image_sign的值

img

内容为wrgac43s_dlink.2015_dir822c1,也就是$image_sign变量的值。下一步就是运行encimg文件,因此查找encimg文件,并确定encimg的文件信息

img

可以看到程序为mips大端序架构,将qemu-mips-static移动到当前目录下。使用qemu进行模拟运行

img

发现需要添加几个参数才能正常运行,encimg -d -i “.$fw_path.” -s “.$image_sign.,在之前的代码中可以知道fw_patch为加密的固件的路径,image_sign为之前读到的值wrgac43s_dlink.2015_dir822c1

img

至此固件已经解密成功,后面就可以正常binwalk解包进行分析然后挖洞了


固件解密学习
http://blogyoulin.top/2023/11/16/固件解密学习/
Author
John Doe
Posted on
November 16, 2023
Licensed under