《IOT废物学习之路》(4)–解密路由器固件

固件下载地址:

https://support.dlink.com/resource/products/dir-605l/REVA/

研究路由器固件D-link-882。其中zip就是各版本的固件。

image-20231012175650991

解压出来的固件版本从旧到新依次为:FW100B07 –> FW101B02 –> FW104B02 –> FW110B02 –> FW111B01 –> FW120B06 –> FW130B10FW104B02 有点特别,而且通过名字也猜测到它是未加密的中间版本。

image-20231012185706053

目前最新版是FW130B10,试一试用binwalk能否解析该固件。

image-20231012190157447

发现binwalk失败。再试试更早版本的FW101B02,发现可以直接提取。

image-20231012190501862

固件的版本是经过未加密到加密,所以肯定会有一个中间版本。

5

利用binwalk测试出中间版本FW104B02。可以从固件系统中找一找是否存在解密程序。可以在bin目录或者是usr/bin目录下寻找类似decrypt字眼的程序。

binwalk解析FW104B02固件

1
2
3
4
docker run -it --rm \
-v $(pwd):$(pwd) \
asdqwe876/iot_analyze \
binwalk --run-as=root -C $(pwd) -Mer $(pwd)/DIR882A1_FW104B02_Middle_FW_Unencrypt.bin

得出来的是cpio-root,但是发现目录下并没有文件,应该是cpio这一步骤没有成功。就手工提取:

1
cpio -idm < 8AB758 -D ./_8AB758.extracted/cpio-root

image-20231012211528359

image-20231012211811069

bin目录下找到imgdecrypt

image-20231012211938489

通过file查看程序文件信息,发现是mips架构下的可执行文件

image-20231012212218277

反编译查看,发现有AESRSA,猜测大致和RSAAES加密相关。

image-20231012213334200

解密的话,逆向解密是其中一种方法,但可能比较费时间。再介绍一种解密方式。

可以直接本地运行解密程序imgdecrypt,来解被加密的FW120806固件。

先拷贝qemu模拟器到当前目录。

1
cp $(which qemu-mipsel-static)

模拟前用chroot将当前固件系统路径设置为root路径(防止运行程序时找不到系统库)。

image-20231012214805903

先解密然后利用binwalk提取即可。

image-20231012214854130